@castlemilk/omega 0.6.10 → 0.6.12
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 +1748 -61
- 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.js +2 -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.js.map +1 -1
- 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 +52 -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 +6 -1
- package/dist/server/node_modules/@omega/agent/dist/planner.d.ts.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/planner.js +24 -5
- package/dist/server/node_modules/@omega/agent/dist/planner.js.map +1 -1
- package/dist/server/node_modules/@omega/agent/dist/prompt-context.d.ts +10 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-context.d.ts.map +1 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-context.js +138 -0
- package/dist/server/node_modules/@omega/agent/dist/prompt-context.js.map +1 -0
- 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 +4 -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 +31 -2
- 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/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 -3
- package/dist/server/node_modules/@omega/providers/dist/kimi.d.ts.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 +24 -3
- 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/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/16406_fsm +0 -0
- package/dist/server/pglite-data/base/5/16421 +0 -0
- package/dist/server/pglite-data/base/5/16423 +0 -0
- package/dist/server/pglite-data/base/5/16437 +0 -0
- package/dist/server/pglite-data/base/5/16439 +0 -0
- package/dist/server/pglite-data/base/5/16439_fsm +0 -0
- package/dist/server/pglite-data/base/5/16449 +0 -0
- package/dist/server/pglite-data/base/5/16451 +0 -0
- package/dist/server/pglite-data/base/5/16462 +0 -0
- package/dist/server/pglite-data/base/5/16464 +0 -0
- package/dist/server/pglite-data/base/5/16478 +0 -0
- package/dist/server/pglite-data/base/5/16480 +0 -0
- package/dist/server/pglite-data/base/5/16510 +0 -0
- package/dist/server/pglite-data/base/5/16511 +0 -0
- package/dist/server/pglite-data/base/5/16512 +0 -0
- package/dist/server/pglite-data/base/5/16513 +0 -0
- package/dist/server/pglite-data/base/5/16514 +0 -0
- package/dist/server/pglite-data/base/5/24576 +0 -0
- package/dist/server/pglite-data/base/5/24576_fsm +0 -0
- package/dist/server/pglite-data/base/5/24589 +0 -0
- package/dist/server/pglite-data/base/5/24591 +0 -0
- package/dist/server/pglite-data/base/5/24592 +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/2604_fsm +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/32768 +0 -0
- package/dist/server/pglite-data/base/5/32779 +0 -0
- package/dist/server/pglite-data/base/5/32780 +0 -0
- package/dist/server/pglite-data/base/5/32781 +0 -0
- package/dist/server/pglite-data/base/5/32783 +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 +1 -1
- package/dist/server/src/app.ts +2 -0
- package/dist/server/src/lib/run-task.ts +2 -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 +2 -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
|
@@ -25,25 +25,43 @@ Available tools:
|
|
|
25
25
|
${toolDescriptions}
|
|
26
26
|
|
|
27
27
|
If a step does not need a tool, omit tool/input. Use edit_file for small file changes.`;
|
|
28
|
-
export async function createPlan(provider, taskTitle, taskDescription) {
|
|
29
|
-
const
|
|
28
|
+
export async function createPlan(provider, taskTitle, taskDescription, context) {
|
|
29
|
+
const contextBlock = context ? `\n\nProject context:\n${context}` : '';
|
|
30
|
+
const prompt = `${PLAN_PROMPT}${contextBlock}\n\nTask: ${taskTitle}\n${taskDescription ? `Description: ${taskDescription}\n` : ''}`;
|
|
30
31
|
// Try tool-aware path first, fall back to plain send.
|
|
31
32
|
let raw;
|
|
33
|
+
let usage;
|
|
32
34
|
if ('sendWithTools' in provider && typeof provider.sendWithTools === 'function') {
|
|
33
|
-
|
|
35
|
+
const response = await provider.sendWithTools(prompt, PLANNING_TOOLS, {
|
|
34
36
|
system: PLAN_PROMPT,
|
|
35
37
|
temperature: 0.2,
|
|
36
38
|
});
|
|
39
|
+
raw = response.content;
|
|
40
|
+
usage = response.usage
|
|
41
|
+
? {
|
|
42
|
+
promptTokens: response.usage.promptTokens ?? 0,
|
|
43
|
+
completionTokens: response.usage.completionTokens ?? 0,
|
|
44
|
+
totalTokens: response.usage.totalTokens ?? 0,
|
|
45
|
+
}
|
|
46
|
+
: undefined;
|
|
37
47
|
}
|
|
38
48
|
else {
|
|
39
|
-
|
|
49
|
+
const response = await provider.send(prompt, { system: PLAN_PROMPT, temperature: 0.2 });
|
|
50
|
+
raw = response.content;
|
|
51
|
+
usage = response.usage
|
|
52
|
+
? {
|
|
53
|
+
promptTokens: response.usage.promptTokens ?? 0,
|
|
54
|
+
completionTokens: response.usage.completionTokens ?? 0,
|
|
55
|
+
totalTokens: response.usage.totalTokens ?? 0,
|
|
56
|
+
}
|
|
57
|
+
: undefined;
|
|
40
58
|
}
|
|
41
59
|
try {
|
|
42
60
|
const parsed = JSON.parse(stripMarkdown(raw));
|
|
43
61
|
if (!Array.isArray(parsed.plan)) {
|
|
44
62
|
throw new Error('plan is not an array');
|
|
45
63
|
}
|
|
46
|
-
return parsed;
|
|
64
|
+
return { ...parsed, usage };
|
|
47
65
|
}
|
|
48
66
|
catch {
|
|
49
67
|
// Fallback: treat the whole response as reasoning and create a generic plan.
|
|
@@ -55,6 +73,7 @@ export async function createPlan(provider, taskTitle, taskDescription) {
|
|
|
55
73
|
{ name: 'Validate', tool: 'run_command', input: { command: 'pnpm lint' } },
|
|
56
74
|
{ name: 'Finish', tool: 'finish', input: { summary: 'Task complete.', success: true } },
|
|
57
75
|
],
|
|
76
|
+
usage,
|
|
58
77
|
};
|
|
59
78
|
}
|
|
60
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PrismaClient } from '@omega/db';
|
|
2
|
+
export interface PromptContextSummary {
|
|
3
|
+
text: string;
|
|
4
|
+
runsAnalysed: number;
|
|
5
|
+
topFailure?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildPromptContext(prisma: PrismaClient, projectId: string, options?: {
|
|
8
|
+
lookbackRuns?: number;
|
|
9
|
+
}): Promise<PromptContextSummary>;
|
|
10
|
+
//# sourceMappingURL=prompt-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-context.d.ts","sourceRoot":"","sources":["../src/prompt-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuBD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAkI/B"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
function parseValidationSummary(raw) {
|
|
2
|
+
if (!raw)
|
|
3
|
+
return undefined;
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(raw);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function formatDuration(ms) {
|
|
12
|
+
if (ms < 1000)
|
|
13
|
+
return `${String(Math.round(ms))}ms`;
|
|
14
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
15
|
+
}
|
|
16
|
+
export async function buildPromptContext(prisma, projectId, options = {}) {
|
|
17
|
+
const lookback = options.lookbackRuns ?? 5;
|
|
18
|
+
const recentRuns = await prisma.agentRun.findMany({
|
|
19
|
+
where: { task: { projectId } },
|
|
20
|
+
orderBy: { createdAt: 'desc' },
|
|
21
|
+
take: lookback,
|
|
22
|
+
include: { task: { select: { id: true } } },
|
|
23
|
+
});
|
|
24
|
+
if (recentRuns.length === 0) {
|
|
25
|
+
return { text: '', runsAnalysed: 0 };
|
|
26
|
+
}
|
|
27
|
+
const taskIds = recentRuns.map((r) => r.task.id);
|
|
28
|
+
const [toolSpans, failedSteps] = await Promise.all([
|
|
29
|
+
prisma.traceSpan.groupBy({
|
|
30
|
+
by: ['name', 'status'],
|
|
31
|
+
where: {
|
|
32
|
+
taskId: { in: taskIds },
|
|
33
|
+
name: { startsWith: 'agent.tool.' },
|
|
34
|
+
},
|
|
35
|
+
_count: { status: true },
|
|
36
|
+
}),
|
|
37
|
+
prisma.taskStep.findMany({
|
|
38
|
+
where: {
|
|
39
|
+
taskId: { in: taskIds },
|
|
40
|
+
status: 'failed',
|
|
41
|
+
},
|
|
42
|
+
select: { name: true, error: true },
|
|
43
|
+
take: 20,
|
|
44
|
+
}),
|
|
45
|
+
]);
|
|
46
|
+
// Aggregate tool success/error counts by tool name.
|
|
47
|
+
const toolStats = {};
|
|
48
|
+
for (const row of toolSpans) {
|
|
49
|
+
const tool = row.name.replace('agent.tool.', '');
|
|
50
|
+
const entry = toolStats[tool] ?? { ok: 0, error: 0, total: 0 };
|
|
51
|
+
const count = row._count.status;
|
|
52
|
+
if (row.status === 'ok')
|
|
53
|
+
entry.ok += count;
|
|
54
|
+
else if (row.status === 'error')
|
|
55
|
+
entry.error += count;
|
|
56
|
+
entry.total += count;
|
|
57
|
+
toolStats[tool] = entry;
|
|
58
|
+
}
|
|
59
|
+
// Compute average duration per tool from spans with start/end times.
|
|
60
|
+
const durationRows = await prisma.traceSpan.findMany({
|
|
61
|
+
where: {
|
|
62
|
+
taskId: { in: taskIds },
|
|
63
|
+
name: { startsWith: 'agent.tool.' },
|
|
64
|
+
endTime: { not: null },
|
|
65
|
+
},
|
|
66
|
+
select: { name: true, startTime: true, endTime: true },
|
|
67
|
+
});
|
|
68
|
+
const durationAccum = {};
|
|
69
|
+
for (const row of durationRows) {
|
|
70
|
+
if (!row.endTime)
|
|
71
|
+
continue;
|
|
72
|
+
const tool = row.name.replace('agent.tool.', '');
|
|
73
|
+
const ms = row.endTime.getTime() - row.startTime.getTime();
|
|
74
|
+
const entry = durationAccum[tool] ?? { total: 0, count: 0 };
|
|
75
|
+
entry.total += ms;
|
|
76
|
+
entry.count += 1;
|
|
77
|
+
durationAccum[tool] = entry;
|
|
78
|
+
}
|
|
79
|
+
for (const [tool, acc] of Object.entries(durationAccum)) {
|
|
80
|
+
const stats = toolStats[tool] ?? { ok: 0, error: 0, total: 0 };
|
|
81
|
+
if (acc.count > 0) {
|
|
82
|
+
stats.avgMs = Math.round(acc.total / acc.count);
|
|
83
|
+
}
|
|
84
|
+
toolStats[tool] = stats;
|
|
85
|
+
}
|
|
86
|
+
// Determine most common validation failure.
|
|
87
|
+
const failureCounts = {};
|
|
88
|
+
for (const run of recentRuns) {
|
|
89
|
+
const summary = parseValidationSummary(run.validationSummary);
|
|
90
|
+
if (!summary || summary.allPassed)
|
|
91
|
+
continue;
|
|
92
|
+
for (const key of ['lint', 'test', 'build']) {
|
|
93
|
+
const step = summary[key];
|
|
94
|
+
if (step && !step.success) {
|
|
95
|
+
failureCounts[key] = (failureCounts[key] ?? 0) + 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const topFailure = Object.entries(failureCounts).sort((a, b) => b[1] - a[1])[0]?.[0];
|
|
100
|
+
// Collect recent edit_file misses.
|
|
101
|
+
const editMisses = failedSteps
|
|
102
|
+
.filter((s) => s.name.includes('edit_file') || s.error?.includes('old_string'))
|
|
103
|
+
.slice(0, 3)
|
|
104
|
+
.map((s) => s.error?.split('\n')[0] ?? s.name);
|
|
105
|
+
const lines = [];
|
|
106
|
+
lines.push('Recent project context (last few runs):');
|
|
107
|
+
lines.push(`- Agent runs analysed: ${String(recentRuns.length)}`);
|
|
108
|
+
if (topFailure) {
|
|
109
|
+
lines.push(`- Most common validation failure: ${topFailure}. Run ${topFailure} early and carefully.`);
|
|
110
|
+
}
|
|
111
|
+
const toolLines = Object.entries(toolStats)
|
|
112
|
+
.filter(([, s]) => s.total > 0)
|
|
113
|
+
.sort((a, b) => b[1].total - a[1].total)
|
|
114
|
+
.slice(0, 5)
|
|
115
|
+
.map(([tool, s]) => {
|
|
116
|
+
const errRate = s.total > 0 ? Math.round((s.error / s.total) * 100) : 0;
|
|
117
|
+
const avg = s.avgMs ? `, avg ${formatDuration(s.avgMs)}` : '';
|
|
118
|
+
return `- ${tool}: ${String(s.total)} calls, ${String(errRate)}% error${avg}`;
|
|
119
|
+
});
|
|
120
|
+
if (toolLines.length > 0) {
|
|
121
|
+
lines.push('- Tool usage:');
|
|
122
|
+
lines.push(...toolLines);
|
|
123
|
+
}
|
|
124
|
+
if (editMisses.length > 0) {
|
|
125
|
+
lines.push('- Recent edit_file misses:');
|
|
126
|
+
for (const miss of editMisses) {
|
|
127
|
+
lines.push(` * ${miss}`);
|
|
128
|
+
}
|
|
129
|
+
lines.push(' When using edit_file, read the file first and copy the exact old_string.');
|
|
130
|
+
}
|
|
131
|
+
lines.push('Use this context to avoid repeating failures and to prioritise high-impact edits.');
|
|
132
|
+
return {
|
|
133
|
+
text: lines.join('\n'),
|
|
134
|
+
runsAnalysed: recentRuns.length,
|
|
135
|
+
topFailure,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=prompt-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-context.js","sourceRoot":"","sources":["../src/prompt-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface PromptVersionInput {
|
|
2
|
+
name: string;
|
|
3
|
+
sourcePath: string;
|
|
4
|
+
systemPrompt: string;
|
|
5
|
+
textToolsPrompt: string;
|
|
6
|
+
planningPrompt?: string;
|
|
7
|
+
hash: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare function hashPrompts(input: {
|
|
11
|
+
systemPrompt: string;
|
|
12
|
+
textToolsPrompt: string;
|
|
13
|
+
planningPrompt?: string;
|
|
14
|
+
}): string;
|
|
15
|
+
export declare function readPromptsSource(): Promise<{
|
|
16
|
+
systemPrompt: string;
|
|
17
|
+
textToolsPrompt: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare function loadCurrentPrompts(): Promise<PromptVersionInput>;
|
|
20
|
+
export declare function saveCurrentPrompts(input: Pick<PromptVersionInput, 'systemPrompt' | 'textToolsPrompt'>): Promise<void>;
|
|
21
|
+
export declare function envForPrompts(input: Pick<PromptVersionInput, 'systemPrompt' | 'textToolsPrompt'>): Record<string, string>;
|
|
22
|
+
//# sourceMappingURL=prompt-versioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-versioning.d.ts","sourceRoot":"","sources":["../src/prompt-versioning.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAMD,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAErH;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAUpG;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CActE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3H;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKzH"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const PROMPTS_PATH = path.resolve(__dirname, '..', 'src', 'prompts.ts');
|
|
7
|
+
const PLANNER_PATH = path.resolve(__dirname, '..', 'src', 'planner.ts');
|
|
8
|
+
function hashString(value) {
|
|
9
|
+
return crypto.createHash('sha256').update(value).digest('hex').slice(0, 16);
|
|
10
|
+
}
|
|
11
|
+
export function hashPrompts(input) {
|
|
12
|
+
return hashString([input.systemPrompt, input.textToolsPrompt, input.planningPrompt ?? ''].join('\n---\n'));
|
|
13
|
+
}
|
|
14
|
+
export async function readPromptsSource() {
|
|
15
|
+
const source = await fs.readFile(PROMPTS_PATH, 'utf-8');
|
|
16
|
+
const systemMatch = /export const AGENT_SYSTEM_PROMPT =\s*(?:loadPromptFromEnv\('OMEGA_SYSTEM_PROMPT'\) \?\?\s*)?`([\s\S]*?)`;/m.exec(source);
|
|
17
|
+
const textToolsMatch = /export const TEXT_TOOLS_SYSTEM_PROMPT =\s*(?:loadPromptFromEnv\('OMEGA_TEXT_TOOLS_PROMPT'\) \?\?\s*)?`([\s\S]*?)`;/m.exec(source);
|
|
18
|
+
return {
|
|
19
|
+
systemPrompt: systemMatch?.[1] ?? '',
|
|
20
|
+
textToolsPrompt: textToolsMatch?.[1] ?? '',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function loadCurrentPrompts() {
|
|
24
|
+
const { systemPrompt, textToolsPrompt } = await readPromptsSource();
|
|
25
|
+
const plannerSource = await fs.readFile(PLANNER_PATH, 'utf-8');
|
|
26
|
+
const planningMatch = /const PLAN_PROMPT = `([\s\S]*?)`;/m.exec(plannerSource);
|
|
27
|
+
const planningPrompt = planningMatch?.[1];
|
|
28
|
+
return {
|
|
29
|
+
name: `auto-${new Date().toISOString().replace(/[:.]/g, '-')}`,
|
|
30
|
+
sourcePath: PROMPTS_PATH,
|
|
31
|
+
systemPrompt,
|
|
32
|
+
textToolsPrompt,
|
|
33
|
+
planningPrompt,
|
|
34
|
+
hash: hashPrompts({ systemPrompt, textToolsPrompt, planningPrompt }),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export async function saveCurrentPrompts(input) {
|
|
38
|
+
const source = await fs.readFile(PROMPTS_PATH, 'utf-8');
|
|
39
|
+
const replaceConst = (name, value) => {
|
|
40
|
+
const pattern = new RegExp(`export const ${name} =\\s*(?:process\\.env\\.OMEGA_[A-Z_]+_PROMPT \\?\\?\\s*)?\`[\\s\\S]*?\`;`, 'm');
|
|
41
|
+
return source.replace(pattern, `export const ${name} =\n process.env.OMEGA_${name.replace(/([A-Z])/g, '_$1').toUpperCase()}_PROMPT ??\n \`${value}\`;`);
|
|
42
|
+
};
|
|
43
|
+
let updated = replaceConst('AGENT_SYSTEM_PROMPT', input.systemPrompt);
|
|
44
|
+
updated = replaceConst('TEXT_TOOLS_SYSTEM_PROMPT', input.textToolsPrompt);
|
|
45
|
+
await fs.writeFile(PROMPTS_PATH, updated, 'utf-8');
|
|
46
|
+
}
|
|
47
|
+
export function envForPrompts(input) {
|
|
48
|
+
return {
|
|
49
|
+
OMEGA_SYSTEM_PROMPT: input.systemPrompt,
|
|
50
|
+
OMEGA_TEXT_TOOLS_PROMPT: input.textToolsPrompt,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=prompt-versioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-versioning.js","sourceRoot":"","sources":["../src/prompt-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export declare const AGENT_SYSTEM_PROMPT
|
|
1
|
+
export declare const AGENT_SYSTEM_PROMPT: string;
|
|
2
2
|
export declare const FORCE_ACTION_PROMPT = "You have been thinking without taking action. Stop describing plans and execute the next concrete step using a tool. Use edit_file or run_command.";
|
|
3
|
-
export declare const TEXT_TOOLS_SYSTEM_PROMPT
|
|
3
|
+
export declare const TEXT_TOOLS_SYSTEM_PROMPT: string;
|
|
4
|
+
export declare function buildSystemPrompt(context?: string): string;
|
|
5
|
+
export declare function buildTextToolsSystemPrompt(context?: string): string;
|
|
4
6
|
export declare function buildTaskPrompt(title: string, description?: string): string;
|
|
5
7
|
export declare function buildToolResultPrompt(task: {
|
|
6
8
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,mBAAmB,QAqB0C,CAAC;AAE3E,eAAO,MAAM,mBAAmB,uJAAuJ,CAAC;AAExL,eAAO,MAAM,wBAAwB,QAqBc,CAAC;AAEpD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAChD,MAAM,CAMR"}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
function loadPromptFromEnv(name) {
|
|
3
|
+
const direct = process.env[name];
|
|
4
|
+
if (direct)
|
|
5
|
+
return direct;
|
|
6
|
+
const fileKey = `${name}_FILE`;
|
|
7
|
+
const filePath = process.env[fileKey];
|
|
8
|
+
if (filePath) {
|
|
9
|
+
try {
|
|
10
|
+
return fs.readFileSync(filePath, 'utf-8');
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// fall through to default
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
export const AGENT_SYSTEM_PROMPT = loadPromptFromEnv('OMEGA_SYSTEM_PROMPT') ??
|
|
19
|
+
`You are Omega, an autonomous software engineering agent running inside a project repository.
|
|
2
20
|
|
|
3
21
|
Your job is to complete the user's task by calling tools. Do not write prose or explanations outside tool calls. Prefer targeted edits over full rewrites.
|
|
4
22
|
|
|
@@ -19,7 +37,8 @@ Rules:
|
|
|
19
37
|
4. Do not expose secrets or run destructive commands.
|
|
20
38
|
5. Finish only when the task is done. Always include summary and success.`;
|
|
21
39
|
export const FORCE_ACTION_PROMPT = `You have been thinking without taking action. Stop describing plans and execute the next concrete step using a tool. Use edit_file or run_command.`;
|
|
22
|
-
export const TEXT_TOOLS_SYSTEM_PROMPT =
|
|
40
|
+
export const TEXT_TOOLS_SYSTEM_PROMPT = loadPromptFromEnv('OMEGA_TEXT_TOOLS_PROMPT') ??
|
|
41
|
+
`You are Omega, an autonomous software engineering agent running inside a project repository.
|
|
23
42
|
|
|
24
43
|
You MUST respond with a single JSON object containing a "tool_calls" array. Do not output markdown, explanations, or reasoning outside the JSON.
|
|
25
44
|
|
|
@@ -39,6 +58,16 @@ Rules:
|
|
|
39
58
|
- Run validation (pnpm lint, pnpm test) after edits.
|
|
40
59
|
- Do not expose secrets or run destructive commands.
|
|
41
60
|
- Finish only when done. Use summary, not message.`;
|
|
61
|
+
export function buildSystemPrompt(context) {
|
|
62
|
+
if (!context || context.trim().length === 0)
|
|
63
|
+
return AGENT_SYSTEM_PROMPT;
|
|
64
|
+
return `${AGENT_SYSTEM_PROMPT}\n\n---\n${context}\n---`;
|
|
65
|
+
}
|
|
66
|
+
export function buildTextToolsSystemPrompt(context) {
|
|
67
|
+
if (!context || context.trim().length === 0)
|
|
68
|
+
return TEXT_TOOLS_SYSTEM_PROMPT;
|
|
69
|
+
return `${TEXT_TOOLS_SYSTEM_PROMPT}\n\n---\n${context}\n---`;
|
|
70
|
+
}
|
|
42
71
|
export function buildTaskPrompt(title, description) {
|
|
43
72
|
const parts = [`Task: ${title}`];
|
|
44
73
|
if (description)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAC9B,iBAAiB,CAAC,qBAAqB,CAAC;IACxC;;;;;;;;;;;;;;;;;;;0EAmBwE,CAAC;AAE3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,oJAAoJ,CAAC;AAExL,MAAM,CAAC,MAAM,wBAAwB,GACnC,iBAAiB,CAAC,yBAAyB,CAAC;IAC5C;;;;;;;;;;;;;;;;;;;mDAmBiD,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACxE,OAAO,GAAG,mBAAmB,YAAY,OAAO,OAAO,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IAC7E,OAAO,GAAG,wBAAwB,YAAY,OAAO,OAAO,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,WAAoB;IACjE,MAAM,KAAK,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;IACjC,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA6C,EAC7C,OAAiD;IAEjD,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,WAAW;QAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,OAAO;SAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;SAC5C,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC;AACrD,CAAC"}
|
|
@@ -21,6 +21,16 @@ export interface ProviderConfig {
|
|
|
21
21
|
capabilities: Capability[];
|
|
22
22
|
enabled: boolean;
|
|
23
23
|
}
|
|
24
|
+
export interface Usage {
|
|
25
|
+
promptTokens?: number;
|
|
26
|
+
completionTokens?: number;
|
|
27
|
+
totalTokens?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ProviderResponse {
|
|
30
|
+
content: string;
|
|
31
|
+
usage?: Usage;
|
|
32
|
+
model?: string;
|
|
33
|
+
}
|
|
24
34
|
export interface SendOptions {
|
|
25
35
|
model?: string;
|
|
26
36
|
system?: string;
|
|
@@ -42,7 +52,7 @@ export interface ToolSendOptions extends SendOptions {
|
|
|
42
52
|
export interface Provider {
|
|
43
53
|
readonly config: ProviderConfig;
|
|
44
54
|
listModels(): Promise<string[]>;
|
|
45
|
-
send(prompt: string, opts?: SendOptions): Promise<
|
|
46
|
-
sendWithTools?(prompt: string, tools: ToolDefinition[], opts?: SendOptions): Promise<
|
|
55
|
+
send(prompt: string, opts?: SendOptions): Promise<ProviderResponse>;
|
|
56
|
+
sendWithTools?(prompt: string, tools: ToolDefinition[], opts?: SendOptions): Promise<ProviderResponse>;
|
|
47
57
|
}
|
|
48
58
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7F,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7F,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACxG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PrismaClient, PromptVersion } from '../generated/client/index.js';
|
|
2
|
+
export interface PromptVersionInput {
|
|
3
|
+
name: string;
|
|
4
|
+
sourcePath: string;
|
|
5
|
+
systemPrompt: string;
|
|
6
|
+
textToolsPrompt: string;
|
|
7
|
+
hash: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createPromptVersionRepository(prisma: PrismaClient): {
|
|
11
|
+
create(input: PromptVersionInput): Promise<PromptVersion>;
|
|
12
|
+
findById(id: string): Promise<PromptVersion | null>;
|
|
13
|
+
findByName(name: string): Promise<PromptVersion | null>;
|
|
14
|
+
findByHash(hash: string): Promise<PromptVersion | null>;
|
|
15
|
+
list(): Promise<PromptVersion[]>;
|
|
16
|
+
latest(): Promise<PromptVersion | null>;
|
|
17
|
+
};
|
|
18
|
+
export type PromptVersionRepository = ReturnType<typeof createPromptVersionRepository>;
|
|
19
|
+
//# sourceMappingURL=prompt-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-versions.d.ts","sourceRoot":"","sources":["../src/prompt-versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY;kBAE1C,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;iBAa5C,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;qBAIlC,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;qBAItC,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAI/C,OAAO,CAAC,aAAa,EAAE,CAAC;cAItB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;EAIhD;AAED,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function createPromptVersionRepository(prisma) {
|
|
2
|
+
return {
|
|
3
|
+
async create(input) {
|
|
4
|
+
return prisma.promptVersion.create({
|
|
5
|
+
data: {
|
|
6
|
+
name: input.name,
|
|
7
|
+
sourcePath: input.sourcePath,
|
|
8
|
+
systemPrompt: input.systemPrompt,
|
|
9
|
+
textToolsPrompt: input.textToolsPrompt,
|
|
10
|
+
hash: input.hash,
|
|
11
|
+
metadata: input.metadata ? JSON.stringify(input.metadata) : null,
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
async findById(id) {
|
|
16
|
+
return prisma.promptVersion.findUnique({ where: { id } });
|
|
17
|
+
},
|
|
18
|
+
async findByName(name) {
|
|
19
|
+
return prisma.promptVersion.findUnique({ where: { name } });
|
|
20
|
+
},
|
|
21
|
+
async findByHash(hash) {
|
|
22
|
+
return prisma.promptVersion.findFirst({ where: { hash } });
|
|
23
|
+
},
|
|
24
|
+
async list() {
|
|
25
|
+
return prisma.promptVersion.findMany({ orderBy: { createdAt: 'desc' } });
|
|
26
|
+
},
|
|
27
|
+
async latest() {
|
|
28
|
+
return prisma.promptVersion.findFirst({ orderBy: { createdAt: 'desc' } });
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=prompt-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-versions.js","sourceRoot":"","sources":["../src/prompt-versions.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,6BAA6B,CAAC,MAAoB;IAChE,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAyB;YACpC,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;iBACjE;aACF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAU;YACvB,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY;YAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY;YAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,IAAI;YACR,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,CAAC,MAAM;YACV,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;AACJ,CAAC"}
|