@soddong/agentic-runtime 0.16.0
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/.tbls.yml +103 -0
- package/CHANGELOG.md +229 -0
- package/README.md +707 -0
- package/dist/agent-router.d.ts +39 -0
- package/dist/agent-router.d.ts.map +1 -0
- package/dist/agent-router.js +175 -0
- package/dist/agent-router.js.map +1 -0
- package/dist/bundle-installer.d.ts +25 -0
- package/dist/bundle-installer.d.ts.map +1 -0
- package/dist/bundle-installer.js +149 -0
- package/dist/bundle-installer.js.map +1 -0
- package/dist/bundle-registry.d.ts +30 -0
- package/dist/bundle-registry.d.ts.map +1 -0
- package/dist/bundle-registry.js +102 -0
- package/dist/bundle-registry.js.map +1 -0
- package/dist/claude-code-adapter.d.ts +27 -0
- package/dist/claude-code-adapter.d.ts.map +1 -0
- package/dist/claude-code-adapter.js +177 -0
- package/dist/claude-code-adapter.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1731 -0
- package/dist/cli.js.map +1 -0
- package/dist/codex-adapter.d.ts +23 -0
- package/dist/codex-adapter.d.ts.map +1 -0
- package/dist/codex-adapter.js +264 -0
- package/dist/codex-adapter.js.map +1 -0
- package/dist/database.d.ts +22 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +184 -0
- package/dist/database.js.map +1 -0
- package/dist/execution-projects.d.ts +71 -0
- package/dist/execution-projects.d.ts.map +1 -0
- package/dist/execution-projects.js +333 -0
- package/dist/execution-projects.js.map +1 -0
- package/dist/execution-query.d.ts +73 -0
- package/dist/execution-query.d.ts.map +1 -0
- package/dist/execution-query.js +370 -0
- package/dist/execution-query.js.map +1 -0
- package/dist/execution.d.ts +47 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +153 -0
- package/dist/execution.js.map +1 -0
- package/dist/hook-command.d.ts +3 -0
- package/dist/hook-command.d.ts.map +1 -0
- package/dist/hook-command.js +13 -0
- package/dist/hook-command.js.map +1 -0
- package/dist/hook-record.d.ts +16 -0
- package/dist/hook-record.d.ts.map +1 -0
- package/dist/hook-record.js +427 -0
- package/dist/hook-record.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/kiro-adapter.d.ts +38 -0
- package/dist/kiro-adapter.d.ts.map +1 -0
- package/dist/kiro-adapter.js +374 -0
- package/dist/kiro-adapter.js.map +1 -0
- package/dist/module-registry.d.ts +21 -0
- package/dist/module-registry.d.ts.map +1 -0
- package/dist/module-registry.js +75 -0
- package/dist/module-registry.js.map +1 -0
- package/dist/runtime-info.d.ts +8 -0
- package/dist/runtime-info.d.ts.map +1 -0
- package/dist/runtime-info.js +15 -0
- package/dist/runtime-info.js.map +1 -0
- package/dist/seed-importer.d.ts +77 -0
- package/dist/seed-importer.d.ts.map +1 -0
- package/dist/seed-importer.js +570 -0
- package/dist/seed-importer.js.map +1 -0
- package/docs/build.md +129 -0
- package/docs/configuration.md +61 -0
- package/docs/delivery.md +90 -0
- package/docs/operations.md +112 -0
- package/docs/publishing.md +196 -0
- package/docs/schema/generated/README.md +31 -0
- package/docs/schema/generated/agentic_execution_logs.md +90 -0
- package/docs/schema/generated/agentic_execution_logs.svg +52 -0
- package/docs/schema/generated/agentic_execution_outputs.md +85 -0
- package/docs/schema/generated/agentic_execution_outputs.svg +52 -0
- package/docs/schema/generated/agentic_execution_project_activities.md +83 -0
- package/docs/schema/generated/agentic_execution_project_activities.svg +71 -0
- package/docs/schema/generated/agentic_execution_project_stages.md +69 -0
- package/docs/schema/generated/agentic_execution_project_stages.svg +71 -0
- package/docs/schema/generated/agentic_execution_projects.md +82 -0
- package/docs/schema/generated/agentic_execution_projects.svg +92 -0
- package/docs/schema/generated/agentic_execution_runs.md +111 -0
- package/docs/schema/generated/agentic_execution_runs.svg +92 -0
- package/docs/schema/generated/agentic_project_bundles.md +106 -0
- package/docs/schema/generated/agentic_project_bundles.svg +91 -0
- package/docs/schema/generated/agentic_project_modules.md +77 -0
- package/docs/schema/generated/agentic_project_modules.svg +49 -0
- package/docs/schema/generated/agentic_runtime_metadata.md +62 -0
- package/docs/schema/generated/agentic_runtime_metadata.svg +28 -0
- package/docs/schema/generated/agentic_schema_migrations.md +65 -0
- package/docs/schema/generated/agentic_schema_migrations.svg +32 -0
- package/docs/schema/generated/agentic_seed_import_items.md +85 -0
- package/docs/schema/generated/agentic_seed_import_items.svg +47 -0
- package/docs/schema/generated/agentic_seed_import_runs.md +103 -0
- package/docs/schema/generated/agentic_seed_import_runs.svg +68 -0
- package/docs/schema/generated/agentic_user_requests.md +66 -0
- package/docs/schema/generated/agentic_user_requests.svg +52 -0
- package/docs/schema/generated/schema.json +1976 -0
- package/docs/schema/generated/schema.mmd +167 -0
- package/docs/schema/generated/schema.svg +266 -0
- package/docs/schema/migrations.md +163 -0
- package/docs/usage.md +774 -0
- package/package.json +32 -0
- package/src/database/migrations/0001_runtime_base.sql +231 -0
- package/src/database/migrations/0002_runtime_bundles.sql +61 -0
- package/src/database/migrations/0003_runtime_seed_imports.sql +121 -0
- package/src/database/migrations/0004_runtime_seed_apply_status.sql +76 -0
- package/src/database/migrations/0005_runtime_execution_projects.sql +92 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export type ExecutionRange = "1h" | "6h" | "24h" | "7d" | "30d" | "today" | "yesterday" | "this-week" | "last-week" | "this-month" | "last-month";
|
|
2
|
+
export type ExecutionQueryStatus = "pending" | "running" | "succeeded" | "failed" | "cancelled";
|
|
3
|
+
export interface ExecutionQuery {
|
|
4
|
+
readonly range?: ExecutionRange;
|
|
5
|
+
readonly from?: string;
|
|
6
|
+
readonly to?: string;
|
|
7
|
+
readonly source?: string;
|
|
8
|
+
readonly status?: ExecutionQueryStatus;
|
|
9
|
+
readonly limit?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ExecutionRecord {
|
|
12
|
+
readonly runId: string;
|
|
13
|
+
readonly requestId?: string;
|
|
14
|
+
readonly packageName?: string;
|
|
15
|
+
readonly commandName?: string;
|
|
16
|
+
readonly runType: string;
|
|
17
|
+
readonly runStatus: ExecutionQueryStatus;
|
|
18
|
+
readonly source?: string;
|
|
19
|
+
readonly requestSource?: string;
|
|
20
|
+
readonly requestText?: string;
|
|
21
|
+
readonly latestOutputType?: string;
|
|
22
|
+
readonly latestOutputText?: string;
|
|
23
|
+
readonly latestOutputJson?: string;
|
|
24
|
+
readonly startedAt?: string;
|
|
25
|
+
readonly endedAt?: string;
|
|
26
|
+
readonly durationMs?: number;
|
|
27
|
+
readonly exitCode?: number;
|
|
28
|
+
readonly errorMessage?: string;
|
|
29
|
+
readonly createdAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ExecutionLogRecord {
|
|
32
|
+
readonly logId: number;
|
|
33
|
+
readonly runId: string;
|
|
34
|
+
readonly sequenceNo: number;
|
|
35
|
+
readonly logLevel: string;
|
|
36
|
+
readonly logType: string;
|
|
37
|
+
readonly message: string;
|
|
38
|
+
readonly payloadJson?: string;
|
|
39
|
+
readonly createdAt: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ExecutionOutputRecord {
|
|
42
|
+
readonly outputId: number;
|
|
43
|
+
readonly runId: string;
|
|
44
|
+
readonly outputType: string;
|
|
45
|
+
readonly contentText?: string;
|
|
46
|
+
readonly contentJson?: string;
|
|
47
|
+
readonly filePath?: string;
|
|
48
|
+
readonly createdAt: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ExecutionDetail {
|
|
51
|
+
readonly record: ExecutionRecord;
|
|
52
|
+
readonly logs: readonly ExecutionLogRecord[];
|
|
53
|
+
readonly outputs: readonly ExecutionOutputRecord[];
|
|
54
|
+
}
|
|
55
|
+
export interface ExecutionSummary {
|
|
56
|
+
readonly total: number;
|
|
57
|
+
readonly pending: number;
|
|
58
|
+
readonly running: number;
|
|
59
|
+
readonly succeeded: number;
|
|
60
|
+
readonly failed: number;
|
|
61
|
+
readonly cancelled: number;
|
|
62
|
+
readonly records: readonly ExecutionRecord[];
|
|
63
|
+
}
|
|
64
|
+
export interface RangeBounds {
|
|
65
|
+
readonly from?: string;
|
|
66
|
+
readonly to?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare function resolveRangeBounds(query: ExecutionQuery, now?: Date): RangeBounds;
|
|
69
|
+
export declare function listExecutions(query?: ExecutionQuery, projectRoot?: string): ExecutionRecord[];
|
|
70
|
+
export declare function getLatestExecution(query?: Omit<ExecutionQuery, "limit">, projectRoot?: string): ExecutionRecord | undefined;
|
|
71
|
+
export declare function getExecutionDetail(runId: string, projectRoot?: string): ExecutionDetail | undefined;
|
|
72
|
+
export declare function summarizeExecutions(query?: ExecutionQuery, projectRoot?: string): ExecutionSummary;
|
|
73
|
+
//# sourceMappingURL=execution-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-query.d.ts","sourceRoot":"","sources":["../src/execution-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { openRuntimeDatabaseReadOnly } from "./database.js";
|
|
2
|
+
const DEFAULT_LIMIT = 20;
|
|
3
|
+
const MAX_LIMIT = 200;
|
|
4
|
+
const KST_OFFSET_MS = 9 * 60 * 60 * 1000;
|
|
5
|
+
function pad(value) {
|
|
6
|
+
return String(value).padStart(2, "0");
|
|
7
|
+
}
|
|
8
|
+
function formatUtcSqlDateTime(date) {
|
|
9
|
+
return `${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())} ${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())}:${pad(date.getUTCSeconds())}`;
|
|
10
|
+
}
|
|
11
|
+
function getKstDateParts(date) {
|
|
12
|
+
const kstDate = new Date(date.getTime() + KST_OFFSET_MS);
|
|
13
|
+
return {
|
|
14
|
+
year: kstDate.getUTCFullYear(),
|
|
15
|
+
month: kstDate.getUTCMonth() + 1,
|
|
16
|
+
day: kstDate.getUTCDate()
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function utcDateFromKstParts(year, month, day, hours = 0, minutes = 0, seconds = 0) {
|
|
20
|
+
return new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds) - KST_OFFSET_MS);
|
|
21
|
+
}
|
|
22
|
+
function addUtcDays(date, days) {
|
|
23
|
+
const next = new Date(date);
|
|
24
|
+
next.setUTCDate(next.getUTCDate() + days);
|
|
25
|
+
return next;
|
|
26
|
+
}
|
|
27
|
+
function addUtcMonthsFromKstBoundary(date, months) {
|
|
28
|
+
const { year, month, day } = getKstDateParts(date);
|
|
29
|
+
return utcDateFromKstParts(year, month + months, day);
|
|
30
|
+
}
|
|
31
|
+
function startOfKstDay(date) {
|
|
32
|
+
const { year, month, day } = getKstDateParts(date);
|
|
33
|
+
return utcDateFromKstParts(year, month, day);
|
|
34
|
+
}
|
|
35
|
+
function startOfKstWeek(date) {
|
|
36
|
+
const kstDate = new Date(date.getTime() + KST_OFFSET_MS);
|
|
37
|
+
const dayOffset = (kstDate.getUTCDay() + 6) % 7;
|
|
38
|
+
return addUtcDays(startOfKstDay(date), -dayOffset);
|
|
39
|
+
}
|
|
40
|
+
function startOfKstMonth(date) {
|
|
41
|
+
const { year, month } = getKstDateParts(date);
|
|
42
|
+
return utcDateFromKstParts(year, month, 1);
|
|
43
|
+
}
|
|
44
|
+
function parseBoundary(value, isTo) {
|
|
45
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(value)) {
|
|
46
|
+
const [year, month, day] = value.split("-").map((part) => Number(part));
|
|
47
|
+
const date = utcDateFromKstParts(year, month, day);
|
|
48
|
+
return formatUtcSqlDateTime(isTo ? addUtcDays(date, 1) : date);
|
|
49
|
+
}
|
|
50
|
+
const kstDateTime = value.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?$/);
|
|
51
|
+
if (kstDateTime !== null) {
|
|
52
|
+
const [, year, month, day, hours, minutes, seconds = "0"] = kstDateTime;
|
|
53
|
+
return formatUtcSqlDateTime(utcDateFromKstParts(Number(year), Number(month), Number(day), Number(hours), Number(minutes), Number(seconds)));
|
|
54
|
+
}
|
|
55
|
+
const parsed = new Date(value);
|
|
56
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
57
|
+
throw new Error(`Invalid date value: ${value}`);
|
|
58
|
+
}
|
|
59
|
+
return formatUtcSqlDateTime(parsed);
|
|
60
|
+
}
|
|
61
|
+
export function resolveRangeBounds(query, now = new Date()) {
|
|
62
|
+
if (query.from !== undefined || query.to !== undefined) {
|
|
63
|
+
return {
|
|
64
|
+
from: query.from === undefined ? undefined : parseBoundary(query.from, false),
|
|
65
|
+
to: query.to === undefined ? undefined : parseBoundary(query.to, true)
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (query.range === undefined) {
|
|
69
|
+
return {};
|
|
70
|
+
}
|
|
71
|
+
const today = startOfKstDay(now);
|
|
72
|
+
if (query.range === "1h") {
|
|
73
|
+
return {
|
|
74
|
+
from: formatUtcSqlDateTime(new Date(now.getTime() - 60 * 60 * 1000)),
|
|
75
|
+
to: formatUtcSqlDateTime(now)
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (query.range === "6h") {
|
|
79
|
+
return {
|
|
80
|
+
from: formatUtcSqlDateTime(new Date(now.getTime() - 6 * 60 * 60 * 1000)),
|
|
81
|
+
to: formatUtcSqlDateTime(now)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (query.range === "24h") {
|
|
85
|
+
return {
|
|
86
|
+
from: formatUtcSqlDateTime(new Date(now.getTime() - 24 * 60 * 60 * 1000)),
|
|
87
|
+
to: formatUtcSqlDateTime(now)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (query.range === "7d") {
|
|
91
|
+
return {
|
|
92
|
+
from: formatUtcSqlDateTime(new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)),
|
|
93
|
+
to: formatUtcSqlDateTime(now)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (query.range === "30d") {
|
|
97
|
+
return {
|
|
98
|
+
from: formatUtcSqlDateTime(new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000)),
|
|
99
|
+
to: formatUtcSqlDateTime(now)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (query.range === "today") {
|
|
103
|
+
return {
|
|
104
|
+
from: formatUtcSqlDateTime(today),
|
|
105
|
+
to: formatUtcSqlDateTime(addUtcDays(today, 1))
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (query.range === "yesterday") {
|
|
109
|
+
return {
|
|
110
|
+
from: formatUtcSqlDateTime(addUtcDays(today, -1)),
|
|
111
|
+
to: formatUtcSqlDateTime(today)
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (query.range === "this-week") {
|
|
115
|
+
const start = startOfKstWeek(now);
|
|
116
|
+
return {
|
|
117
|
+
from: formatUtcSqlDateTime(start),
|
|
118
|
+
to: formatUtcSqlDateTime(addUtcDays(start, 7))
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (query.range === "last-week") {
|
|
122
|
+
const thisWeek = startOfKstWeek(now);
|
|
123
|
+
return {
|
|
124
|
+
from: formatUtcSqlDateTime(addUtcDays(thisWeek, -7)),
|
|
125
|
+
to: formatUtcSqlDateTime(thisWeek)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (query.range === "this-month") {
|
|
129
|
+
const start = startOfKstMonth(now);
|
|
130
|
+
return {
|
|
131
|
+
from: formatUtcSqlDateTime(start),
|
|
132
|
+
to: formatUtcSqlDateTime(addUtcMonthsFromKstBoundary(start, 1))
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const thisMonth = startOfKstMonth(now);
|
|
136
|
+
return {
|
|
137
|
+
from: formatUtcSqlDateTime(addUtcMonthsFromKstBoundary(thisMonth, -1)),
|
|
138
|
+
to: formatUtcSqlDateTime(thisMonth)
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function normalizeLimit(limit) {
|
|
142
|
+
if (limit === undefined || !Number.isFinite(limit)) {
|
|
143
|
+
return DEFAULT_LIMIT;
|
|
144
|
+
}
|
|
145
|
+
return Math.min(Math.max(Math.trunc(limit), 1), MAX_LIMIT);
|
|
146
|
+
}
|
|
147
|
+
function mapExecutionRow(row) {
|
|
148
|
+
return {
|
|
149
|
+
runId: row.run_id,
|
|
150
|
+
requestId: row.request_id ?? undefined,
|
|
151
|
+
packageName: row.package_name ?? undefined,
|
|
152
|
+
commandName: row.command_name ?? undefined,
|
|
153
|
+
runType: row.run_type,
|
|
154
|
+
runStatus: row.run_status,
|
|
155
|
+
source: row.run_source ?? undefined,
|
|
156
|
+
requestSource: row.request_source ?? undefined,
|
|
157
|
+
requestText: row.request_text ?? undefined,
|
|
158
|
+
latestOutputType: row.latest_output_type ?? undefined,
|
|
159
|
+
latestOutputText: row.latest_output_text ?? undefined,
|
|
160
|
+
latestOutputJson: row.latest_output_json ?? undefined,
|
|
161
|
+
startedAt: row.started_at ?? undefined,
|
|
162
|
+
endedAt: row.ended_at ?? undefined,
|
|
163
|
+
durationMs: row.duration_ms ?? undefined,
|
|
164
|
+
exitCode: row.exit_code ?? undefined,
|
|
165
|
+
errorMessage: row.error_message ?? undefined,
|
|
166
|
+
createdAt: row.created_at
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function mapLogRow(row) {
|
|
170
|
+
return {
|
|
171
|
+
logId: row.log_id,
|
|
172
|
+
runId: row.run_id,
|
|
173
|
+
sequenceNo: row.sequence_no,
|
|
174
|
+
logLevel: row.log_level,
|
|
175
|
+
logType: row.log_type,
|
|
176
|
+
message: row.message,
|
|
177
|
+
payloadJson: row.payload_json ?? undefined,
|
|
178
|
+
createdAt: row.created_at
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function mapOutputRow(row) {
|
|
182
|
+
return {
|
|
183
|
+
outputId: row.output_id,
|
|
184
|
+
runId: row.run_id,
|
|
185
|
+
outputType: row.output_type,
|
|
186
|
+
contentText: row.content_text ?? undefined,
|
|
187
|
+
contentJson: row.content_json ?? undefined,
|
|
188
|
+
filePath: row.file_path ?? undefined,
|
|
189
|
+
createdAt: row.created_at
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
function buildExecutionWhere(query, params) {
|
|
193
|
+
const clauses = [];
|
|
194
|
+
const bounds = resolveRangeBounds(query);
|
|
195
|
+
if (bounds.from !== undefined) {
|
|
196
|
+
clauses.push("r.created_at >= ?");
|
|
197
|
+
params.push(bounds.from);
|
|
198
|
+
}
|
|
199
|
+
if (bounds.to !== undefined) {
|
|
200
|
+
clauses.push("r.created_at < ?");
|
|
201
|
+
params.push(bounds.to);
|
|
202
|
+
}
|
|
203
|
+
if (query.status !== undefined) {
|
|
204
|
+
clauses.push("r.run_status = ?");
|
|
205
|
+
params.push(query.status);
|
|
206
|
+
}
|
|
207
|
+
if (query.source !== undefined) {
|
|
208
|
+
clauses.push(`(json_extract(r.run_options_json, '$.source') = ? OR json_extract(req.context_json, '$.source') = ? OR r.command_name = ?)`);
|
|
209
|
+
params.push(query.source, query.source, query.source);
|
|
210
|
+
}
|
|
211
|
+
return clauses.length === 0 ? "" : `WHERE ${clauses.join(" AND ")}`;
|
|
212
|
+
}
|
|
213
|
+
function selectExecutions(db, query) {
|
|
214
|
+
const params = [];
|
|
215
|
+
const where = buildExecutionWhere(query, params);
|
|
216
|
+
const limit = normalizeLimit(query.limit);
|
|
217
|
+
params.push(limit);
|
|
218
|
+
const rows = db
|
|
219
|
+
.prepare(`SELECT
|
|
220
|
+
r.run_id,
|
|
221
|
+
r.request_id,
|
|
222
|
+
r.package_name,
|
|
223
|
+
r.command_name,
|
|
224
|
+
r.run_type,
|
|
225
|
+
r.run_status,
|
|
226
|
+
COALESCE(json_extract(r.run_options_json, '$.source'), json_extract(req.context_json, '$.source'), r.command_name) AS run_source,
|
|
227
|
+
req.request_source,
|
|
228
|
+
req.request_text,
|
|
229
|
+
(
|
|
230
|
+
SELECT o.output_type
|
|
231
|
+
FROM agentic_execution_outputs o
|
|
232
|
+
WHERE o.run_id = r.run_id
|
|
233
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
234
|
+
LIMIT 1
|
|
235
|
+
) AS latest_output_type,
|
|
236
|
+
(
|
|
237
|
+
SELECT o.content_text
|
|
238
|
+
FROM agentic_execution_outputs o
|
|
239
|
+
WHERE o.run_id = r.run_id
|
|
240
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
241
|
+
LIMIT 1
|
|
242
|
+
) AS latest_output_text,
|
|
243
|
+
(
|
|
244
|
+
SELECT o.content_json
|
|
245
|
+
FROM agentic_execution_outputs o
|
|
246
|
+
WHERE o.run_id = r.run_id
|
|
247
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
248
|
+
LIMIT 1
|
|
249
|
+
) AS latest_output_json,
|
|
250
|
+
r.started_at,
|
|
251
|
+
r.ended_at,
|
|
252
|
+
r.duration_ms,
|
|
253
|
+
r.exit_code,
|
|
254
|
+
r.error_message,
|
|
255
|
+
r.created_at
|
|
256
|
+
FROM agentic_execution_runs r
|
|
257
|
+
LEFT JOIN agentic_user_requests req
|
|
258
|
+
ON req.request_id = r.request_id
|
|
259
|
+
${where}
|
|
260
|
+
ORDER BY r.created_at DESC, r.rowid DESC
|
|
261
|
+
LIMIT ?`)
|
|
262
|
+
.all(...params);
|
|
263
|
+
return rows.map(mapExecutionRow);
|
|
264
|
+
}
|
|
265
|
+
export function listExecutions(query = {}, projectRoot = process.cwd()) {
|
|
266
|
+
const opened = openRuntimeDatabaseReadOnly(projectRoot);
|
|
267
|
+
const db = opened.database;
|
|
268
|
+
try {
|
|
269
|
+
return selectExecutions(db, query);
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
db.close();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
export function getLatestExecution(query = {}, projectRoot = process.cwd()) {
|
|
276
|
+
return listExecutions({
|
|
277
|
+
...query,
|
|
278
|
+
limit: 1
|
|
279
|
+
}, projectRoot)[0];
|
|
280
|
+
}
|
|
281
|
+
export function getExecutionDetail(runId, projectRoot = process.cwd()) {
|
|
282
|
+
const opened = openRuntimeDatabaseReadOnly(projectRoot);
|
|
283
|
+
const db = opened.database;
|
|
284
|
+
try {
|
|
285
|
+
const rows = db
|
|
286
|
+
.prepare(`SELECT
|
|
287
|
+
r.run_id,
|
|
288
|
+
r.request_id,
|
|
289
|
+
r.package_name,
|
|
290
|
+
r.command_name,
|
|
291
|
+
r.run_type,
|
|
292
|
+
r.run_status,
|
|
293
|
+
COALESCE(json_extract(r.run_options_json, '$.source'), json_extract(req.context_json, '$.source'), r.command_name) AS run_source,
|
|
294
|
+
req.request_source,
|
|
295
|
+
req.request_text,
|
|
296
|
+
(
|
|
297
|
+
SELECT o.output_type
|
|
298
|
+
FROM agentic_execution_outputs o
|
|
299
|
+
WHERE o.run_id = r.run_id
|
|
300
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
301
|
+
LIMIT 1
|
|
302
|
+
) AS latest_output_type,
|
|
303
|
+
(
|
|
304
|
+
SELECT o.content_text
|
|
305
|
+
FROM agentic_execution_outputs o
|
|
306
|
+
WHERE o.run_id = r.run_id
|
|
307
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
308
|
+
LIMIT 1
|
|
309
|
+
) AS latest_output_text,
|
|
310
|
+
(
|
|
311
|
+
SELECT o.content_json
|
|
312
|
+
FROM agentic_execution_outputs o
|
|
313
|
+
WHERE o.run_id = r.run_id
|
|
314
|
+
ORDER BY o.created_at DESC, o.output_id DESC
|
|
315
|
+
LIMIT 1
|
|
316
|
+
) AS latest_output_json,
|
|
317
|
+
r.started_at,
|
|
318
|
+
r.ended_at,
|
|
319
|
+
r.duration_ms,
|
|
320
|
+
r.exit_code,
|
|
321
|
+
r.error_message,
|
|
322
|
+
r.created_at
|
|
323
|
+
FROM agentic_execution_runs r
|
|
324
|
+
LEFT JOIN agentic_user_requests req
|
|
325
|
+
ON req.request_id = r.request_id
|
|
326
|
+
WHERE r.run_id = ?
|
|
327
|
+
LIMIT 1`)
|
|
328
|
+
.all(runId);
|
|
329
|
+
const record = rows[0] === undefined ? undefined : mapExecutionRow(rows[0]);
|
|
330
|
+
if (record === undefined) {
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
const logs = db
|
|
334
|
+
.prepare(`SELECT log_id, run_id, sequence_no, log_level, log_type, message, payload_json, created_at
|
|
335
|
+
FROM agentic_execution_logs
|
|
336
|
+
WHERE run_id = ?
|
|
337
|
+
ORDER BY sequence_no ASC, log_id ASC`)
|
|
338
|
+
.all(runId);
|
|
339
|
+
const outputs = db
|
|
340
|
+
.prepare(`SELECT output_id, run_id, output_type, content_text, content_json, file_path, created_at
|
|
341
|
+
FROM agentic_execution_outputs
|
|
342
|
+
WHERE run_id = ?
|
|
343
|
+
ORDER BY created_at ASC, output_id ASC`)
|
|
344
|
+
.all(runId);
|
|
345
|
+
return {
|
|
346
|
+
record,
|
|
347
|
+
logs: logs.map(mapLogRow),
|
|
348
|
+
outputs: outputs.map(mapOutputRow)
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
finally {
|
|
352
|
+
db.close();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
export function summarizeExecutions(query = {}, projectRoot = process.cwd()) {
|
|
356
|
+
const records = listExecutions({
|
|
357
|
+
...query,
|
|
358
|
+
limit: query.limit ?? MAX_LIMIT
|
|
359
|
+
}, projectRoot);
|
|
360
|
+
return {
|
|
361
|
+
total: records.length,
|
|
362
|
+
pending: records.filter((record) => record.runStatus === "pending").length,
|
|
363
|
+
running: records.filter((record) => record.runStatus === "running").length,
|
|
364
|
+
succeeded: records.filter((record) => record.runStatus === "succeeded").length,
|
|
365
|
+
failed: records.filter((record) => record.runStatus === "failed").length,
|
|
366
|
+
cancelled: records.filter((record) => record.runStatus === "cancelled").length,
|
|
367
|
+
records
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=execution-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-query.js","sourceRoot":"","sources":["../src/execution-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AgentClient, AgentRunInput } from "@soddong/agentic-capability-agent-client";
|
|
2
|
+
export type RuntimeRunType = "command" | "agent" | "workflow" | "migration" | "validation";
|
|
3
|
+
export type RuntimeLogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
4
|
+
export type RuntimeLogType = "event" | "stdout" | "stderr" | "tool" | "system";
|
|
5
|
+
export type RuntimeOutputType = "text" | "json" | "file" | "artifact";
|
|
6
|
+
type RequestSource = "cli" | "api" | "test" | "system";
|
|
7
|
+
type ExecutionStatus = "pending" | "running" | "succeeded" | "failed" | "cancelled";
|
|
8
|
+
export interface RuntimeExecutionOutput {
|
|
9
|
+
readonly outputType: RuntimeOutputType;
|
|
10
|
+
readonly contentText?: string;
|
|
11
|
+
readonly contentJson?: unknown;
|
|
12
|
+
readonly filePath?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RuntimeLogger {
|
|
15
|
+
trace(message: string, payload?: unknown, logType?: RuntimeLogType): void;
|
|
16
|
+
debug(message: string, payload?: unknown, logType?: RuntimeLogType): void;
|
|
17
|
+
info(message: string, payload?: unknown, logType?: RuntimeLogType): void;
|
|
18
|
+
warn(message: string, payload?: unknown, logType?: RuntimeLogType): void;
|
|
19
|
+
error(message: string, payload?: unknown, logType?: RuntimeLogType): void;
|
|
20
|
+
}
|
|
21
|
+
export interface RuntimeExecutionContext {
|
|
22
|
+
readonly runId: string;
|
|
23
|
+
readonly requestId?: string;
|
|
24
|
+
readonly logger: RuntimeLogger;
|
|
25
|
+
}
|
|
26
|
+
export interface RuntimeExecutionInput {
|
|
27
|
+
readonly runType: RuntimeRunType;
|
|
28
|
+
readonly packageName?: string;
|
|
29
|
+
readonly commandName?: string;
|
|
30
|
+
readonly inputText?: string;
|
|
31
|
+
readonly requestSource?: RequestSource;
|
|
32
|
+
readonly context?: unknown;
|
|
33
|
+
readonly options?: unknown;
|
|
34
|
+
readonly handler: (context: RuntimeExecutionContext) => Promise<RuntimeExecutionOutput | readonly RuntimeExecutionOutput[] | void> | RuntimeExecutionOutput | readonly RuntimeExecutionOutput[] | void;
|
|
35
|
+
}
|
|
36
|
+
export interface RuntimeExecutionResult {
|
|
37
|
+
readonly runId: string;
|
|
38
|
+
readonly requestId?: string;
|
|
39
|
+
readonly status: Exclude<ExecutionStatus, "pending" | "running">;
|
|
40
|
+
readonly durationMs: number;
|
|
41
|
+
readonly outputCount: number;
|
|
42
|
+
}
|
|
43
|
+
export type { AgentClient, AgentContribution, AgentExecutionContext, AgentInstructionLevel, AgentManifest, AgentResourceIndex, AgentResourceItem, AgentRunInput } from "@soddong/agentic-capability-agent-client";
|
|
44
|
+
export type AgentRuntimeClient = AgentClient;
|
|
45
|
+
export declare function runRuntimeExecution(input: RuntimeExecutionInput, projectRoot?: string): Promise<RuntimeExecutionResult>;
|
|
46
|
+
export declare function runAgentRuntimeClient(agent: AgentRuntimeClient, input: AgentRunInput, projectRoot?: string): Promise<RuntimeExecutionResult>;
|
|
47
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { openRuntimeDatabase } from "./database.js";
|
|
3
|
+
class DatabaseRuntimeLogger {
|
|
4
|
+
db;
|
|
5
|
+
runId;
|
|
6
|
+
sequenceNo = 0;
|
|
7
|
+
constructor(db, runId) {
|
|
8
|
+
this.db = db;
|
|
9
|
+
this.runId = runId;
|
|
10
|
+
}
|
|
11
|
+
trace(message, payload, logType = "event") {
|
|
12
|
+
this.write("trace", message, payload, logType);
|
|
13
|
+
}
|
|
14
|
+
debug(message, payload, logType = "event") {
|
|
15
|
+
this.write("debug", message, payload, logType);
|
|
16
|
+
}
|
|
17
|
+
info(message, payload, logType = "event") {
|
|
18
|
+
this.write("info", message, payload, logType);
|
|
19
|
+
}
|
|
20
|
+
warn(message, payload, logType = "event") {
|
|
21
|
+
this.write("warn", message, payload, logType);
|
|
22
|
+
}
|
|
23
|
+
error(message, payload, logType = "event") {
|
|
24
|
+
this.write("error", message, payload, logType);
|
|
25
|
+
}
|
|
26
|
+
write(logLevel, message, payload, logType) {
|
|
27
|
+
this.db
|
|
28
|
+
.prepare(`INSERT INTO agentic_execution_logs
|
|
29
|
+
(run_id, sequence_no, log_level, log_type, message, payload_json)
|
|
30
|
+
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
31
|
+
.run(this.runId, this.sequenceNo, logLevel, logType, message, stringifyJson(payload));
|
|
32
|
+
this.sequenceNo += 1;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function stringifyJson(value) {
|
|
36
|
+
if (value === undefined || value === null) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return JSON.stringify(value);
|
|
40
|
+
}
|
|
41
|
+
function isOutputArray(output) {
|
|
42
|
+
return Array.isArray(output);
|
|
43
|
+
}
|
|
44
|
+
function normalizeOutputs(output) {
|
|
45
|
+
if (output === undefined) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
if (isOutputArray(output)) {
|
|
49
|
+
return output.map(normalizeOutput);
|
|
50
|
+
}
|
|
51
|
+
return [normalizeOutput(output)];
|
|
52
|
+
}
|
|
53
|
+
function normalizeOutput(output) {
|
|
54
|
+
return {
|
|
55
|
+
outputType: output.outputType,
|
|
56
|
+
contentText: output.contentText,
|
|
57
|
+
contentJson: output.contentJson,
|
|
58
|
+
filePath: output.filePath
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function insertRequest(db, input) {
|
|
62
|
+
if (input.inputText === undefined) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const requestId = randomUUID();
|
|
66
|
+
db.prepare(`INSERT INTO agentic_user_requests
|
|
67
|
+
(request_id, request_text, request_source, context_json)
|
|
68
|
+
VALUES (?, ?, ?, ?)`).run(requestId, input.inputText, input.requestSource ?? "api", stringifyJson(input.context));
|
|
69
|
+
return requestId;
|
|
70
|
+
}
|
|
71
|
+
function insertRun(db, runId, requestId, input) {
|
|
72
|
+
db.prepare(`INSERT INTO agentic_execution_runs
|
|
73
|
+
(run_id, request_id, package_name, command_name, run_type, run_status, started_at, run_options_json)
|
|
74
|
+
VALUES (?, ?, ?, ?, ?, 'running', CURRENT_TIMESTAMP, ?)`).run(runId, requestId ?? null, input.packageName ?? null, input.commandName ?? null, input.runType, stringifyJson(input.options));
|
|
75
|
+
}
|
|
76
|
+
function insertOutputs(db, runId, outputs) {
|
|
77
|
+
const insertOutput = db.prepare(`INSERT INTO agentic_execution_outputs
|
|
78
|
+
(run_id, output_type, content_text, content_json, file_path)
|
|
79
|
+
VALUES (?, ?, ?, ?, ?)`);
|
|
80
|
+
for (const output of outputs) {
|
|
81
|
+
insertOutput.run(runId, output.outputType, output.contentText ?? null, stringifyJson(output.contentJson), output.filePath ?? null);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function finishRun(db, runId, status, startedAtMs, errorMessage) {
|
|
85
|
+
const durationMs = Math.max(0, Date.now() - startedAtMs);
|
|
86
|
+
db.prepare(`UPDATE agentic_execution_runs
|
|
87
|
+
SET run_status = ?,
|
|
88
|
+
ended_at = CURRENT_TIMESTAMP,
|
|
89
|
+
duration_ms = ?,
|
|
90
|
+
exit_code = ?,
|
|
91
|
+
error_message = ?
|
|
92
|
+
WHERE run_id = ?`).run(status, durationMs, status === "succeeded" ? 0 : 1, errorMessage ?? null, runId);
|
|
93
|
+
return durationMs;
|
|
94
|
+
}
|
|
95
|
+
export async function runRuntimeExecution(input, projectRoot = process.cwd()) {
|
|
96
|
+
const db = openRuntimeDatabase(projectRoot);
|
|
97
|
+
const runId = randomUUID();
|
|
98
|
+
const startedAtMs = Date.now();
|
|
99
|
+
const requestId = insertRequest(db, input);
|
|
100
|
+
insertRun(db, runId, requestId, input);
|
|
101
|
+
const logger = new DatabaseRuntimeLogger(db, runId);
|
|
102
|
+
const context = { runId, requestId, logger };
|
|
103
|
+
try {
|
|
104
|
+
logger.info("Execution started", {
|
|
105
|
+
runType: input.runType,
|
|
106
|
+
packageName: input.packageName,
|
|
107
|
+
commandName: input.commandName
|
|
108
|
+
});
|
|
109
|
+
const output = await input.handler(context);
|
|
110
|
+
const outputs = normalizeOutputs(output);
|
|
111
|
+
insertOutputs(db, runId, outputs);
|
|
112
|
+
const durationMs = finishRun(db, runId, "succeeded", startedAtMs);
|
|
113
|
+
logger.info("Execution succeeded", { durationMs, outputCount: outputs.length });
|
|
114
|
+
return {
|
|
115
|
+
runId,
|
|
116
|
+
requestId,
|
|
117
|
+
status: "succeeded",
|
|
118
|
+
durationMs,
|
|
119
|
+
outputCount: outputs.length
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
124
|
+
logger.error("Execution failed", { errorMessage: message });
|
|
125
|
+
const durationMs = finishRun(db, runId, "failed", startedAtMs, message);
|
|
126
|
+
return {
|
|
127
|
+
runId,
|
|
128
|
+
requestId,
|
|
129
|
+
status: "failed",
|
|
130
|
+
durationMs,
|
|
131
|
+
outputCount: 0
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
db.close();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function runAgentRuntimeClient(agent, input, projectRoot = process.cwd()) {
|
|
139
|
+
return runRuntimeExecution({
|
|
140
|
+
runType: "agent",
|
|
141
|
+
packageName: agent.manifest.packageName,
|
|
142
|
+
commandName: agent.manifest.agentId,
|
|
143
|
+
inputText: input.requestText,
|
|
144
|
+
requestSource: "api",
|
|
145
|
+
context: input.context,
|
|
146
|
+
options: {
|
|
147
|
+
agent: agent.manifest,
|
|
148
|
+
input: input.options
|
|
149
|
+
},
|
|
150
|
+
handler: (context) => agent.run(input, context)
|
|
151
|
+
}, projectRoot);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=execution.js.map
|