@openork/cli 0.1.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 (122) hide show
  1. package/bin/dev.js +3 -0
  2. package/bin/run.js +3 -0
  3. package/dist/commands/gateway/start.d.ts +14 -0
  4. package/dist/commands/gateway/start.d.ts.map +1 -0
  5. package/dist/commands/gateway/start.js +120 -0
  6. package/dist/commands/gateway/start.js.map +1 -0
  7. package/dist/commands/gateway/stop.d.ts +7 -0
  8. package/dist/commands/gateway/stop.d.ts.map +1 -0
  9. package/dist/commands/gateway/stop.js +33 -0
  10. package/dist/commands/gateway/stop.js.map +1 -0
  11. package/dist/commands/setup.d.ts +7 -0
  12. package/dist/commands/setup.d.ts.map +1 -0
  13. package/dist/commands/setup.js +86 -0
  14. package/dist/commands/setup.js.map +1 -0
  15. package/dist/commands/setup.spec.d.ts +2 -0
  16. package/dist/commands/setup.spec.d.ts.map +1 -0
  17. package/dist/commands/setup.spec.js +88 -0
  18. package/dist/commands/setup.spec.js.map +1 -0
  19. package/dist/commands/uninstall.d.ts +10 -0
  20. package/dist/commands/uninstall.d.ts.map +1 -0
  21. package/dist/commands/uninstall.js +71 -0
  22. package/dist/commands/uninstall.js.map +1 -0
  23. package/dist/index.d.ts +2 -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/lib/gateway.d.ts +19 -0
  28. package/dist/lib/gateway.d.ts.map +1 -0
  29. package/dist/lib/gateway.js +52 -0
  30. package/dist/lib/gateway.js.map +1 -0
  31. package/dist/lib/shell-profile.d.ts +10 -0
  32. package/dist/lib/shell-profile.d.ts.map +1 -0
  33. package/dist/lib/shell-profile.js +56 -0
  34. package/dist/lib/shell-profile.js.map +1 -0
  35. package/dist/migrations/0001-add-memory-enabled.js +42 -0
  36. package/dist/migrations/lib/helpers.js +78 -0
  37. package/dist/migrations/lib/template.js +8 -0
  38. package/dist/openapi.yml +5648 -0
  39. package/dist/prisma/migrations/20260318152538_add_trigger_type_and_source_workflow/migration.sql +79 -0
  40. package/dist/prisma/migrations/20260318154232_drop_skill_and_emit_from_action/migration.sql +25 -0
  41. package/dist/prisma/migrations/20260318160029_action_types_cli_bash_node_http/migration.sql +29 -0
  42. package/dist/prisma/migrations/migration_lock.toml +3 -0
  43. package/dist/prisma/schema.prisma +236 -0
  44. package/dist/server.js +182527 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/web/assets/activity-feed-D_eonDKG.js +1 -0
  47. package/dist/web/assets/agent-edit-CblZItU5.js +98 -0
  48. package/dist/web/assets/agent-sessions-COpCcffa.js +1 -0
  49. package/dist/web/assets/agent-use-F4pOt3KJ.js +1 -0
  50. package/dist/web/assets/agents-Av7w2wHE.js +1 -0
  51. package/dist/web/assets/api-docs-BQzn4-6U.js +1 -0
  52. package/dist/web/assets/arrow-down-XHN5PD1k.js +1 -0
  53. package/dist/web/assets/arrow-left-wtNmm6Le.js +1 -0
  54. package/dist/web/assets/bi-gM8sIAZV.js +1 -0
  55. package/dist/web/assets/chat-CQvfLy7Y.js +4 -0
  56. package/dist/web/assets/chat-input-BepRPV_L.js +2 -0
  57. package/dist/web/assets/chat-message-CbcDeDcb.js +37 -0
  58. package/dist/web/assets/chat-new-BOtDuYij.js +1 -0
  59. package/dist/web/assets/chat-sessions-CaCaK_PC.js +1 -0
  60. package/dist/web/assets/chats-64IReeGV.js +1 -0
  61. package/dist/web/assets/circle-alert-W8QX9LOG.js +1 -0
  62. package/dist/web/assets/circle-check-DLl9fl65.js +1 -0
  63. package/dist/web/assets/circle-x-D_8Tcgt1.js +1 -0
  64. package/dist/web/assets/code-Brz4KHlI.js +1 -0
  65. package/dist/web/assets/code-editor-x9L6nkh4.js +1 -0
  66. package/dist/web/assets/commands-DT9K8bae.js +8 -0
  67. package/dist/web/assets/copy-C87mjn_Y.js +1 -0
  68. package/dist/web/assets/credentials-DC-HOVxW.js +1 -0
  69. package/dist/web/assets/cron-COUPKvGu.js +1 -0
  70. package/dist/web/assets/crown-BJEsQkh4.js +1 -0
  71. package/dist/web/assets/dashboard-OfnNUjFX.js +1 -0
  72. package/dist/web/assets/database-BohjTljV.js +1 -0
  73. package/dist/web/assets/debug-Et9rgBM8.js +1 -0
  74. package/dist/web/assets/download-B2UOiYAS.js +1 -0
  75. package/dist/web/assets/eye-DN-Km5vf.js +1 -0
  76. package/dist/web/assets/file-plus-B8qWemgt.js +1 -0
  77. package/dist/web/assets/file-tree-DkLQ1z0I.js +1 -0
  78. package/dist/web/assets/folder-plus-DsmP6Mur.js +1 -0
  79. package/dist/web/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  80. package/dist/web/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  81. package/dist/web/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  82. package/dist/web/assets/globe-fwFSeXZn.js +1 -0
  83. package/dist/web/assets/grip-vertical-Djo-yR-o.js +1 -0
  84. package/dist/web/assets/history-CyBBboEp.js +1 -0
  85. package/dist/web/assets/index-YgjFlLLv.css +2 -0
  86. package/dist/web/assets/index-dc8HGqTp.js +2 -0
  87. package/dist/web/assets/layers-ephyCrDm.js +1 -0
  88. package/dist/web/assets/layout-grid-DCVGg8ZA.js +1 -0
  89. package/dist/web/assets/mcp-setup-BfMdYdsI.js +17 -0
  90. package/dist/web/assets/memory-DAQ474-p.js +1 -0
  91. package/dist/web/assets/new-chat-DtMw6FMg.js +1 -0
  92. package/dist/web/assets/play-DXJMtO-K.js +1 -0
  93. package/dist/web/assets/refresh-cw-RFYUf5GB.js +1 -0
  94. package/dist/web/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  95. package/dist/web/assets/save-Dewm93H6.js +1 -0
  96. package/dist/web/assets/search-Ww0msJQz.js +1 -0
  97. package/dist/web/assets/send-FWvygYFQ.js +1 -0
  98. package/dist/web/assets/settings-Auyn4Z5T.js +1 -0
  99. package/dist/web/assets/shield-check-Dt7sXtBF.js +1 -0
  100. package/dist/web/assets/shuffle-DjvBJ7XV.js +1 -0
  101. package/dist/web/assets/src-DUhGoAQb.js +24 -0
  102. package/dist/web/assets/team-edit-DO-RX3lC.js +1 -0
  103. package/dist/web/assets/team-sessions-DSw8MTtZ.js +1 -0
  104. package/dist/web/assets/team-use-BfNvsFcO.js +3 -0
  105. package/dist/web/assets/terminal-CIapYonS.js +1 -0
  106. package/dist/web/assets/timer-C9X20mTO.js +1 -0
  107. package/dist/web/assets/useMutation-BlOHt3MR.js +1 -0
  108. package/dist/web/assets/useQuery-DvovkaPT.js +1 -0
  109. package/dist/web/assets/utils-DHTPP40O.js +1 -0
  110. package/dist/web/assets/vendor-editor-BORFA-rZ.js +39 -0
  111. package/dist/web/assets/vendor-react-BJ8SIkmN.js +11 -0
  112. package/dist/web/assets/vendor-ui-CHpVij2M.css +1 -0
  113. package/dist/web/assets/vendor-ui-Dpw9mBc-.js +39 -0
  114. package/dist/web/assets/workflow-edit-D0FNyl64.js +4 -0
  115. package/dist/web/assets/workflow-runs-CPVvaVzN.js +1 -0
  116. package/dist/web/assets/workflows-C9jurJiE.js +1 -0
  117. package/dist/web/assets/wrench-DZBtSPP8.js +1 -0
  118. package/dist/web/assets/zap-CbT5plGA.js +1 -0
  119. package/dist/web/docs.html +242 -0
  120. package/dist/web/favicon.svg +13 -0
  121. package/dist/web/index.html +23 -0
  122. package/package.json +65 -0
