@crewx/sdk 0.9.0-rc.13 → 0.9.0-rc.131

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 (268) hide show
  1. package/README.md +1 -1
  2. package/dist/account/auth-client.d.ts +61 -0
  3. package/dist/account/auth-json-v2.d.ts +1 -0
  4. package/dist/account/auth-json.d.ts +30 -0
  5. package/dist/account/config.d.ts +37 -0
  6. package/dist/account/env-bootstrap.d.ts +11 -0
  7. package/dist/account/errors.d.ts +24 -0
  8. package/dist/account/index.d.ts +12 -0
  9. package/dist/account/index.js +2 -0
  10. package/dist/account/session-manager.d.ts +47 -0
  11. package/dist/activity-log/builder.d.ts +56 -6
  12. package/dist/agent/agent-list-view.d.ts +19 -0
  13. package/dist/boxing/box.types.d.ts +4 -0
  14. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  15. package/dist/config/default-agent-models.d.ts +11 -0
  16. package/dist/config/global-settings.d.ts +33 -0
  17. package/dist/config/migrate-grok-mode.d.ts +6 -0
  18. package/dist/config/model-compat.d.ts +31 -0
  19. package/dist/config/models.generated.d.ts +37 -0
  20. package/dist/config/models.remote.d.ts +1 -0
  21. package/dist/config/overdrive.d.ts +7 -0
  22. package/dist/config/pricing.d.ts +6 -3
  23. package/dist/config/pricing.generated.d.ts +4 -0
  24. package/dist/config/pricing.types.d.ts +4 -0
  25. package/dist/config/timeout.config.d.ts +4 -0
  26. package/dist/config/wi-boards.d.ts +19 -0
  27. package/dist/context-budget/continuity.d.ts +61 -0
  28. package/dist/context-budget/index.d.ts +141 -0
  29. package/dist/conversation/index.d.ts +1 -1
  30. package/dist/conversation/sqlite-provider.d.ts +6 -2
  31. package/dist/conversation/to-template-messages.d.ts +9 -0
  32. package/dist/conversation/types.d.ts +47 -1
  33. package/dist/desktop/command-runner.d.ts +4 -0
  34. package/dist/desktop/default-adapters.d.ts +4 -0
  35. package/dist/desktop/global-install.d.ts +19 -0
  36. package/dist/desktop/index.d.ts +3 -0
  37. package/dist/desktop/index.js +3 -0
  38. package/dist/desktop/install.d.ts +5 -0
  39. package/dist/desktop/lnk.d.ts +22 -0
  40. package/dist/desktop/manifest.d.ts +21 -0
  41. package/dist/desktop/types.d.ts +67 -0
  42. package/dist/desktop/version.d.ts +1 -0
  43. package/dist/desktop/windows-paths.d.ts +21 -0
  44. package/dist/desktop/wrapper.d.ts +18 -0
  45. package/dist/esm/account/index.js +2 -0
  46. package/dist/esm/desktop/index.js +3 -0
  47. package/dist/esm/index.js +934 -224
  48. package/dist/esm/node/index.js +2 -0
  49. package/dist/esm/plugins/index.js +341 -214
  50. package/dist/esm/process/index.js +1 -0
  51. package/dist/esm/publish/index.js +2 -0
  52. package/dist/esm/repository/index.js +416 -211
  53. package/dist/esm/skills/index.js +2 -0
  54. package/dist/esm/testing/index.js +1 -1
  55. package/dist/events/types.d.ts +9 -0
  56. package/dist/facade/Crewx.d.ts +58 -5
  57. package/dist/facade/task-ticket.d.ts +14 -0
  58. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  59. package/dist/highlight/thread-highlighter.d.ts +326 -0
  60. package/dist/index.browser.d.ts +17 -1
  61. package/dist/index.browser.js +6 -2
  62. package/dist/index.d.ts +122 -17
  63. package/dist/index.js +934 -224
  64. package/dist/internal/console-decoder.d.ts +38 -0
  65. package/dist/internal/windows-spawn.d.ts +10 -0
  66. package/dist/layout/types.d.ts +18 -1
  67. package/dist/lifecycle/process-lease.d.ts +80 -0
  68. package/dist/lifecycle/process-owner.d.ts +20 -0
  69. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  70. package/dist/lifecycle/task-stop.d.ts +82 -0
  71. package/dist/lifecycle/update-admission.d.ts +45 -0
  72. package/dist/local-server/base-url.d.ts +18 -0
  73. package/dist/local-server/index.d.ts +8 -0
  74. package/dist/local-server/opencode.d.ts +8 -0
  75. package/dist/local-server/probe.d.ts +3 -0
  76. package/dist/local-server/runtime.d.ts +26 -0
  77. package/dist/local-server/types.d.ts +43 -0
  78. package/dist/mcp-app/agent-access.d.ts +26 -0
  79. package/dist/mcp-app/apps-context.d.ts +6 -0
  80. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  81. package/dist/mcp-app/catalog.d.ts +7 -0
  82. package/dist/mcp-app/content-channel.d.ts +89 -0
  83. package/dist/mcp-app/content-declarations.d.ts +29 -0
  84. package/dist/mcp-app/dev-checks.d.ts +29 -0
  85. package/dist/mcp-app/discovery.d.ts +153 -0
  86. package/dist/mcp-app/errors.d.ts +7 -0
  87. package/dist/mcp-app/index.d.ts +33 -0
  88. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  89. package/dist/mcp-app/model-context.d.ts +29 -0
  90. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  91. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  92. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  93. package/dist/mcp-app/projection.d.ts +14 -0
  94. package/dist/mcp-app/registry.d.ts +28 -0
  95. package/dist/mcp-app/skill-backend.d.ts +133 -0
  96. package/dist/mcp-app/state-set.d.ts +9 -0
  97. package/dist/mcp-app/types.d.ts +458 -0
  98. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  99. package/dist/mcp-app/workspace-app-scan-cache.d.ts +24 -0
  100. package/dist/mcp-app/workspace-snapshot.d.ts +70 -0
  101. package/dist/migrations/0010_analyze_stats.sql +6 -0
  102. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  103. package/dist/migrations/0012_blue_turbo.sql +23 -0
  104. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  105. package/dist/migrations/0014_organic_mongu.sql +73 -0
  106. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  107. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  108. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  109. package/dist/migrations/0018_bored_jackal.sql +33 -0
  110. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  111. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  112. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  113. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  114. package/dist/migrations/0023_red_payback.sql +1 -0
  115. package/dist/migrations/0024_storage_metadata.sql +262 -0
  116. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  117. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  118. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  119. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  120. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  121. package/dist/migrations/0029_nice_rhino.sql +1 -0
  122. package/dist/migrations/0031_petite_arclight.sql +6 -0
  123. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  124. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  125. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  126. package/dist/migrations/meta/0010_snapshot.json +1335 -0
  127. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  128. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  129. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  130. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  131. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  132. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  133. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  134. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  135. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  136. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  137. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  138. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  139. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  140. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  141. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  142. package/dist/migrations/meta/_journal.json +175 -0
  143. package/dist/node/index.d.ts +1 -0
  144. package/dist/node/index.js +2 -0
  145. package/dist/paths.d.ts +1 -0
  146. package/dist/plugin/types.d.ts +1 -0
  147. package/dist/plugins/index.d.ts +1 -1
  148. package/dist/plugins/index.js +341 -214
  149. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  150. package/dist/process/index.d.ts +2 -0
  151. package/dist/process/index.js +1 -0
  152. package/dist/process/process-control.d.ts +41 -0
  153. package/dist/prompt/tag-names.d.ts +20 -0
  154. package/dist/provider/acp/connection.d.ts +6 -0
  155. package/dist/provider/acp/meta.d.ts +11 -0
  156. package/dist/provider/bridge.d.ts +7 -1
  157. package/dist/provider/classify-task-error.d.ts +2 -0
  158. package/dist/provider/cli/adapter.types.d.ts +14 -2
  159. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  160. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  161. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  162. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  163. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  164. package/dist/provider/cli/adapters/index.d.ts +5 -0
  165. package/dist/provider/cli/index.d.ts +3 -2
  166. package/dist/provider/cli/meta.d.ts +5 -0
  167. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  168. package/dist/provider/errors.d.ts +5 -1
  169. package/dist/provider/idle-watchdog.d.ts +19 -0
  170. package/dist/provider/models.d.ts +17 -12
  171. package/dist/provider/order.d.ts +1 -1
  172. package/dist/provider/parse-usage.d.ts +6 -0
  173. package/dist/provider/provider-selection.d.ts +8 -0
  174. package/dist/provider/redact-technical-message.d.ts +1 -0
  175. package/dist/provider/task-error.types.d.ts +17 -0
  176. package/dist/publish/constants.d.ts +6 -0
  177. package/dist/publish/errors.d.ts +7 -0
  178. package/dist/publish/index.d.ts +50 -0
  179. package/dist/publish/index.js +2 -0
  180. package/dist/publish/manifest.d.ts +47 -0
  181. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  182. package/dist/publish/pack.d.ts +6 -0
  183. package/dist/publish/scan.d.ts +9 -0
  184. package/dist/publish/secrets.d.ts +6 -0
  185. package/dist/publish/upload.d.ts +19 -0
  186. package/dist/remote/execution-profile.d.ts +9 -0
  187. package/dist/remote/index.d.ts +1 -0
  188. package/dist/remote/types.d.ts +28 -0
  189. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  190. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  191. package/dist/repository/common-code.repository.d.ts +45 -0
  192. package/dist/repository/db.d.ts +12 -1
  193. package/dist/repository/index.d.ts +37 -5
  194. package/dist/repository/index.js +416 -211
  195. package/dist/repository/notification.repository.d.ts +58 -0
  196. package/dist/repository/project.repository.d.ts +90 -0
  197. package/dist/repository/request-log.repository.d.ts +1 -0
  198. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  199. package/dist/repository/task-log-migration.d.ts +74 -0
  200. package/dist/repository/task-log.repository.d.ts +44 -0
  201. package/dist/repository/task-status.d.ts +14 -0
  202. package/dist/repository/task.repository.d.ts +224 -7
  203. package/dist/repository/thread-history.repository.d.ts +193 -0
  204. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  205. package/dist/repository/thread-title.types.d.ts +29 -0
  206. package/dist/repository/thread.repository.d.ts +72 -6
  207. package/dist/repository/usage-backfill.d.ts +62 -0
  208. package/dist/repository/usage-from-logs.d.ts +21 -0
  209. package/dist/repository/workspace.repository.d.ts +3 -0
  210. package/dist/schema/agent-suggestions.d.ts +199 -0
  211. package/dist/schema/common-codes.d.ts +216 -0
  212. package/dist/schema/index.d.ts +11 -0
  213. package/dist/schema/notifications.d.ts +303 -0
  214. package/dist/schema/projects.d.ts +610 -0
  215. package/dist/schema/storage-metadata.d.ts +181 -0
  216. package/dist/schema/task-log-events.d.ts +119 -0
  217. package/dist/schema/tasks.d.ts +165 -0
  218. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  219. package/dist/schema/thread-history.d.ts +734 -0
  220. package/dist/schema/threads.d.ts +59 -0
  221. package/dist/schema/ui-action-receipts.d.ts +358 -0
  222. package/dist/schema/ui-instance-repins.d.ts +222 -0
  223. package/dist/schema/ui-instances.d.ts +305 -0
  224. package/dist/schema/workspaces.d.ts +17 -0
  225. package/dist/skills/index.d.ts +15 -0
  226. package/dist/skills/index.js +2 -0
  227. package/dist/skills/types.d.ts +18 -0
  228. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  229. package/dist/task-log/delegation-trailer.d.ts +34 -0
  230. package/dist/template/engine.d.ts +2 -2
  231. package/dist/template/helpers/exec.browser.d.ts +4 -3
  232. package/dist/template/helpers/exec.d.ts +4 -3
  233. package/dist/template/types.d.ts +20 -0
  234. package/dist/testing/index.js +1 -1
  235. package/dist/types/index.d.ts +1572 -3
  236. package/dist/types/task-log.types.d.ts +2 -0
  237. package/dist/ui-card/index.d.ts +2 -0
  238. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  239. package/dist/ui-instance/definition.d.ts +6 -0
  240. package/dist/ui-instance/errors.d.ts +18 -0
  241. package/dist/ui-instance/index.d.ts +11 -0
  242. package/dist/ui-instance/json.d.ts +19 -0
  243. package/dist/ui-instance/lineage.d.ts +22 -0
  244. package/dist/ui-instance/runtime.d.ts +18 -0
  245. package/dist/ui-instance/store.d.ts +184 -0
  246. package/dist/ui-instance/types.d.ts +319 -0
  247. package/dist/ui-plugin/csp.d.ts +25 -0
  248. package/dist/ui-plugin/index.d.ts +4 -0
  249. package/dist/ui-plugin/limits.d.ts +27 -0
  250. package/dist/ui-plugin/manifest.d.ts +3 -0
  251. package/dist/ui-plugin/types.d.ts +190 -0
  252. package/dist/ui-plugin/validator.d.ts +15 -0
  253. package/dist/utils/crewx-executable.d.ts +76 -0
  254. package/dist/utils/crewx-home.d.ts +1 -0
  255. package/dist/utils/env-defaults.d.ts +2 -0
  256. package/dist/utils/id.d.ts +1 -1
  257. package/dist/utils/local-identity.d.ts +2 -0
  258. package/dist/utils/runner-env.d.ts +3 -0
  259. package/dist/utils/timestamp.d.ts +1 -0
  260. package/dist/utils/workspace.d.ts +1 -0
  261. package/dist/wi/create.d.ts +48 -0
  262. package/dist/wi/select.d.ts +20 -0
  263. package/package.json +49 -2
  264. package/templates/agents/default.yaml +284 -128
  265. package/templates/documents/crewx-manual.md +138 -138
  266. package/templates/documents/crewx-quick-guide.md +8 -7
  267. package/templates/workflows/wi-default-flow.yaml +65 -0
  268. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -0,0 +1,262 @@
