@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.
Files changed (114) hide show
  1. package/.tbls.yml +103 -0
  2. package/CHANGELOG.md +229 -0
  3. package/README.md +707 -0
  4. package/dist/agent-router.d.ts +39 -0
  5. package/dist/agent-router.d.ts.map +1 -0
  6. package/dist/agent-router.js +175 -0
  7. package/dist/agent-router.js.map +1 -0
  8. package/dist/bundle-installer.d.ts +25 -0
  9. package/dist/bundle-installer.d.ts.map +1 -0
  10. package/dist/bundle-installer.js +149 -0
  11. package/dist/bundle-installer.js.map +1 -0
  12. package/dist/bundle-registry.d.ts +30 -0
  13. package/dist/bundle-registry.d.ts.map +1 -0
  14. package/dist/bundle-registry.js +102 -0
  15. package/dist/bundle-registry.js.map +1 -0
  16. package/dist/claude-code-adapter.d.ts +27 -0
  17. package/dist/claude-code-adapter.d.ts.map +1 -0
  18. package/dist/claude-code-adapter.js +177 -0
  19. package/dist/claude-code-adapter.js.map +1 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +1731 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/codex-adapter.d.ts +23 -0
  25. package/dist/codex-adapter.d.ts.map +1 -0
  26. package/dist/codex-adapter.js +264 -0
  27. package/dist/codex-adapter.js.map +1 -0
  28. package/dist/database.d.ts +22 -0
  29. package/dist/database.d.ts.map +1 -0
  30. package/dist/database.js +184 -0
  31. package/dist/database.js.map +1 -0
  32. package/dist/execution-projects.d.ts +71 -0
  33. package/dist/execution-projects.d.ts.map +1 -0
  34. package/dist/execution-projects.js +333 -0
  35. package/dist/execution-projects.js.map +1 -0
  36. package/dist/execution-query.d.ts +73 -0
  37. package/dist/execution-query.d.ts.map +1 -0
  38. package/dist/execution-query.js +370 -0
  39. package/dist/execution-query.js.map +1 -0
  40. package/dist/execution.d.ts +47 -0
  41. package/dist/execution.d.ts.map +1 -0
  42. package/dist/execution.js +153 -0
  43. package/dist/execution.js.map +1 -0
  44. package/dist/hook-command.d.ts +3 -0
  45. package/dist/hook-command.d.ts.map +1 -0
  46. package/dist/hook-command.js +13 -0
  47. package/dist/hook-command.js.map +1 -0
  48. package/dist/hook-record.d.ts +16 -0
  49. package/dist/hook-record.d.ts.map +1 -0
  50. package/dist/hook-record.js +427 -0
  51. package/dist/hook-record.js.map +1 -0
  52. package/dist/index.d.ts +29 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +15 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/kiro-adapter.d.ts +38 -0
  57. package/dist/kiro-adapter.d.ts.map +1 -0
  58. package/dist/kiro-adapter.js +374 -0
  59. package/dist/kiro-adapter.js.map +1 -0
  60. package/dist/module-registry.d.ts +21 -0
  61. package/dist/module-registry.d.ts.map +1 -0
  62. package/dist/module-registry.js +75 -0
  63. package/dist/module-registry.js.map +1 -0
  64. package/dist/runtime-info.d.ts +8 -0
  65. package/dist/runtime-info.d.ts.map +1 -0
  66. package/dist/runtime-info.js +15 -0
  67. package/dist/runtime-info.js.map +1 -0
  68. package/dist/seed-importer.d.ts +77 -0
  69. package/dist/seed-importer.d.ts.map +1 -0
  70. package/dist/seed-importer.js +570 -0
  71. package/dist/seed-importer.js.map +1 -0
  72. package/docs/build.md +129 -0
  73. package/docs/configuration.md +61 -0
  74. package/docs/delivery.md +90 -0
  75. package/docs/operations.md +112 -0
  76. package/docs/publishing.md +196 -0
  77. package/docs/schema/generated/README.md +31 -0
  78. package/docs/schema/generated/agentic_execution_logs.md +90 -0
  79. package/docs/schema/generated/agentic_execution_logs.svg +52 -0
  80. package/docs/schema/generated/agentic_execution_outputs.md +85 -0
  81. package/docs/schema/generated/agentic_execution_outputs.svg +52 -0
  82. package/docs/schema/generated/agentic_execution_project_activities.md +83 -0
  83. package/docs/schema/generated/agentic_execution_project_activities.svg +71 -0
  84. package/docs/schema/generated/agentic_execution_project_stages.md +69 -0
  85. package/docs/schema/generated/agentic_execution_project_stages.svg +71 -0
  86. package/docs/schema/generated/agentic_execution_projects.md +82 -0
  87. package/docs/schema/generated/agentic_execution_projects.svg +92 -0
  88. package/docs/schema/generated/agentic_execution_runs.md +111 -0
  89. package/docs/schema/generated/agentic_execution_runs.svg +92 -0
  90. package/docs/schema/generated/agentic_project_bundles.md +106 -0
  91. package/docs/schema/generated/agentic_project_bundles.svg +91 -0
  92. package/docs/schema/generated/agentic_project_modules.md +77 -0
  93. package/docs/schema/generated/agentic_project_modules.svg +49 -0
  94. package/docs/schema/generated/agentic_runtime_metadata.md +62 -0
  95. package/docs/schema/generated/agentic_runtime_metadata.svg +28 -0
  96. package/docs/schema/generated/agentic_schema_migrations.md +65 -0
  97. package/docs/schema/generated/agentic_schema_migrations.svg +32 -0
  98. package/docs/schema/generated/agentic_seed_import_items.md +85 -0
  99. package/docs/schema/generated/agentic_seed_import_items.svg +47 -0
  100. package/docs/schema/generated/agentic_seed_import_runs.md +103 -0
  101. package/docs/schema/generated/agentic_seed_import_runs.svg +68 -0
  102. package/docs/schema/generated/agentic_user_requests.md +66 -0
  103. package/docs/schema/generated/agentic_user_requests.svg +52 -0
  104. package/docs/schema/generated/schema.json +1976 -0
  105. package/docs/schema/generated/schema.mmd +167 -0
  106. package/docs/schema/generated/schema.svg +266 -0
  107. package/docs/schema/migrations.md +163 -0
  108. package/docs/usage.md +774 -0
  109. package/package.json +32 -0
  110. package/src/database/migrations/0001_runtime_base.sql +231 -0
  111. package/src/database/migrations/0002_runtime_bundles.sql +61 -0
  112. package/src/database/migrations/0003_runtime_seed_imports.sql +121 -0
  113. package/src/database/migrations/0004_runtime_seed_apply_status.sql +76 -0
  114. 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