@@ -0,0 +1,79 @@
1
+ -- CreateTable
2
+ CREATE TABLE "Workflow" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "name" TEXT NOT NULL,
5
+ "description" TEXT,
6
+ "workspace" TEXT,
7
+ "cli" TEXT NOT NULL DEFAULT 'cursor',
8
+ "model" TEXT,
9
+ "cronExpression" TEXT,
10
+ "enabled" BOOLEAN NOT NULL DEFAULT true,
11
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ "updatedAt" DATETIME NOT NULL
13
+ );
14
+
15
+ -- CreateTable
16
+ CREATE TABLE "Trigger" (
17
+ "id" TEXT NOT NULL PRIMARY KEY,
18
+ "type" TEXT NOT NULL DEFAULT 'event',
19
+ "eventName" TEXT,
20
+ "sourceWorkflowId" TEXT,
21
+ "workflowId" TEXT NOT NULL,
22
+ CONSTRAINT "Trigger_workflowId_fkey" FOREIGN KEY ("workflowId") REFERENCES "Workflow" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+
25
+ -- CreateTable
26
+ CREATE TABLE "Action" (
27
+ "id" TEXT NOT NULL PRIMARY KEY,
28
+ "type" TEXT NOT NULL DEFAULT 'cursor-agent',
29
+ "command" TEXT,
30
+ "prompt" TEXT,
31
+ "skillToInject" TEXT,
32
+ "emitEvent" TEXT,
33
+ "order" INTEGER NOT NULL,
34
+ "workflowId" TEXT NOT NULL,
35
+ CONSTRAINT "Action_workflowId_fkey" FOREIGN KEY ("workflowId") REFERENCES "Workflow" ("id") ON DELETE CASCADE ON UPDATE CASCADE
36
+ );
37
+
38
+ -- CreateTable
39
+ CREATE TABLE "WorkflowRun" (
40
+ "id" TEXT NOT NULL PRIMARY KEY,
41
+ "workflowId" TEXT NOT NULL,
42
+ "status" TEXT NOT NULL DEFAULT 'pending',
43
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
44
+ "completedAt" DATETIME,
45
+ "error" TEXT,
46
+ CONSTRAINT "WorkflowRun_workflowId_fkey" FOREIGN KEY ("workflowId") REFERENCES "Workflow" ("id") ON DELETE CASCADE ON UPDATE CASCADE
47
+ );
48
+
49
+ -- CreateTable
50
+ CREATE TABLE "AgentRun" (
51
+ "id" TEXT NOT NULL PRIMARY KEY,
52
+ "workflowRunId" TEXT NOT NULL,
53
+ "actionId" TEXT NOT NULL,
54
+ "status" TEXT NOT NULL DEFAULT 'pending',
55
+ "output" TEXT,
56
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
57
+ "completedAt" DATETIME,
58
+ "sessionId" TEXT,
59
+ CONSTRAINT "AgentRun_workflowRunId_fkey" FOREIGN KEY ("workflowRunId") REFERENCES "WorkflowRun" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
60
+ CONSTRAINT "AgentRun_actionId_fkey" FOREIGN KEY ("actionId") REFERENCES "Action" ("id") ON DELETE CASCADE ON UPDATE CASCADE
61
+ );
62
+
63
+ -- CreateIndex
64
+ CREATE INDEX "Trigger_eventName_idx" ON "Trigger"("eventName");
65
+
66
+ -- CreateIndex
67
+ CREATE INDEX "Trigger_sourceWorkflowId_idx" ON "Trigger"("sourceWorkflowId");
68
+
69
+ -- CreateIndex
70
+ CREATE INDEX "Action_workflowId_idx" ON "Action"("workflowId");
71
+
72
+ -- CreateIndex
73
+ CREATE INDEX "WorkflowRun_workflowId_idx" ON "WorkflowRun"("workflowId");
74
+
75
+ -- CreateIndex
76
+ CREATE INDEX "AgentRun_workflowRunId_idx" ON "AgentRun"("workflowRunId");
77
+
78
+ -- CreateIndex
79
+ CREATE INDEX "AgentRun_sessionId_idx" ON "AgentRun"("sessionId");
@@ -0,0 +1,25 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `emitEvent` on the `Action` table. All the data in the column will be lost.
5
+ - You are about to drop the column `skillToInject` on the `Action` table. All the data in the column will be lost.
6
+
7
+ */
8
+ -- RedefineTables
9
+ PRAGMA defer_foreign_keys=ON;
10
+ PRAGMA foreign_keys=OFF;
11
+ CREATE TABLE "new_Action" (
12
+ "id" TEXT NOT NULL PRIMARY KEY,
13
+ "type" TEXT NOT NULL DEFAULT 'cursor-agent',
14
+ "command" TEXT,
15
+ "prompt" TEXT,
16
+ "order" INTEGER NOT NULL,
17
+ "workflowId" TEXT NOT NULL,
18
+ CONSTRAINT "Action_workflowId_fkey" FOREIGN KEY ("workflowId") REFERENCES "Workflow" ("id") ON DELETE CASCADE ON UPDATE CASCADE
19
+ );
20
+ INSERT INTO "new_Action" ("command", "id", "order", "prompt", "type", "workflowId") SELECT "command", "id", "order", "prompt", "type", "workflowId" FROM "Action";
21
+ DROP TABLE "Action";
22
+ ALTER TABLE "new_Action" RENAME TO "Action";
23
+ CREATE INDEX "Action_workflowId_idx" ON "Action"("workflowId");
24
+ PRAGMA foreign_keys=ON;
25
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,29 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `command` on the `Action` table. All the data in the column will be lost.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_Action" (
11
+ "id" TEXT NOT NULL PRIMARY KEY,
12
+ "type" TEXT NOT NULL DEFAULT 'cli-agent',
13
+ "order" INTEGER NOT NULL,
14
+ "workflowId" TEXT NOT NULL,
15
+ "cli" TEXT,
16
+ "prompt" TEXT,
17
+ "script" TEXT,
18
+ "httpMethod" TEXT,
19
+ "httpUrl" TEXT,
20
+ "httpHeaders" TEXT,
21
+ "httpBody" TEXT,
22
+ CONSTRAINT "Action_workflowId_fkey" FOREIGN KEY ("workflowId") REFERENCES "Workflow" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+ INSERT INTO "new_Action" ("id", "order", "prompt", "type", "workflowId") SELECT "id", "order", "prompt", "type", "workflowId" FROM "Action";
25
+ DROP TABLE "Action";
26
+ ALTER TABLE "new_Action" RENAME TO "Action";
27
+ CREATE INDEX "Action_workflowId_idx" ON "Action"("workflowId");
28
+ PRAGMA foreign_keys=ON;
29
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,3 @@
1
+ # Please do not edit this file manually
2
+ # It should be added in your version-control system (e.g., Git)
3
+ provider = "sqlite"
@@ -0,0 +1,236 @@
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ // output removed for standalone CLI distribution
4
+ }
5
+
6
+ datasource db {
7
+ provider = "sqlite"
8
+ }
9
+
10
+ model Credential {
11
+ id String @id @default(cuid())
12
+ name String
13
+ type String // "bearer" | "basic" | "api-key" | "custom-header"
14
+ // bearer: data = { token }
15
+ // basic: data = { username, password }
16
+ // api-key: data = { key, value, addTo } (addTo = "header" | "query")
17
+ // custom-header: data = { headers: [{ key, value }] }
18
+ data String // JSON-encrypted credential data
19
+ createdAt DateTime @default(now())
20
+ updatedAt DateTime @updatedAt
21
+
22
+ actions Action[]
23
+ }
24
+
25
+ model Workflow {
26
+ id String @id @default(cuid())
27
+ name String
28
+ description String?
29
+ workspace String?
30
+ cli String @default("cursor")
31
+ model String?
32
+ cronExpression String?
33
+ enabled Boolean @default(true)
34
+ summaryEnabled Boolean @default(false)
35
+ createdAt DateTime @default(now())
36
+ updatedAt DateTime @updatedAt
37
+
38
+ triggers Trigger[]
39
+ actions Action[]
40
+ runs WorkflowRun[]
41
+ }
42
+
43
+ model Trigger {
44
+ id String @id @default(cuid())
45
+ type String @default("event") // "workflow" | "event" | "cron"
46
+ eventName String?
47
+ sourceWorkflowId String?
48
+ workflowId String
49
+ workflow Workflow @relation(fields: [workflowId], references: [id], onDelete: Cascade)
50
+
51
+ @@index([eventName])
52
+ @@index([sourceWorkflowId])
53
+ @@index([type, eventName])
54
+ }
55
+
56
+ model Action {
57
+ id String @id @default(cuid())
58
+ name String?
59
+ type String @default("cli-agent") // "cli-agent" | "bash" | "node" | "http"
60
+ order Int
61
+ dependsOn String? // JSON array of action IDs (for DAG execution)
62
+ workflowId String
63
+ workflow Workflow @relation(fields: [workflowId], references: [id], onDelete: Cascade)
64
+
65
+ // cli-agent fields
66
+ cli String? // e.g. "cursor-agent"
67
+ model String? // e.g. "gpt-5-mini", "claude-sonnet-4", etc.
68
+ prompt String?
69
+ trustMode Boolean @default(true) // pass --trust flag to bypass agent permissions
70
+
71
+ // bash / node fields
72
+ script String?
73
+
74
+ // http fields
75
+ httpMethod String? // GET | POST | PUT | PATCH | DELETE
76
+ httpUrl String?
77
+ httpHeaders String? // JSON string
78
+ httpBody String?
79
+ credentialId String?
80
+ credential Credential? @relation(fields: [credentialId], references: [id], onDelete: SetNull)
81
+
82
+ // timeout (null = no timeout)
83
+ timeoutMs Int?
84
+
85
+ // workflow (sub-workflow) fields
86
+ targetWorkflowId String?
87
+
88
+ // agent / team reference (from Agents system — file-based, not FK)
89
+ agentId String?
90
+ teamId String?
91
+
92
+ agentRuns AgentRun[]
93
+
94
+ @@index([workflowId])
95
+ }
96
+
97
+ model WorkflowRun {
98
+ id String @id @default(cuid())
99
+ workflowId String
100
+ workflow Workflow @relation(fields: [workflowId], references: [id], onDelete: Cascade)
101
+ status String @default("pending")
102
+ payload String? // JSON-serialized trigger payload
103
+ startedAt DateTime @default(now())
104
+ completedAt DateTime?
105
+ error String?
106
+
107
+ agentRuns AgentRun[]
108
+
109
+ @@index([workflowId])
110
+ @@index([status])
111
+ }
112
+
113
+ model AgentRun {
114
+ id String @id @default(cuid())
115
+ workflowRunId String
116
+ workflowRun WorkflowRun @relation(fields: [workflowRunId], references: [id], onDelete: Cascade)
117
+ actionId String
118
+ action Action @relation(fields: [actionId], references: [id], onDelete: Cascade)
119
+ status String @default("pending")
120
+ output String?
121
+ summary String?
122
+ startedAt DateTime @default(now())
123
+ completedAt DateTime?
124
+ /// The Cursor CLI session ID created by this agent run (used to hide workflow sessions from session list)
125
+ sessionId String?
126
+
127
+ /// Token usage captured from the CLI stream-json result event
128
+ inputTokens Int?
129
+ outputTokens Int?
130
+ cacheReadTokens Int?
131
+ cacheWriteTokens Int?
132
+ /// LLM model used (from the system/init event)
133
+ model String?
134
+
135
+ logEntries LogEntry[]
136
+
137
+ @@index([workflowRunId])
138
+ @@index([workflowRunId, status])
139
+ @@index([sessionId])
140
+ }
141
+
142
+ model LogEntry {
143
+ id String @id @default(cuid())
144
+ agentRunId String
145
+ agentRun AgentRun @relation(fields: [agentRunId], references: [id], onDelete: Cascade)
146
+ stream String @default("stdout") // "stdout" | "stderr"
147
+ text String
148
+ timestamp DateTime @default(now())
149
+
150
+ @@index([agentRunId])
151
+ }
152
+
153
+ // ── Team Session Persistence ──
154
+
155
+ model TeamSession {
156
+ id String @id // reuse the runId from in-memory run
157
+ teamId String // file-based team ID (UUID)
158
+ teamName String // snapshot of team name at run time
159
+ strategy String // "sequential" | "parallel" | "router" | "debate"
160
+ status String // "completed" | "failed" | "cancelled"
161
+ prompt String
162
+ maxRounds Int
163
+ totalRounds Int
164
+ error String?
165
+
166
+ // Aggregated token usage
167
+ inputTokens Int @default(0)
168
+ outputTokens Int @default(0)
169
+ cacheReadTokens Int @default(0)
170
+ cacheWriteTokens Int @default(0)
171
+
172
+ startedAt DateTime
173
+ completedAt DateTime @default(now())
174
+
175
+ agents TeamSessionAgent[]
176
+
177
+ @@index([teamId])
178
+ @@index([status])
179
+ @@index([startedAt])
180
+ @@index([completedAt])
181
+ }
182
+
183
+ // ── Agent Session Persistence (single-agent runs) ──
184
+
185
+ model AgentChatSession {
186
+ id String @id @default(cuid())
187
+ agentId String // file-based agent ID (UUID)
188
+ agentName String // snapshot of agent name at run time
189
+ status String // "completed" | "failed" | "cancelled"
190
+ prompt String // initial user message
191
+ output String? // final assistant response
192
+ model String? // LLM model used
193
+ cli String? // CLI runtime used (cursor, claude, codex, etc.)
194
+ error String?
195
+
196
+ // Token usage
197
+ inputTokens Int @default(0)
198
+ outputTokens Int @default(0)
199
+ cacheReadTokens Int @default(0)
200
+ cacheWriteTokens Int @default(0)
201
+
202
+ // Stream/session references (for potential reconnection)
203
+ streamId String? // stream ID from chat system
204
+ sessionId String? // CLI session ID
205
+
206
+ startedAt DateTime @default(now())
207
+ completedAt DateTime?
208
+
209
+ @@index([agentId])
210
+ @@index([status])
211
+ @@index([startedAt])
212
+ }
213
+
214
+ model TeamSessionAgent {
215
+ id String @id @default(cuid())
216
+ teamSessionId String
217
+ teamSession TeamSession @relation(fields: [teamSessionId], references: [id], onDelete: Cascade)
218
+
219
+ agentId String // file-based agent ID (UUID)
220
+ agentName String // snapshot of agent name at run time
221
+ nodeId String
222
+ role String
223
+ status String // "done" | "error" | "skipped"
224
+ round Int
225
+ output String?
226
+ model String?
227
+
228
+ // Per-agent token usage
229
+ inputTokens Int @default(0)
230
+ outputTokens Int @default(0)
231
+ cacheReadTokens Int @default(0)
232
+ cacheWriteTokens Int @default(0)
233
+
234
+ @@index([teamSessionId])
235
+ @@index([agentId])
236
+ }