@castlemilk/omega 0.6.11 → 0.6.13
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/cli.js +1391 -254
- package/dist/server/dist/app.d.ts.map +1 -1
- package/dist/server/dist/app.js +2 -0
- package/dist/server/dist/app.js.map +1 -1
- package/dist/server/dist/lib/run-task.d.ts.map +1 -1
- package/dist/server/dist/lib/run-task.js +3 -2
- package/dist/server/dist/lib/run-task.js.map +1 -1
- package/dist/server/dist/routes/metrics.d.ts.map +1 -1
- package/dist/server/dist/routes/metrics.js +76 -2
- package/dist/server/dist/routes/metrics.js.map +1 -1
- package/dist/server/dist/routes/prompt-versions.d.ts +4 -0
- package/dist/server/dist/routes/prompt-versions.d.ts.map +1 -0
- package/dist/server/dist/routes/prompt-versions.js +40 -0
- package/dist/server/dist/routes/prompt-versions.js.map +1 -0
- package/dist/server/dist/routes/tasks.d.ts.map +1 -1
- package/dist/server/dist/routes/tasks.js +4 -0
- package/dist/server/dist/routes/tasks.js.map +1 -1
- package/dist/server/node_modules/.package-lock.json +3 -3
- package/dist/server/node_modules/@grpc/proto-loader/build/bin/proto-loader-gen-types.js +0 -0
- package/dist/server/node_modules/@omega/agent/dist/executor.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/executor.js +83 -10
- package/dist/server/node_modules/@omega/agent/dist/executor.js.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/index.d.ts +1 -0
- package/dist/server/node_modules/@omega/agent/dist/index.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/index.js +1 -0
- package/dist/server/node_modules/@omega/agent/dist/index.js.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/planner.d.ts +5 -0
- package/dist/server/node_modules/@omega/agent/dist/planner.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/planner.js +31 -5
- package/dist/server/node_modules/@omega/agent/dist/planner.js.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.d.ts +22 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.d.ts.map +1 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.js +53 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-versioning.js.map +1 -0
- package/dist/server/node_modules/@omega/agent/dist/prompts.d.ts +2 -2
- package/dist/server/node_modules/@omega/agent/dist/prompts.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/prompts.js +44 -7
- package/dist/server/node_modules/@omega/agent/dist/prompts.js.map +1 -1
- package/dist/server/node_modules/@omega/agent/package.json +4 -0
- package/dist/server/node_modules/@omega/core/dist/provider.d.ts +12 -2
- package/dist/server/node_modules/@omega/core/dist/provider.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/db/dist/index.d.ts +1 -0
- package/dist/server/node_modules/@omega/db/dist/index.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/db/dist/index.js +1 -0
- package/dist/server/node_modules/@omega/db/dist/index.js.map +1 -1
- package/dist/server/node_modules/@omega/db/dist/prompt-versions.d.ts +19 -0
- package/dist/server/node_modules/@omega/db/dist/prompt-versions.d.ts.map +1 -0
- package/dist/server/node_modules/@omega/db/dist/prompt-versions.js +32 -0
- package/dist/server/node_modules/@omega/db/dist/prompt-versions.js.map +1 -0
- package/dist/server/node_modules/@omega/db/dist/seed.js +6 -6
- package/dist/server/node_modules/@omega/db/dist/seed.js.map +1 -1
- package/dist/server/node_modules/@omega/db/generated/client/edge.js +19 -4
- package/dist/server/node_modules/@omega/db/generated/client/index-browser.js +16 -1
- package/dist/server/node_modules/@omega/db/generated/client/index.d.ts +1511 -93
- package/dist/server/node_modules/@omega/db/generated/client/index.js +19 -4
- package/dist/server/node_modules/@omega/db/generated/client/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/dist/server/node_modules/@omega/db/generated/client/package.json +1 -1
- package/dist/server/node_modules/@omega/db/generated/client/schema.prisma +14 -0
- package/dist/server/node_modules/@omega/db/generated/client/wasm.js +19 -4
- package/dist/server/node_modules/@omega/db/prisma/migrations/20260703010000_add_agent_run_usage/migration.sql +4 -0
- package/dist/server/node_modules/@omega/db/prisma/migrations/20260703020000_add_prompt_versions/migration.sql +16 -0
- package/dist/server/node_modules/@omega/providers/dist/anthropic.d.ts +2 -2
- package/dist/server/node_modules/@omega/providers/dist/anthropic.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/anthropic.js +16 -1
- package/dist/server/node_modules/@omega/providers/dist/anthropic.js.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/gemini.d.ts +2 -2
- package/dist/server/node_modules/@omega/providers/dist/gemini.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/gemini.js +14 -1
- package/dist/server/node_modules/@omega/providers/dist/gemini.js.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/kimi.d.ts +3 -4
- package/dist/server/node_modules/@omega/providers/dist/kimi.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/kimi.js +6 -4
- package/dist/server/node_modules/@omega/providers/dist/kimi.js.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/ollama.d.ts +2 -2
- package/dist/server/node_modules/@omega/providers/dist/ollama.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/ollama.js +13 -1
- package/dist/server/node_modules/@omega/providers/dist/ollama.js.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/openai.d.ts +3 -3
- package/dist/server/node_modules/@omega/providers/dist/openai.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/openai.js +28 -5
- package/dist/server/node_modules/@omega/providers/dist/openai.js.map +1 -1
- package/dist/server/node_modules/@omega/providers/dist/providers.test.js +13 -9
- package/dist/server/node_modules/@omega/providers/dist/providers.test.js.map +1 -1
- package/dist/server/node_modules/mime/cli.js +0 -0
- package/dist/server/node_modules/mime/src/build.js +0 -0
- package/dist/server/node_modules/protobufjs/dist/light/protobuf.js +2 -2
- package/dist/server/node_modules/protobufjs/dist/light/protobuf.min.js +2 -2
- package/dist/server/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
- package/dist/server/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
- package/dist/server/node_modules/protobufjs/dist/protobuf.js +5 -2
- package/dist/server/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/dist/server/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/dist/server/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/dist/server/node_modules/protobufjs/package.json +1 -1
- package/dist/server/node_modules/protobufjs/src/parse.js +3 -0
- package/dist/server/node_modules/wrap-ansi/index.js +0 -0
- package/dist/server/pglite-data/base/5/1247 +0 -0
- package/dist/server/pglite-data/base/5/1249 +0 -0
- package/dist/server/pglite-data/base/5/1249_fsm +0 -0
- package/dist/server/pglite-data/base/5/1259 +0 -0
- package/dist/server/pglite-data/base/5/1259_fsm +0 -0
- package/dist/server/pglite-data/base/5/1259_vm +0 -0
- package/dist/server/pglite-data/base/5/16384 +0 -0
- package/dist/server/pglite-data/base/5/16392 +0 -0
- package/dist/server/pglite-data/base/5/16394 +0 -0
- package/dist/server/pglite-data/base/5/16404 +0 -0
- package/dist/server/pglite-data/base/5/16406 +0 -0
- package/dist/server/pglite-data/base/5/16421 +0 -0
- package/dist/server/pglite-data/base/5/16480 +0 -0
- package/dist/server/pglite-data/base/5/16494 +0 -0
- package/dist/server/pglite-data/base/5/16510 +0 -0
- package/dist/server/pglite-data/base/5/16515 +0 -0
- package/dist/server/pglite-data/base/5/{24591 → 16554} +0 -0
- package/dist/server/pglite-data/base/5/{24592 → 16555} +0 -0
- package/dist/server/pglite-data/base/5/{24588 → 16557} +0 -0
- package/dist/server/pglite-data/base/5/{24589 → 16558} +0 -0
- package/dist/server/pglite-data/base/5/16564 +0 -0
- package/dist/server/pglite-data/base/5/16575 +0 -0
- package/dist/server/pglite-data/base/5/16576 +0 -0
- package/dist/server/pglite-data/base/5/16577 +0 -0
- package/dist/server/pglite-data/base/5/16579 +0 -0
- package/dist/server/pglite-data/base/5/2579 +0 -0
- package/dist/server/pglite-data/base/5/2604 +0 -0
- package/dist/server/pglite-data/base/5/2606 +0 -0
- package/dist/server/pglite-data/base/5/2608 +0 -0
- package/dist/server/pglite-data/base/5/2608_fsm +0 -0
- package/dist/server/pglite-data/base/5/2610 +0 -0
- package/dist/server/pglite-data/base/5/2620 +0 -0
- package/dist/server/pglite-data/base/5/2656 +0 -0
- package/dist/server/pglite-data/base/5/2657 +0 -0
- package/dist/server/pglite-data/base/5/2658 +0 -0
- package/dist/server/pglite-data/base/5/2659 +0 -0
- package/dist/server/pglite-data/base/5/2662 +0 -0
- package/dist/server/pglite-data/base/5/2663 +0 -0
- package/dist/server/pglite-data/base/5/2664 +0 -0
- package/dist/server/pglite-data/base/5/2665 +0 -0
- package/dist/server/pglite-data/base/5/2666 +0 -0
- package/dist/server/pglite-data/base/5/2667 +0 -0
- package/dist/server/pglite-data/base/5/2673 +0 -0
- package/dist/server/pglite-data/base/5/2674 +0 -0
- package/dist/server/pglite-data/base/5/2678 +0 -0
- package/dist/server/pglite-data/base/5/2679 +0 -0
- package/dist/server/pglite-data/base/5/2699 +0 -0
- package/dist/server/pglite-data/base/5/2701 +0 -0
- package/dist/server/pglite-data/base/5/2702 +0 -0
- package/dist/server/pglite-data/base/5/2703 +0 -0
- package/dist/server/pglite-data/base/5/2704 +0 -0
- package/dist/server/pglite-data/base/5/3455 +0 -0
- package/dist/server/pglite-data/base/5/pg_internal.init +0 -0
- package/dist/server/pglite-data/global/pg_control +0 -0
- package/dist/server/pglite-data/global/pg_internal.init +0 -0
- package/dist/server/pglite-data/pg_wal/000000010000000000000001 +0 -0
- package/dist/server/pglite-data/pg_xact/0000 +0 -0
- package/dist/server/pglite-data/postmaster.pid +2 -2
- package/dist/server/src/app.ts +2 -0
- package/dist/server/src/lib/run-task.ts +3 -2
- package/dist/server/src/routes/metrics.ts +81 -2
- package/dist/server/src/routes/prompt-versions.ts +46 -0
- package/dist/server/src/routes/tasks.ts +6 -2
- package/dist/web/dist/assets/index-BVjHH_u_.js +40 -0
- package/dist/web/dist/assets/index-BkzWwMOJ.js +40 -0
- package/dist/web/dist/assets/index-D4rY_mY0.css +1 -0
- package/dist/web/dist/assets/index-DHQbiQAM.css +1 -0
- package/dist/web/dist/index.html +2 -2
- package/package.json +14 -13
- /package/dist/server/pglite-data/base/5/{24576 → 16542} +0 -0
- /package/dist/server/pglite-data/base/5/{24587 → 16553} +0 -0
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/server/src/app.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { taskRoutes } from './routes/tasks.js';
|
|
|
6
6
|
import { providerRoutes } from './routes/providers.js';
|
|
7
7
|
import { routerRoutes } from './routes/router.js';
|
|
8
8
|
import { metricsRoutes } from './routes/metrics.js';
|
|
9
|
+
import { promptVersionRoutes } from './routes/prompt-versions.js';
|
|
9
10
|
|
|
10
11
|
export const app: express.Express = express();
|
|
11
12
|
|
|
@@ -17,6 +18,7 @@ app.use('/tasks', taskRoutes(prisma));
|
|
|
17
18
|
app.use('/providers', providerRoutes(prisma));
|
|
18
19
|
app.use('/router', routerRoutes(prisma));
|
|
19
20
|
app.use('/metrics', metricsRoutes(prisma));
|
|
21
|
+
app.use('/prompt-versions', promptVersionRoutes(prisma));
|
|
20
22
|
|
|
21
23
|
app.use((err: unknown, _req: express.Request, res: express.Response, _next: express.NextFunction) => {
|
|
22
24
|
console.error(err);
|
|
@@ -41,6 +41,7 @@ export async function runTask(prisma: PrismaClient, taskId: string) {
|
|
|
41
41
|
projectPath: task.project.path,
|
|
42
42
|
projectName: task.project.name,
|
|
43
43
|
autoPublish: tags.includes('publish'),
|
|
44
|
+
maxSteps: tags.includes('self-improve') ? 60 : 30,
|
|
44
45
|
});
|
|
45
46
|
return agentResult.task;
|
|
46
47
|
}
|
|
@@ -80,12 +81,12 @@ export async function runTask(prisma: PrismaClient, taskId: string) {
|
|
|
80
81
|
const prompt = [task.title, task.description].filter(Boolean).join('\n\n');
|
|
81
82
|
|
|
82
83
|
try {
|
|
83
|
-
const
|
|
84
|
+
const response = await provider.send(prompt, { model: modelName });
|
|
84
85
|
const updated = await prisma.task.update({
|
|
85
86
|
where: { id: taskId },
|
|
86
87
|
data: {
|
|
87
88
|
status: 'done',
|
|
88
|
-
result,
|
|
89
|
+
result: response.content,
|
|
89
90
|
provider: providerName,
|
|
90
91
|
model: modelName,
|
|
91
92
|
error: null,
|
|
@@ -9,6 +9,27 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
9
9
|
const root = path.resolve(__filename, '..', '..', '..', '..');
|
|
10
10
|
const reportsDir = path.join(root, '.omega', 'reports');
|
|
11
11
|
|
|
12
|
+
async function listReports(pattern: RegExp): Promise<{ file: string; modifiedAt: string }[]> {
|
|
13
|
+
try {
|
|
14
|
+
const files = await fs.readdir(reportsDir);
|
|
15
|
+
const matches = files.filter((f) => pattern.test(f)).sort().reverse();
|
|
16
|
+
const results: { file: string; modifiedAt: string }[] = [];
|
|
17
|
+
for (const file of matches) {
|
|
18
|
+
const stat = await fs.stat(path.join(reportsDir, file));
|
|
19
|
+
results.push({ file, modifiedAt: stat.mtime.toISOString() });
|
|
20
|
+
}
|
|
21
|
+
return results;
|
|
22
|
+
} catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async function readReport(file: string): Promise<unknown> {
|
|
28
|
+
const raw = await fs.readFile(path.join(reportsDir, file), 'utf-8');
|
|
29
|
+
if (file.endsWith('.json')) return JSON.parse(raw) as unknown;
|
|
30
|
+
return raw;
|
|
31
|
+
}
|
|
32
|
+
|
|
12
33
|
async function latestReport(pattern: RegExp): Promise<{ file: string; data: unknown } | undefined> {
|
|
13
34
|
try {
|
|
14
35
|
const files = await fs.readdir(reportsDir);
|
|
@@ -18,8 +39,7 @@ async function latestReport(pattern: RegExp): Promise<{ file: string; data: unkn
|
|
|
18
39
|
.reverse();
|
|
19
40
|
const latest = matches[0];
|
|
20
41
|
if (!latest) return undefined;
|
|
21
|
-
const
|
|
22
|
-
const data = latest.endsWith('.json') ? (JSON.parse(raw) as unknown) : raw;
|
|
42
|
+
const data = await readReport(latest);
|
|
23
43
|
return { file: latest, data };
|
|
24
44
|
} catch {
|
|
25
45
|
return undefined;
|
|
@@ -78,6 +98,8 @@ export function metricsRoutes(prisma: PrismaClient): Router {
|
|
|
78
98
|
)
|
|
79
99
|
: 0;
|
|
80
100
|
|
|
101
|
+
const totalTokens = agentRuns.reduce((sum, r) => sum + (r.totalTokens ?? 0), 0);
|
|
102
|
+
|
|
81
103
|
const recentRuns = agentRuns.map((r) => ({
|
|
82
104
|
id: r.id,
|
|
83
105
|
taskId: r.taskId,
|
|
@@ -88,11 +110,15 @@ export function metricsRoutes(prisma: PrismaClient): Router {
|
|
|
88
110
|
validationSummary: r.validationSummary,
|
|
89
111
|
publishedVersion: r.publishedVersion,
|
|
90
112
|
durationMs: durationMs(r.createdAt, r.updatedAt),
|
|
113
|
+
promptTokens: r.promptTokens,
|
|
114
|
+
completionTokens: r.completionTokens,
|
|
115
|
+
totalTokens: r.totalTokens,
|
|
91
116
|
createdAt: r.createdAt,
|
|
92
117
|
}));
|
|
93
118
|
|
|
94
119
|
const e2eReport = await latestReport(/^e2e-raw-/);
|
|
95
120
|
const benchmarkReport = await latestReport(/^benchmark-/);
|
|
121
|
+
const abReport = await latestReport(/^ab-/);
|
|
96
122
|
|
|
97
123
|
res.json({
|
|
98
124
|
taskCounts,
|
|
@@ -100,13 +126,66 @@ export function metricsRoutes(prisma: PrismaClient): Router {
|
|
|
100
126
|
providerUsage,
|
|
101
127
|
modelUsage,
|
|
102
128
|
avgDurationMs,
|
|
129
|
+
totalTokens,
|
|
103
130
|
recentRuns,
|
|
104
131
|
latestReports: {
|
|
105
132
|
e2e: e2eReport,
|
|
106
133
|
benchmark: benchmarkReport,
|
|
134
|
+
ab: abReport,
|
|
107
135
|
},
|
|
108
136
|
});
|
|
109
137
|
}));
|
|
110
138
|
|
|
139
|
+
r.get('/reports', asyncHandler(async (_req, res) => {
|
|
140
|
+
const e2e = await listReports(/^e2e-raw-/);
|
|
141
|
+
const benchmark = await listReports(/^benchmark-/);
|
|
142
|
+
res.json({ e2e, benchmark });
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
r.get('/reports/benchmark', asyncHandler(async (_req, res) => {
|
|
146
|
+
const reports = await listReports(/^benchmark-/);
|
|
147
|
+
res.json(reports);
|
|
148
|
+
}));
|
|
149
|
+
|
|
150
|
+
r.get('/reports/benchmark/:file', asyncHandler(async (req, res) => {
|
|
151
|
+
const file = path.basename(req.params.file);
|
|
152
|
+
if (!file.startsWith('benchmark-')) {
|
|
153
|
+
res.status(400).json({ error: 'Invalid benchmark report filename' });
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
const data = await readReport(file);
|
|
158
|
+
res.json(data);
|
|
159
|
+
} catch {
|
|
160
|
+
res.status(404).json({ error: 'Report not found' });
|
|
161
|
+
}
|
|
162
|
+
}));
|
|
163
|
+
|
|
164
|
+
r.get('/reports/ab', asyncHandler(async (_req, res) => {
|
|
165
|
+
const reports = await listReports(/^ab-/);
|
|
166
|
+
res.json(reports);
|
|
167
|
+
}));
|
|
168
|
+
|
|
169
|
+
r.get('/reports/ab/:file', asyncHandler(async (req, res) => {
|
|
170
|
+
const file = path.basename(req.params.file);
|
|
171
|
+
if (!file.startsWith('ab-')) {
|
|
172
|
+
res.status(400).json({ error: 'Invalid A/B report filename' });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const data = await readReport(file);
|
|
177
|
+
res.json(data);
|
|
178
|
+
} catch {
|
|
179
|
+
res.status(404).json({ error: 'Report not found' });
|
|
180
|
+
}
|
|
181
|
+
}));
|
|
182
|
+
|
|
183
|
+
r.get('/reports/latest', asyncHandler(async (_req, res) => {
|
|
184
|
+
const e2eReport = await latestReport(/^e2e-raw-/);
|
|
185
|
+
const benchmarkReport = await latestReport(/^benchmark-/);
|
|
186
|
+
const abReport = await latestReport(/^ab-/);
|
|
187
|
+
res.json({ e2e: e2eReport, benchmark: benchmarkReport, ab: abReport });
|
|
188
|
+
}));
|
|
189
|
+
|
|
111
190
|
return r;
|
|
112
191
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import type { PrismaClient } from '@omega/db';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { asyncHandler } from '../lib/async-handler.js';
|
|
5
|
+
import { createPromptVersionRepository } from '@omega/db';
|
|
6
|
+
|
|
7
|
+
const createSchema = z.object({
|
|
8
|
+
name: z.string().min(1),
|
|
9
|
+
sourcePath: z.string().min(1),
|
|
10
|
+
systemPrompt: z.string(),
|
|
11
|
+
textToolsPrompt: z.string(),
|
|
12
|
+
hash: z.string().min(1),
|
|
13
|
+
metadata: z.record(z.unknown()).optional(),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export function promptVersionRoutes(prisma: PrismaClient): Router {
|
|
17
|
+
const repo = createPromptVersionRepository(prisma);
|
|
18
|
+
const r = Router();
|
|
19
|
+
|
|
20
|
+
r.get('/', asyncHandler(async (_req, res) => {
|
|
21
|
+
const versions = await repo.list();
|
|
22
|
+
res.json(versions);
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
r.get('/:id', asyncHandler(async (req, res) => {
|
|
26
|
+
const version = await repo.findById(req.params.id);
|
|
27
|
+
if (!version) {
|
|
28
|
+
res.status(404).json({ error: 'Prompt version not found' });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
res.json(version);
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
r.post('/', asyncHandler(async (req, res) => {
|
|
35
|
+
const body = createSchema.parse(req.body);
|
|
36
|
+
const existing = await repo.findByHash(body.hash);
|
|
37
|
+
if (existing) {
|
|
38
|
+
res.status(200).json(existing);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const version = await repo.create(body);
|
|
42
|
+
res.status(201).json(version);
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
return r;
|
|
46
|
+
}
|
|
@@ -10,6 +10,8 @@ const createSchema = z.object({
|
|
|
10
10
|
description: z.string().optional(),
|
|
11
11
|
complexity: z.enum(['simple', 'medium', 'complex']).default('simple'),
|
|
12
12
|
tags: z.array(z.string()).default([]),
|
|
13
|
+
provider: z.string().optional(),
|
|
14
|
+
model: z.string().optional(),
|
|
13
15
|
});
|
|
14
16
|
|
|
15
17
|
const updateSchema = z.object({
|
|
@@ -50,6 +52,8 @@ export function taskRoutes(prisma: PrismaClient): Router {
|
|
|
50
52
|
description: body.description,
|
|
51
53
|
complexity: body.complexity,
|
|
52
54
|
tags: JSON.stringify(body.tags),
|
|
55
|
+
provider: body.provider,
|
|
56
|
+
model: body.model,
|
|
53
57
|
},
|
|
54
58
|
});
|
|
55
59
|
res.status(201).json(task);
|
|
@@ -135,8 +139,8 @@ export function taskRoutes(prisma: PrismaClient): Router {
|
|
|
135
139
|
const children = byParent[key] ?? [];
|
|
136
140
|
return children.map((s) => ({
|
|
137
141
|
...s,
|
|
138
|
-
attributes: s.attributes ? JSON.parse(s.attributes) : undefined,
|
|
139
|
-
events: s.events ? JSON.parse(s.events) : undefined,
|
|
142
|
+
attributes: s.attributes ? (JSON.parse(s.attributes) as Record<string, unknown>) : undefined,
|
|
143
|
+
events: s.events ? (JSON.parse(s.events) as unknown[]) : undefined,
|
|
140
144
|
children: buildTree(s.spanId),
|
|
141
145
|
}));
|
|
142
146
|
}
|