@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,374 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { getProjectHookCommand } from "./hook-command.js";
5
+ import { getRuntimeInfo } from "./runtime-info.js";
6
+ const ADAPTER_NAME = "agentic-runtime-kiro";
7
+ const AGENT_NAME = "kiro_with_hooks";
8
+ const V2_PROMPT_EVENT = "userPromptSubmit";
9
+ const V2_STOP_EVENT = "stop";
10
+ const V3_PROMPT_TRIGGER = "UserPromptSubmit";
11
+ const V3_STOP_TRIGGER = "Stop";
12
+ const PROMPT_COMMAND = getProjectHookCommand("kiro", "PromptSubmit");
13
+ const STOP_COMMAND = getProjectHookCommand("kiro", "AgentStop");
14
+ function writeFile(path, content, force, filesWritten) {
15
+ if (existsSync(path) && !force) {
16
+ return;
17
+ }
18
+ mkdirSync(join(path, ".."), { recursive: true });
19
+ writeFileSync(path, content, "utf8");
20
+ filesWritten.push(path);
21
+ }
22
+ function runKiroCli(args, cwd) {
23
+ const result = spawnSync("kiro-cli", [...args], {
24
+ cwd,
25
+ encoding: "utf8",
26
+ stdio: "pipe"
27
+ });
28
+ return result.status === 0;
29
+ }
30
+ function hasKiroCli(cwd) {
31
+ return runKiroCli(["--version"], cwd);
32
+ }
33
+ function setDefaultKiroAgent(cwd) {
34
+ return runKiroCli(["agent", "set-default", AGENT_NAME], cwd);
35
+ }
36
+ function readJsonObject(path) {
37
+ if (!existsSync(path)) {
38
+ return {};
39
+ }
40
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
41
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
42
+ throw new Error(`${path} must contain a JSON object`);
43
+ }
44
+ return parsed;
45
+ }
46
+ function readAgentConfig(agentConfigPath) {
47
+ const parsed = readJsonObject(agentConfigPath);
48
+ return {
49
+ name: typeof parsed.name === "string" ? parsed.name : AGENT_NAME,
50
+ description: typeof parsed.description === "string"
51
+ ? parsed.description
52
+ : "Kiro CLI agent configured with agentic-runtime execution hooks.",
53
+ ...parsed
54
+ };
55
+ }
56
+ function hasCliHook(config, eventName, command) {
57
+ const hooks = config.hooks?.[eventName] ?? [];
58
+ return hooks.some((hook) => hook.command === command);
59
+ }
60
+ function addCliHook(config, eventName, command) {
61
+ if (hasCliHook(config, eventName, command)) {
62
+ return false;
63
+ }
64
+ config.hooks = config.hooks ?? {};
65
+ config.hooks[eventName] = config.hooks[eventName] ?? [];
66
+ config.hooks[eventName].push({
67
+ command
68
+ });
69
+ return true;
70
+ }
71
+ function readV3HookFile(path) {
72
+ const parsed = readJsonObject(path);
73
+ return {
74
+ version: typeof parsed.version === "string" ? parsed.version : "v1",
75
+ ...parsed,
76
+ hooks: Array.isArray(parsed.hooks) ? parsed.hooks : []
77
+ };
78
+ }
79
+ function hasV3Hook(config, trigger, command) {
80
+ return (config.hooks ?? []).some((hook) => hook.trigger === trigger && hook.action?.type === "command" && hook.action.command === command);
81
+ }
82
+ function addV3Hook(config, name, trigger, command) {
83
+ if (hasV3Hook(config, trigger, command)) {
84
+ return false;
85
+ }
86
+ config.version = config.version ?? "v1";
87
+ config.hooks = config.hooks ?? [];
88
+ config.hooks.push({
89
+ name,
90
+ trigger,
91
+ action: {
92
+ type: "command",
93
+ command
94
+ },
95
+ enabled: true
96
+ });
97
+ return true;
98
+ }
99
+ function steeringMarkdown() {
100
+ return `---
101
+ inclusion: always
102
+ ---
103
+
104
+ # Agentic Runtime for Kiro
105
+
106
+ 이 프로젝트는 \`agentic-runtime\`을 사용해 사용자 지시, Agent 실행 상태, 로그, 결과를 \`.agentic/platform.sqlite\`에 기록합니다.
107
+
108
+ ## Execution Recording Policy
109
+
110
+ - Kiro CLI V2에서는 \`.kiro/agents/${AGENT_NAME}.json\`의 hooks 필드를 통해 사용자 prompt와 turn 종료를 기록합니다.
111
+ - Kiro CLI V2에서는 \`${AGENT_NAME}\` agent를 사용해야 embedded hook이 적용됩니다.
112
+ - Kiro CLI V3에서는 \`.kiro/hooks/agentic-runtime.json\` standalone hook 파일을 통해 사용자 prompt와 turn 종료를 기록합니다.
113
+ - Kiro IDE에서는 \`.kiro/hooks/*.kiro.hook\` 파일을 통해 사용자 prompt와 turn 종료를 기록할 수 있습니다.
114
+ - 이전 지시, 작업 이력, 최근 결과, 실패 이력, 작업 현황을 질문받으면 현재 대화 기억에만 의존하지 말고 execution DB를 먼저 조회합니다.
115
+
116
+ ## Execution Query Commands
117
+
118
+ \`\`\`bash
119
+ npx agentic execution latest --source kiro --format json
120
+ npx agentic execution list --range 7d --source kiro --format json
121
+ npx agentic execution summary --range today --source kiro --format json
122
+ npx agentic execution show <run-id> --format json
123
+ \`\`\`
124
+
125
+ 조회 결과가 있으면 \`agentic_user_requests\`, \`agentic_execution_runs\`, \`agentic_execution_logs\`, \`agentic_execution_outputs\` 기록을 기준으로 답변합니다.
126
+
127
+ ## Agent Resource Context Policy
128
+
129
+ - 사용자가 문서 작성, 산출물 작성, 검증, 가이드 기반 작업을 요청하면 설치된 Agent package의 resource context를 먼저 확인합니다.
130
+ - 처음 사용하는 package는 한 번 등록합니다.
131
+
132
+ \`\`\`bash
133
+ npx agentic agent register agentic-domain-document
134
+ \`\`\`
135
+
136
+ - 요청별 context 확인 명령은 다음과 같습니다.
137
+
138
+ \`\`\`bash
139
+ npx agentic agent context "<사용자 지시문>"
140
+ npx agentic agent context "<사용자 지시문>" --format json
141
+ \`\`\`
142
+
143
+ - 조회된 context가 있으면 해당 instruction, guide, example, validation rule을 우선 적용합니다.
144
+ `;
145
+ }
146
+ function cliGuideMarkdown() {
147
+ const runtimeInfo = getRuntimeInfo();
148
+ return `# Agentic Runtime Kiro Adapter
149
+
150
+ adapter: \`${ADAPTER_NAME}\`
151
+ runtime: \`${runtimeInfo.name}@${runtimeInfo.version}\`
152
+
153
+ ## Kiro CLI V3 Early Access
154
+
155
+ Kiro CLI V3는 standalone hook 파일을 사용합니다.
156
+
157
+ 생성 또는 병합되는 파일:
158
+
159
+ \`\`\`text
160
+ .kiro/hooks/agentic-runtime.json
161
+ \`\`\`
162
+
163
+ 등록되는 hook:
164
+
165
+ | Kiro CLI V3 trigger | Command |
166
+ | --- | --- |
167
+ | \`${V3_PROMPT_TRIGGER}\` | \`${PROMPT_COMMAND}\` |
168
+ | \`${V3_STOP_TRIGGER}\` | \`${STOP_COMMAND}\` |
169
+
170
+ ## Kiro CLI V2
171
+
172
+ Kiro CLI V2는 agent config의 embedded \`hooks\` 필드를 사용합니다.
173
+
174
+ 생성 또는 병합되는 파일:
175
+
176
+ \`\`\`text
177
+ .kiro/agents/${AGENT_NAME}.json
178
+ \`\`\`
179
+
180
+ V2에서 hook을 적용하려면 다음 중 하나를 사용합니다.
181
+
182
+ \`\`\`bash
183
+ kiro-cli --agent ${AGENT_NAME}
184
+ kiro-cli agent set-default ${AGENT_NAME}
185
+ \`\`\`
186
+
187
+ 등록되는 hook:
188
+
189
+ | Kiro CLI V2 event | Command |
190
+ | --- | --- |
191
+ | \`${V2_PROMPT_EVENT}\` | \`${PROMPT_COMMAND}\` |
192
+ | \`${V2_STOP_EVENT}\` | \`${STOP_COMMAND}\` |
193
+
194
+ Kiro CLI에서 \`/hooks\`를 실행해 hook 인식 여부를 확인합니다.
195
+
196
+ ## Kiro IDE
197
+
198
+ Kiro IDE 호환을 위해 다음 파일도 함께 생성합니다.
199
+
200
+ \`\`\`text
201
+ .kiro/hooks/agentic-runtime-prompt-submit.kiro.hook
202
+ .kiro/hooks/agentic-runtime-agent-stop.kiro.hook
203
+ \`\`\`
204
+
205
+ Kiro CLI 검증이 우선이며, IDE hook 파일은 IDE 사용 시 보조 호환 산출물입니다.
206
+
207
+ ## 검증 명령
208
+
209
+ \`\`\`bash
210
+ npx agentic execution latest --source kiro --format json
211
+ npx agentic execution list --range today --source kiro
212
+ npx agentic execution summary --range today --source kiro
213
+ \`\`\`
214
+ `;
215
+ }
216
+ function idePromptHookJson() {
217
+ return `${JSON.stringify({
218
+ name: "agentic-runtime-prompt-submit",
219
+ enabled: true,
220
+ when: {
221
+ type: "promptSubmit"
222
+ },
223
+ then: {
224
+ type: "runCommand",
225
+ command: PROMPT_COMMAND
226
+ }
227
+ }, null, 2)}\n`;
228
+ }
229
+ function ideStopHookJson() {
230
+ return `${JSON.stringify({
231
+ name: "agentic-runtime-agent-stop",
232
+ enabled: true,
233
+ when: {
234
+ type: "agentStop"
235
+ },
236
+ then: {
237
+ type: "runCommand",
238
+ command: STOP_COMMAND
239
+ }
240
+ }, null, 2)}\n`;
241
+ }
242
+ function readmeMarkdown() {
243
+ return `# Agentic Runtime Kiro Adapter
244
+
245
+ 이 디렉터리는 \`agentic-runtime\`이 생성한 Kiro adapter 보조 파일을 담습니다.
246
+
247
+ ## 생성 파일
248
+
249
+ | 파일 | 역할 |
250
+ | --- | --- |
251
+ | \`.kiro/steering/agentic-runtime.md\` | Kiro가 참고할 runtime execution 지침 |
252
+ | \`.kiro/hooks/agentic-runtime.json\` | Kiro CLI V3 standalone hook 설정 |
253
+ | \`.kiro/agents/${AGENT_NAME}.json\` | Kiro CLI V2 embedded hook 설정 |
254
+ | \`.kiro/hooks/*.kiro.hook\` | Kiro IDE hook 호환 파일 |
255
+ | \`plugins/agentic-runtime-kiro/hooks/kiro-hook-guide.md\` | Kiro CLI/IDE hook 설정 가이드 |
256
+
257
+ Kiro CLI V3를 사용할 때는 \`.kiro/hooks/agentic-runtime.json\`, Kiro CLI V2를 사용할 때는 \`.kiro/agents/${AGENT_NAME}.json\`과 \`--agent ${AGENT_NAME}\` 또는 \`kiro-cli agent set-default ${AGENT_NAME}\` 적용 여부가 핵심입니다.
258
+ `;
259
+ }
260
+ export function installKiroAdapter(projectRoot = process.cwd(), options = {}) {
261
+ const filesWritten = [];
262
+ const messages = [];
263
+ const force = options.force ?? false;
264
+ const setDefault = options.setDefault ?? false;
265
+ const adapterRoot = join(projectRoot, "plugins", ADAPTER_NAME);
266
+ const steeringPath = join(projectRoot, ".kiro", "steering", "agentic-runtime.md");
267
+ const v2AgentConfigPath = join(projectRoot, ".kiro", "agents", `${AGENT_NAME}.json`);
268
+ const v3HookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime.json");
269
+ const idePromptHookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime-prompt-submit.kiro.hook");
270
+ const ideStopHookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime-agent-stop.kiro.hook");
271
+ const kiroCliAvailable = hasKiroCli(projectRoot);
272
+ writeFile(steeringPath, steeringMarkdown(), force, filesWritten);
273
+ writeFile(join(adapterRoot, "README.md"), readmeMarkdown(), force, filesWritten);
274
+ writeFile(join(adapterRoot, "hooks", "kiro-hook-guide.md"), cliGuideMarkdown(), force, filesWritten);
275
+ writeFile(idePromptHookPath, idePromptHookJson(), force, filesWritten);
276
+ writeFile(ideStopHookPath, ideStopHookJson(), force, filesWritten);
277
+ mkdirSync(join(v2AgentConfigPath, ".."), { recursive: true });
278
+ const agentConfig = readAgentConfig(v2AgentConfigPath);
279
+ const changedV2Prompt = addCliHook(agentConfig, V2_PROMPT_EVENT, PROMPT_COMMAND);
280
+ const changedV2Stop = addCliHook(agentConfig, V2_STOP_EVENT, STOP_COMMAND);
281
+ if (changedV2Prompt || changedV2Stop || !existsSync(v2AgentConfigPath) || force) {
282
+ writeFileSync(v2AgentConfigPath, `${JSON.stringify(agentConfig, null, 2)}\n`, "utf8");
283
+ filesWritten.push(v2AgentConfigPath);
284
+ }
285
+ mkdirSync(join(v3HookPath, ".."), { recursive: true });
286
+ const v3HookFile = readV3HookFile(v3HookPath);
287
+ const changedV3Prompt = addV3Hook(v3HookFile, "agentic-runtime-prompt-submit", V3_PROMPT_TRIGGER, PROMPT_COMMAND);
288
+ const changedV3Stop = addV3Hook(v3HookFile, "agentic-runtime-agent-stop", V3_STOP_TRIGGER, STOP_COMMAND);
289
+ if (changedV3Prompt || changedV3Stop || !existsSync(v3HookPath) || force) {
290
+ writeFileSync(v3HookPath, `${JSON.stringify(v3HookFile, null, 2)}\n`, "utf8");
291
+ filesWritten.push(v3HookPath);
292
+ }
293
+ if (!kiroCliAvailable) {
294
+ messages.push("Kiro CLI was not found. V2/V3 hook files, steering, and IDE hook files were still generated.");
295
+ }
296
+ const defaultAgentConfigured = setDefault && kiroCliAvailable ? setDefaultKiroAgent(projectRoot) : false;
297
+ messages.push("Kiro CLI V3 hooks were configured in .kiro/hooks/agentic-runtime.json.");
298
+ messages.push(`Kiro CLI V2 hooks were configured in .kiro/agents/${AGENT_NAME}.json.`);
299
+ if (setDefault && defaultAgentConfigured) {
300
+ messages.push(`Kiro CLI default agent was set to ${AGENT_NAME}.`);
301
+ }
302
+ else if (setDefault) {
303
+ messages.push(`Kiro CLI default agent could not be set automatically. Retry: kiro-cli agent set-default ${AGENT_NAME}`);
304
+ }
305
+ else {
306
+ messages.push(`For Kiro CLI V2, run with --agent ${AGENT_NAME} or set it as default with: kiro-cli agent set-default ${AGENT_NAME}`);
307
+ }
308
+ messages.push("Kiro IDE hook files were also prepared under .kiro/hooks for IDE compatibility.");
309
+ return {
310
+ adapterRoot,
311
+ steeringPath,
312
+ v2AgentConfigPath,
313
+ v3HookPath,
314
+ idePromptHookPath,
315
+ ideStopHookPath,
316
+ filesWritten,
317
+ kiroCliAvailable,
318
+ v2HooksConfigured: hasCliHook(agentConfig, V2_PROMPT_EVENT, PROMPT_COMMAND) && hasCliHook(agentConfig, V2_STOP_EVENT, STOP_COMMAND),
319
+ v3HooksConfigured: hasV3Hook(v3HookFile, V3_PROMPT_TRIGGER, PROMPT_COMMAND) && hasV3Hook(v3HookFile, V3_STOP_TRIGGER, STOP_COMMAND),
320
+ ideHookFilesPrepared: existsSync(idePromptHookPath) && existsSync(ideStopHookPath),
321
+ setDefaultRequested: setDefault,
322
+ defaultAgentConfigured,
323
+ messages
324
+ };
325
+ }
326
+ export function getKiroAdapterStatus(projectRoot = process.cwd()) {
327
+ const adapterRoot = join(projectRoot, "plugins", ADAPTER_NAME);
328
+ const steeringPath = join(projectRoot, ".kiro", "steering", "agentic-runtime.md");
329
+ const v2AgentConfigPath = join(projectRoot, ".kiro", "agents", `${AGENT_NAME}.json`);
330
+ const v3HookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime.json");
331
+ const idePromptHookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime-prompt-submit.kiro.hook");
332
+ const ideStopHookPath = join(projectRoot, ".kiro", "hooks", "agentic-runtime-agent-stop.kiro.hook");
333
+ const notes = [];
334
+ const kiroCliAvailable = hasKiroCli(projectRoot);
335
+ let agentConfig = {};
336
+ let v3HookFile = {};
337
+ if (existsSync(v2AgentConfigPath)) {
338
+ try {
339
+ agentConfig = readAgentConfig(v2AgentConfigPath);
340
+ }
341
+ catch (error) {
342
+ const message = error instanceof Error ? error.message : String(error);
343
+ notes.push(`V2 agent config is invalid: ${message}`);
344
+ }
345
+ }
346
+ if (existsSync(v3HookPath)) {
347
+ try {
348
+ v3HookFile = readV3HookFile(v3HookPath);
349
+ }
350
+ catch (error) {
351
+ const message = error instanceof Error ? error.message : String(error);
352
+ notes.push(`V3 hook file is invalid: ${message}`);
353
+ }
354
+ }
355
+ if (!kiroCliAvailable) {
356
+ notes.push("Kiro CLI was not found.");
357
+ }
358
+ return {
359
+ adapterRootExists: existsSync(adapterRoot),
360
+ steeringExists: existsSync(steeringPath),
361
+ v2AgentConfigExists: existsSync(v2AgentConfigPath),
362
+ v2PromptHookConfigured: hasCliHook(agentConfig, V2_PROMPT_EVENT, PROMPT_COMMAND),
363
+ v2StopHookConfigured: hasCliHook(agentConfig, V2_STOP_EVENT, STOP_COMMAND),
364
+ v3HookExists: existsSync(v3HookPath),
365
+ v3PromptHookConfigured: hasV3Hook(v3HookFile, V3_PROMPT_TRIGGER, PROMPT_COMMAND),
366
+ v3StopHookConfigured: hasV3Hook(v3HookFile, V3_STOP_TRIGGER, STOP_COMMAND),
367
+ idePromptHookExists: existsSync(idePromptHookPath),
368
+ ideStopHookExists: existsSync(ideStopHookPath),
369
+ kiroCliAvailable,
370
+ v2AgentName: AGENT_NAME,
371
+ notes
372
+ };
373
+ }
374
+ //# sourceMappingURL=kiro-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro-adapter.js","sourceRoot":"","sources":["../src/kiro-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type AgenticModuleLayer = "runtime" | "domain" | "capability" | "application" | "support";
2
+ export interface RegisterProjectModuleInput {
3
+ readonly packageName: string;
4
+ readonly packageVersion: string;
5
+ readonly moduleLayer?: AgenticModuleLayer;
6
+ readonly manifest?: unknown;
7
+ readonly enabled?: boolean;
8
+ }
9
+ export interface ProjectModule {
10
+ readonly packageName: string;
11
+ readonly packageVersion: string;
12
+ readonly moduleLayer?: AgenticModuleLayer;
13
+ readonly manifest: unknown;
14
+ readonly enabled: boolean;
15
+ readonly registeredAt: string;
16
+ readonly updatedAt: string;
17
+ }
18
+ export declare function parseModuleLayer(value: string | undefined): AgenticModuleLayer | undefined;
19
+ export declare function registerProjectModule(input: RegisterProjectModuleInput, projectRoot?: string): ProjectModule;
20
+ export declare function listProjectModules(projectRoot?: string): readonly ProjectModule[];
21
+ //# sourceMappingURL=module-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../src/module-registry.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAEjG,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAkBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAU1F;AAuDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,EACjC,WAAW,GAAE,MAAsB,GAClC,aAAa,CAOf;AAED,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,MAAsB,GAAG,SAAS,aAAa,EAAE,CAehG"}
@@ -0,0 +1,75 @@
1
+ import { openRuntimeDatabase } from "./database.js";
2
+ const MODULE_LAYERS = ["runtime", "domain", "capability", "application", "support"];
3
+ function isModuleLayer(value) {
4
+ return MODULE_LAYERS.includes(value);
5
+ }
6
+ export function parseModuleLayer(value) {
7
+ if (value === undefined) {
8
+ return undefined;
9
+ }
10
+ if (!isModuleLayer(value)) {
11
+ throw new Error(`Unsupported module layer: ${value}`);
12
+ }
13
+ return value;
14
+ }
15
+ function defaultManifest(input) {
16
+ return {
17
+ packageName: input.packageName,
18
+ packageVersion: input.packageVersion,
19
+ moduleLayer: input.moduleLayer
20
+ };
21
+ }
22
+ function mapProjectModuleRow(row) {
23
+ return {
24
+ packageName: row.package_name,
25
+ packageVersion: row.package_version,
26
+ moduleLayer: row.module_layer ?? undefined,
27
+ manifest: JSON.parse(row.manifest_json),
28
+ enabled: row.is_enabled === 1,
29
+ registeredAt: row.registered_at,
30
+ updatedAt: row.updated_at
31
+ };
32
+ }
33
+ function upsertProjectModule(db, input) {
34
+ const manifest = input.manifest ?? defaultManifest(input);
35
+ const enabled = input.enabled ?? true;
36
+ db.prepare(`INSERT INTO agentic_project_modules
37
+ (package_name, package_version, module_layer, manifest_json, is_enabled, registered_at, updated_at)
38
+ VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
39
+ ON CONFLICT(package_name) DO UPDATE SET
40
+ package_version = excluded.package_version,
41
+ module_layer = excluded.module_layer,
42
+ manifest_json = excluded.manifest_json,
43
+ is_enabled = excluded.is_enabled,
44
+ updated_at = excluded.updated_at`).run(input.packageName, input.packageVersion, input.moduleLayer ?? null, JSON.stringify(manifest), enabled ? 1 : 0);
45
+ const row = db
46
+ .prepare(`SELECT package_name, package_version, module_layer, manifest_json, is_enabled, registered_at, updated_at
47
+ FROM agentic_project_modules
48
+ WHERE package_name = ?`)
49
+ .get(input.packageName);
50
+ return mapProjectModuleRow(row);
51
+ }
52
+ export function registerProjectModule(input, projectRoot = process.cwd()) {
53
+ const db = openRuntimeDatabase(projectRoot);
54
+ try {
55
+ return upsertProjectModule(db, input);
56
+ }
57
+ finally {
58
+ db.close();
59
+ }
60
+ }
61
+ export function listProjectModules(projectRoot = process.cwd()) {
62
+ const db = openRuntimeDatabase(projectRoot);
63
+ try {
64
+ const rows = db
65
+ .prepare(`SELECT package_name, package_version, module_layer, manifest_json, is_enabled, registered_at, updated_at
66
+ FROM agentic_project_modules
67
+ ORDER BY package_name`)
68
+ .all();
69
+ return rows.map(mapProjectModuleRow);
70
+ }
71
+ finally {
72
+ db.close();
73
+ }
74
+ }
75
+ //# sourceMappingURL=module-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../src/module-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface RuntimeInfo {
2
+ readonly name: string;
3
+ readonly version: string;
4
+ readonly binaryName: string;
5
+ }
6
+ export declare const runtimeInfo: RuntimeInfo;
7
+ export declare function getRuntimeInfo(): RuntimeInfo;
8
+ //# sourceMappingURL=runtime-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-info.d.ts","sourceRoot":"","sources":["../src/runtime-info.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAeD,eAAO,MAAM,WAAW,EAAE,WAIzB,CAAC;AAEF,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
@@ -0,0 +1,15 @@
1
+ import { readFileSync } from "node:fs";
2
+ function readPackageJson() {
3
+ const packageJsonUrl = new URL("../package.json", import.meta.url);
4
+ return JSON.parse(readFileSync(packageJsonUrl, "utf8"));
5
+ }
6
+ const packageJson = readPackageJson();
7
+ export const runtimeInfo = {
8
+ name: packageJson.name ?? "@soddong/agentic-runtime",
9
+ version: packageJson.version ?? "0.0.0",
10
+ binaryName: packageJson.bin !== undefined ? Object.keys(packageJson.bin)[0] ?? "agentic" : "agentic"
11
+ };
12
+ export function getRuntimeInfo() {
13
+ return runtimeInfo;
14
+ }
15
+ //# sourceMappingURL=runtime-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-info.js","sourceRoot":"","sources":["../src/runtime-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAcvC,SAAS,eAAe;IACtB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAgB,CAAC;AACzE,CAAC;AAED,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,0BAA0B;IACpD,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO;IACvC,UAAU,EAAE,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;CACrG,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,77 @@
1
+ export type SeedImportRunStatus = "planned" | "blocked" | "failed" | "applied";
2
+ export type SeedImportItemStatus = "planned" | "blocked" | "warning" | "skipped" | "applied" | "failed";
3
+ export interface CreateSeedImportPlanInput {
4
+ readonly bundleCode: string;
5
+ readonly packageName?: string;
6
+ }
7
+ export interface ApplySeedImportPlanInput {
8
+ readonly seedImportRunId?: number;
9
+ readonly bundleCode?: string;
10
+ readonly packageName?: string;
11
+ }
12
+ export interface AgenticSeedApplyInput {
13
+ readonly sourcePackageName: string;
14
+ readonly sourcePackageVersion: string;
15
+ readonly bundleCode: string;
16
+ readonly bundleVersion: string;
17
+ readonly methodologyCode?: string;
18
+ readonly sourceSection: string;
19
+ readonly targetOperation: string;
20
+ readonly itemKey?: string;
21
+ readonly itemPayload?: unknown;
22
+ readonly mode: "apply";
23
+ }
24
+ export interface AgenticSeedApplyResult {
25
+ readonly status: "applied" | "skipped" | "blocked" | "failed";
26
+ readonly targetRefs?: readonly string[];
27
+ readonly message?: string;
28
+ readonly diagnostics?: readonly unknown[];
29
+ }
30
+ export interface SeedImportItem {
31
+ readonly seedImportItemId: number;
32
+ readonly seedImportRunId: number;
33
+ readonly itemOrder: number;
34
+ readonly sourceSection: string;
35
+ readonly targetPackage: string;
36
+ readonly targetDomain?: string;
37
+ readonly targetOperation: string;
38
+ readonly itemKey?: string;
39
+ readonly itemCount: number;
40
+ readonly itemStatus: SeedImportItemStatus;
41
+ readonly reasonCode?: string;
42
+ readonly reasonMessage?: string;
43
+ readonly itemPayload?: unknown;
44
+ readonly createdAt: string;
45
+ }
46
+ export interface SeedImportRun {
47
+ readonly seedImportRunId: number;
48
+ readonly bundleId: number;
49
+ readonly packageName: string;
50
+ readonly packageVersion: string;
51
+ readonly bundleCode: string;
52
+ readonly bundleVersion: string;
53
+ readonly methodologyCode?: string;
54
+ readonly importMode: "dry_run" | "apply";
55
+ readonly importStatus: SeedImportRunStatus;
56
+ readonly summary: SeedImportSummary;
57
+ readonly validationResult: unknown;
58
+ readonly createdAt: string;
59
+ readonly updatedAt: string;
60
+ }
61
+ export interface SeedImportSummary {
62
+ readonly totalItems: number;
63
+ readonly plannedItems: number;
64
+ readonly blockedItems: number;
65
+ readonly warningItems: number;
66
+ readonly skippedItems: number;
67
+ readonly appliedItems: number;
68
+ readonly failedItems: number;
69
+ }
70
+ export interface SeedImportPlanResult {
71
+ readonly run: SeedImportRun;
72
+ readonly items: readonly SeedImportItem[];
73
+ }
74
+ export declare function createSeedImportPlan(input: CreateSeedImportPlanInput, projectRoot?: string): Promise<SeedImportPlanResult>;
75
+ export declare function listSeedImportPlans(projectRoot?: string): readonly SeedImportPlanResult[];
76
+ export declare function applySeedImportPlan(input: ApplySeedImportPlanInput, projectRoot?: string): Promise<SeedImportPlanResult>;
77
+ //# sourceMappingURL=seed-importer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-importer.d.ts","sourceRoot":"","sources":["../src/seed-importer.ts"],"names":[],"mappings":"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"}