@crewx/sdk 0.9.0-rc.15 → 0.9.0-rc.151

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 (293) 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 +59 -6
  12. package/dist/agent/agent-list-view.d.ts +19 -0
  13. package/dist/app/app.d.ts +148 -0
  14. package/dist/app/backend-env.d.ts +3 -0
  15. package/dist/app/content-media-types.d.ts +2 -0
  16. package/dist/app/context.d.ts +2 -0
  17. package/dist/app/entry.d.ts +7 -0
  18. package/dist/app/frame.d.ts +56 -0
  19. package/dist/app/index.d.ts +10 -0
  20. package/dist/app/index.js +10 -0
  21. package/dist/app/protocol.d.ts +9 -0
  22. package/dist/app/runtime.d.ts +21 -0
  23. package/dist/app/tool-mode.d.ts +3 -0
  24. package/dist/boxing/box.types.d.ts +4 -0
  25. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  26. package/dist/config/default-agent-models.d.ts +11 -0
  27. package/dist/config/global-settings.d.ts +33 -0
  28. package/dist/config/migrate-grok-mode.d.ts +6 -0
  29. package/dist/config/model-compat.d.ts +31 -0
  30. package/dist/config/models.generated.d.ts +37 -0
  31. package/dist/config/models.remote.d.ts +1 -0
  32. package/dist/config/overdrive.d.ts +7 -0
  33. package/dist/config/pricing.d.ts +6 -3
  34. package/dist/config/pricing.generated.d.ts +4 -0
  35. package/dist/config/pricing.types.d.ts +4 -0
  36. package/dist/config/timeout.config.d.ts +4 -0
  37. package/dist/config/wi-boards.d.ts +19 -0
  38. package/dist/context-budget/continuity.d.ts +61 -0
  39. package/dist/context-budget/index.d.ts +141 -0
  40. package/dist/conversation/index.d.ts +1 -1
  41. package/dist/conversation/sqlite-provider.d.ts +6 -3
  42. package/dist/conversation/to-template-messages.d.ts +9 -0
  43. package/dist/conversation/types.d.ts +48 -1
  44. package/dist/desktop/command-runner.d.ts +4 -0
  45. package/dist/desktop/default-adapters.d.ts +4 -0
  46. package/dist/desktop/global-install.d.ts +19 -0
  47. package/dist/desktop/index.d.ts +3 -0
  48. package/dist/desktop/index.js +3 -0
  49. package/dist/desktop/install.d.ts +5 -0
  50. package/dist/desktop/lnk.d.ts +22 -0
  51. package/dist/desktop/manifest.d.ts +21 -0
  52. package/dist/desktop/types.d.ts +67 -0
  53. package/dist/desktop/version.d.ts +1 -0
  54. package/dist/desktop/windows-paths.d.ts +21 -0
  55. package/dist/desktop/wrapper.d.ts +18 -0
  56. package/dist/esm/account/index.js +2 -0
  57. package/dist/esm/app/index.js +10 -0
  58. package/dist/esm/desktop/index.js +3 -0
  59. package/dist/esm/index.js +1137 -226
  60. package/dist/esm/node/index.js +2 -0
  61. package/dist/esm/plugins/index.js +498 -216
  62. package/dist/esm/process/index.js +1 -0
  63. package/dist/esm/publish/index.js +2 -0
  64. package/dist/esm/repository/index.js +606 -209
  65. package/dist/esm/skills/index.js +2 -0
  66. package/dist/esm/testing/index.js +1 -1
  67. package/dist/events/types.d.ts +9 -0
  68. package/dist/facade/Crewx.d.ts +60 -5
  69. package/dist/facade/task-ticket.d.ts +14 -0
  70. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  71. package/dist/highlight/thread-highlighter.d.ts +326 -0
  72. package/dist/index.browser.d.ts +17 -1
  73. package/dist/index.browser.js +6 -2
  74. package/dist/index.d.ts +127 -17
  75. package/dist/index.js +1137 -226
  76. package/dist/internal/console-decoder.d.ts +38 -0
  77. package/dist/internal/windows-spawn.d.ts +10 -0
  78. package/dist/layout/types.d.ts +18 -1
  79. package/dist/lifecycle/process-lease.d.ts +80 -0
  80. package/dist/lifecycle/process-owner.d.ts +20 -0
  81. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  82. package/dist/lifecycle/task-stop.d.ts +82 -0
  83. package/dist/lifecycle/update-admission.d.ts +45 -0
  84. package/dist/local-server/base-url.d.ts +18 -0
  85. package/dist/local-server/index.d.ts +8 -0
  86. package/dist/local-server/opencode.d.ts +8 -0
  87. package/dist/local-server/probe.d.ts +3 -0
  88. package/dist/local-server/runtime.d.ts +26 -0
  89. package/dist/local-server/types.d.ts +43 -0
  90. package/dist/mcp-app/agent-access.d.ts +26 -0
  91. package/dist/mcp-app/apps-context.d.ts +20 -0
  92. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  93. package/dist/mcp-app/candidate-registration.d.ts +4 -0
  94. package/dist/mcp-app/catalog.d.ts +7 -0
  95. package/dist/mcp-app/content-channel.d.ts +86 -0
  96. package/dist/mcp-app/content-declarations.d.ts +31 -0
  97. package/dist/mcp-app/dev-checks.d.ts +29 -0
  98. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  99. package/dist/mcp-app/discovery.d.ts +161 -0
  100. package/dist/mcp-app/errors.d.ts +7 -0
  101. package/dist/mcp-app/index.d.ts +33 -0
  102. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  103. package/dist/mcp-app/model-context.d.ts +29 -0
  104. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  105. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  106. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  107. package/dist/mcp-app/projection.d.ts +14 -0
  108. package/dist/mcp-app/registry.d.ts +28 -0
  109. package/dist/mcp-app/skill-backend.d.ts +132 -0
  110. package/dist/mcp-app/state-set.d.ts +9 -0
  111. package/dist/mcp-app/types.d.ts +472 -0
  112. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  113. package/dist/mcp-app/workspace-app-scan-cache.d.ts +24 -0
  114. package/dist/mcp-app/workspace-snapshot.d.ts +71 -0
  115. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  116. package/dist/migrations/0012_blue_turbo.sql +23 -0
  117. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  118. package/dist/migrations/0014_organic_mongu.sql +73 -0
  119. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  120. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  121. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  122. package/dist/migrations/0018_bored_jackal.sql +33 -0
  123. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  124. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  125. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  126. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  127. package/dist/migrations/0023_red_payback.sql +1 -0
  128. package/dist/migrations/0024_storage_metadata.sql +262 -0
  129. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  130. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  131. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  132. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  133. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  134. package/dist/migrations/0029_nice_rhino.sql +1 -0
  135. package/dist/migrations/0031_petite_arclight.sql +6 -0
  136. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  137. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  138. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  139. package/dist/migrations/0035_request_log_daily.sql +11 -0
  140. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  141. package/dist/migrations/0037_ui_instance_agent_open_request.sql +1 -0
  142. package/dist/migrations/0038_task_rating.sql +3 -0
  143. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  144. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  145. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  146. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  147. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  148. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  149. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  150. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  151. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  152. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  153. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  154. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  155. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  156. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  157. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  158. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  159. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  160. package/dist/migrations/meta/0037_snapshot.json +3598 -0
  161. package/dist/migrations/meta/0038_snapshot.json +3626 -0
  162. package/dist/migrations/meta/_journal.json +196 -0
  163. package/dist/node/index.d.ts +1 -0
  164. package/dist/node/index.js +2 -0
  165. package/dist/paths.d.ts +1 -0
  166. package/dist/plugin/types.d.ts +1 -0
  167. package/dist/plugins/index.d.ts +1 -1
  168. package/dist/plugins/index.js +498 -216
  169. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  170. package/dist/process/index.d.ts +2 -0
  171. package/dist/process/index.js +1 -0
  172. package/dist/process/process-control.d.ts +41 -0
  173. package/dist/prompt/tag-names.d.ts +22 -0
  174. package/dist/provider/acp/connection.d.ts +6 -0
  175. package/dist/provider/acp/meta.d.ts +11 -0
  176. package/dist/provider/bridge.d.ts +7 -1
  177. package/dist/provider/classify-task-error.d.ts +2 -0
  178. package/dist/provider/cli/adapter.types.d.ts +14 -2
  179. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  180. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  181. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  182. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  183. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  184. package/dist/provider/cli/adapters/index.d.ts +5 -0
  185. package/dist/provider/cli/index.d.ts +3 -2
  186. package/dist/provider/cli/meta.d.ts +5 -0
  187. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  188. package/dist/provider/errors.d.ts +5 -1
  189. package/dist/provider/idle-watchdog.d.ts +19 -0
  190. package/dist/provider/models.d.ts +17 -12
  191. package/dist/provider/order.d.ts +1 -1
  192. package/dist/provider/parse-usage.d.ts +6 -0
  193. package/dist/provider/provider-selection.d.ts +8 -0
  194. package/dist/provider/redact-technical-message.d.ts +1 -0
  195. package/dist/provider/task-error.types.d.ts +17 -0
  196. package/dist/publish/constants.d.ts +6 -0
  197. package/dist/publish/errors.d.ts +7 -0
  198. package/dist/publish/index.d.ts +50 -0
  199. package/dist/publish/index.js +2 -0
  200. package/dist/publish/manifest.d.ts +47 -0
  201. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  202. package/dist/publish/pack.d.ts +6 -0
  203. package/dist/publish/scan.d.ts +10 -0
  204. package/dist/publish/secrets.d.ts +6 -0
  205. package/dist/publish/upload.d.ts +19 -0
  206. package/dist/remote/execution-profile.d.ts +9 -0
  207. package/dist/remote/index.d.ts +1 -0
  208. package/dist/remote/types.d.ts +28 -0
  209. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  210. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  211. package/dist/repository/common-code.repository.d.ts +45 -0
  212. package/dist/repository/db.d.ts +12 -1
  213. package/dist/repository/index.d.ts +43 -5
  214. package/dist/repository/index.js +606 -209
  215. package/dist/repository/logs-db.d.ts +12 -0
  216. package/dist/repository/notification.repository.d.ts +58 -0
  217. package/dist/repository/project.repository.d.ts +90 -0
  218. package/dist/repository/request-log-mover.d.ts +70 -0
  219. package/dist/repository/request-log.repository.d.ts +7 -3
  220. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  221. package/dist/repository/task-log-migration.d.ts +74 -0
  222. package/dist/repository/task-log.repository.d.ts +44 -0
  223. package/dist/repository/task-status.d.ts +21 -0
  224. package/dist/repository/task.repository.d.ts +275 -7
  225. package/dist/repository/thread-history.repository.d.ts +193 -0
  226. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  227. package/dist/repository/thread-title.types.d.ts +29 -0
  228. package/dist/repository/thread.repository.d.ts +115 -7
  229. package/dist/repository/usage-backfill.d.ts +62 -0
  230. package/dist/repository/usage-from-logs.d.ts +21 -0
  231. package/dist/repository/workspace.repository.d.ts +3 -0
  232. package/dist/schema/agent-suggestions.d.ts +199 -0
  233. package/dist/schema/common-codes.d.ts +216 -0
  234. package/dist/schema/index.d.ts +13 -0
  235. package/dist/schema/notifications.d.ts +303 -0
  236. package/dist/schema/projects.d.ts +610 -0
  237. package/dist/schema/request-log-daily.d.ts +151 -0
  238. package/dist/schema/storage-metadata.d.ts +181 -0
  239. package/dist/schema/task-log-events.d.ts +119 -0
  240. package/dist/schema/tasks.d.ts +203 -0
  241. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  242. package/dist/schema/thread-history.d.ts +734 -0
  243. package/dist/schema/threads.d.ts +59 -0
  244. package/dist/schema/ui-action-receipts.d.ts +358 -0
  245. package/dist/schema/ui-definition-archive.d.ts +63 -0
  246. package/dist/schema/ui-instance-repins.d.ts +222 -0
  247. package/dist/schema/ui-instances.d.ts +324 -0
  248. package/dist/schema/workspaces.d.ts +17 -0
  249. package/dist/skills/index.d.ts +15 -0
  250. package/dist/skills/index.js +2 -0
  251. package/dist/skills/types.d.ts +18 -0
  252. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  253. package/dist/task-log/delegation-trailer.d.ts +34 -0
  254. package/dist/template/engine.d.ts +2 -2
  255. package/dist/template/helpers/exec.browser.d.ts +4 -3
  256. package/dist/template/helpers/exec.d.ts +4 -3
  257. package/dist/template/types.d.ts +20 -0
  258. package/dist/testing/index.js +1 -1
  259. package/dist/types/index.d.ts +1574 -3
  260. package/dist/types/task-log.types.d.ts +3 -0
  261. package/dist/ui-card/index.d.ts +2 -0
  262. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  263. package/dist/ui-instance/definition.d.ts +6 -0
  264. package/dist/ui-instance/errors.d.ts +18 -0
  265. package/dist/ui-instance/index.d.ts +11 -0
  266. package/dist/ui-instance/json.d.ts +19 -0
  267. package/dist/ui-instance/lineage.d.ts +24 -0
  268. package/dist/ui-instance/runtime.d.ts +18 -0
  269. package/dist/ui-instance/store.d.ts +210 -0
  270. package/dist/ui-instance/types.d.ts +327 -0
  271. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  272. package/dist/ui-plugin/csp.d.ts +28 -0
  273. package/dist/ui-plugin/index.d.ts +6 -0
  274. package/dist/ui-plugin/limits.d.ts +27 -0
  275. package/dist/ui-plugin/manifest.d.ts +3 -0
  276. package/dist/ui-plugin/types.d.ts +203 -0
  277. package/dist/ui-plugin/validator.d.ts +18 -0
  278. package/dist/utils/crewx-executable.d.ts +76 -0
  279. package/dist/utils/crewx-home.d.ts +1 -0
  280. package/dist/utils/env-defaults.d.ts +3 -0
  281. package/dist/utils/id.d.ts +1 -1
  282. package/dist/utils/local-identity.d.ts +2 -0
  283. package/dist/utils/runner-env.d.ts +3 -0
  284. package/dist/utils/timestamp.d.ts +1 -0
  285. package/dist/utils/workspace.d.ts +1 -0
  286. package/dist/wi/create.d.ts +48 -0
  287. package/dist/wi/select.d.ts +20 -0
  288. package/package.json +57 -3
  289. package/templates/agents/default.yaml +296 -128
  290. package/templates/documents/crewx-manual.md +138 -138
  291. package/templates/documents/crewx-quick-guide.md +8 -7
  292. package/templates/workflows/wi-default-flow.yaml +65 -0
  293. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -1,8 +1,81 @@
