@amaster.ai/pi-storage 0.1.0-beta.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 (73) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +56 -0
  3. package/dist/artifact-stores.d.ts +13 -0
  4. package/dist/artifact-stores.d.ts.map +1 -0
  5. package/dist/artifact-stores.js +84 -0
  6. package/dist/artifact-stores.js.map +1 -0
  7. package/dist/db-migrations.d.ts +12 -0
  8. package/dist/db-migrations.d.ts.map +1 -0
  9. package/dist/db-migrations.js +151 -0
  10. package/dist/db-migrations.js.map +1 -0
  11. package/dist/db-runtime-storage.d.ts +15 -0
  12. package/dist/db-runtime-storage.d.ts.map +1 -0
  13. package/dist/db-runtime-storage.js +1051 -0
  14. package/dist/db-runtime-storage.js.map +1 -0
  15. package/dist/db.d.ts +3 -0
  16. package/dist/db.d.ts.map +1 -0
  17. package/dist/db.js +3 -0
  18. package/dist/db.js.map +1 -0
  19. package/dist/event-stores.d.ts +69 -0
  20. package/dist/event-stores.d.ts.map +1 -0
  21. package/dist/event-stores.js +196 -0
  22. package/dist/event-stores.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/internal.d.ts +4 -0
  28. package/dist/internal.d.ts.map +1 -0
  29. package/dist/internal.js +4 -0
  30. package/dist/internal.js.map +1 -0
  31. package/dist/json-file.d.ts +4 -0
  32. package/dist/json-file.d.ts.map +1 -0
  33. package/dist/json-file.js +59 -0
  34. package/dist/json-file.js.map +1 -0
  35. package/dist/json.d.ts +5 -0
  36. package/dist/json.d.ts.map +1 -0
  37. package/dist/json.js +5 -0
  38. package/dist/json.js.map +1 -0
  39. package/dist/migration-main.d.ts +2 -0
  40. package/dist/migration-main.d.ts.map +1 -0
  41. package/dist/migration-main.js +12 -0
  42. package/dist/migration-main.js.map +1 -0
  43. package/dist/redis-locks.d.ts +18 -0
  44. package/dist/redis-locks.d.ts.map +1 -0
  45. package/dist/redis-locks.js +76 -0
  46. package/dist/redis-locks.js.map +1 -0
  47. package/dist/runtime-scope.d.ts +2 -0
  48. package/dist/runtime-scope.d.ts.map +1 -0
  49. package/dist/runtime-scope.js +2 -0
  50. package/dist/runtime-scope.js.map +1 -0
  51. package/dist/runtime-storage.d.ts +30 -0
  52. package/dist/runtime-storage.d.ts.map +1 -0
  53. package/dist/runtime-storage.js +60 -0
  54. package/dist/runtime-storage.js.map +1 -0
  55. package/dist/scheduled-task-stores.d.ts +49 -0
  56. package/dist/scheduled-task-stores.d.ts.map +1 -0
  57. package/dist/scheduled-task-stores.js +381 -0
  58. package/dist/scheduled-task-stores.js.map +1 -0
  59. package/dist/scheduler.d.ts +2 -0
  60. package/dist/scheduler.d.ts.map +1 -0
  61. package/dist/scheduler.js +2 -0
  62. package/dist/scheduler.js.map +1 -0
  63. package/dist/session-stores.d.ts +47 -0
  64. package/dist/session-stores.d.ts.map +1 -0
  65. package/dist/session-stores.js +260 -0
  66. package/dist/session-stores.js.map +1 -0
  67. package/dist/subagent-store.d.ts +26 -0
  68. package/dist/subagent-store.d.ts.map +1 -0
  69. package/dist/subagent-store.js +167 -0
  70. package/dist/subagent-store.js.map +1 -0
  71. package/package.json +70 -0
  72. package/prisma/migrations/mysql/20260514113000_init_runtime/migration.sql +351 -0
  73. package/prisma/schema.prisma +351 -0