1
+ CREATE TABLE IF NOT EXISTS `storage_metadata` (
2
+ `source_kind` text NOT NULL,
3
+ `source_id` text NOT NULL,
4
+ `utc_ts` text,
5
+ `bytes` integer NOT NULL,
6
+ PRIMARY KEY (`source_kind`, `source_id`)
7
+ ) WITHOUT ROWID;
8
+ --> statement-breakpoint
9
+ CREATE INDEX IF NOT EXISTS `idx_storage_metadata_kind_ts_bytes`
10
+ ON `storage_metadata` (`source_kind`, `utc_ts`, `bytes`);
11
+ --> statement-breakpoint
12
+ CREATE TABLE IF NOT EXISTS `storage_metadata_state` (
13
+ `unit` text PRIMARY KEY NOT NULL,
14
+ `cursor_rowid` integer DEFAULT 0 NOT NULL,
15
+ `end_rowid` integer,
16
+ `complete` integer DEFAULT 0 NOT NULL,
17
+ `updated_at` text NOT NULL
18
+ ) WITHOUT ROWID;
19
+ --> statement-breakpoint
20
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tle_ins`
21
+ AFTER INSERT ON `task_log_events`
22
+ BEGIN
23
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
24
+ VALUES (
25
+ 'taskLogs',
26
+ CAST(NEW.`id` AS TEXT),
27
+ datetime(NEW.`timestamp`),
28
+ COALESCE(length(CAST(NEW.`message` AS BLOB)), 0)
29
+ + COALESCE(length(CAST(NEW.`task_id` AS BLOB)), 0)
30
+ + COALESCE(length(CAST(NEW.`timestamp` AS BLOB)), 0)
31
+ + COALESCE(length(CAST(NEW.`level` AS BLOB)), 0)
32
+ )
33
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
34
+ `utc_ts` = excluded.`utc_ts`,
35
+ `bytes` = excluded.`bytes`;
36
+ END;
37
+ --> statement-breakpoint
38
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tle_upd`
39
+ AFTER UPDATE OF `id`, `timestamp`, `task_id`, `level`, `message` ON `task_log_events`
40
+ BEGIN
41
+ DELETE FROM `storage_metadata`
42
+ WHERE `source_kind` = 'taskLogs'
43
+ AND `source_id` = CAST(OLD.`id` AS TEXT)
44
+ AND OLD.`id` IS NOT NEW.`id`;
45
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
46
+ VALUES (
47
+ 'taskLogs',
48
+ CAST(NEW.`id` AS TEXT),
49
+ datetime(NEW.`timestamp`),
50
+ COALESCE(length(CAST(NEW.`message` AS BLOB)), 0)
51
+ + COALESCE(length(CAST(NEW.`task_id` AS BLOB)), 0)
52
+ + COALESCE(length(CAST(NEW.`timestamp` AS BLOB)), 0)
53
+ + COALESCE(length(CAST(NEW.`level` AS BLOB)), 0)
54
+ )
55
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
56
+ `utc_ts` = excluded.`utc_ts`,
57
+ `bytes` = excluded.`bytes`;
58
+ END;
59
+ --> statement-breakpoint
60
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tle_del`
61
+ AFTER DELETE ON `task_log_events`
62
+ BEGIN
63
+ DELETE FROM `storage_metadata`
64
+ WHERE `source_kind` = 'taskLogs'
65
+ AND `source_id` = CAST(OLD.`id` AS TEXT);
66
+ END;
67
+ --> statement-breakpoint
68
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_request_logs_ins`
69
+ AFTER INSERT ON `request_logs`
70
+ BEGIN
71
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
72
+ VALUES (
73
+ 'requestLogs',
74
+ CAST(NEW.`id` AS TEXT),
75
+ datetime(NEW.`timestamp`),
76
+ COALESCE(length(CAST(NEW.`path` AS BLOB)), 0)
77
+ + COALESCE(length(CAST(NEW.`method` AS BLOB)), 0)
78
+ + COALESCE(length(CAST(NEW.`request_body` AS BLOB)), 0)
79
+ + COALESCE(length(CAST(NEW.`response_body` AS BLOB)), 0)
80
+ + COALESCE(length(CAST(NEW.`request_headers` AS BLOB)), 0)
81
+ + COALESCE(length(CAST(NEW.`response_headers` AS BLOB)), 0)
82
+ + COALESCE(length(CAST(NEW.`query` AS BLOB)), 0)
83
+ + COALESCE(length(CAST(NEW.`metadata` AS BLOB)), 0)
84
+ )
85
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
86
+ `utc_ts` = excluded.`utc_ts`,
87
+ `bytes` = excluded.`bytes`;
88
+ END;
89
+ --> statement-breakpoint
90
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_request_logs_upd`
91
+ AFTER UPDATE OF `id`, `timestamp`, `path`, `method`, `request_body`, `response_body`, `request_headers`, `response_headers`, `query`, `metadata` ON `request_logs`
92
+ BEGIN
93
+ DELETE FROM `storage_metadata`
94
+ WHERE `source_kind` = 'requestLogs'
95
+ AND `source_id` = CAST(OLD.`id` AS TEXT)
96
+ AND OLD.`id` IS NOT NEW.`id`;
97
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
98
+ VALUES (
99
+ 'requestLogs',
100
+ CAST(NEW.`id` AS TEXT),
101
+ datetime(NEW.`timestamp`),
102
+ COALESCE(length(CAST(NEW.`path` AS BLOB)), 0)
103
+ + COALESCE(length(CAST(NEW.`method` AS BLOB)), 0)
104
+ + COALESCE(length(CAST(NEW.`request_body` AS BLOB)), 0)
105
+ + COALESCE(length(CAST(NEW.`response_body` AS BLOB)), 0)
106
+ + COALESCE(length(CAST(NEW.`request_headers` AS BLOB)), 0)
107
+ + COALESCE(length(CAST(NEW.`response_headers` AS BLOB)), 0)
108
+ + COALESCE(length(CAST(NEW.`query` AS BLOB)), 0)
109
+ + COALESCE(length(CAST(NEW.`metadata` AS BLOB)), 0)
110
+ )
111
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
112
+ `utc_ts` = excluded.`utc_ts`,
113
+ `bytes` = excluded.`bytes`;
114
+ END;
115
+ --> statement-breakpoint
116
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_request_logs_del`
117
+ AFTER DELETE ON `request_logs`
118
+ BEGIN
119
+ DELETE FROM `storage_metadata`
120
+ WHERE `source_kind` = 'requestLogs'
121
+ AND `source_id` = CAST(OLD.`id` AS TEXT);
122
+ END;
123
+ --> statement-breakpoint
124
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tasks_ins`
125
+ AFTER INSERT ON `tasks`
126
+ BEGIN
127
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
128
+ VALUES (
129
+ 'prompts',
130
+ CAST(NEW.`id` AS TEXT),
131
+ datetime(NEW.`started_at`),
132
+ COALESCE(length(CAST(NEW.`prompt` AS BLOB)), 0)
133
+ + COALESCE(length(CAST(NEW.`rendered_prompt` AS BLOB)), 0)
134
+ + COALESCE(length(CAST(NEW.`result` AS BLOB)), 0)
135
+ )
136
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
137
+ `utc_ts` = excluded.`utc_ts`,
138
+ `bytes` = excluded.`bytes`;
139
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
140
+ VALUES (
141
+ 'tasksLedger',
142
+ CAST(NEW.`id` AS TEXT),
143
+ datetime(NEW.`started_at`),
144
+ COALESCE(length(CAST(NEW.`id` AS BLOB)), 0)
145
+ + COALESCE(length(CAST(NEW.`agent_id` AS BLOB)), 0)
146
+ + COALESCE(length(CAST(NEW.`status` AS BLOB)), 0)
147
+ + COALESCE(length(CAST(NEW.`started_at` AS BLOB)), 0)
148
+ + COALESCE(length(CAST(NEW.`input_tokens` AS TEXT)), 0)
149
+ + COALESCE(length(CAST(NEW.`output_tokens` AS TEXT)), 0)
150
+ + COALESCE(length(CAST(NEW.`cost_usd` AS TEXT)), 0)
151
+ )
152
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
153
+ `utc_ts` = excluded.`utc_ts`,
154
+ `bytes` = excluded.`bytes`;
155
+ END;
156
+ --> statement-breakpoint
157
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tasks_upd`
158
+ AFTER UPDATE OF `id`, `prompt`, `rendered_prompt`, `result`, `started_at` ON `tasks`
159
+ BEGIN
160
+ DELETE FROM `storage_metadata`
161
+ WHERE `source_kind` = 'prompts'
162
+ AND `source_id` = CAST(OLD.`id` AS TEXT)
163
+ AND OLD.`id` IS NOT NEW.`id`;
164
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
165
+ VALUES (
166
+ 'prompts',
167
+ CAST(NEW.`id` AS TEXT),
168
+ datetime(NEW.`started_at`),
169
+ COALESCE(length(CAST(NEW.`prompt` AS BLOB)), 0)
170
+ + COALESCE(length(CAST(NEW.`rendered_prompt` AS BLOB)), 0)
171
+ + COALESCE(length(CAST(NEW.`result` AS BLOB)), 0)
172
+ )
173
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
174
+ `utc_ts` = excluded.`utc_ts`,
175
+ `bytes` = excluded.`bytes`;
176
+ END;
177
+ --> statement-breakpoint
178
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tasks_upd_ledger`
179
+ AFTER UPDATE OF `id`, `agent_id`, `status`, `started_at`, `input_tokens`, `output_tokens`, `cost_usd` ON `tasks`
180
+ BEGIN
181
+ DELETE FROM `storage_metadata`
182
+ WHERE `source_kind` = 'tasksLedger'
183
+ AND `source_id` = CAST(OLD.`id` AS TEXT)
184
+ AND OLD.`id` IS NOT NEW.`id`;
185
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
186
+ VALUES (
187
+ 'tasksLedger',
188
+ CAST(NEW.`id` AS TEXT),
189
+ datetime(NEW.`started_at`),
190
+ COALESCE(length(CAST(NEW.`id` AS BLOB)), 0)
191
+ + COALESCE(length(CAST(NEW.`agent_id` AS BLOB)), 0)
192
+ + COALESCE(length(CAST(NEW.`status` AS BLOB)), 0)
193
+ + COALESCE(length(CAST(NEW.`started_at` AS BLOB)), 0)
194
+ + COALESCE(length(CAST(NEW.`input_tokens` AS TEXT)), 0)
195
+ + COALESCE(length(CAST(NEW.`output_tokens` AS TEXT)), 0)
196
+ + COALESCE(length(CAST(NEW.`cost_usd` AS TEXT)), 0)
197
+ )
198
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
199
+ `utc_ts` = excluded.`utc_ts`,
200
+ `bytes` = excluded.`bytes`;
201
+ END;
202
+ --> statement-breakpoint
203
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_tasks_del`
204
+ AFTER DELETE ON `tasks`
205
+ BEGIN
206
+ DELETE FROM `storage_metadata`
207
+ WHERE `source_kind` = 'prompts'
208
+ AND `source_id` = CAST(OLD.`id` AS TEXT);
209
+ DELETE FROM `storage_metadata`
210
+ WHERE `source_kind` = 'tasksLedger'
211
+ AND `source_id` = CAST(OLD.`id` AS TEXT);
212
+ END;
213
+ --> statement-breakpoint
214
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_threads_ins`
215
+ AFTER INSERT ON `threads`
216
+ BEGIN
217
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
218
+ VALUES (
219
+ 'threadsLedger',
220
+ CAST(NEW.`id` AS TEXT),
221
+ datetime(COALESCE(NEW.`updated_at`, NEW.`created_at`)),
222
+ COALESCE(length(CAST(NEW.`id` AS BLOB)), 0)
223
+ + COALESCE(length(CAST(NEW.`workspace_id` AS BLOB)), 0)
224
+ + COALESCE(length(CAST(NEW.`platform` AS BLOB)), 0)
225
+ + COALESCE(length(CAST(NEW.`created_at` AS BLOB)), 0)
226
+ + COALESCE(length(CAST(NEW.`updated_at` AS BLOB)), 0)
227
+ )
228
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
229
+ `utc_ts` = excluded.`utc_ts`,
230
+ `bytes` = excluded.`bytes`;
231
+ END;
232
+ --> statement-breakpoint
233
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_threads_upd`
234
+ AFTER UPDATE OF `id`, `workspace_id`, `platform`, `created_at`, `updated_at` ON `threads`
235
+ BEGIN
236
+ DELETE FROM `storage_metadata`
237
+ WHERE `source_kind` = 'threadsLedger'
238
+ AND `source_id` = CAST(OLD.`id` AS TEXT)
239
+ AND OLD.`id` IS NOT NEW.`id`;
240
+ INSERT INTO `storage_metadata` (`source_kind`, `source_id`, `utc_ts`, `bytes`)
241
+ VALUES (
242
+ 'threadsLedger',
243
+ CAST(NEW.`id` AS TEXT),
244
+ datetime(COALESCE(NEW.`updated_at`, NEW.`created_at`)),
245
+ COALESCE(length(CAST(NEW.`id` AS BLOB)), 0)
246
+ + COALESCE(length(CAST(NEW.`workspace_id` AS BLOB)), 0)
247
+ + COALESCE(length(CAST(NEW.`platform` AS BLOB)), 0)
248
+ + COALESCE(length(CAST(NEW.`created_at` AS BLOB)), 0)
249
+ + COALESCE(length(CAST(NEW.`updated_at` AS BLOB)), 0)
250
+ )
251
+ ON CONFLICT (`source_kind`, `source_id`) DO UPDATE SET
252
+ `utc_ts` = excluded.`utc_ts`,
253
+ `bytes` = excluded.`bytes`;
254
+ END;
255
+ --> statement-breakpoint
256
+ CREATE TRIGGER IF NOT EXISTS `trg_storage_meta_threads_del`
257
+ AFTER DELETE ON `threads`
258
+ BEGIN
259
+ DELETE FROM `storage_metadata`
260
+ WHERE `source_kind` = 'threadsLedger'
261
+ AND `source_id` = CAST(OLD.`id` AS TEXT);
262
+ END;
@@ -0,0 +1,8 @@
1
+ ALTER TABLE `tasks` ADD `heartbeat_at` text;
2
+ --> statement-breakpoint
3
+ ALTER TABLE `tasks` ADD `stop_requested_at` text;
4
+ --> statement-breakpoint
5
+ ALTER TABLE `tasks` ADD `stop_requested_epoch` integer;
6
+ --> statement-breakpoint
7
+ CREATE INDEX IF NOT EXISTS `idx_tasks_status_heartbeat`
8
+ ON `tasks` (`status`, `heartbeat_at`);
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `ui_instances` ADD `app_id` text CONSTRAINT "ui_instances_app_id_ck" CHECK("ui_instances"."app_id" IS NULL OR length("ui_instances"."app_id") BETWEEN 1 AND 128);--> statement-breakpoint
2
+ CREATE UNIQUE INDEX IF NOT EXISTS `ui_instances_workspace_thread_app_uq` ON `ui_instances` (`workspace_id`,`thread_id`,`app_id`);
@@ -0,0 +1,47 @@
1
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
2
+ CREATE TABLE `__new_ui_action_receipts` (
3
+ `id` text PRIMARY KEY NOT NULL,
4
+ `instance_id` text NOT NULL,
5
+ `request_id` text NOT NULL,
6
+ `action_id` text NOT NULL,
7
+ `actor_json` text NOT NULL,
8
+ `source` text NOT NULL,
9
+ `expected_revision` integer NOT NULL,
10
+ `before_revision` integer NOT NULL,
11
+ `after_revision` integer,
12
+ `status` text NOT NULL,
13
+ `outcome` text,
14
+ `input_json` text NOT NULL,
15
+ `result_json` text,
16
+ `error_code` text,
17
+ `requested_at` integer NOT NULL,
18
+ `settled_at` integer,
19
+ CONSTRAINT "ui_action_receipts_id_ck" CHECK(length("__new_ui_action_receipts"."id") BETWEEN 5 AND 128),
20
+ CONSTRAINT "ui_action_receipts_instance_id_ck" CHECK(length("__new_ui_action_receipts"."instance_id") BETWEEN 1 AND 128),
21
+ CONSTRAINT "ui_action_receipts_request_id_ck" CHECK(length("__new_ui_action_receipts"."request_id") BETWEEN 1 AND 128),
22
+ CONSTRAINT "ui_action_receipts_action_id_ck" CHECK(length("__new_ui_action_receipts"."action_id") BETWEEN 1 AND 128),
23
+ CONSTRAINT "ui_action_receipts_actor_json_ck" CHECK(json_valid("__new_ui_action_receipts"."actor_json") AND json_type("__new_ui_action_receipts"."actor_json") = 'object'),
24
+ CONSTRAINT "ui_action_receipts_source_ck" CHECK("__new_ui_action_receipts"."source" IN ('ui_host', 'cli', 'system', 'mcp')),
25
+ CONSTRAINT "ui_action_receipts_expected_revision_ck" CHECK("__new_ui_action_receipts"."expected_revision" >= 0),
26
+ CONSTRAINT "ui_action_receipts_before_revision_ck" CHECK("__new_ui_action_receipts"."before_revision" >= 0),
27
+ CONSTRAINT "ui_action_receipts_after_revision_ck" CHECK("__new_ui_action_receipts"."after_revision" IS NULL OR "__new_ui_action_receipts"."after_revision" >= 0),
28
+ CONSTRAINT "ui_action_receipts_status_ck" CHECK("__new_ui_action_receipts"."status" IN ('requested', 'settled')),
29
+ CONSTRAINT "ui_action_receipts_outcome_ck" CHECK("__new_ui_action_receipts"."outcome" IS NULL OR "__new_ui_action_receipts"."outcome" IN ('succeeded', 'rejected', 'failed', 'conflicted', 'expired')),
30
+ CONSTRAINT "ui_action_receipts_input_json_ck" CHECK(json_valid("__new_ui_action_receipts"."input_json") AND json_type("__new_ui_action_receipts"."input_json") = 'object'),
31
+ CONSTRAINT "ui_action_receipts_result_json_ck" CHECK("__new_ui_action_receipts"."result_json" IS NULL OR (json_valid("__new_ui_action_receipts"."result_json") AND json_type("__new_ui_action_receipts"."result_json") = 'object')),
32
+ CONSTRAINT "ui_action_receipts_requested_at_ck" CHECK("__new_ui_action_receipts"."requested_at" >= 0),
33
+ CONSTRAINT "ui_action_receipts_settled_at_ck" CHECK("__new_ui_action_receipts"."settled_at" IS NULL OR "__new_ui_action_receipts"."settled_at" >= "__new_ui_action_receipts"."requested_at"),
34
+ CONSTRAINT "ui_action_receipts_status_transition_ck" CHECK((
35
+ ("__new_ui_action_receipts"."status" = 'requested' AND "__new_ui_action_receipts"."after_revision" IS NULL AND "__new_ui_action_receipts"."outcome" IS NULL AND "__new_ui_action_receipts"."settled_at" IS NULL)
36
+ OR
37
+ ("__new_ui_action_receipts"."status" = 'settled' AND "__new_ui_action_receipts"."after_revision" IS NOT NULL AND "__new_ui_action_receipts"."outcome" IS NOT NULL AND "__new_ui_action_receipts"."settled_at" IS NOT NULL)
38
+ ))
39
+ );
40
+ --> statement-breakpoint
41
+ INSERT INTO `__new_ui_action_receipts`("id", "instance_id", "request_id", "action_id", "actor_json", "source", "expected_revision", "before_revision", "after_revision", "status", "outcome", "input_json", "result_json", "error_code", "requested_at", "settled_at") SELECT "id", "instance_id", "request_id", "action_id", "actor_json", "source", "expected_revision", "before_revision", "after_revision", "status", "outcome", "input_json", "result_json", "error_code", "requested_at", "settled_at" FROM `ui_action_receipts`;--> statement-breakpoint
42
+ DROP TABLE `ui_action_receipts`;--> statement-breakpoint
43
+ ALTER TABLE `__new_ui_action_receipts` RENAME TO `ui_action_receipts`;--> statement-breakpoint
44
+ PRAGMA foreign_keys=ON;--> statement-breakpoint
45
+ CREATE UNIQUE INDEX `ui_action_receipts_instance_request_uq` ON `ui_action_receipts` (`instance_id`,`request_id`);--> statement-breakpoint
46
+ CREATE INDEX `ui_action_receipts_instance_id_idx` ON `ui_action_receipts` (`instance_id`);--> statement-breakpoint
47
+ CREATE INDEX `ui_action_receipts_requested_at_idx` ON `ui_action_receipts` (`requested_at`);
@@ -0,0 +1,5 @@
1
+ UPDATE `tasks`
2
+ SET `stop_requested_at` = NULL,
3
+ `stop_requested_epoch` = NULL
4
+ WHERE `status` IN ('success', 'failed')
5
+ AND (`stop_requested_at` IS NOT NULL OR `stop_requested_epoch` IS NOT NULL);
@@ -0,0 +1,2 @@
1
+ DROP INDEX IF EXISTS `ui_instances_workspace_thread_app_uq`;--> statement-breakpoint
2
+ CREATE UNIQUE INDEX IF NOT EXISTS `ui_instances_workspace_thread_app_uq` ON `ui_instances` (`workspace_id`,`thread_id`,`app_id`) WHERE "status" = 'active';
@@ -0,0 +1 @@
1
+ ALTER TABLE `tasks` ADD `cwd` text;
@@ -0,0 +1,6 @@
1
+ ALTER TABLE `tasks` ADD `actor_kind` text;--> statement-breakpoint
2
+ ALTER TABLE `tasks` ADD `actor_id` text;--> statement-breakpoint
3
+ ALTER TABLE `threads` ADD `created_by_kind` text;--> statement-breakpoint
4
+ ALTER TABLE `threads` ADD `created_by_id` text;--> statement-breakpoint
5
+ ALTER TABLE `threads` ADD `created_by_task_id` text;--> statement-breakpoint
6
+ CREATE INDEX IF NOT EXISTS `idx_threads_workspace_created_by_kind_updated_at` ON `threads` (`workspace_id`,`created_by_kind`,`updated_at`);
@@ -0,0 +1 @@
1
+ ALTER TABLE `ui_instances` ADD `opened_by_json` text;
@@ -0,0 +1,38 @@
1
+ CREATE TABLE IF NOT EXISTS `thread_creator_unverified` (
2
+ `thread_id` text NOT NULL,
3
+ `created_by_task_id` text NOT NULL,
4
+ PRIMARY KEY(`thread_id`, `created_by_task_id`)
5
+ );
6
+ --> statement-breakpoint
7
+ INSERT OR IGNORE INTO `thread_creator_unverified` (`thread_id`, `created_by_task_id`)
8
+ SELECT `id`, `created_by_task_id`
9
+ FROM `threads`
10
+ WHERE `created_by_task_id` IS NOT NULL
11
+ AND NOT EXISTS (
12
+ SELECT 1
13
+ FROM `sqlite_master`
14
+ WHERE `type` = 'trigger'
15
+ AND `name` = 'trg_threads_creator_late_fill_guard'
16
+ );
17
+ --> statement-breakpoint
18
+ CREATE TRIGGER IF NOT EXISTS `trg_threads_creator_late_fill_guard`
19
+ AFTER UPDATE OF `created_by_task_id` ON `threads`
20
+ WHEN OLD.`created_by_task_id` IS NULL
21
+ AND NEW.`created_by_task_id` IS NOT NULL
22
+ AND (
23
+ OLD.`message_count` <> 0
24
+ OR EXISTS (
25
+ SELECT 1
26
+ FROM `tasks`
27
+ WHERE `thread_id` = OLD.`id`
28
+ AND `id` <> NEW.`created_by_task_id`
29
+ )
30
+ )
31
+ BEGIN
32
+ UPDATE `threads`
33
+ SET `created_by_task_id` = NULL
34
+ WHERE `id` = NEW.`id`;
35
+ END;
36
+ --> statement-breakpoint
37
+ CREATE INDEX IF NOT EXISTS `idx_tasks_thread_creator`
38
+ ON `tasks` (`id`, `thread_id`, `actor_kind`, `actor_id`);
@@ -0,0 +1,36 @@
1
+ CREATE TABLE IF NOT EXISTS `ui_instance_repins` (
2
+ `instance_id` text NOT NULL,
3
+ `from_version` integer NOT NULL,
4
+ `from_hash` text NOT NULL,
5
+ `to_version` integer NOT NULL,
6
+ `to_hash` text NOT NULL,
7
+ `from_revision` integer NOT NULL,
8
+ `to_revision` integer,
9
+ `status` text NOT NULL,
10
+ `code` text,
11
+ `attempts` integer DEFAULT 1 NOT NULL,
12
+ `first_at` integer NOT NULL,
13
+ `last_at` integer NOT NULL,
14
+ PRIMARY KEY(`instance_id`, `to_hash`),
15
+ CONSTRAINT "ui_instance_repins_instance_id_ck" CHECK(length("ui_instance_repins"."instance_id") BETWEEN 5 AND 128 AND "ui_instance_repins"."instance_id" GLOB 'uic_*'),
16
+ CONSTRAINT "ui_instance_repins_from_version_ck" CHECK("ui_instance_repins"."from_version" >= 1),
17
+ CONSTRAINT "ui_instance_repins_to_version_ck" CHECK("ui_instance_repins"."to_version" >= 1),
18
+ CONSTRAINT "ui_instance_repins_from_hash_ck" CHECK(length("ui_instance_repins"."from_hash") = 64 AND "ui_instance_repins"."from_hash" NOT GLOB '*[^0-9a-f]*'),
19
+ CONSTRAINT "ui_instance_repins_to_hash_ck" CHECK(length("ui_instance_repins"."to_hash") = 64 AND "ui_instance_repins"."to_hash" NOT GLOB '*[^0-9a-f]*'),
20
+ CONSTRAINT "ui_instance_repins_from_revision_ck" CHECK("ui_instance_repins"."from_revision" >= 0),
21
+ CONSTRAINT "ui_instance_repins_to_revision_ck" CHECK("ui_instance_repins"."to_revision" IS NULL OR "ui_instance_repins"."to_revision" >= 0),
22
+ CONSTRAINT "ui_instance_repins_status_ck" CHECK("ui_instance_repins"."status" IN ('applied', 'deferred', 'failed')),
23
+ CONSTRAINT "ui_instance_repins_attempts_ck" CHECK("ui_instance_repins"."attempts" >= 1),
24
+ CONSTRAINT "ui_instance_repins_dates_ck" CHECK("ui_instance_repins"."first_at" >= 0 AND "ui_instance_repins"."last_at" >= "ui_instance_repins"."first_at"),
25
+ CONSTRAINT "ui_instance_repins_result_ck" CHECK((
26
+ ("ui_instance_repins"."status" = 'applied' AND "ui_instance_repins"."code" IS NULL
27
+ AND "ui_instance_repins"."to_revision" = "ui_instance_repins"."from_revision" + 1)
28
+ OR
29
+ ("ui_instance_repins"."status" IN ('deferred', 'failed') AND "ui_instance_repins"."code" IS NOT NULL
30
+ AND "ui_instance_repins"."to_revision" IS NULL)
31
+ ))
32
+ );
33
+ --> statement-breakpoint
34
+ ALTER TABLE `ui_action_receipts` ADD `definition_id` text;--> statement-breakpoint
35
+ ALTER TABLE `ui_action_receipts` ADD `definition_version` integer;--> statement-breakpoint
36
+ ALTER TABLE `ui_action_receipts` ADD `definition_hash` text;