@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
+ // Prisma schema for pi runtime persistence.
2
+ // Run `npx prisma generate --schema packages/storage/prisma/schema.prisma` after changes.
3
+
4
+ generator client {
5
+ provider = "prisma-client-js"
6
+ }
7
+
8
+ datasource db {
9
+ provider = "mysql"
10
+ url = env("DATABASE_URL")
11
+ }
12
+
13
+ model PiAgentSession {
14
+ id String @id @db.VarChar(64)
15
+ tenantId String @map("tenant_id") @db.VarChar(64)
16
+ userId String @map("user_id") @db.VarChar(64)
17
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
18
+ sessionId String @map("session_id") @db.VarChar(160)
19
+ conversationId String @map("conversation_id") @db.VarChar(160)
20
+ rootSessionId String? @map("root_session_id") @db.VarChar(160)
21
+ parentSessionId String? @map("parent_session_id") @db.VarChar(160)
22
+ childSessionId String? @map("child_session_id") @db.VarChar(160)
23
+ taskRunId String? @map("task_run_id") @db.VarChar(64)
24
+ runId String? @map("run_id") @db.VarChar(64)
25
+ spawnBatchId String? @map("spawn_batch_id") @db.VarChar(64)
26
+ triggerType String @map("trigger_type") @db.VarChar(32)
27
+ status String @db.VarChar(32)
28
+ title String? @db.VarChar(255)
29
+ turnCount BigInt @default(0) @map("turn_count")
30
+ firstUserMessage String? @map("first_user_message") @db.Text
31
+ lastUserMessage String? @map("last_user_message") @db.Text
32
+ lastAssistantMessage String? @map("last_assistant_message") @db.Text
33
+ lastMessageAt DateTime? @map("last_message_at") @db.DateTime(6)
34
+ modelProvider String @map("model_provider") @db.VarChar(64)
35
+ modelName String @map("model_name") @db.VarChar(128)
36
+ thinkingLevel String? @map("thinking_level") @db.VarChar(32)
37
+ toolPolicyProfile String @map("tool_policy_profile") @db.VarChar(64)
38
+ sandboxSessionId String? @map("sandbox_session_id") @db.VarChar(160)
39
+ sandboxStatus String? @map("sandbox_status") @db.VarChar(32)
40
+ piSessionRef String? @map("pi_session_ref") @db.VarChar(512)
41
+ metadataJson Json? @map("metadata_json")
42
+ createdAt DateTime @map("created_at") @db.DateTime(6)
43
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
44
+ lastActiveAt DateTime? @map("last_active_at") @db.DateTime(6)
45
+ archivedAt DateTime? @map("archived_at") @db.DateTime(6)
46
+ deletedAt DateTime? @map("deleted_at") @db.DateTime(6)
47
+
48
+ @@unique([sessionId], map: "uq_pi_agent_sessions_session")
49
+ @@unique([tenantId, sessionId], map: "uq_pi_agent_sessions_tenant_session")
50
+ @@index([tenantId, userId, updatedAt], map: "idx_pi_agent_sessions_user_updated")
51
+ @@index([tenantId, workspaceId, updatedAt], map: "idx_pi_agent_sessions_workspace_updated")
52
+ @@index([tenantId, userId, lastMessageAt], map: "idx_pi_agent_sessions_user_last_message")
53
+ @@index([tenantId, userId, deletedAt, lastMessageAt], map: "idx_pi_agent_sessions_user_visible")
54
+ @@index([tenantId, parentSessionId], map: "idx_pi_agent_sessions_parent")
55
+ @@index([tenantId, status], map: "idx_pi_agent_sessions_status")
56
+ @@map("pi_agent_sessions")
57
+ }
58
+
59
+ model PiAgentTurn {
60
+ id String @id @db.VarChar(64)
61
+ tenantId String @map("tenant_id") @db.VarChar(64)
62
+ userId String @map("user_id") @db.VarChar(64)
63
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
64
+ sessionId String @map("session_id") @db.VarChar(160)
65
+ conversationId String @map("conversation_id") @db.VarChar(160)
66
+ traceId String? @map("trace_id") @db.VarChar(64)
67
+ turnSeq BigInt @map("turn_seq")
68
+ sourceType String @map("source_type") @db.VarChar(32)
69
+ status String @db.VarChar(32)
70
+ inputText String? @map("input_text") @db.LongText
71
+ inputJson Json? @map("input_json")
72
+ outputText String? @map("output_text") @db.LongText
73
+ outputJson Json? @map("output_json")
74
+ errorJson Json? @map("error_json")
75
+ modelJson Json? @map("model_json")
76
+ toolPolicyProfile String? @map("tool_policy_profile") @db.VarChar(64)
77
+ startedAt DateTime? @map("started_at") @db.DateTime(6)
78
+ completedAt DateTime? @map("completed_at") @db.DateTime(6)
79
+ createdAt DateTime @map("created_at") @db.DateTime(6)
80
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
81
+
82
+ @@unique([tenantId, sessionId, turnSeq], map: "uq_pi_agent_turns_tenant_session_seq")
83
+ @@index([tenantId, sessionId, turnSeq], map: "idx_pi_agent_turns_session_seq")
84
+ @@index([tenantId, userId, createdAt], map: "idx_pi_agent_turns_user_created")
85
+ @@index([tenantId, traceId], map: "idx_pi_agent_turns_trace")
86
+ @@index([tenantId, status, createdAt], map: "idx_pi_agent_turns_status")
87
+ @@map("pi_agent_turns")
88
+ }
89
+
90
+ model PiAgentMessage {
91
+ id String @id @db.VarChar(64)
92
+ tenantId String @map("tenant_id") @db.VarChar(64)
93
+ userId String @map("user_id") @db.VarChar(64)
94
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
95
+ sessionId String @map("session_id") @db.VarChar(160)
96
+ conversationId String @map("conversation_id") @db.VarChar(160)
97
+ turnId String? @map("turn_id") @db.VarChar(64)
98
+ role String @db.VarChar(32)
99
+ agentId String? @map("agent_id") @db.VarChar(160)
100
+ contentText String? @map("content_text") @db.LongText
101
+ contentJson Json? @map("content_json")
102
+ thoughtsJson Json? @map("thoughts_json")
103
+ toolCallsJson Json? @map("tool_calls_json")
104
+ tokenUsageJson Json? @map("token_usage_json")
105
+ modelProvider String? @map("model_provider") @db.VarChar(64)
106
+ modelName String? @map("model_name") @db.VarChar(128)
107
+ messageSeq BigInt @map("message_seq")
108
+ createdAt DateTime @map("created_at") @db.DateTime(6)
109
+ deletedAt DateTime? @map("deleted_at") @db.DateTime(6)
110
+
111
+ @@unique([tenantId, sessionId, messageSeq], map: "uq_pi_agent_messages_tenant_session_seq")
112
+ @@index([tenantId, sessionId, messageSeq], map: "idx_pi_agent_messages_session_seq")
113
+ @@index([tenantId, turnId], map: "idx_pi_agent_messages_turn")
114
+ @@index([tenantId, userId, createdAt], map: "idx_pi_agent_messages_user_created")
115
+ @@map("pi_agent_messages")
116
+ }
117
+
118
+ model PiAgentTurnQueue {
119
+ id String @id @db.VarChar(64)
120
+ tenantId String @map("tenant_id") @db.VarChar(64)
121
+ userId String @map("user_id") @db.VarChar(64)
122
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
123
+ sessionId String @map("session_id") @db.VarChar(160)
124
+ turnId String @map("turn_id") @db.VarChar(64)
125
+ sourceType String @map("source_type") @db.VarChar(32)
126
+ status String @db.VarChar(32)
127
+ priority Int @default(0)
128
+ leaseOwner String? @map("lease_owner") @db.VarChar(128)
129
+ leaseExpiresAt DateTime? @map("lease_expires_at") @db.DateTime(6)
130
+ attemptCount Int @default(0) @map("attempt_count")
131
+ availableAt DateTime @map("available_at") @db.DateTime(6)
132
+ createdAt DateTime @map("created_at") @db.DateTime(6)
133
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
134
+
135
+ @@unique([tenantId, turnId], map: "uq_pi_agent_turn_queue_turn")
136
+ @@index([tenantId, status, priority, availableAt], map: "idx_pi_agent_turn_queue_ready")
137
+ @@index([tenantId, status, priority, availableAt, createdAt], map: "idx_pi_agent_turn_queue_ready_order")
138
+ @@index([tenantId, sessionId, status], map: "idx_pi_agent_turn_queue_session")
139
+ @@index([tenantId, sourceType, status], map: "idx_pi_agent_turn_queue_source")
140
+ @@index([tenantId, leaseOwner, leaseExpiresAt], map: "idx_pi_agent_turn_queue_lease")
141
+ @@map("pi_agent_turn_queue")
142
+ }
143
+
144
+ model PiAgentTurnSignal {
145
+ id String @id @db.VarChar(64)
146
+ tenantId String @map("tenant_id") @db.VarChar(64)
147
+ userId String @map("user_id") @db.VarChar(64)
148
+ actorUserId String? @map("actor_user_id") @db.VarChar(64)
149
+ sessionId String @map("session_id") @db.VarChar(160)
150
+ turnId String? @map("turn_id") @db.VarChar(64)
151
+ signalType String @map("signal_type") @db.VarChar(32)
152
+ status String @db.VarChar(32)
153
+ payloadJson Json? @map("payload_json")
154
+ reason String? @db.VarChar(512)
155
+ createdAt DateTime @map("created_at") @db.DateTime(6)
156
+ deliveredAt DateTime? @map("delivered_at") @db.DateTime(6)
157
+ acknowledgedAt DateTime? @map("acknowledged_at") @db.DateTime(6)
158
+
159
+ @@index([tenantId, sessionId, status, createdAt], map: "idx_pi_agent_turn_signals_session")
160
+ @@index([tenantId, turnId, status], map: "idx_pi_agent_turn_signals_turn")
161
+ @@index([tenantId, actorUserId, createdAt], map: "idx_pi_agent_turn_signals_actor")
162
+ @@map("pi_agent_turn_signals")
163
+ }
164
+
165
+ model PiAgentEvent {
166
+ id String @id @db.VarChar(64)
167
+ tenantId String @map("tenant_id") @db.VarChar(64)
168
+ userId String? @map("user_id") @db.VarChar(64)
169
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
170
+ sessionId String? @map("session_id") @db.VarChar(160)
171
+ turnId String? @map("turn_id") @db.VarChar(64)
172
+ traceId String? @map("trace_id") @db.VarChar(64)
173
+ eventSeq BigInt @map("event_seq")
174
+ eventSource String @map("event_source") @db.VarChar(32)
175
+ eventType String @map("event_type") @db.VarChar(64)
176
+ eventName String @map("event_name") @db.VarChar(64)
177
+ severity String @default("info") @db.VarChar(16)
178
+ payloadJson Json? @map("payload_json")
179
+ createdAt DateTime @map("created_at") @db.DateTime(6)
180
+
181
+ @@unique([tenantId, sessionId, eventSeq], map: "uq_pi_agent_events_tenant_session_seq")
182
+ @@index([tenantId, sessionId, eventSeq], map: "idx_pi_agent_events_session_seq")
183
+ @@index([tenantId, sessionId, createdAt], map: "idx_pi_agent_events_session_created")
184
+ @@index([tenantId, turnId, eventSeq], map: "idx_pi_agent_events_turn_seq")
185
+ @@index([tenantId, turnId, createdAt], map: "idx_pi_agent_events_turn_created")
186
+ @@index([tenantId, traceId, createdAt], map: "idx_pi_agent_events_trace_created")
187
+ @@index([tenantId, eventType, createdAt], map: "idx_pi_agent_events_type_created")
188
+ @@index([tenantId, eventSource, sessionId, eventSeq], map: "idx_pi_agent_events_source_session_seq")
189
+ @@index([tenantId, eventSource, traceId, createdAt], map: "idx_pi_agent_events_source_trace_created")
190
+ @@index([tenantId, eventSource, eventType, createdAt], map: "idx_pi_agent_events_source_type_created")
191
+ @@map("pi_agent_events")
192
+ }
193
+
194
+ model PiAgentSubagentRun {
195
+ id String @id @db.VarChar(64)
196
+ tenantId String @map("tenant_id") @db.VarChar(64)
197
+ userId String @map("user_id") @db.VarChar(64)
198
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
199
+ runId String @map("run_id") @db.VarChar(64)
200
+ taskRunId String? @map("task_run_id") @db.VarChar(64)
201
+ spawnBatchId String? @map("spawn_batch_id") @db.VarChar(64)
202
+ traceId String? @map("trace_id") @db.VarChar(64)
203
+ parentSessionId String @map("parent_session_id") @db.VarChar(160)
204
+ childSessionId String @map("child_session_id") @db.VarChar(160)
205
+ parentTurnId String? @map("parent_turn_id") @db.VarChar(64)
206
+ parentToolCallId String? @map("parent_tool_call_id") @db.VarChar(160)
207
+ agentName String? @map("agent_name") @db.VarChar(128)
208
+ label String? @db.VarChar(255)
209
+ taskText String @map("task_text") @db.LongText
210
+ status String @db.VarChar(32)
211
+ depth Int @default(0)
212
+ modelJson Json? @map("model_json")
213
+ toolPolicyProfile String? @map("tool_policy_profile") @db.VarChar(64)
214
+ resultText String? @map("result_text") @db.LongText
215
+ errorJson Json? @map("error_json")
216
+ createdAt DateTime @map("created_at") @db.DateTime(6)
217
+ startedAt DateTime? @map("started_at") @db.DateTime(6)
218
+ endedAt DateTime? @map("ended_at") @db.DateTime(6)
219
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
220
+
221
+ @@unique([runId], map: "uq_pi_agent_subagent_runs_run_global")
222
+ @@unique([tenantId, runId], map: "uq_pi_agent_subagent_runs_run")
223
+ @@index([tenantId, parentSessionId, status], map: "idx_pi_agent_subagent_runs_parent")
224
+ @@index([tenantId, childSessionId], map: "idx_pi_agent_subagent_runs_child")
225
+ @@index([tenantId, traceId], map: "idx_pi_agent_subagent_runs_trace")
226
+ @@map("pi_agent_subagent_runs")
227
+ }
228
+
229
+ model PiAgentApproval {
230
+ id String @id @db.VarChar(64)
231
+ tenantId String @map("tenant_id") @db.VarChar(64)
232
+ userId String @map("user_id") @db.VarChar(64)
233
+ actorUserId String? @map("actor_user_id") @db.VarChar(64)
234
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
235
+ sessionId String @map("session_id") @db.VarChar(160)
236
+ turnId String? @map("turn_id") @db.VarChar(64)
237
+ toolCallId String? @map("tool_call_id") @db.VarChar(160)
238
+ approvalType String @map("approval_type") @db.VarChar(64)
239
+ status String @db.VarChar(32)
240
+ requestJson Json @map("request_json")
241
+ decisionJson Json? @map("decision_json")
242
+ requestedAt DateTime @map("requested_at") @db.DateTime(6)
243
+ decidedAt DateTime? @map("decided_at") @db.DateTime(6)
244
+ expiresAt DateTime? @map("expires_at") @db.DateTime(6)
245
+
246
+ @@index([tenantId, sessionId, status, requestedAt], map: "idx_pi_agent_approvals_session")
247
+ @@index([tenantId, actorUserId, requestedAt], map: "idx_pi_agent_approvals_actor")
248
+ @@index([tenantId, status, expiresAt], map: "idx_pi_agent_approvals_expiry")
249
+ @@map("pi_agent_approvals")
250
+ }
251
+
252
+ model PiAgentMemory {
253
+ id String @id @db.VarChar(64)
254
+ tenantId String @map("tenant_id") @db.VarChar(64)
255
+ userId String @map("user_id") @db.VarChar(64)
256
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
257
+ sessionId String? @map("session_id") @db.VarChar(160)
258
+ scope String @db.VarChar(32)
259
+ text String @db.LongText
260
+ tagsJson Json? @map("tags_json")
261
+ metadataJson Json? @map("metadata_json")
262
+ embeddingRef String? @map("embedding_ref") @db.VarChar(256)
263
+ createdAt DateTime @map("created_at") @db.DateTime(6)
264
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
265
+ deletedAt DateTime? @map("deleted_at") @db.DateTime(6)
266
+
267
+ @@index([tenantId, sessionId, createdAt], map: "idx_pi_agent_memory_session")
268
+ @@index([tenantId, userId, scope, createdAt], map: "idx_pi_agent_memory_user_scope")
269
+ @@index([tenantId, workspaceId, scope, createdAt], map: "idx_pi_agent_memory_workspace_scope")
270
+ @@map("pi_agent_memory")
271
+ }
272
+
273
+ model PiAgentScheduledTask {
274
+ id String @id @db.VarChar(64)
275
+ tenantId String @map("tenant_id") @db.VarChar(64)
276
+ userId String @map("user_id") @db.VarChar(64)
277
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
278
+ sessionId String @map("session_id") @db.VarChar(160)
279
+ name String? @db.VarChar(255)
280
+ description String? @db.Text
281
+ prompt String @db.LongText
282
+ taskType String @map("task_type") @db.VarChar(32)
283
+ schedule String? @db.VarChar(255)
284
+ intervalSeconds Int? @map("interval_seconds")
285
+ enabled Boolean @default(true)
286
+ modelJson Json? @map("model_json")
287
+ toolPolicyProfile String? @map("tool_policy_profile") @db.VarChar(64)
288
+ workspaceDir String? @map("workspace_dir") @db.VarChar(1024)
289
+ lastRunAt DateTime? @map("last_run_at") @db.DateTime(6)
290
+ nextRunAt DateTime? @map("next_run_at") @db.DateTime(6)
291
+ runCount BigInt @default(0) @map("run_count")
292
+ lastStatus String? @map("last_status") @db.VarChar(32)
293
+ lastError String? @map("last_error") @db.Text
294
+ createdAt DateTime @map("created_at") @db.DateTime(6)
295
+ updatedAt DateTime @map("updated_at") @db.DateTime(6)
296
+ deletedAt DateTime? @map("deleted_at") @db.DateTime(6)
297
+
298
+ @@index([tenantId, enabled, nextRunAt], map: "idx_pi_agent_scheduled_tasks_due")
299
+ @@index([tenantId, userId, updatedAt], map: "idx_pi_agent_scheduled_tasks_user")
300
+ @@index([tenantId, userId, deletedAt, updatedAt], map: "idx_pi_agent_scheduled_tasks_user_visible")
301
+ @@index([tenantId, sessionId], map: "idx_pi_agent_scheduled_tasks_session")
302
+ @@map("pi_agent_scheduled_tasks")
303
+ }
304
+
305
+ model PiAgentTaskRun {
306
+ id String @id @db.VarChar(64)
307
+ tenantId String @map("tenant_id") @db.VarChar(64)
308
+ userId String @map("user_id") @db.VarChar(64)
309
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
310
+ taskId String @map("task_id") @db.VarChar(64)
311
+ sessionId String @map("session_id") @db.VarChar(160)
312
+ turnId String? @map("turn_id") @db.VarChar(64)
313
+ status String @db.VarChar(32)
314
+ message String? @db.Text
315
+ errorJson Json? @map("error_json")
316
+ startedAt DateTime? @map("started_at") @db.DateTime(6)
317
+ endedAt DateTime? @map("ended_at") @db.DateTime(6)
318
+ createdAt DateTime @map("created_at") @db.DateTime(6)
319
+
320
+ @@index([tenantId, taskId, createdAt], map: "idx_pi_agent_task_runs_task_created")
321
+ @@index([tenantId, status, createdAt], map: "idx_pi_agent_task_runs_status_created")
322
+ @@index([tenantId, turnId], map: "idx_pi_agent_task_runs_turn")
323
+ @@map("pi_agent_task_runs")
324
+ }
325
+
326
+ model PiAgentArtifact {
327
+ id String @id @db.VarChar(64)
328
+ tenantId String @map("tenant_id") @db.VarChar(64)
329
+ userId String @map("user_id") @db.VarChar(64)
330
+ workspaceId String? @map("workspace_id") @db.VarChar(128)
331
+ sessionId String @map("session_id") @db.VarChar(160)
332
+ turnId String? @map("turn_id") @db.VarChar(64)
333
+ toolCallId String? @map("tool_call_id") @db.VarChar(160)
334
+ artifactType String @map("artifact_type") @db.VarChar(64)
335
+ name String? @db.VarChar(512)
336
+ mimeType String? @map("mime_type") @db.VarChar(128)
337
+ sizeBytes BigInt? @map("size_bytes")
338
+ sha256 String? @db.VarChar(64)
339
+ storageUri String @map("storage_uri") @db.VarChar(1024)
340
+ previewUri String? @map("preview_uri") @db.VarChar(1024)
341
+ metadataJson Json? @map("metadata_json")
342
+ createdAt DateTime @map("created_at") @db.DateTime(6)
343
+ deletedAt DateTime? @map("deleted_at") @db.DateTime(6)
344
+
345
+ @@index([tenantId, sessionId, createdAt], map: "idx_pi_agent_artifacts_session_created")
346
+ @@index([tenantId, userId, deletedAt, sessionId, createdAt], map: "idx_pi_agent_artifacts_user_session_visible")
347
+ @@index([tenantId, turnId, createdAt], map: "idx_pi_agent_artifacts_turn_created")
348
+ @@index([tenantId, toolCallId], map: "idx_pi_agent_artifacts_tool_call")
349
+ @@index([tenantId, sha256], map: "idx_pi_agent_artifacts_hash")
350
+ @@map("pi_agent_artifacts")
351
+ }