@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
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@soddong/agentic-runtime",
3
+ "version": "0.16.0",
4
+ "description": "Agentic Platform local execution runtime and CLI",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "agentic": "dist/cli.js"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "README.md",
15
+ "CHANGELOG.md",
16
+ ".tbls.yml",
17
+ "docs",
18
+ "src/database/migrations"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.json",
22
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
23
+ "typecheck": "tsc -p tsconfig.json --noEmit"
24
+ },
25
+ "dependencies": {
26
+ "better-sqlite3": "^12.11.1",
27
+ "@soddong/agentic-capability-agent-client": "^0.4.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/better-sqlite3": "^7.6.13"
31
+ }
32
+ }
@@ -0,0 +1,231 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- runtime DB 식별과 runtime-level metadata를 관리한다.
4
+ CREATE TABLE IF NOT EXISTS agentic_runtime_metadata (
5
+ -- metadata 항목 식별자
6
+ metadata_key VARCHAR(128) PRIMARY KEY,
7
+
8
+ -- metadata 값
9
+ metadata_value TEXT NOT NULL,
10
+
11
+ -- metadata 값의 논리 타입
12
+ value_type VARCHAR(16) NOT NULL DEFAULT 'string'
13
+ CHECK (value_type IN ('string', 'integer', 'boolean', 'json')),
14
+
15
+ -- metadata 항목 설명
16
+ metadata_description TEXT,
17
+
18
+ -- metadata 최종 수정 시각
19
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
20
+ );
21
+
22
+ -- runtime 및 각 패키지의 SQLite schema migration 적용 이력을 관리한다.
23
+ CREATE TABLE IF NOT EXISTS agentic_schema_migrations (
24
+ -- migration을 제공한 패키지명
25
+ package_name VARCHAR(214) NOT NULL,
26
+
27
+ -- migration 식별자
28
+ migration_id VARCHAR(128) NOT NULL,
29
+
30
+ -- migration 파일 내용 검증용 SHA-256 checksum
31
+ checksum_sha256 CHAR(64)
32
+ CHECK (checksum_sha256 IS NULL OR length(checksum_sha256) = 64),
33
+
34
+ -- migration을 적용한 runtime version
35
+ applied_by_runtime_version VARCHAR(64),
36
+
37
+ -- migration 적용 시각
38
+ applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
39
+
40
+ PRIMARY KEY (package_name, migration_id)
41
+ );
42
+
43
+ -- 현재 실행 프로젝트에 등록된 Agentic package 상태를 관리한다.
44
+ CREATE TABLE IF NOT EXISTS agentic_project_modules (
45
+ -- Agentic package 이름
46
+ package_name VARCHAR(214) PRIMARY KEY,
47
+
48
+ -- 등록된 package version
49
+ package_version VARCHAR(64) NOT NULL,
50
+
51
+ -- runtime, domain, capability, application, support 등 패키지 계층
52
+ module_layer VARCHAR(32)
53
+ CHECK (
54
+ module_layer IS NULL OR
55
+ module_layer IN ('runtime', 'domain', 'capability', 'application', 'support')
56
+ ),
57
+
58
+ -- package manifest snapshot
59
+ manifest_json JSON NOT NULL DEFAULT '{}'
60
+ CHECK (json_valid(manifest_json)),
61
+
62
+ -- 프로젝트 내 활성화 여부. 1은 활성, 0은 비활성
63
+ is_enabled INTEGER NOT NULL DEFAULT 1
64
+ CHECK (is_enabled IN (0, 1)),
65
+
66
+ -- 프로젝트에 등록된 시각
67
+ registered_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
68
+
69
+ -- 등록 상태 최종 수정 시각
70
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
71
+ );
72
+
73
+ -- 사용자 지시 원문과 접수 정보를 관리한다.
74
+ CREATE TABLE IF NOT EXISTS agentic_user_requests (
75
+ -- 사용자 지시 식별자
76
+ request_id CHAR(36) PRIMARY KEY
77
+ CHECK (length(request_id) = 36),
78
+
79
+ -- 사용자 지시 원문
80
+ request_text TEXT NOT NULL,
81
+
82
+ -- 지시 유입 경로. cli, api, test 등
83
+ request_source VARCHAR(32) NOT NULL DEFAULT 'cli'
84
+ CHECK (request_source IN ('cli', 'api', 'test', 'system')),
85
+
86
+ -- 지시 context snapshot
87
+ context_json JSON
88
+ CHECK (context_json IS NULL OR json_valid(context_json)),
89
+
90
+ -- 지시 접수 시각
91
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
92
+ );
93
+
94
+ -- 사용자 지시 또는 runtime command의 실행 단위를 관리한다.
95
+ CREATE TABLE IF NOT EXISTS agentic_execution_runs (
96
+ -- 실행 식별자
97
+ run_id CHAR(36) PRIMARY KEY
98
+ CHECK (length(run_id) = 36),
99
+
100
+ -- 사용자 지시 식별자. 명령형 실행은 없을 수 있다.
101
+ request_id CHAR(36)
102
+ CHECK (request_id IS NULL OR length(request_id) = 36),
103
+
104
+ -- 실행을 담당한 package 이름
105
+ package_name VARCHAR(214),
106
+
107
+ -- 실행된 command 또는 agent 식별자
108
+ command_name VARCHAR(128),
109
+
110
+ -- 실행 종류
111
+ run_type VARCHAR(32) NOT NULL
112
+ CHECK (run_type IN ('command', 'agent', 'workflow', 'migration', 'validation')),
113
+
114
+ -- 실행 상태
115
+ run_status VARCHAR(32) NOT NULL DEFAULT 'pending'
116
+ CHECK (run_status IN ('pending', 'running', 'succeeded', 'failed', 'cancelled')),
117
+
118
+ -- 실행 시작 시각
119
+ started_at DATETIME,
120
+
121
+ -- 실행 종료 시각
122
+ ended_at DATETIME,
123
+
124
+ -- 실행 소요 시간
125
+ duration_ms INTEGER
126
+ CHECK (duration_ms IS NULL OR duration_ms >= 0),
127
+
128
+ -- process exit code
129
+ exit_code INTEGER,
130
+
131
+ -- 실패 또는 취소 사유
132
+ error_message TEXT,
133
+
134
+ -- 실행 option snapshot
135
+ run_options_json JSON
136
+ CHECK (run_options_json IS NULL OR json_valid(run_options_json)),
137
+
138
+ -- 실행 생성 시각
139
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
140
+
141
+ FOREIGN KEY (request_id)
142
+ REFERENCES agentic_user_requests (request_id)
143
+ ON DELETE SET NULL
144
+ );
145
+
146
+ -- 실행 중 발생한 로그와 이벤트를 순서대로 관리한다.
147
+ CREATE TABLE IF NOT EXISTS agentic_execution_logs (
148
+ -- 로그 식별자
149
+ log_id INTEGER PRIMARY KEY AUTOINCREMENT,
150
+
151
+ -- 실행 식별자
152
+ run_id CHAR(36) NOT NULL
153
+ CHECK (length(run_id) = 36),
154
+
155
+ -- 실행 내 로그 순번
156
+ sequence_no INTEGER NOT NULL
157
+ CHECK (sequence_no >= 0),
158
+
159
+ -- 로그 레벨
160
+ log_level VARCHAR(16) NOT NULL
161
+ CHECK (log_level IN ('trace', 'debug', 'info', 'warn', 'error')),
162
+
163
+ -- 로그 종류
164
+ log_type VARCHAR(32) NOT NULL DEFAULT 'event'
165
+ CHECK (log_type IN ('event', 'stdout', 'stderr', 'tool', 'system')),
166
+
167
+ -- 로그 메시지
168
+ message TEXT NOT NULL,
169
+
170
+ -- 구조화 로그 payload
171
+ payload_json JSON
172
+ CHECK (payload_json IS NULL OR json_valid(payload_json)),
173
+
174
+ -- 로그 생성 시각
175
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
176
+
177
+ FOREIGN KEY (run_id)
178
+ REFERENCES agentic_execution_runs (run_id)
179
+ ON DELETE CASCADE,
180
+
181
+ UNIQUE (run_id, sequence_no)
182
+ );
183
+
184
+ -- 실행 결과를 구조화하여 관리한다.
185
+ CREATE TABLE IF NOT EXISTS agentic_execution_outputs (
186
+ -- 실행 결과 식별자
187
+ output_id INTEGER PRIMARY KEY AUTOINCREMENT,
188
+
189
+ -- 실행 식별자
190
+ run_id CHAR(36) NOT NULL
191
+ CHECK (length(run_id) = 36),
192
+
193
+ -- 결과 종류
194
+ output_type VARCHAR(32) NOT NULL
195
+ CHECK (output_type IN ('text', 'json', 'file', 'artifact')),
196
+
197
+ -- text 결과
198
+ content_text TEXT,
199
+
200
+ -- JSON 결과
201
+ content_json JSON
202
+ CHECK (content_json IS NULL OR json_valid(content_json)),
203
+
204
+ -- 파일 결과 경로
205
+ file_path TEXT,
206
+
207
+ -- 결과 생성 시각
208
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
209
+
210
+ FOREIGN KEY (run_id)
211
+ REFERENCES agentic_execution_runs (run_id)
212
+ ON DELETE CASCADE,
213
+
214
+ CHECK (
215
+ content_text IS NOT NULL OR
216
+ content_json IS NOT NULL OR
217
+ file_path IS NOT NULL
218
+ )
219
+ );
220
+
221
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_runs_request_id
222
+ ON agentic_execution_runs (request_id);
223
+
224
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_runs_status
225
+ ON agentic_execution_runs (run_status);
226
+
227
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_logs_run_id
228
+ ON agentic_execution_logs (run_id);
229
+
230
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_outputs_run_id
231
+ ON agentic_execution_outputs (run_id);
@@ -0,0 +1,61 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- 현재 실행 프로젝트에 설치된 methodology/seed bundle 상태를 관리한다.
4
+ CREATE TABLE IF NOT EXISTS agentic_project_bundles (
5
+ -- bundle 설치 식별자
6
+ bundle_id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+
8
+ -- bundle을 제공한 Agentic package 이름
9
+ package_name VARCHAR(214) NOT NULL,
10
+
11
+ -- bundle 설치 시점의 package version
12
+ package_version VARCHAR(64) NOT NULL,
13
+
14
+ -- package 내부 bundle 식별자
15
+ bundle_code VARCHAR(128) NOT NULL,
16
+
17
+ -- bundle 자체 version
18
+ bundle_version VARCHAR(64) NOT NULL,
19
+
20
+ -- bundle이 제공하는 methodology code
21
+ methodology_code VARCHAR(128),
22
+
23
+ -- 사용자 표시용 bundle 이름
24
+ display_name VARCHAR(255),
25
+
26
+ -- bundle 설명
27
+ description TEXT,
28
+
29
+ -- bundle manifest snapshot
30
+ bundle_manifest_json JSON NOT NULL
31
+ CHECK (json_valid(bundle_manifest_json)),
32
+
33
+ -- bundle validation result snapshot
34
+ validation_result_json JSON NOT NULL
35
+ CHECK (json_valid(validation_result_json)),
36
+
37
+ -- 프로젝트 내 활성화 여부. 1은 활성, 0은 비활성
38
+ is_enabled INTEGER NOT NULL DEFAULT 1
39
+ CHECK (is_enabled IN (0, 1)),
40
+
41
+ -- 프로젝트에 bundle이 설치된 시각
42
+ installed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
43
+
44
+ -- 설치 상태 최종 수정 시각
45
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
46
+
47
+ UNIQUE (package_name, bundle_code),
48
+
49
+ FOREIGN KEY (package_name)
50
+ REFERENCES agentic_project_modules (package_name)
51
+ ON DELETE CASCADE
52
+ );
53
+
54
+ CREATE INDEX IF NOT EXISTS idx_agentic_project_bundles_package_name
55
+ ON agentic_project_bundles (package_name);
56
+
57
+ CREATE INDEX IF NOT EXISTS idx_agentic_project_bundles_bundle_code
58
+ ON agentic_project_bundles (bundle_code);
59
+
60
+ CREATE INDEX IF NOT EXISTS idx_agentic_project_bundles_enabled
61
+ ON agentic_project_bundles (is_enabled);
@@ -0,0 +1,121 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- seed bundle import 계획과 dry-run 결과를 run 단위로 관리한다.
4
+ CREATE TABLE IF NOT EXISTS agentic_seed_import_runs (
5
+ -- seed import run 식별자
6
+ seed_import_run_id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+
8
+ -- import 대상 project bundle 식별자
9
+ bundle_id INTEGER NOT NULL,
10
+
11
+ -- bundle provider package 이름
12
+ package_name VARCHAR(214) NOT NULL,
13
+
14
+ -- bundle provider package version
15
+ package_version VARCHAR(64) NOT NULL,
16
+
17
+ -- package 내부 bundle 식별자
18
+ bundle_code VARCHAR(128) NOT NULL,
19
+
20
+ -- bundle 자체 version
21
+ bundle_version VARCHAR(64) NOT NULL,
22
+
23
+ -- bundle이 제공하는 methodology code
24
+ methodology_code VARCHAR(128),
25
+
26
+ -- import 실행 mode
27
+ import_mode VARCHAR(16) NOT NULL DEFAULT 'dry_run'
28
+ CHECK (import_mode IN ('dry_run', 'apply')),
29
+
30
+ -- import 계획 상태
31
+ import_status VARCHAR(32) NOT NULL DEFAULT 'planned'
32
+ CHECK (import_status IN ('planned', 'blocked', 'failed', 'applied')),
33
+
34
+ -- import plan summary snapshot
35
+ summary_json JSON NOT NULL DEFAULT '{}'
36
+ CHECK (json_valid(summary_json)),
37
+
38
+ -- bundle validation result snapshot
39
+ validation_result_json JSON NOT NULL DEFAULT '{}'
40
+ CHECK (json_valid(validation_result_json)),
41
+
42
+ -- run 생성 시각
43
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
44
+
45
+ -- run 상태 최종 수정 시각
46
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
47
+
48
+ FOREIGN KEY (bundle_id)
49
+ REFERENCES agentic_project_bundles (bundle_id)
50
+ ON DELETE CASCADE
51
+ );
52
+
53
+ -- seed bundle import 계획을 target package/section 단위 item으로 관리한다.
54
+ CREATE TABLE IF NOT EXISTS agentic_seed_import_items (
55
+ -- seed import item 식별자
56
+ seed_import_item_id INTEGER PRIMARY KEY AUTOINCREMENT,
57
+
58
+ -- seed import run 식별자
59
+ seed_import_run_id INTEGER NOT NULL,
60
+
61
+ -- run 내 item 순서
62
+ item_order INTEGER NOT NULL
63
+ CHECK (item_order >= 0),
64
+
65
+ -- bundle 내 source section
66
+ source_section VARCHAR(64) NOT NULL,
67
+
68
+ -- import target package 이름
69
+ target_package VARCHAR(214) NOT NULL,
70
+
71
+ -- import target domain 이름
72
+ target_domain VARCHAR(64),
73
+
74
+ -- seed apply에서 사용할 target operation 이름
75
+ target_operation VARCHAR(128) NOT NULL,
76
+
77
+ -- item 식별 key
78
+ item_key VARCHAR(255),
79
+
80
+ -- section 내 seed item 수
81
+ item_count INTEGER NOT NULL DEFAULT 0
82
+ CHECK (item_count >= 0),
83
+
84
+ -- item 계획 상태
85
+ item_status VARCHAR(32) NOT NULL DEFAULT 'planned'
86
+ CHECK (item_status IN ('planned', 'blocked', 'warning', 'skipped', 'applied')),
87
+
88
+ -- blocked/warning/skipped 사유 code
89
+ reason_code VARCHAR(128),
90
+
91
+ -- blocked/warning/skipped 사유 설명
92
+ reason_message TEXT,
93
+
94
+ -- import 대상 seed payload snapshot
95
+ item_payload_json JSON
96
+ CHECK (item_payload_json IS NULL OR json_valid(item_payload_json)),
97
+
98
+ -- item 생성 시각
99
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
100
+
101
+ FOREIGN KEY (seed_import_run_id)
102
+ REFERENCES agentic_seed_import_runs (seed_import_run_id)
103
+ ON DELETE CASCADE,
104
+
105
+ UNIQUE (seed_import_run_id, item_order)
106
+ );
107
+
108
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_runs_bundle_id
109
+ ON agentic_seed_import_runs (bundle_id);
110
+
111
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_runs_status
112
+ ON agentic_seed_import_runs (import_status);
113
+
114
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_run_id
115
+ ON agentic_seed_import_items (seed_import_run_id);
116
+
117
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_target_package
118
+ ON agentic_seed_import_items (target_package);
119
+
120
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_status
121
+ ON agentic_seed_import_items (item_status);
@@ -0,0 +1,76 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- seed apply 중 target handler 실패를 item 단위로 추적할 수 있도록 실패 상태를 추가한다.
4
+ CREATE TABLE IF NOT EXISTS agentic_seed_import_items_next (
5
+ seed_import_item_id INTEGER PRIMARY KEY AUTOINCREMENT,
6
+ seed_import_run_id INTEGER NOT NULL,
7
+ item_order INTEGER NOT NULL
8
+ CHECK (item_order >= 0),
9
+ source_section VARCHAR(64) NOT NULL,
10
+ target_package VARCHAR(214) NOT NULL,
11
+ target_domain VARCHAR(64),
12
+ target_operation VARCHAR(128) NOT NULL,
13
+ item_key VARCHAR(255),
14
+ item_count INTEGER NOT NULL DEFAULT 0
15
+ CHECK (item_count >= 0),
16
+ item_status VARCHAR(32) NOT NULL DEFAULT 'planned'
17
+ CHECK (item_status IN ('planned', 'blocked', 'warning', 'skipped', 'applied', 'failed')),
18
+ reason_code VARCHAR(128),
19
+ reason_message TEXT,
20
+ item_payload_json JSON
21
+ CHECK (item_payload_json IS NULL OR json_valid(item_payload_json)),
22
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+
24
+ FOREIGN KEY (seed_import_run_id)
25
+ REFERENCES agentic_seed_import_runs (seed_import_run_id)
26
+ ON DELETE CASCADE,
27
+
28
+ UNIQUE (seed_import_run_id, item_order)
29
+ );
30
+
31
+ INSERT INTO agentic_seed_import_items_next
32
+ (
33
+ seed_import_item_id,
34
+ seed_import_run_id,
35
+ item_order,
36
+ source_section,
37
+ target_package,
38
+ target_domain,
39
+ target_operation,
40
+ item_key,
41
+ item_count,
42
+ item_status,
43
+ reason_code,
44
+ reason_message,
45
+ item_payload_json,
46
+ created_at
47
+ )
48
+ SELECT seed_import_item_id,
49
+ seed_import_run_id,
50
+ item_order,
51
+ source_section,
52
+ target_package,
53
+ target_domain,
54
+ target_operation,
55
+ item_key,
56
+ item_count,
57
+ item_status,
58
+ reason_code,
59
+ reason_message,
60
+ item_payload_json,
61
+ created_at
62
+ FROM agentic_seed_import_items;
63
+
64
+ DROP TABLE agentic_seed_import_items;
65
+
66
+ ALTER TABLE agentic_seed_import_items_next
67
+ RENAME TO agentic_seed_import_items;
68
+
69
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_run_id
70
+ ON agentic_seed_import_items (seed_import_run_id);
71
+
72
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_target_package
73
+ ON agentic_seed_import_items (target_package);
74
+
75
+ CREATE INDEX IF NOT EXISTS idx_agentic_seed_import_items_status
76
+ ON agentic_seed_import_items (item_status);
@@ -0,0 +1,92 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ -- seed bundle을 기반으로 생성한 실행 프로젝트 인스턴스를 관리한다.
4
+ CREATE TABLE IF NOT EXISTS agentic_execution_projects (
5
+ execution_project_id INTEGER PRIMARY KEY AUTOINCREMENT,
6
+ project_code VARCHAR(128) NOT NULL UNIQUE,
7
+ project_name VARCHAR(256) NOT NULL,
8
+ project_status_code VARCHAR(32) NOT NULL DEFAULT 'planned'
9
+ CHECK (project_status_code IN ('planned', 'in_progress', 'completed', 'blocked', 'skipped')),
10
+ bundle_id INTEGER NOT NULL,
11
+ package_name VARCHAR(214) NOT NULL,
12
+ package_version VARCHAR(64) NOT NULL,
13
+ bundle_code VARCHAR(128) NOT NULL,
14
+ bundle_version VARCHAR(64) NOT NULL,
15
+ methodology_code VARCHAR(128),
16
+ lifecycle_code VARCHAR(128),
17
+ phase_code VARCHAR(128),
18
+ process_code VARCHAR(128),
19
+ metadata_json JSON NOT NULL DEFAULT '{}'
20
+ CHECK (json_valid(metadata_json)),
21
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
22
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+
24
+ FOREIGN KEY (bundle_id)
25
+ REFERENCES agentic_project_bundles (bundle_id)
26
+ ON DELETE RESTRICT
27
+ );
28
+
29
+ -- 실행 프로젝트 안의 Stage 상태 snapshot을 관리한다.
30
+ CREATE TABLE IF NOT EXISTS agentic_execution_project_stages (
31
+ execution_project_stage_id INTEGER PRIMARY KEY AUTOINCREMENT,
32
+ execution_project_id INTEGER NOT NULL,
33
+ stage_code VARCHAR(128) NOT NULL,
34
+ stage_name VARCHAR(256) NOT NULL,
35
+ stage_status_code VARCHAR(32) NOT NULL DEFAULT 'planned'
36
+ CHECK (stage_status_code IN ('planned', 'in_progress', 'completed', 'blocked', 'skipped')),
37
+ sort_order INTEGER NOT NULL DEFAULT 0,
38
+ metadata_json JSON NOT NULL DEFAULT '{}'
39
+ CHECK (json_valid(metadata_json)),
40
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
41
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
42
+
43
+ FOREIGN KEY (execution_project_id)
44
+ REFERENCES agentic_execution_projects (execution_project_id)
45
+ ON DELETE CASCADE,
46
+
47
+ UNIQUE (execution_project_id, stage_code)
48
+ );
49
+
50
+ -- 실행 프로젝트 안의 Activity 상태 snapshot을 관리한다.
51
+ CREATE TABLE IF NOT EXISTS agentic_execution_project_activities (
52
+ execution_project_activity_id INTEGER PRIMARY KEY AUTOINCREMENT,
53
+ execution_project_id INTEGER NOT NULL,
54
+ execution_project_stage_id INTEGER NOT NULL,
55
+ activity_code VARCHAR(128) NOT NULL,
56
+ activity_name VARCHAR(256) NOT NULL,
57
+ activity_status_code VARCHAR(32) NOT NULL DEFAULT 'planned'
58
+ CHECK (activity_status_code IN ('planned', 'in_progress', 'completed', 'blocked', 'skipped')),
59
+ primary_artifact_standard_code VARCHAR(128),
60
+ primary_artifact_standard_version VARCHAR(64),
61
+ artifact_instance_id VARCHAR(64),
62
+ sort_order INTEGER NOT NULL DEFAULT 0,
63
+ metadata_json JSON NOT NULL DEFAULT '{}'
64
+ CHECK (json_valid(metadata_json)),
65
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
66
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
67
+
68
+ FOREIGN KEY (execution_project_id)
69
+ REFERENCES agentic_execution_projects (execution_project_id)
70
+ ON DELETE CASCADE,
71
+
72
+ FOREIGN KEY (execution_project_stage_id)
73
+ REFERENCES agentic_execution_project_stages (execution_project_stage_id)
74
+ ON DELETE CASCADE,
75
+
76
+ UNIQUE (execution_project_id, activity_code)
77
+ );
78
+
79
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_projects_bundle
80
+ ON agentic_execution_projects (bundle_code, bundle_version);
81
+
82
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_projects_status
83
+ ON agentic_execution_projects (project_status_code);
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_project_stages_project
86
+ ON agentic_execution_project_stages (execution_project_id);
87
+
88
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_project_activities_project
89
+ ON agentic_execution_project_activities (execution_project_id);
90
+
91
+ CREATE INDEX IF NOT EXISTS idx_agentic_execution_project_activities_stage
92
+ ON agentic_execution_project_activities (execution_project_stage_id);