@@ -0,0 +1,351 @@
1
+ -- CreateTable
2
+ CREATE TABLE `pi_agent_sessions` (
3
+ `id` VARCHAR(64) NOT NULL,
4
+ `tenant_id` VARCHAR(64) NOT NULL,
5
+ `user_id` VARCHAR(64) NOT NULL,
6
+ `workspace_id` VARCHAR(128) NULL,
7
+ `session_id` VARCHAR(160) NOT NULL,
8
+ `conversation_id` VARCHAR(160) NOT NULL,
9
+ `root_session_id` VARCHAR(160) NULL,
10
+ `parent_session_id` VARCHAR(160) NULL,
11
+ `child_session_id` VARCHAR(160) NULL,
12
+ `task_run_id` VARCHAR(64) NULL,
13
+ `run_id` VARCHAR(64) NULL,
14
+ `spawn_batch_id` VARCHAR(64) NULL,
15
+ `trigger_type` VARCHAR(32) NOT NULL,
16
+ `status` VARCHAR(32) NOT NULL,
17
+ `title` VARCHAR(255) NULL,
18
+ `turn_count` BIGINT NOT NULL DEFAULT 0,
19
+ `first_user_message` TEXT NULL,
20
+ `last_user_message` TEXT NULL,
21
+ `last_assistant_message` TEXT NULL,
22
+ `last_message_at` DATETIME(6) NULL,
23
+ `model_provider` VARCHAR(64) NOT NULL,
24
+ `model_name` VARCHAR(128) NOT NULL,
25
+ `thinking_level` VARCHAR(32) NULL,
26
+ `tool_policy_profile` VARCHAR(64) NOT NULL,
27
+ `sandbox_session_id` VARCHAR(160) NULL,
28
+ `sandbox_status` VARCHAR(32) NULL,
29
+ `pi_session_ref` VARCHAR(512) NULL,
30
+ `metadata_json` JSON NULL,
31
+ `created_at` DATETIME(6) NOT NULL,
32
+ `updated_at` DATETIME(6) NOT NULL,
33
+ `last_active_at` DATETIME(6) NULL,
34
+ `archived_at` DATETIME(6) NULL,
35
+ `deleted_at` DATETIME(6) NULL,
36
+
37
+ INDEX `idx_pi_agent_sessions_user_updated`(`tenant_id`, `user_id`, `updated_at`),
38
+ INDEX `idx_pi_agent_sessions_workspace_updated`(`tenant_id`, `workspace_id`, `updated_at`),
39
+ INDEX `idx_pi_agent_sessions_user_last_message`(`tenant_id`, `user_id`, `last_message_at`),
40
+ INDEX `idx_pi_agent_sessions_user_visible`(`tenant_id`, `user_id`, `deleted_at`, `last_message_at`),
41
+ INDEX `idx_pi_agent_sessions_parent`(`tenant_id`, `parent_session_id`),
42
+ INDEX `idx_pi_agent_sessions_status`(`tenant_id`, `status`),
43
+ UNIQUE INDEX `uq_pi_agent_sessions_session`(`session_id`),
44
+ UNIQUE INDEX `uq_pi_agent_sessions_tenant_session`(`tenant_id`, `session_id`),
45
+ PRIMARY KEY (`id`)
46
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
47
+
48
+ -- CreateTable
49
+ CREATE TABLE `pi_agent_turns` (
50
+ `id` VARCHAR(64) NOT NULL,
51
+ `tenant_id` VARCHAR(64) NOT NULL,
52
+ `user_id` VARCHAR(64) NOT NULL,
53
+ `workspace_id` VARCHAR(128) NULL,
54
+ `session_id` VARCHAR(160) NOT NULL,
55
+ `conversation_id` VARCHAR(160) NOT NULL,
56
+ `trace_id` VARCHAR(64) NULL,
57
+ `turn_seq` BIGINT NOT NULL,
58
+ `source_type` VARCHAR(32) NOT NULL,
59
+ `status` VARCHAR(32) NOT NULL,
60
+ `input_text` LONGTEXT NULL,
61
+ `input_json` JSON NULL,
62
+ `output_text` LONGTEXT NULL,
63
+ `output_json` JSON NULL,
64
+ `error_json` JSON NULL,
65
+ `model_json` JSON NULL,
66
+ `tool_policy_profile` VARCHAR(64) NULL,
67
+ `started_at` DATETIME(6) NULL,
68
+ `completed_at` DATETIME(6) NULL,
69
+ `created_at` DATETIME(6) NOT NULL,
70
+ `updated_at` DATETIME(6) NOT NULL,
71
+
72
+ INDEX `idx_pi_agent_turns_session_seq`(`tenant_id`, `session_id`, `turn_seq`),
73
+ INDEX `idx_pi_agent_turns_user_created`(`tenant_id`, `user_id`, `created_at`),
74
+ INDEX `idx_pi_agent_turns_trace`(`tenant_id`, `trace_id`),
75
+ INDEX `idx_pi_agent_turns_status`(`tenant_id`, `status`, `created_at`),
76
+ UNIQUE INDEX `uq_pi_agent_turns_tenant_session_seq`(`tenant_id`, `session_id`, `turn_seq`),
77
+ PRIMARY KEY (`id`)
78
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
79
+
80
+ -- CreateTable
81
+ CREATE TABLE `pi_agent_messages` (
82
+ `id` VARCHAR(64) NOT NULL,
83
+ `tenant_id` VARCHAR(64) NOT NULL,
84
+ `user_id` VARCHAR(64) NOT NULL,
85
+ `workspace_id` VARCHAR(128) NULL,
86
+ `session_id` VARCHAR(160) NOT NULL,
87
+ `conversation_id` VARCHAR(160) NOT NULL,
88
+ `turn_id` VARCHAR(64) NULL,
89
+ `role` VARCHAR(32) NOT NULL,
90
+ `agent_id` VARCHAR(160) NULL,
91
+ `content_text` LONGTEXT NULL,
92
+ `content_json` JSON NULL,
93
+ `thoughts_json` JSON NULL,
94
+ `tool_calls_json` JSON NULL,
95
+ `token_usage_json` JSON NULL,
96
+ `model_provider` VARCHAR(64) NULL,
97
+ `model_name` VARCHAR(128) NULL,
98
+ `message_seq` BIGINT NOT NULL,
99
+ `created_at` DATETIME(6) NOT NULL,
100
+ `deleted_at` DATETIME(6) NULL,
101
+
102
+ INDEX `idx_pi_agent_messages_session_seq`(`tenant_id`, `session_id`, `message_seq`),
103
+ INDEX `idx_pi_agent_messages_turn`(`tenant_id`, `turn_id`),
104
+ INDEX `idx_pi_agent_messages_user_created`(`tenant_id`, `user_id`, `created_at`),
105
+ UNIQUE INDEX `uq_pi_agent_messages_tenant_session_seq`(`tenant_id`, `session_id`, `message_seq`),
106
+ PRIMARY KEY (`id`)
107
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
108
+
109
+ -- CreateTable
110
+ CREATE TABLE `pi_agent_turn_queue` (
111
+ `id` VARCHAR(64) NOT NULL,
112
+ `tenant_id` VARCHAR(64) NOT NULL,
113
+ `user_id` VARCHAR(64) NOT NULL,
114
+ `workspace_id` VARCHAR(128) NULL,
115
+ `session_id` VARCHAR(160) NOT NULL,
116
+ `turn_id` VARCHAR(64) NOT NULL,
117
+ `source_type` VARCHAR(32) NOT NULL,
118
+ `status` VARCHAR(32) NOT NULL,
119
+ `priority` INTEGER NOT NULL DEFAULT 0,
120
+ `lease_owner` VARCHAR(128) NULL,
121
+ `lease_expires_at` DATETIME(6) NULL,
122
+ `attempt_count` INTEGER NOT NULL DEFAULT 0,
123
+ `available_at` DATETIME(6) NOT NULL,
124
+ `created_at` DATETIME(6) NOT NULL,
125
+ `updated_at` DATETIME(6) NOT NULL,
126
+
127
+ INDEX `idx_pi_agent_turn_queue_ready`(`tenant_id`, `status`, `priority`, `available_at`),
128
+ INDEX `idx_pi_agent_turn_queue_ready_order`(`tenant_id`, `status`, `priority`, `available_at`, `created_at`),
129
+ INDEX `idx_pi_agent_turn_queue_session`(`tenant_id`, `session_id`, `status`),
130
+ INDEX `idx_pi_agent_turn_queue_source`(`tenant_id`, `source_type`, `status`),
131
+ INDEX `idx_pi_agent_turn_queue_lease`(`tenant_id`, `lease_owner`, `lease_expires_at`),
132
+ UNIQUE INDEX `uq_pi_agent_turn_queue_turn`(`tenant_id`, `turn_id`),
133
+ PRIMARY KEY (`id`)
134
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
135
+
136
+ -- CreateTable
137
+ CREATE TABLE `pi_agent_turn_signals` (
138
+ `id` VARCHAR(64) NOT NULL,
139
+ `tenant_id` VARCHAR(64) NOT NULL,
140
+ `user_id` VARCHAR(64) NOT NULL,
141
+ `actor_user_id` VARCHAR(64) NULL,
142
+ `session_id` VARCHAR(160) NOT NULL,
143
+ `turn_id` VARCHAR(64) NULL,
144
+ `signal_type` VARCHAR(32) NOT NULL,
145
+ `status` VARCHAR(32) NOT NULL,
146
+ `payload_json` JSON NULL,
147
+ `reason` VARCHAR(512) NULL,
148
+ `created_at` DATETIME(6) NOT NULL,
149
+ `delivered_at` DATETIME(6) NULL,
150
+ `acknowledged_at` DATETIME(6) NULL,
151
+
152
+ INDEX `idx_pi_agent_turn_signals_session`(`tenant_id`, `session_id`, `status`, `created_at`),
153
+ INDEX `idx_pi_agent_turn_signals_turn`(`tenant_id`, `turn_id`, `status`),
154
+ INDEX `idx_pi_agent_turn_signals_actor`(`tenant_id`, `actor_user_id`, `created_at`),
155
+ PRIMARY KEY (`id`)
156
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
157
+
158
+ -- CreateTable
159
+ CREATE TABLE `pi_agent_events` (
160
+ `id` VARCHAR(64) NOT NULL,
161
+ `tenant_id` VARCHAR(64) NOT NULL,
162
+ `user_id` VARCHAR(64) NULL,
163
+ `workspace_id` VARCHAR(128) NULL,
164
+ `session_id` VARCHAR(160) NULL,
165
+ `turn_id` VARCHAR(64) NULL,
166
+ `trace_id` VARCHAR(64) NULL,
167
+ `event_seq` BIGINT NOT NULL,
168
+ `event_source` VARCHAR(32) NOT NULL,
169
+ `event_type` VARCHAR(64) NOT NULL,
170
+ `event_name` VARCHAR(64) NOT NULL,
171
+ `severity` VARCHAR(16) NOT NULL DEFAULT 'info',
172
+ `payload_json` JSON NULL,
173
+ `created_at` DATETIME(6) NOT NULL,
174
+
175
+ INDEX `idx_pi_agent_events_session_seq`(`tenant_id`, `session_id`, `event_seq`),
176
+ INDEX `idx_pi_agent_events_session_created`(`tenant_id`, `session_id`, `created_at`),
177
+ INDEX `idx_pi_agent_events_turn_seq`(`tenant_id`, `turn_id`, `event_seq`),
178
+ INDEX `idx_pi_agent_events_turn_created`(`tenant_id`, `turn_id`, `created_at`),
179
+ INDEX `idx_pi_agent_events_trace_created`(`tenant_id`, `trace_id`, `created_at`),
180
+ INDEX `idx_pi_agent_events_type_created`(`tenant_id`, `event_type`, `created_at`),
181
+ INDEX `idx_pi_agent_events_source_session_seq`(`tenant_id`, `event_source`, `session_id`, `event_seq`),
182
+ INDEX `idx_pi_agent_events_source_trace_created`(`tenant_id`, `event_source`, `trace_id`, `created_at`),
183
+ INDEX `idx_pi_agent_events_source_type_created`(`tenant_id`, `event_source`, `event_type`, `created_at`),
184
+ UNIQUE INDEX `uq_pi_agent_events_tenant_session_seq`(`tenant_id`, `session_id`, `event_seq`),
185
+ PRIMARY KEY (`id`)
186
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
187
+
188
+ -- CreateTable
189
+ CREATE TABLE `pi_agent_subagent_runs` (
190
+ `id` VARCHAR(64) NOT NULL,
191
+ `tenant_id` VARCHAR(64) NOT NULL,
192
+ `user_id` VARCHAR(64) NOT NULL,
193
+ `workspace_id` VARCHAR(128) NULL,
194
+ `run_id` VARCHAR(64) NOT NULL,
195
+ `task_run_id` VARCHAR(64) NULL,
196
+ `spawn_batch_id` VARCHAR(64) NULL,
197
+ `trace_id` VARCHAR(64) NULL,
198
+ `parent_session_id` VARCHAR(160) NOT NULL,
199
+ `child_session_id` VARCHAR(160) NOT NULL,
200
+ `parent_turn_id` VARCHAR(64) NULL,
201
+ `parent_tool_call_id` VARCHAR(160) NULL,
202
+ `agent_name` VARCHAR(128) NULL,
203
+ `label` VARCHAR(255) NULL,
204
+ `task_text` LONGTEXT NOT NULL,
205
+ `status` VARCHAR(32) NOT NULL,
206
+ `depth` INTEGER NOT NULL DEFAULT 0,
207
+ `model_json` JSON NULL,
208
+ `tool_policy_profile` VARCHAR(64) NULL,
209
+ `result_text` LONGTEXT NULL,
210
+ `error_json` JSON NULL,
211
+ `created_at` DATETIME(6) NOT NULL,
212
+ `started_at` DATETIME(6) NULL,
213
+ `ended_at` DATETIME(6) NULL,
214
+ `updated_at` DATETIME(6) NOT NULL,
215
+
216
+ INDEX `idx_pi_agent_subagent_runs_parent`(`tenant_id`, `parent_session_id`, `status`),
217
+ INDEX `idx_pi_agent_subagent_runs_child`(`tenant_id`, `child_session_id`),
218
+ INDEX `idx_pi_agent_subagent_runs_trace`(`tenant_id`, `trace_id`),
219
+ UNIQUE INDEX `uq_pi_agent_subagent_runs_run_global`(`run_id`),
220
+ UNIQUE INDEX `uq_pi_agent_subagent_runs_run`(`tenant_id`, `run_id`),
221
+ PRIMARY KEY (`id`)
222
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
223
+
224
+ -- CreateTable
225
+ CREATE TABLE `pi_agent_approvals` (
226
+ `id` VARCHAR(64) NOT NULL,
227
+ `tenant_id` VARCHAR(64) NOT NULL,
228
+ `user_id` VARCHAR(64) NOT NULL,
229
+ `actor_user_id` VARCHAR(64) NULL,
230
+ `workspace_id` VARCHAR(128) NULL,
231
+ `session_id` VARCHAR(160) NOT NULL,
232
+ `turn_id` VARCHAR(64) NULL,
233
+ `tool_call_id` VARCHAR(160) NULL,
234
+ `approval_type` VARCHAR(64) NOT NULL,
235
+ `status` VARCHAR(32) NOT NULL,
236
+ `request_json` JSON NOT NULL,
237
+ `decision_json` JSON NULL,
238
+ `requested_at` DATETIME(6) NOT NULL,
239
+ `decided_at` DATETIME(6) NULL,
240
+ `expires_at` DATETIME(6) NULL,
241
+
242
+ INDEX `idx_pi_agent_approvals_session`(`tenant_id`, `session_id`, `status`, `requested_at`),
243
+ INDEX `idx_pi_agent_approvals_actor`(`tenant_id`, `actor_user_id`, `requested_at`),
244
+ INDEX `idx_pi_agent_approvals_expiry`(`tenant_id`, `status`, `expires_at`),
245
+ PRIMARY KEY (`id`)
246
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
247
+
248
+ -- CreateTable
249
+ CREATE TABLE `pi_agent_memory` (
250
+ `id` VARCHAR(64) NOT NULL,
251
+ `tenant_id` VARCHAR(64) NOT NULL,
252
+ `user_id` VARCHAR(64) NOT NULL,
253
+ `workspace_id` VARCHAR(128) NULL,
254
+ `session_id` VARCHAR(160) NULL,
255
+ `scope` VARCHAR(32) NOT NULL,
256
+ `text` LONGTEXT NOT NULL,
257
+ `tags_json` JSON NULL,
258
+ `metadata_json` JSON NULL,
259
+ `embedding_ref` VARCHAR(256) NULL,
260
+ `created_at` DATETIME(6) NOT NULL,
261
+ `updated_at` DATETIME(6) NOT NULL,
262
+ `deleted_at` DATETIME(6) NULL,
263
+
264
+ INDEX `idx_pi_agent_memory_session`(`tenant_id`, `session_id`, `created_at`),
265
+ INDEX `idx_pi_agent_memory_user_scope`(`tenant_id`, `user_id`, `scope`, `created_at`),
266
+ INDEX `idx_pi_agent_memory_workspace_scope`(`tenant_id`, `workspace_id`, `scope`, `created_at`),
267
+ PRIMARY KEY (`id`)
268
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
269
+
270
+ -- CreateTable
271
+ CREATE TABLE `pi_agent_scheduled_tasks` (
272
+ `id` VARCHAR(64) NOT NULL,
273
+ `tenant_id` VARCHAR(64) NOT NULL,
274
+ `user_id` VARCHAR(64) NOT NULL,
275
+ `workspace_id` VARCHAR(128) NULL,
276
+ `session_id` VARCHAR(160) NOT NULL,
277
+ `name` VARCHAR(255) NULL,
278
+ `description` TEXT NULL,
279
+ `prompt` LONGTEXT NOT NULL,
280
+ `task_type` VARCHAR(32) NOT NULL,
281
+ `schedule` VARCHAR(255) NULL,
282
+ `interval_seconds` INTEGER NULL,
283
+ `enabled` BOOLEAN NOT NULL DEFAULT true,
284
+ `model_json` JSON NULL,
285
+ `tool_policy_profile` VARCHAR(64) NULL,
286
+ `workspace_dir` VARCHAR(1024) NULL,
287
+ `last_run_at` DATETIME(6) NULL,
288
+ `next_run_at` DATETIME(6) NULL,
289
+ `run_count` BIGINT NOT NULL DEFAULT 0,
290
+ `last_status` VARCHAR(32) NULL,
291
+ `last_error` TEXT NULL,
292
+ `created_at` DATETIME(6) NOT NULL,
293
+ `updated_at` DATETIME(6) NOT NULL,
294
+ `deleted_at` DATETIME(6) NULL,
295
+
296
+ INDEX `idx_pi_agent_scheduled_tasks_due`(`tenant_id`, `enabled`, `next_run_at`),
297
+ INDEX `idx_pi_agent_scheduled_tasks_user`(`tenant_id`, `user_id`, `updated_at`),
298
+ INDEX `idx_pi_agent_scheduled_tasks_user_visible`(`tenant_id`, `user_id`, `deleted_at`, `updated_at`),
299
+ INDEX `idx_pi_agent_scheduled_tasks_session`(`tenant_id`, `session_id`),
300
+ PRIMARY KEY (`id`)
301
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
302
+
303
+ -- CreateTable
304
+ CREATE TABLE `pi_agent_task_runs` (
305
+ `id` VARCHAR(64) NOT NULL,
306
+ `tenant_id` VARCHAR(64) NOT NULL,
307
+ `user_id` VARCHAR(64) NOT NULL,
308
+ `workspace_id` VARCHAR(128) NULL,
309
+ `task_id` VARCHAR(64) NOT NULL,
310
+ `session_id` VARCHAR(160) NOT NULL,
311
+ `turn_id` VARCHAR(64) NULL,
312
+ `status` VARCHAR(32) NOT NULL,
313
+ `message` TEXT NULL,
314
+ `error_json` JSON NULL,
315
+ `started_at` DATETIME(6) NULL,
316
+ `ended_at` DATETIME(6) NULL,
317
+ `created_at` DATETIME(6) NOT NULL,
318
+
319
+ INDEX `idx_pi_agent_task_runs_task_created`(`tenant_id`, `task_id`, `created_at`),
320
+ INDEX `idx_pi_agent_task_runs_status_created`(`tenant_id`, `status`, `created_at`),
321
+ INDEX `idx_pi_agent_task_runs_turn`(`tenant_id`, `turn_id`),
322
+ PRIMARY KEY (`id`)
323
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
324
+
325
+ -- CreateTable
326
+ CREATE TABLE `pi_agent_artifacts` (
327
+ `id` VARCHAR(64) NOT NULL,
328
+ `tenant_id` VARCHAR(64) NOT NULL,
329
+ `user_id` VARCHAR(64) NOT NULL,
330
+ `workspace_id` VARCHAR(128) NULL,
331
+ `session_id` VARCHAR(160) NOT NULL,
332
+ `turn_id` VARCHAR(64) NULL,
333
+ `tool_call_id` VARCHAR(160) NULL,
334
+ `artifact_type` VARCHAR(64) NOT NULL,
335
+ `name` VARCHAR(512) NULL,
336
+ `mime_type` VARCHAR(128) NULL,
337
+ `size_bytes` BIGINT NULL,
338
+ `sha256` VARCHAR(64) NULL,
339
+ `storage_uri` VARCHAR(1024) NOT NULL,
340
+ `preview_uri` VARCHAR(1024) NULL,
341
+ `metadata_json` JSON NULL,
342
+ `created_at` DATETIME(6) NOT NULL,
343
+ `deleted_at` DATETIME(6) NULL,
344
+
345
+ INDEX `idx_pi_agent_artifacts_session_created`(`tenant_id`, `session_id`, `created_at`),
346
+ INDEX `idx_pi_agent_artifacts_user_session_visible`(`tenant_id`, `user_id`, `deleted_at`, `session_id`, `created_at`),
347
+ INDEX `idx_pi_agent_artifacts_turn_created`(`tenant_id`, `turn_id`, `created_at`),
348
+ INDEX `idx_pi_agent_artifacts_tool_call`(`tenant_id`, `tool_call_id`),
349
+ INDEX `idx_pi_agent_artifacts_hash`(`tenant_id`, `sha256`),
350
+ PRIMARY KEY (`id`)
351
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;