@codemieai/code 0.15.5 → 0.15.6
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/agents/core/session/SessionStore.d.ts +6 -0
- package/dist/agents/core/session/SessionStore.d.ts.map +1 -1
- package/dist/agents/core/session/SessionStore.js +38 -0
- package/dist/agents/core/session/SessionStore.js.map +1 -1
- package/dist/agents/core/session/types.d.ts +2 -0
- package/dist/agents/core/session/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +18 -2
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.js +109 -61
- package/dist/agents/plugins/claude/claude.models.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +25 -4
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/skills/codemie-assistant-builder/SKILL.md +177 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-assistant-builder/agents/grader.md +38 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-assistant-builder/agents/improver.md +40 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/SKILL.md +10 -1
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/assistants.md +23 -0
- package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +57 -21
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +13 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +27 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +6 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +21 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/messages-before.d.ts +11 -0
- package/dist/agents/plugins/claude/session/processors/messages-before.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/processors/messages-before.js +15 -0
- package/dist/agents/plugins/claude/session/processors/messages-before.js.map +1 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts +9 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/statusline-installer.js +42 -27
- package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
- package/dist/cli/commands/sdk/assistant-builder/checks.d.ts +4 -0
- package/dist/cli/commands/sdk/assistant-builder/checks.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/checks.js +32 -0
- package/dist/cli/commands/sdk/assistant-builder/checks.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/commands.d.ts +6 -0
- package/dist/cli/commands/sdk/assistant-builder/commands.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/commands.js +278 -0
- package/dist/cli/commands/sdk/assistant-builder/commands.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/conversations.d.ts +26 -0
- package/dist/cli/commands/sdk/assistant-builder/conversations.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/conversations.js +45 -0
- package/dist/cli/commands/sdk/assistant-builder/conversations.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/normalize.d.ts +11 -0
- package/dist/cli/commands/sdk/assistant-builder/normalize.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/normalize.js +43 -0
- package/dist/cli/commands/sdk/assistant-builder/normalize.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/output.d.ts +10 -0
- package/dist/cli/commands/sdk/assistant-builder/output.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/output.js +29 -0
- package/dist/cli/commands/sdk/assistant-builder/output.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/compare.d.ts +23 -0
- package/dist/cli/commands/sdk/assistant-builder/report/compare.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/compare.js +66 -0
- package/dist/cli/commands/sdk/assistant-builder/report/compare.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/html.d.ts +9 -0
- package/dist/cli/commands/sdk/assistant-builder/report/html.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/html.js +87 -0
- package/dist/cli/commands/sdk/assistant-builder/report/html.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/summary.d.ts +31 -0
- package/dist/cli/commands/sdk/assistant-builder/report/summary.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/summary.js +56 -0
- package/dist/cli/commands/sdk/assistant-builder/report/summary.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/workspace.d.ts +19 -0
- package/dist/cli/commands/sdk/assistant-builder/report/workspace.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/report/workspace.js +112 -0
- package/dist/cli/commands/sdk/assistant-builder/report/workspace.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/runner.d.ts +32 -0
- package/dist/cli/commands/sdk/assistant-builder/runner.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/runner.js +109 -0
- package/dist/cli/commands/sdk/assistant-builder/runner.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/scenarios.d.ts +5 -0
- package/dist/cli/commands/sdk/assistant-builder/scenarios.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/scenarios.js +66 -0
- package/dist/cli/commands/sdk/assistant-builder/scenarios.js.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/types.d.ts +70 -0
- package/dist/cli/commands/sdk/assistant-builder/types.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistant-builder/types.js +2 -0
- package/dist/cli/commands/sdk/assistant-builder/types.js.map +1 -0
- package/dist/cli/commands/sdk/assistants.d.ts.map +1 -1
- package/dist/cli/commands/sdk/assistants.js +2 -0
- package/dist/cli/commands/sdk/assistants.js.map +1 -1
- package/dist/cli/commands/sdk/services/assistants.d.ts +20 -1
- package/dist/cli/commands/sdk/services/assistants.d.ts.map +1 -1
- package/dist/cli/commands/sdk/services/assistants.js +80 -2
- package/dist/cli/commands/sdk/services/assistants.js.map +1 -1
- package/dist/cli/commands/sdk/utils/cli-utils.js +1 -1
- package/dist/cli/commands/sdk/utils/cli-utils.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +5 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts +3 -0
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js +43 -2
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +12 -10
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js +33 -6
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +2 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +61 -10
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
- package/dist/telemetry/runtime/checkpoints.d.ts +6 -0
- package/dist/telemetry/runtime/checkpoints.d.ts.map +1 -1
- package/dist/telemetry/runtime/checkpoints.js.map +1 -1
- package/dist/telemetry/runtime/types.d.ts +5 -0
- package/dist/telemetry/runtime/types.d.ts.map +1 -1
- package/dist/utils/pricing.json +9 -1
- package/package.json +2 -2
- package/scripts/bundle-statusline.mjs +14 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { classifyIteration } from "./report/compare.js";
|
|
4
|
+
import { renderHtmlReport } from "./report/html.js";
|
|
5
|
+
import { buildReportSummary, formatTerminalSummary } from "./report/summary.js";
|
|
6
|
+
import { loadWorkspace } from "./report/workspace.js";
|
|
7
|
+
import { loadTranscripts, loadTranscriptsByIds } from "./conversations.js";
|
|
8
|
+
import { InvalidArgumentError } from "commander";
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
import ora from "ora";
|
|
11
|
+
import { ConfigurationError } from "../../../../utils/errors.js";
|
|
12
|
+
import { chatWithAssistant, getAssistant, listAssistantVersions, resolveCurrentVersion, rollbackAssistant, } from "../services/assistants.js";
|
|
13
|
+
import { getSdkClient, handleSdkError, outputJson, getResponseMessage } from "../utils/cli-utils.js";
|
|
14
|
+
import { printTable, printSuccess, printEmpty, printListHeader, optional } from "../utils/render.js";
|
|
15
|
+
import { evaluateDeterministicChecks } from "./checks.js";
|
|
16
|
+
import { buildRunSummary, writeRunOutput } from "./output.js";
|
|
17
|
+
import { runScenarios, runTurn } from "./runner.js";
|
|
18
|
+
import { filterScenarios, loadScenarioFile } from "./scenarios.js";
|
|
19
|
+
const DEFAULT_TIMEOUT_SECONDS = 120;
|
|
20
|
+
const DEFAULT_CONCURRENCY = 3;
|
|
21
|
+
export function parsePositiveInt(value) {
|
|
22
|
+
const n = Number(value);
|
|
23
|
+
if (!Number.isInteger(n) || n < 1) {
|
|
24
|
+
throw new InvalidArgumentError("Must be a positive integer.");
|
|
25
|
+
}
|
|
26
|
+
return n;
|
|
27
|
+
}
|
|
28
|
+
export async function loadHistoryFile(path) {
|
|
29
|
+
let raw;
|
|
30
|
+
try {
|
|
31
|
+
raw = JSON.parse(await readFile(path, "utf-8"));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new ConfigurationError(`History file is not valid JSON: ${path}`);
|
|
35
|
+
}
|
|
36
|
+
const valid = Array.isArray(raw) &&
|
|
37
|
+
raw.every((e) => e && typeof e === "object" &&
|
|
38
|
+
(e.role === "User" || e.role === "Assistant") &&
|
|
39
|
+
typeof e.message === "string");
|
|
40
|
+
if (!valid) {
|
|
41
|
+
throw new ConfigurationError('History file must be an array of {"role":"User"|"Assistant","message":string}.');
|
|
42
|
+
}
|
|
43
|
+
return raw;
|
|
44
|
+
}
|
|
45
|
+
function depsFor(client, assistantId) {
|
|
46
|
+
return { chat: (input) => chatWithAssistant(client, assistantId, input) };
|
|
47
|
+
}
|
|
48
|
+
async function resolveVersion(client, assistantId, requested) {
|
|
49
|
+
let versions;
|
|
50
|
+
try {
|
|
51
|
+
versions = await listAssistantVersions(client, assistantId);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return requested ?? null;
|
|
55
|
+
}
|
|
56
|
+
if (requested !== undefined) {
|
|
57
|
+
if (versions.length > 0 && !versions.some((v) => v.version_number === requested)) {
|
|
58
|
+
throw new ConfigurationError(`Assistant ${assistantId} has no version ${requested}.`);
|
|
59
|
+
}
|
|
60
|
+
return requested;
|
|
61
|
+
}
|
|
62
|
+
return versions.length > 0 ? versions[versions.length - 1].version_number : null;
|
|
63
|
+
}
|
|
64
|
+
export function registerBuilderCommands(cmd) {
|
|
65
|
+
cmd
|
|
66
|
+
.command("chat <id> <message>")
|
|
67
|
+
.description("Send one stateless message to an assistant by ID (no local registration, history not saved)\n" +
|
|
68
|
+
"Use --history for multi-turn context and --json for answer + tool calls.")
|
|
69
|
+
.option("--history <file>", 'JSON array of {"role":"User"|"Assistant","message":"..."}')
|
|
70
|
+
.option("--assistant-version <n>", "Chat with a specific assistant version", parsePositiveInt)
|
|
71
|
+
.option("--timeout <seconds>", "Per-turn timeout in seconds", parsePositiveInt, DEFAULT_TIMEOUT_SECONDS)
|
|
72
|
+
.option("--json", "Output the normalized turn as JSON")
|
|
73
|
+
.action(async (id, message, opts) => {
|
|
74
|
+
const client = await getSdkClient();
|
|
75
|
+
const spinner = opts.json ? null : ora("Waiting for assistant...").start();
|
|
76
|
+
try {
|
|
77
|
+
const history = opts.history ? await loadHistoryFile(opts.history) : [];
|
|
78
|
+
const { turn, response } = await runTurn(depsFor(client, id), message, history, {
|
|
79
|
+
timeoutMs: opts.timeout * 1000,
|
|
80
|
+
concurrency: 1,
|
|
81
|
+
version: opts.assistantVersion,
|
|
82
|
+
});
|
|
83
|
+
spinner?.stop();
|
|
84
|
+
if (opts.json) {
|
|
85
|
+
outputJson({ ...turn, agent_error: response.agent_error ?? null, tool_errors: response.tool_errors ?? [] });
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
console.log(turn.assistant);
|
|
89
|
+
for (const call of turn.tool_calls) {
|
|
90
|
+
console.log(chalk.dim(` ↳ ${call.name}${call.error ? chalk.red(" (error)") : ""}`));
|
|
91
|
+
}
|
|
92
|
+
if (response.agent_error) {
|
|
93
|
+
console.error(chalk.red(`Agent error: ${JSON.stringify(response.agent_error)}`));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
spinner?.stop();
|
|
98
|
+
handleSdkError(error, "chat with assistant");
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
cmd
|
|
102
|
+
.command("test <id>")
|
|
103
|
+
.description("Run a scenario file against an assistant and write per-scenario results\n" +
|
|
104
|
+
"Writes results/, raw/, scenarios.json, checks.json and run.json into --out.")
|
|
105
|
+
.requiredOption("--scenarios <file>", "Path to scenarios.json")
|
|
106
|
+
.requiredOption("--out <dir>", "Output directory for this run")
|
|
107
|
+
.option("--assistant-version <n>", "Test a specific assistant version", parsePositiveInt)
|
|
108
|
+
.option("--concurrency <n>", "Parallel scenarios (max 8)", parsePositiveInt, DEFAULT_CONCURRENCY)
|
|
109
|
+
.option("--only <ids>", "Comma-separated scenario ids to run")
|
|
110
|
+
.option("--timeout <seconds>", "Per-turn timeout in seconds", parsePositiveInt, DEFAULT_TIMEOUT_SECONDS)
|
|
111
|
+
.action(async (id, opts) => {
|
|
112
|
+
const client = await getSdkClient();
|
|
113
|
+
const spinner = ora("Preparing test run...").start();
|
|
114
|
+
try {
|
|
115
|
+
const scenarioFile = await loadScenarioFile(opts.scenarios);
|
|
116
|
+
const only = opts.only ? String(opts.only).split(",").map((s) => s.trim()).filter(Boolean) : undefined;
|
|
117
|
+
const selected = filterScenarios(scenarioFile, only);
|
|
118
|
+
await getAssistant(client, id);
|
|
119
|
+
const version = await resolveVersion(client, id, opts.assistantVersion);
|
|
120
|
+
const startedAt = new Date();
|
|
121
|
+
let done = 0;
|
|
122
|
+
spinner.text = `Running 0/${selected.length} scenarios...`;
|
|
123
|
+
const runs = await runScenarios(selected, depsFor(client, id), { timeoutMs: opts.timeout * 1000, concurrency: opts.concurrency, version: opts.assistantVersion }, () => {
|
|
124
|
+
done++;
|
|
125
|
+
spinner.text = `Running ${done}/${selected.length} scenarios...`;
|
|
126
|
+
});
|
|
127
|
+
const finishedAt = new Date();
|
|
128
|
+
const checks = evaluateDeterministicChecks(selected, runs.map((r) => r.result));
|
|
129
|
+
const summary = buildRunSummary(id, version, startedAt, finishedAt, runs);
|
|
130
|
+
await writeRunOutput(opts.out, { scenarioFile: { scenarios: selected }, runs, checks, summary });
|
|
131
|
+
spinner.stop();
|
|
132
|
+
printSuccess(`Ran ${summary.total} scenarios against ${id}${version !== null ? ` v${version}` : ""}: ` +
|
|
133
|
+
`${summary.ok} ok, ${summary.errors} error. Results in ${opts.out}`);
|
|
134
|
+
// A timed-out turn leaves its HTTP request open; exit explicitly so it cannot hold the process.
|
|
135
|
+
process.exit(0);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
spinner.stop();
|
|
139
|
+
handleSdkError(error, "test assistant");
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
cmd
|
|
143
|
+
.command("versions <id>")
|
|
144
|
+
.description("List versions of an assistant\nUse --current to print only the version number currently in effect.")
|
|
145
|
+
.option("--current", "Print only the version number currently in effect")
|
|
146
|
+
.option("--json", "Output in JSON format")
|
|
147
|
+
.action(async (id, opts) => {
|
|
148
|
+
const client = await getSdkClient();
|
|
149
|
+
const spinner = ora("Fetching versions...").start();
|
|
150
|
+
try {
|
|
151
|
+
if (opts.current) {
|
|
152
|
+
const current = await resolveCurrentVersion(client, id);
|
|
153
|
+
spinner.stop();
|
|
154
|
+
if (opts.json)
|
|
155
|
+
outputJson({ current_version: current });
|
|
156
|
+
else
|
|
157
|
+
console.log(current ?? "none");
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const versions = await listAssistantVersions(client, id);
|
|
161
|
+
spinner.stop();
|
|
162
|
+
if (opts.json) {
|
|
163
|
+
outputJson(versions);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (versions.length === 0) {
|
|
167
|
+
printEmpty("versions");
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
printListHeader("Assistant Versions", versions.length);
|
|
171
|
+
const columns = [
|
|
172
|
+
{ header: "Version", width: 9, getValue: (v) => chalk.cyan(String(v.version_number)) },
|
|
173
|
+
{ header: "Created", width: 26, getValue: (v) => v.created_date },
|
|
174
|
+
{ header: "Notes", width: 50, getValue: (v) => optional(v.change_notes) },
|
|
175
|
+
];
|
|
176
|
+
printTable(versions, columns);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
spinner.stop();
|
|
180
|
+
handleSdkError(error, "list assistant versions");
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
cmd
|
|
184
|
+
.command("rollback <id> <version>")
|
|
185
|
+
.description("Roll an assistant back to a previous version")
|
|
186
|
+
.action(async (id, version) => {
|
|
187
|
+
const client = await getSdkClient();
|
|
188
|
+
const spinner = ora("Rolling back...").start();
|
|
189
|
+
try {
|
|
190
|
+
const result = await rollbackAssistant(client, id, parsePositiveInt(version));
|
|
191
|
+
spinner.stop();
|
|
192
|
+
printSuccess(getResponseMessage(result));
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
spinner.stop();
|
|
196
|
+
handleSdkError(error, "roll back assistant");
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
cmd
|
|
200
|
+
.command("report <workspace>")
|
|
201
|
+
.description("Compare test rounds in an assistant-builder workspace and write report.html\n" +
|
|
202
|
+
"into the latest iteration folder. --json prints the machine-readable summary.")
|
|
203
|
+
.option("--name <name>", "Assistant name shown in the report")
|
|
204
|
+
.option("--json", "Print the summary as JSON")
|
|
205
|
+
.action(async (workspace, opts) => {
|
|
206
|
+
try {
|
|
207
|
+
const iterations = await loadWorkspace(workspace);
|
|
208
|
+
const summary = buildReportSummary(iterations);
|
|
209
|
+
const latest = iterations[iterations.length - 1];
|
|
210
|
+
const previous = iterations.length > 1 ? iterations[iterations.length - 2] : undefined;
|
|
211
|
+
const classified = classifyIteration(latest, previous);
|
|
212
|
+
const reportPath = join(latest.dir, "report.html");
|
|
213
|
+
const html = renderHtmlReport({ assistantName: opts.name ?? "Assistant", summary, iterations });
|
|
214
|
+
await writeFile(reportPath, html, "utf-8");
|
|
215
|
+
if (opts.json) {
|
|
216
|
+
outputJson({ ...summary, report_path: reportPath });
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const failures = [
|
|
220
|
+
...classified.filter((c) => c.status === "regressed"),
|
|
221
|
+
...classified.filter((c) => c.verdict !== null && c.verdict !== "pass" && c.status !== "regressed"),
|
|
222
|
+
];
|
|
223
|
+
console.log(formatTerminalSummary(summary, failures));
|
|
224
|
+
console.log(chalk.dim(`Report: ${reportPath}`));
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
handleSdkError(error, "build assistant report");
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
cmd
|
|
231
|
+
.command("conversations [id]")
|
|
232
|
+
.description("Show platform conversations as normalized transcripts (read-only)\n" +
|
|
233
|
+
"Either the newest conversations of assistant <id>, or specific ones via --ids (IDs or chat links).")
|
|
234
|
+
.option("--limit <n>", "Number of newest conversations", parsePositiveInt, 10)
|
|
235
|
+
.option("--ids <values>", "Comma-separated conversation IDs or chat links")
|
|
236
|
+
.option("--json", "Output in JSON format")
|
|
237
|
+
.action(async (id, opts) => {
|
|
238
|
+
const client = await getSdkClient();
|
|
239
|
+
const spinner = ora("Fetching conversations...").start();
|
|
240
|
+
try {
|
|
241
|
+
let items;
|
|
242
|
+
if (opts.ids) {
|
|
243
|
+
items = await loadTranscriptsByIds(client, String(opts.ids).split(",").map((v) => v.trim()).filter(Boolean));
|
|
244
|
+
}
|
|
245
|
+
else if (id) {
|
|
246
|
+
items = await loadTranscripts(client, id, opts.limit);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
throw new ConfigurationError("Provide an assistant id or --ids.");
|
|
250
|
+
}
|
|
251
|
+
spinner.stop();
|
|
252
|
+
if (opts.json) {
|
|
253
|
+
outputJson(items);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const transcripts = items.filter((t) => "turns" in t);
|
|
257
|
+
for (const failed of items.filter((t) => "error" in t)) {
|
|
258
|
+
console.error(chalk.yellow(`Could not load ${failed.id}: ${failed.error}`));
|
|
259
|
+
}
|
|
260
|
+
if (transcripts.length === 0) {
|
|
261
|
+
printEmpty("conversations");
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
for (const t of transcripts) {
|
|
265
|
+
console.log(chalk.cyan(`\n${t.date} · ${t.name} (${t.id}) · ${t.turns.length} messages`));
|
|
266
|
+
for (const turn of t.turns) {
|
|
267
|
+
const tools = turn.tool_calls.length ? chalk.dim(` [${turn.tool_calls.map((c) => c.name).join(", ")}]`) : "";
|
|
268
|
+
console.log(`${chalk.bold(turn.role)}: ${turn.message.replace(/\s+/g, " ").slice(0, 200)}${tools}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
spinner.stop();
|
|
274
|
+
handleSdkError(error, "list assistant conversations");
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CodeMieClient } from "codemie-sdk";
|
|
2
|
+
import type { ToolCall } from "./types.js";
|
|
3
|
+
export interface TranscriptTurn {
|
|
4
|
+
role: string;
|
|
5
|
+
message: string;
|
|
6
|
+
tool_calls: ToolCall[];
|
|
7
|
+
}
|
|
8
|
+
export interface Transcript {
|
|
9
|
+
id: string;
|
|
10
|
+
date: string;
|
|
11
|
+
name: string;
|
|
12
|
+
turns: TranscriptTurn[];
|
|
13
|
+
}
|
|
14
|
+
export declare function toTranscript(conversation: {
|
|
15
|
+
id: string;
|
|
16
|
+
date: string;
|
|
17
|
+
name: string;
|
|
18
|
+
}, history: unknown): Transcript;
|
|
19
|
+
export interface TranscriptError {
|
|
20
|
+
id: string;
|
|
21
|
+
error: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function extractConversationId(value: string): string | null;
|
|
24
|
+
export declare function loadTranscriptsByIds(client: CodeMieClient, idsOrLinks: string[]): Promise<Array<Transcript | TranscriptError>>;
|
|
25
|
+
export declare function loadTranscripts(client: CodeMieClient, assistantId: string, limit: number): Promise<Transcript[]>;
|
|
26
|
+
//# sourceMappingURL=conversations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACxD,OAAO,EAAE,OAAO,GACf,UAAU,CAUZ;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,eAAe,CAAC,CAAC,CAoB9C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC,CASvB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { thoughtsToToolCalls } from "./normalize.js";
|
|
2
|
+
export function toTranscript(conversation, history) {
|
|
3
|
+
const items = Array.isArray(history) ? history : [];
|
|
4
|
+
const turns = items
|
|
5
|
+
.filter((item) => !!item && typeof item === "object")
|
|
6
|
+
.map((item) => ({
|
|
7
|
+
role: String(item.role ?? ""),
|
|
8
|
+
message: String(item.message ?? ""),
|
|
9
|
+
tool_calls: thoughtsToToolCalls(item.thoughts),
|
|
10
|
+
}));
|
|
11
|
+
return { id: conversation.id, date: conversation.date, name: conversation.name, turns };
|
|
12
|
+
}
|
|
13
|
+
const UUID = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;
|
|
14
|
+
export function extractConversationId(value) {
|
|
15
|
+
return UUID.exec(value)?.[0] ?? null;
|
|
16
|
+
}
|
|
17
|
+
export async function loadTranscriptsByIds(client, idsOrLinks) {
|
|
18
|
+
const out = [];
|
|
19
|
+
for (const value of idsOrLinks) {
|
|
20
|
+
const id = extractConversationId(value);
|
|
21
|
+
if (!id) {
|
|
22
|
+
out.push({ id: value, error: "No conversation ID found" });
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const details = (await client.conversations.get(id));
|
|
27
|
+
out.push(toTranscript({ id, date: details.date ?? "", name: details.conversation_name ?? "" }, details.history));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
out.push({ id, error: error instanceof Error ? error.message : String(error) });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
export async function loadTranscripts(client, assistantId, limit) {
|
|
36
|
+
const conversations = await client.conversations.listByAssistantId(assistantId);
|
|
37
|
+
const newest = [...conversations].sort((a, b) => b.date.localeCompare(a.date)).slice(0, limit);
|
|
38
|
+
const transcripts = [];
|
|
39
|
+
for (const conversation of newest) {
|
|
40
|
+
const details = await client.conversations.get(conversation.id);
|
|
41
|
+
transcripts.push(toTranscript(conversation, details.history));
|
|
42
|
+
}
|
|
43
|
+
return transcripts;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=conversations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/conversations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolCall } from "./types.js";
|
|
2
|
+
export declare const EXCERPT_LIMIT = 500;
|
|
3
|
+
export declare function truncate(value: string, max?: number): string;
|
|
4
|
+
/**
|
|
5
|
+
* Tool invocations appear in `thoughts` with author_type "Tool" and the tool's display name
|
|
6
|
+
* (e.g. "Get Project Dna" for MCP tool get_project_dna).
|
|
7
|
+
*/
|
|
8
|
+
export declare function isToolThought(thought: Record<string, unknown>): boolean;
|
|
9
|
+
export declare function thoughtsToToolCalls(thoughts: unknown): ToolCall[];
|
|
10
|
+
export declare function generatedToText(generated: unknown): string;
|
|
11
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,aAAa,MAAM,CAAC;AAOjC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE3E;AAKD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGvE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,EAAE,CAgBjE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const EXCERPT_LIMIT = 500;
|
|
2
|
+
function toText(value) {
|
|
3
|
+
if (value === null || value === undefined)
|
|
4
|
+
return "";
|
|
5
|
+
return typeof value === "string" ? value : JSON.stringify(value);
|
|
6
|
+
}
|
|
7
|
+
export function truncate(value, max = EXCERPT_LIMIT) {
|
|
8
|
+
return value.length > max ? `${value.slice(0, max)}…` : value;
|
|
9
|
+
}
|
|
10
|
+
/** The platform reports its own reasoning step as a "Tool" thought with this name. */
|
|
11
|
+
const REASONING_PSEUDO_TOOL = "codemie thoughts";
|
|
12
|
+
/**
|
|
13
|
+
* Tool invocations appear in `thoughts` with author_type "Tool" and the tool's display name
|
|
14
|
+
* (e.g. "Get Project Dna" for MCP tool get_project_dna).
|
|
15
|
+
*/
|
|
16
|
+
export function isToolThought(thought) {
|
|
17
|
+
if (toText(thought.author_type).toLowerCase() !== "tool")
|
|
18
|
+
return false;
|
|
19
|
+
return toText(thought.author_name).trim().toLowerCase() !== REASONING_PSEUDO_TOOL;
|
|
20
|
+
}
|
|
21
|
+
export function thoughtsToToolCalls(thoughts) {
|
|
22
|
+
if (!Array.isArray(thoughts))
|
|
23
|
+
return [];
|
|
24
|
+
const calls = [];
|
|
25
|
+
for (const entry of thoughts) {
|
|
26
|
+
if (!entry || typeof entry !== "object")
|
|
27
|
+
continue;
|
|
28
|
+
const thought = entry;
|
|
29
|
+
if (!isToolThought(thought))
|
|
30
|
+
continue;
|
|
31
|
+
calls.push({
|
|
32
|
+
name: toText(thought.author_name) || "unknown",
|
|
33
|
+
input: truncate(toText(thought.input_text)),
|
|
34
|
+
output_excerpt: truncate(toText(thought.message)),
|
|
35
|
+
error: thought.error === true,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return calls;
|
|
39
|
+
}
|
|
40
|
+
export function generatedToText(generated) {
|
|
41
|
+
return toText(generated);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/normalize.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,MAAc,aAAa;IACjE,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,sFAAsF;AACtF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgC;IAC5D,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,qBAAqB,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,OAAO,GAAG,KAAgC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS;YAC9C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAkB;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScenarioRun } from "./runner.js";
|
|
2
|
+
import type { CheckVerdict, RunSummary, ScenarioFile } from "./types.js";
|
|
3
|
+
export declare function buildRunSummary(assistantId: string, version: number | null, startedAt: Date, finishedAt: Date, runs: ScenarioRun[]): RunSummary;
|
|
4
|
+
export declare function writeRunOutput(outDir: string, input: {
|
|
5
|
+
scenarioFile: ScenarioFile;
|
|
6
|
+
runs: ScenarioRun[];
|
|
7
|
+
checks: CheckVerdict[];
|
|
8
|
+
summary: RunSummary;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMzE,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,IAAI,EAChB,IAAI,EAAE,WAAW,EAAE,GAClB,UAAU,CAWZ;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GACtG,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
async function writeJson(path, data) {
|
|
4
|
+
await writeFile(path, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
|
|
5
|
+
}
|
|
6
|
+
export function buildRunSummary(assistantId, version, startedAt, finishedAt, runs) {
|
|
7
|
+
const errors = runs.filter((r) => r.result.status === "error").length;
|
|
8
|
+
return {
|
|
9
|
+
assistant_id: assistantId,
|
|
10
|
+
version,
|
|
11
|
+
started_at: startedAt.toISOString(),
|
|
12
|
+
finished_at: finishedAt.toISOString(),
|
|
13
|
+
total: runs.length,
|
|
14
|
+
ok: runs.length - errors,
|
|
15
|
+
errors,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export async function writeRunOutput(outDir, input) {
|
|
19
|
+
await mkdir(join(outDir, "results"), { recursive: true });
|
|
20
|
+
await mkdir(join(outDir, "raw"), { recursive: true });
|
|
21
|
+
for (const run of input.runs) {
|
|
22
|
+
await writeJson(join(outDir, "results", `${run.result.scenario_id}.json`), run.result);
|
|
23
|
+
await writeJson(join(outDir, "raw", `${run.result.scenario_id}.json`), run.rawThoughts);
|
|
24
|
+
}
|
|
25
|
+
await writeJson(join(outDir, "scenarios.json"), input.scenarioFile);
|
|
26
|
+
await writeJson(join(outDir, "checks.json"), { checks: input.checks });
|
|
27
|
+
await writeJson(join(outDir, "run.json"), input.summary);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../../src/cli/commands/sdk/assistant-builder/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAa;IAClD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAAsB,EACtB,SAAe,EACf,UAAgB,EAChB,IAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACtE,OAAO;QACL,YAAY,EAAE,WAAW;QACzB,OAAO;QACP,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;QACxB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAAuG;IAEvG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Verdict } from "../types.js";
|
|
2
|
+
import { type IterationData } from "./workspace.js";
|
|
3
|
+
export type CheckStatus = "fixed" | "regressed" | "still_failing" | "still_passing" | "new" | "expectation_changed" | "not_graded";
|
|
4
|
+
export interface ClassifiedCheck {
|
|
5
|
+
scenario_id: string;
|
|
6
|
+
check_id: string;
|
|
7
|
+
text: string;
|
|
8
|
+
status: CheckStatus;
|
|
9
|
+
verdict: Verdict | null;
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export interface RoundScore {
|
|
13
|
+
version: number;
|
|
14
|
+
passed: number;
|
|
15
|
+
total: number;
|
|
16
|
+
graded: boolean;
|
|
17
|
+
fixed: string[];
|
|
18
|
+
regressed: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare function classifyIteration(current: IterationData, previous?: IterationData): ClassifiedCheck[];
|
|
21
|
+
export declare function scoreRounds(iterations: IterationData[]): RoundScore[];
|
|
22
|
+
export declare function bestVersion(rounds: RoundScore[]): number | null;
|
|
23
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/sdk/assistant-builder/report/compare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,WAAW,GACX,eAAe,GACf,eAAe,GACf,KAAK,GACL,qBAAqB,GACrB,YAAY,CAAC;AAEjB,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAUD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,eAAe,EAAE,CA8BrG;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAarE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI,CAS/D"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { checkKey } from "./workspace.js";
|
|
2
|
+
function checkTexts(iteration) {
|
|
3
|
+
const texts = new Map();
|
|
4
|
+
for (const scenario of iteration.scenarios?.scenarios ?? []) {
|
|
5
|
+
for (const check of scenario.checks)
|
|
6
|
+
texts.set(checkKey(scenario.id, check.id), check.text);
|
|
7
|
+
}
|
|
8
|
+
return texts;
|
|
9
|
+
}
|
|
10
|
+
export function classifyIteration(current, previous) {
|
|
11
|
+
const prevTexts = previous ? checkTexts(previous) : new Map();
|
|
12
|
+
const out = [];
|
|
13
|
+
for (const [key, text] of checkTexts(current)) {
|
|
14
|
+
const [scenarioId, checkId] = key.split("/");
|
|
15
|
+
const verdict = current.verdicts?.get(key) ?? null;
|
|
16
|
+
const base = { scenario_id: scenarioId, check_id: checkId, text, verdict: verdict?.verdict ?? null, reason: verdict?.reason ?? "" };
|
|
17
|
+
if (!verdict) {
|
|
18
|
+
out.push({ ...base, status: "not_graded" });
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const prevText = prevTexts.get(key);
|
|
22
|
+
if (!previous || prevText === undefined) {
|
|
23
|
+
out.push({ ...base, status: "new" });
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (prevText !== text) {
|
|
27
|
+
out.push({ ...base, status: "expectation_changed" });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const prevPassed = previous.verdicts?.get(key)?.verdict === "pass";
|
|
31
|
+
const nowPassed = verdict.verdict === "pass";
|
|
32
|
+
const status = nowPassed
|
|
33
|
+
? prevPassed ? "still_passing" : "fixed"
|
|
34
|
+
: prevPassed ? "regressed" : "still_failing";
|
|
35
|
+
out.push({ ...base, status });
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
export function scoreRounds(iterations) {
|
|
40
|
+
return iterations.map((iteration, index) => {
|
|
41
|
+
const classified = classifyIteration(iteration, index > 0 ? iterations[index - 1] : undefined);
|
|
42
|
+
const keyOf = (c) => checkKey(c.scenario_id, c.check_id);
|
|
43
|
+
return {
|
|
44
|
+
version: iteration.version,
|
|
45
|
+
passed: classified.filter((c) => c.verdict === "pass").length,
|
|
46
|
+
total: classified.length,
|
|
47
|
+
graded: iteration.verdicts !== null,
|
|
48
|
+
fixed: classified.filter((c) => c.status === "fixed").map(keyOf),
|
|
49
|
+
regressed: classified.filter((c) => c.status === "regressed").map(keyOf),
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export function bestVersion(rounds) {
|
|
54
|
+
const graded = rounds.filter((r) => r.graded);
|
|
55
|
+
if (graded.length === 0)
|
|
56
|
+
return null;
|
|
57
|
+
const best = graded.reduce((a, b) => {
|
|
58
|
+
if (b.passed !== a.passed)
|
|
59
|
+
return b.passed > a.passed ? b : a;
|
|
60
|
+
if (b.regressed.length !== a.regressed.length)
|
|
61
|
+
return b.regressed.length < a.regressed.length ? b : a;
|
|
62
|
+
return b.version > a.version ? b : a;
|
|
63
|
+
});
|
|
64
|
+
return best.version;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/sdk/assistant-builder/report/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReportSummary } from "./summary.js";
|
|
2
|
+
import type { IterationData } from "./workspace.js";
|
|
3
|
+
export declare function escapeHtml(value: string): string;
|
|
4
|
+
export declare function renderHtmlReport(input: {
|
|
5
|
+
assistantName: string;
|
|
6
|
+
summary: ReportSummary;
|
|
7
|
+
iterations: IterationData[];
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/sdk/assistant-builder/report/html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AA4DD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,MAAM,CAwB9H"}
|