1
1
  import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
+ import { RepositoryError } from './errors.js';
2
3
  import { threads } from '../schema/index.js';
3
- import type { TaskRow } from './task.repository.js';
4
+ import { type TaskStatus } from './task-status.js';
5
+ import type { ThreadOriginRow } from './thread-origin-verdict.js';
6
+ import type { TaskRow, TaskListRow } from './task.repository.js';
7
+ export type { ThreadOriginRow } from './thread-origin-verdict.js';
4
8
  export type ThreadRow = typeof threads.$inferSelect;
5
9
  export type NewThread = typeof threads.$inferInsert;
10
+ export type ThreadActorKind = NonNullable<NewThread['created_by_kind']>;
11
+ export interface ThreadCreationOptions {
12
+ createdByKind?: ThreadActorKind | null;
13
+ createdById?: string | null;
14
+ createdByTaskId?: string | null;
15
+ }
16
+ export interface CreateAppLaunchThreadInput {
17
+ threadId: string;
18
+ workspaceId: string;
19
+ platform: string;
20
+ title: string;
21
+ appId: string;
22
+ createdById: string | null;
23
+ initialAgentId?: string;
24
+ }
25
+ export type CreateAppLaunchThreadResult = {
26
+ status: 'created';
27
+ thread: ThreadRow;
28
+ } | {
29
+ status: 'existing';
30
+ thread: ThreadRow;
31
+ } | {
32
+ status: 'conflict';
33
+ };
34
+ export interface TaskDescendantSummary {
35
+ total: number;
36
+ running: number;
37
+ pending: number;
38
+ paused: number;
39
+ success: number;
40
+ failed: number;
41
+ stopped: number;
42
+ runnerLost: number;
43
+ checkedAt: string;
44
+ }
45
+ export interface TaskDescendantRow {
46
+ task: TaskRow;
47
+ parentTaskId: string;
48
+ parentAgentId: string | null;
49
+ depth: number;
50
+ }
51
+ export interface TaskDescendantListOptions {
52
+ states?: readonly TaskStatus[];
53
+ limit?: number;
54
+ cursor?: string | null;
55
+ maxDepth?: number;
56
+ }
57
+ export interface TaskDescendantList {
58
+ rows: TaskDescendantRow[];
59
+ summary: TaskDescendantSummary;
60
+ nextCursor: string | null;
61
+ traversalTruncated: boolean;
62
+ }
63
+ export type ThreadOriginFilter = 'direct' | 'delegated' | 'all';
64
+ type ThreadOriginScope = Exclude<ThreadOriginFilter, 'all'>;
65
+ export interface ThreadTitleMetadataPatch {
66
+ priority?: string | null;
67
+ state?: string | null;
68
+ }
69
+ export interface ThreadTitleMetadataPatchResult {
70
+ threadId: string;
71
+ priority: string | null;
72
+ state: string | null;
73
+ }
74
+ export type ThreadTitleMetadataPatchErrorReason = 'THREAD_TITLE_PATCH_EMPTY' | 'THREAD_TITLE_PATCH_INVALID';
75
+ export declare class ThreadTitleMetadataPatchError extends RepositoryError {
76
+ readonly reason: ThreadTitleMetadataPatchErrorReason;
77
+ constructor(reason: ThreadTitleMetadataPatchErrorReason, message?: string);
78
+ }
6
79
  export declare class ThreadRepository extends BaseSqliteRepository {
7
80
  private readonly dbPath?;
8
81
  constructor(opts?: {
@@ -11,10 +84,22 @@ export declare class ThreadRepository extends BaseSqliteRepository {
11
84
  });
12
85
  resolveDbPath(): string;
13
86
  private openHandle;
14
- private validateWorkspaceId;
15
87
  private topLevelTaskPredicateSql;
16
- findAllThreads(workspaceId?: string): ThreadRow[];
88
+ private workflowAnchorPredicateSql;
89
+ private descendantTraversalSql;
90
+ private descendantSkippedSql;
91
+ private findAllThreadsQuery;
92
+ private findThreadIdsQuery;
93
+ private readThreadIds;
94
+ private findThreadSortKeysQuery;
95
+ private readThreadSortKeys;
96
+ private readThreadRowsByIds;
97
+ private readThreadRows;
98
+ findAllThreads(workspaceId?: string, createdByKind?: ThreadActorKind): ThreadRow[];
99
+ explainFindAllThreadsPlan(workspaceId?: string, createdByKind?: ThreadActorKind): string[];
100
+ findThreadsByIdsOrTitles(ids: string[], workspaceId?: string): ThreadRow[];
17
101
  findThreadById(threadId: string, workspaceId?: string): ThreadRow | undefined;
102
+ createAppLaunchThread(input: CreateAppLaunchThreadInput): CreateAppLaunchThreadResult;
18
103
  threadExists(threadId: string, workspaceId?: string): boolean;
19
104
  aggregateTaskStats(threadId: string, workspaceId?: string): {
20
105
  taskCount: number;
@@ -23,22 +108,44 @@ export declare class ThreadRepository extends BaseSqliteRepository {
23
108
  cachedInputTokens: number;
24
109
  costUsd: number;
25
110
  agentIds: string[];
111
+ delegated: {
112
+ taskCount: number;
113
+ inputTokens: number;
114
+ outputTokens: number;
115
+ cachedInputTokens: number;
116
+ costUsd: number;
117
+ };
26
118
  };
27
- findTopLevelTasks(threadId: string, workspaceId?: string, limit?: number): TaskRow[];
119
+ getDescendantSummaryByTaskId(threadId: string, workspaceId?: string): Record<string, TaskDescendantSummary>;
120
+ listDescendantsByTaskId(taskId: string, workspaceId: string, options?: TaskDescendantListOptions): TaskDescendantList | undefined;
121
+ findTopLevelTasks(threadId: string, workspaceId?: string, limit?: number, ownAgentId?: string): TaskRow[];
28
122
  findAllTasks(threadId: string, workspaceId?: string): TaskRow[];
29
123
  findTaskById(threadId: string, taskId: string, workspaceId?: string): {
30
124
  task: TaskRow;
31
125
  children: TaskRow[];
32
126
  } | undefined;
33
- batchFetchTasks(threadIds: string[], workspaceId?: string): Map<string, TaskRow[]>;
127
+ private batchFetchTasksQuery;
128
+ batchFetchTasks(threadIds: string[], workspaceId?: string): Map<string, TaskListRow[]>;
129
+ private findThreadOriginsQuery;
130
+ private findCreatorPointersQuery;
131
+ private findTaskOriginLineageQuery;
132
+ findThreadOrigins(threadIds: string[], workspaceId?: string): Map<string, ThreadOriginRow>;
133
+ findThreadsByOrigin(origin: ThreadOriginScope, workspaceId?: string): ThreadRow[];
134
+ findRecentDirectThreads(workspaceId: string, limit?: number): {
135
+ threads: ThreadRow[];
136
+ originsByThread: Map<string, ThreadOriginRow>;
137
+ };
138
+ explainBatchFetchTasksPlan(threadIds: string[], workspaceId?: string): string[];
139
+ explainFindThreadOriginsPlan(threadIds: string[], workspaceId?: string): string[];
140
+ explainFindThreadsByOriginPlan(origin: ThreadOriginScope, workspaceId?: string): string[];
34
141
  updateThreadTitle(threadId: string, title: string, workspaceId?: string): void;
35
142
  upsertThread(threadId: string, opts: {
36
143
  platform: string;
37
144
  workspaceId?: string;
38
145
  title?: string;
39
146
  titleLocked?: boolean;
40
- }): void;
41
- ensureThread(threadId: string, platform: string, workspaceId?: string): void;
147
+ } & ThreadCreationOptions): void;
148
+ ensureThread(threadId: string, platform: string, workspaceId?: string, creator?: ThreadCreationOptions): void;
42
149
  saveUserMessage(threadId: string, text: string, opts?: {
43
150
  platform?: string;
44
151
  model?: string;
@@ -56,6 +163,7 @@ export declare class ThreadRepository extends BaseSqliteRepository {
56
163
  title?: string;
57
164
  titleLocked?: boolean;
58
165
  }): void;
166
+ patchThreadTitleMetadata(threadId: string, patch: ThreadTitleMetadataPatch, workspaceId?: string): ThreadTitleMetadataPatchResult | ThreadTitleMetadataPatchError | null;
59
167
  togglePin(threadId: string, workspaceId?: string): {
60
168
  pinned: boolean;
61
169
  } | null;
@@ -0,0 +1,62 @@
1
+ export type UsageBackfillMode = 'dry-run' | 'apply' | 'verify' | 'restore';
2
+ export declare const USAGE_BACKFILL_TERMINAL_STATUSES: readonly ["success", "failed", "completed"];
3
+ export declare const USAGE_BACKFILL_MAX_LATE_USAGE_AGE_MS: number;
4
+ export declare const USAGE_BACKFILL_UNDO_SCHEMA_VERSION = 1;
5
+ export declare const USAGE_BACKFILL_SNAPSHOT_ROW_BYTES = 2048;
6
+ export declare const USAGE_BACKFILL_MIN_FREE_SPACE_RESERVE_BYTES: number;
7
+ export type UsageAccountingReason = 'pre-instrumentation' | 'provider-no-usage' | 'suppressed-by-adapter' | 'not-captured';
8
+ export interface UsageBackfillOptions {
9
+ mode: UsageBackfillMode;
10
+ dbPath?: string;
11
+ backupPath?: string;
12
+ restorePath?: string;
13
+ now?: Date | string | number;
14
+ }
15
+ export interface UsageBackfillProviderStats {
16
+ candidates: number;
17
+ recovered: number;
18
+ unavailable: number;
19
+ deferred: number;
20
+ }
21
+ export interface UsageBackfillFailure {
22
+ taskId: string;
23
+ reason: string;
24
+ }
25
+ export interface UsageBackfillReport {
26
+ mode: UsageBackfillMode;
27
+ ok: boolean;
28
+ dbPath: string;
29
+ scannedTasks: number;
30
+ terminalTasks: number;
31
+ rawTargetTasks: number;
32
+ candidateTasks: number;
33
+ recoveredTasks: number;
34
+ unavailableTasks: number;
35
+ deferredTasks: number;
36
+ changedTasks: number;
37
+ wouldChangeTasks: number;
38
+ accountingTasks: number;
39
+ remainingTargetTasks: number;
40
+ providerDistribution: Record<string, UsageBackfillProviderStats>;
41
+ reasonCounts: Record<UsageAccountingReason, number>;
42
+ estimatedFreeSpaceBytes: number;
43
+ requiredFreeSpaceBytes: number;
44
+ availableFreeSpaceBytes: number;
45
+ minimumFreeSpaceReserveBytes: number;
46
+ freeSpaceGatePassed: boolean;
47
+ backupPath?: string;
48
+ snapshotPath?: string;
49
+ backupMethod?: 'row-undo-snapshot';
50
+ restored: number;
51
+ skippedConflict: number;
52
+ conflictSamples: UsageBackfillConflict[];
53
+ blockedReason?: string;
54
+ failures: UsageBackfillFailure[];
55
+ warnings: string[];
56
+ }
57
+ export interface UsageBackfillConflict {
58
+ taskId: string;
59
+ fields: string[];
60
+ }
61
+ export declare function classifyUsageAccountingReason(provider: string | undefined): UsageAccountingReason;
62
+ export declare function runUsageBackfill(options: UsageBackfillOptions): Promise<UsageBackfillReport>;
@@ -0,0 +1,21 @@
1
+ import type { CliProviderAdapter } from '../provider/cli/adapter.types.js';
2
+ import type { TaskLogRepositoryContract } from './task-log.repository.js';
3
+ export interface RecoveredTaskUsage {
4
+ inputTokens: number;
5
+ outputTokens: number;
6
+ cachedInputTokens: number;
7
+ costUsd: number;
8
+ model: string | null;
9
+ }
10
+ export interface TaskLogUsageRecovery {
11
+ stdout: string;
12
+ adapter: CliProviderAdapter;
13
+ usage?: RecoveredTaskUsage;
14
+ }
15
+ export interface RecoverUsageFromTaskLogsOptions {
16
+ taskLogRepository: Pick<TaskLogRepositoryContract, 'readLogs'>;
17
+ taskId: string;
18
+ provider?: string | null;
19
+ model?: string | null;
20
+ }
21
+ export declare function recoverUsageFromTaskLogs(options: RecoverUsageFromTaskLogsOptions): TaskLogUsageRecovery | undefined;
@@ -48,6 +48,9 @@ export declare class WorkspaceRepository extends BaseSqliteRepository {
48
48
  total: number;
49
49
  };
50
50
  findById(id: string): ProjectRow | undefined;
51
+ toggleStar(id: string): {
52
+ starred: boolean;
53
+ } | null;
51
54
  findAgentsByProject(id: string): string[];
52
55
  findThreadsByProject(id: string, params: {
53
56
  limit: number;
@@ -0,0 +1,199 @@
1
+ export declare const agent_suggestions: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "agent_suggestions";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "agent_suggestions";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ workspace_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "workspace_id";
26
+ tableName: "agent_suggestions";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ agent_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "agent_id";
45
+ tableName: "agent_suggestions";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "task_id";
64
+ tableName: "agent_suggestions";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: false;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "type";
83
+ tableName: "agent_suggestions";
84
+ dataType: "string";
85
+ columnType: "SQLiteText";
86
+ data: string;
87
+ driverParam: string;
88
+ notNull: true;
89
+ hasDefault: false;
90
+ isPrimaryKey: false;
91
+ isAutoincrement: false;
92
+ hasRuntimeDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ identity: undefined;
96
+ generated: undefined;
97
+ }, {}, {
98
+ length: number | undefined;
99
+ }>;
100
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "status";
102
+ tableName: "agent_suggestions";
103
+ dataType: "string";
104
+ columnType: "SQLiteText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: true;
108
+ hasDefault: true;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {
117
+ length: number | undefined;
118
+ }>;
119
+ payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
+ name: "payload";
121
+ tableName: "agent_suggestions";
122
+ dataType: "string";
123
+ columnType: "SQLiteText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: true;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {
136
+ length: number | undefined;
137
+ }>;
138
+ applied_commit_sha: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "applied_commit_sha";
140
+ tableName: "agent_suggestions";
141
+ dataType: "string";
142
+ columnType: "SQLiteText";
143
+ data: string;
144
+ driverParam: string;
145
+ notNull: false;
146
+ hasDefault: false;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: [string, ...string[]];
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {
155
+ length: number | undefined;
156
+ }>;
157
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "created_at";
159
+ tableName: "agent_suggestions";
160
+ dataType: "string";
161
+ columnType: "SQLiteText";
162
+ data: string;
163
+ driverParam: string;
164
+ notNull: true;
165
+ hasDefault: false;
166
+ isPrimaryKey: false;
167
+ isAutoincrement: false;
168
+ hasRuntimeDefault: false;
169
+ enumValues: [string, ...string[]];
170
+ baseColumn: never;
171
+ identity: undefined;
172
+ generated: undefined;
173
+ }, {}, {
174
+ length: number | undefined;
175
+ }>;
176
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
177
+ name: "updated_at";
178
+ tableName: "agent_suggestions";
179
+ dataType: "string";
180
+ columnType: "SQLiteText";
181
+ data: string;
182
+ driverParam: string;
183
+ notNull: true;
184
+ hasDefault: false;
185
+ isPrimaryKey: false;
186
+ isAutoincrement: false;
187
+ hasRuntimeDefault: false;
188
+ enumValues: [string, ...string[]];
189
+ baseColumn: never;
190
+ identity: undefined;
191
+ generated: undefined;
192
+ }, {}, {
193
+ length: number | undefined;
194
+ }>;
195
+ };
196
+ dialect: "sqlite";
197
+ }>;
198
+ export type AgentSuggestion = typeof agent_suggestions.$inferSelect;
199
+ export type NewAgentSuggestion = typeof agent_suggestions.$inferInsert;
@@ -0,0 +1,216 @@
1
+ export declare const COMMON_CODE_GROUPS: readonly ["THREAD_STATE", "THREAD_PRIORITY"];
2
+ export type CommonCodeGroup = (typeof COMMON_CODE_GROUPS)[number];
3
+ export declare const COMMON_CODE_COLORS: readonly ["gray", "blue", "violet", "green", "amber", "orange", "red", "pink"];
4
+ export type CommonCodeColor = (typeof COMMON_CODE_COLORS)[number];
5
+ export declare const common_codes: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
6
+ name: "common_codes";
7
+ schema: undefined;
8
+ columns: {
9
+ code_group: import("drizzle-orm/sqlite-core").SQLiteColumn<{
10
+ name: "code_group";
11
+ tableName: "common_codes";
12
+ dataType: "string";
13
+ columnType: "SQLiteText";
14
+ data: string;
15
+ driverParam: string;
16
+ notNull: true;
17
+ hasDefault: false;
18
+ isPrimaryKey: false;
19
+ isAutoincrement: false;
20
+ hasRuntimeDefault: false;
21
+ enumValues: [string, ...string[]];
22
+ baseColumn: never;
23
+ identity: undefined;
24
+ generated: undefined;
25
+ }, {}, {
26
+ length: number | undefined;
27
+ }>;
28
+ code: import("drizzle-orm/sqlite-core").SQLiteColumn<{
29
+ name: "code";
30
+ tableName: "common_codes";
31
+ dataType: "string";
32
+ columnType: "SQLiteText";
33
+ data: string;
34
+ driverParam: string;
35
+ notNull: true;
36
+ hasDefault: false;
37
+ isPrimaryKey: false;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: false;
40
+ enumValues: [string, ...string[]];
41
+ baseColumn: never;
42
+ identity: undefined;
43
+ generated: undefined;
44
+ }, {}, {
45
+ length: number | undefined;
46
+ }>;
47
+ code_name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
48
+ name: "code_name";
49
+ tableName: "common_codes";
50
+ dataType: "string";
51
+ columnType: "SQLiteText";
52
+ data: string;
53
+ driverParam: string;
54
+ notNull: false;
55
+ hasDefault: false;
56
+ isPrimaryKey: false;
57
+ isAutoincrement: false;
58
+ hasRuntimeDefault: false;
59
+ enumValues: [string, ...string[]];
60
+ baseColumn: never;
61
+ identity: undefined;
62
+ generated: undefined;
63
+ }, {}, {
64
+ length: number | undefined;
65
+ }>;
66
+ color: import("drizzle-orm/sqlite-core").SQLiteColumn<{
67
+ name: "color";
68
+ tableName: "common_codes";
69
+ dataType: "string";
70
+ columnType: "SQLiteText";
71
+ data: string;
72
+ driverParam: string;
73
+ notNull: true;
74
+ hasDefault: true;
75
+ isPrimaryKey: false;
76
+ isAutoincrement: false;
77
+ hasRuntimeDefault: false;
78
+ enumValues: [string, ...string[]];
79
+ baseColumn: never;
80
+ identity: undefined;
81
+ generated: undefined;
82
+ }, {}, {
83
+ length: number | undefined;
84
+ }>;
85
+ sort_order: import("drizzle-orm/sqlite-core").SQLiteColumn<{
86
+ name: "sort_order";
87
+ tableName: "common_codes";
88
+ dataType: "number";
89
+ columnType: "SQLiteInteger";
90
+ data: number;
91
+ driverParam: number;
92
+ notNull: true;
93
+ hasDefault: false;
94
+ isPrimaryKey: false;
95
+ isAutoincrement: false;
96
+ hasRuntimeDefault: false;
97
+ enumValues: undefined;
98
+ baseColumn: never;
99
+ identity: undefined;
100
+ generated: undefined;
101
+ }, {}, {}>;
102
+ workspace_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
103
+ name: "workspace_id";
104
+ tableName: "common_codes";
105
+ dataType: "string";
106
+ columnType: "SQLiteText";
107
+ data: string;
108
+ driverParam: string;
109
+ notNull: false;
110
+ hasDefault: false;
111
+ isPrimaryKey: false;
112
+ isAutoincrement: false;
113
+ hasRuntimeDefault: false;
114
+ enumValues: [string, ...string[]];
115
+ baseColumn: never;
116
+ identity: undefined;
117
+ generated: undefined;
118
+ }, {}, {
119
+ length: number | undefined;
120
+ }>;
121
+ is_builtin: import("drizzle-orm/sqlite-core").SQLiteColumn<{
122
+ name: "is_builtin";
123
+ tableName: "common_codes";
124
+ dataType: "number";
125
+ columnType: "SQLiteInteger";
126
+ data: number;
127
+ driverParam: number;
128
+ notNull: true;
129
+ hasDefault: true;
130
+ isPrimaryKey: false;
131
+ isAutoincrement: false;
132
+ hasRuntimeDefault: false;
133
+ enumValues: undefined;
134
+ baseColumn: never;
135
+ identity: undefined;
136
+ generated: undefined;
137
+ }, {}, {}>;
138
+ is_archived: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "is_archived";
140
+ tableName: "common_codes";
141
+ dataType: "number";
142
+ columnType: "SQLiteInteger";
143
+ data: number;
144
+ driverParam: number;
145
+ notNull: true;
146
+ hasDefault: true;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: undefined;
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {}>;
155
+ metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
+ name: "metadata";
157
+ tableName: "common_codes";
158
+ dataType: "string";
159
+ columnType: "SQLiteText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: false;
163
+ hasDefault: false;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: [string, ...string[]];
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {
172
+ length: number | undefined;
173
+ }>;
174
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "created_at";
176
+ tableName: "common_codes";
177
+ dataType: "string";
178
+ columnType: "SQLiteText";
179
+ data: string;
180
+ driverParam: string;
181
+ notNull: true;
182
+ hasDefault: false;
183
+ isPrimaryKey: false;
184
+ isAutoincrement: false;
185
+ hasRuntimeDefault: false;
186
+ enumValues: [string, ...string[]];
187
+ baseColumn: never;
188
+ identity: undefined;
189
+ generated: undefined;
190
+ }, {}, {
191
+ length: number | undefined;
192
+ }>;
193
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
194
+ name: "updated_at";
195
+ tableName: "common_codes";
196
+ dataType: "string";
197
+ columnType: "SQLiteText";
198
+ data: string;
199
+ driverParam: string;
200
+ notNull: true;
201
+ hasDefault: false;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
205
+ enumValues: [string, ...string[]];
206
+ baseColumn: never;
207
+ identity: undefined;
208
+ generated: undefined;
209
+ }, {}, {
210
+ length: number | undefined;
211
+ }>;
212
+ };
213
+ dialect: "sqlite";
214
+ }>;
215
+ export type CommonCode = typeof common_codes.$inferSelect;
216
+ export type NewCommonCode = typeof common_codes.$inferInsert;