@crewx/sdk 0.9.0-rc.14 → 0.9.0-rc.141

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 (288) 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 +1104 -226
  60. package/dist/esm/node/index.js +2 -0
  61. package/dist/esm/plugins/index.js +474 -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 +586 -213
  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 +125 -17
  75. package/dist/index.js +1104 -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/catalog.d.ts +7 -0
  94. package/dist/mcp-app/content-channel.d.ts +86 -0
  95. package/dist/mcp-app/content-declarations.d.ts +31 -0
  96. package/dist/mcp-app/dev-checks.d.ts +29 -0
  97. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  98. package/dist/mcp-app/discovery.d.ts +160 -0
  99. package/dist/mcp-app/errors.d.ts +7 -0
  100. package/dist/mcp-app/index.d.ts +33 -0
  101. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  102. package/dist/mcp-app/model-context.d.ts +29 -0
  103. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  104. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  105. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  106. package/dist/mcp-app/projection.d.ts +14 -0
  107. package/dist/mcp-app/registry.d.ts +28 -0
  108. package/dist/mcp-app/skill-backend.d.ts +132 -0
  109. package/dist/mcp-app/state-set.d.ts +9 -0
  110. package/dist/mcp-app/types.d.ts +472 -0
  111. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  112. package/dist/mcp-app/workspace-app-scan-cache.d.ts +24 -0
  113. package/dist/mcp-app/workspace-snapshot.d.ts +71 -0
  114. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  115. package/dist/migrations/0012_blue_turbo.sql +23 -0
  116. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  117. package/dist/migrations/0014_organic_mongu.sql +73 -0
  118. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  119. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  120. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  121. package/dist/migrations/0018_bored_jackal.sql +33 -0
  122. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  123. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  124. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  125. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  126. package/dist/migrations/0023_red_payback.sql +1 -0
  127. package/dist/migrations/0024_storage_metadata.sql +262 -0
  128. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  129. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  130. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  131. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  132. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  133. package/dist/migrations/0029_nice_rhino.sql +1 -0
  134. package/dist/migrations/0031_petite_arclight.sql +6 -0
  135. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  136. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  137. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  138. package/dist/migrations/0035_request_log_daily.sql +11 -0
  139. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  140. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  141. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  142. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  143. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  144. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  145. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  146. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  147. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  148. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  149. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  150. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  151. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  152. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  153. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  154. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  155. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  156. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  157. package/dist/migrations/meta/_journal.json +182 -0
  158. package/dist/node/index.d.ts +1 -0
  159. package/dist/node/index.js +2 -0
  160. package/dist/paths.d.ts +1 -0
  161. package/dist/plugin/types.d.ts +1 -0
  162. package/dist/plugins/index.d.ts +1 -1
  163. package/dist/plugins/index.js +474 -216
  164. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  165. package/dist/process/index.d.ts +2 -0
  166. package/dist/process/index.js +1 -0
  167. package/dist/process/process-control.d.ts +41 -0
  168. package/dist/prompt/tag-names.d.ts +22 -0
  169. package/dist/provider/acp/connection.d.ts +6 -0
  170. package/dist/provider/acp/meta.d.ts +11 -0
  171. package/dist/provider/bridge.d.ts +7 -1
  172. package/dist/provider/classify-task-error.d.ts +2 -0
  173. package/dist/provider/cli/adapter.types.d.ts +14 -2
  174. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  175. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  176. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  177. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  178. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  179. package/dist/provider/cli/adapters/index.d.ts +5 -0
  180. package/dist/provider/cli/index.d.ts +3 -2
  181. package/dist/provider/cli/meta.d.ts +5 -0
  182. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  183. package/dist/provider/errors.d.ts +5 -1
  184. package/dist/provider/idle-watchdog.d.ts +19 -0
  185. package/dist/provider/models.d.ts +17 -12
  186. package/dist/provider/order.d.ts +1 -1
  187. package/dist/provider/parse-usage.d.ts +6 -0
  188. package/dist/provider/provider-selection.d.ts +8 -0
  189. package/dist/provider/redact-technical-message.d.ts +1 -0
  190. package/dist/provider/task-error.types.d.ts +17 -0
  191. package/dist/publish/constants.d.ts +6 -0
  192. package/dist/publish/errors.d.ts +7 -0
  193. package/dist/publish/index.d.ts +50 -0
  194. package/dist/publish/index.js +2 -0
  195. package/dist/publish/manifest.d.ts +47 -0
  196. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  197. package/dist/publish/pack.d.ts +6 -0
  198. package/dist/publish/scan.d.ts +9 -0
  199. package/dist/publish/secrets.d.ts +6 -0
  200. package/dist/publish/upload.d.ts +19 -0
  201. package/dist/remote/execution-profile.d.ts +9 -0
  202. package/dist/remote/index.d.ts +1 -0
  203. package/dist/remote/types.d.ts +28 -0
  204. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  205. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  206. package/dist/repository/common-code.repository.d.ts +45 -0
  207. package/dist/repository/db.d.ts +12 -1
  208. package/dist/repository/index.d.ts +41 -5
  209. package/dist/repository/index.js +586 -213
  210. package/dist/repository/logs-db.d.ts +12 -0
  211. package/dist/repository/notification.repository.d.ts +58 -0
  212. package/dist/repository/project.repository.d.ts +90 -0
  213. package/dist/repository/request-log-mover.d.ts +70 -0
  214. package/dist/repository/request-log.repository.d.ts +7 -3
  215. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  216. package/dist/repository/task-log-migration.d.ts +74 -0
  217. package/dist/repository/task-log.repository.d.ts +44 -0
  218. package/dist/repository/task-status.d.ts +21 -0
  219. package/dist/repository/task.repository.d.ts +229 -7
  220. package/dist/repository/thread-history.repository.d.ts +193 -0
  221. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  222. package/dist/repository/thread-title.types.d.ts +29 -0
  223. package/dist/repository/thread.repository.d.ts +115 -7
  224. package/dist/repository/usage-backfill.d.ts +62 -0
  225. package/dist/repository/usage-from-logs.d.ts +21 -0
  226. package/dist/repository/workspace.repository.d.ts +3 -0
  227. package/dist/schema/agent-suggestions.d.ts +199 -0
  228. package/dist/schema/common-codes.d.ts +216 -0
  229. package/dist/schema/index.d.ts +13 -0
  230. package/dist/schema/notifications.d.ts +303 -0
  231. package/dist/schema/projects.d.ts +610 -0
  232. package/dist/schema/request-log-daily.d.ts +151 -0
  233. package/dist/schema/storage-metadata.d.ts +181 -0
  234. package/dist/schema/task-log-events.d.ts +119 -0
  235. package/dist/schema/tasks.d.ts +165 -0
  236. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  237. package/dist/schema/thread-history.d.ts +734 -0
  238. package/dist/schema/threads.d.ts +59 -0
  239. package/dist/schema/ui-action-receipts.d.ts +358 -0
  240. package/dist/schema/ui-definition-archive.d.ts +63 -0
  241. package/dist/schema/ui-instance-repins.d.ts +222 -0
  242. package/dist/schema/ui-instances.d.ts +305 -0
  243. package/dist/schema/workspaces.d.ts +17 -0
  244. package/dist/skills/index.d.ts +15 -0
  245. package/dist/skills/index.js +2 -0
  246. package/dist/skills/types.d.ts +18 -0
  247. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  248. package/dist/task-log/delegation-trailer.d.ts +34 -0
  249. package/dist/template/engine.d.ts +2 -2
  250. package/dist/template/helpers/exec.browser.d.ts +4 -3
  251. package/dist/template/helpers/exec.d.ts +4 -3
  252. package/dist/template/types.d.ts +20 -0
  253. package/dist/testing/index.js +1 -1
  254. package/dist/types/index.d.ts +1574 -3
  255. package/dist/types/task-log.types.d.ts +3 -0
  256. package/dist/ui-card/index.d.ts +2 -0
  257. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  258. package/dist/ui-instance/definition.d.ts +6 -0
  259. package/dist/ui-instance/errors.d.ts +18 -0
  260. package/dist/ui-instance/index.d.ts +11 -0
  261. package/dist/ui-instance/json.d.ts +19 -0
  262. package/dist/ui-instance/lineage.d.ts +24 -0
  263. package/dist/ui-instance/runtime.d.ts +18 -0
  264. package/dist/ui-instance/store.d.ts +198 -0
  265. package/dist/ui-instance/types.d.ts +319 -0
  266. package/dist/ui-plugin/app-manifest.d.ts +64 -0
  267. package/dist/ui-plugin/csp.d.ts +28 -0
  268. package/dist/ui-plugin/index.d.ts +6 -0
  269. package/dist/ui-plugin/limits.d.ts +27 -0
  270. package/dist/ui-plugin/manifest.d.ts +3 -0
  271. package/dist/ui-plugin/types.d.ts +203 -0
  272. package/dist/ui-plugin/validator.d.ts +18 -0
  273. package/dist/utils/crewx-executable.d.ts +76 -0
  274. package/dist/utils/crewx-home.d.ts +1 -0
  275. package/dist/utils/env-defaults.d.ts +3 -0
  276. package/dist/utils/id.d.ts +1 -1
  277. package/dist/utils/local-identity.d.ts +2 -0
  278. package/dist/utils/runner-env.d.ts +3 -0
  279. package/dist/utils/timestamp.d.ts +1 -0
  280. package/dist/utils/workspace.d.ts +1 -0
  281. package/dist/wi/create.d.ts +48 -0
  282. package/dist/wi/select.d.ts +20 -0
  283. package/package.json +57 -3
  284. package/templates/agents/default.yaml +296 -128
  285. package/templates/documents/crewx-manual.md +138 -138
  286. package/templates/documents/crewx-quick-guide.md +8 -7
  287. package/templates/workflows/wi-default-flow.yaml +65 -0
  288. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -1,20 +1,109 @@
1
1
  import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
2
  import { tasks } from '../schema/index.js';
3
- export type TaskRow = typeof tasks.$inferSelect;
3
+ import type { TaskLogEntry, TaskLogReadResult, TaskLogState } from './task-log.repository.js';
4
+ import { type TaskStatus, type TaskTerminalReason } from './task-status.js';
5
+ import { type StopTaskOptions, type StopTaskGenerationForInstructionOptions, type StopTaskResult } from '../lifecycle/task-stop.js';
6
+ export { TASK_HEARTBEAT_HARD_STALE_MS, TASK_HEARTBEAT_INTERVAL_MS, TASK_HEARTBEAT_STALE_MS, resolveTaskHeartbeatHardStaleMs, resolveTaskHeartbeatIntervalMs, resolveTaskHeartbeatStaleMs, } from '../lifecycle/task-heartbeat.js';
7
+ type RawTaskRow = typeof tasks.$inferSelect;
8
+ export type TaskRow = Omit<RawTaskRow, 'status'> & {
9
+ status: TaskStatus;
10
+ };
4
11
  export type NewTask = typeof tasks.$inferInsert;
12
+ type TaskActorKind = NonNullable<NewTask['actor_kind']>;
13
+ export type TaskKillStatus = 'terminated' | 'not_found' | 'failed' | 'not_running';
14
+ export interface TaskKillResult {
15
+ status: TaskKillStatus;
16
+ killed: boolean;
17
+ pid?: number;
18
+ error?: string;
19
+ }
20
+ export interface TaskStopRequestResult {
21
+ accepted: boolean;
22
+ status: string | null;
23
+ runEpoch: number;
24
+ alreadyRequestedAt?: string;
25
+ }
26
+ export type TaskStopOrigin = 'http' | 'cli' | 'instruction' | 'workflow' | 'internal';
27
+ export interface TaskStopRequestContext {
28
+ origin?: TaskStopOrigin;
29
+ at?: string;
30
+ callerPid?: number;
31
+ callerTaskId?: string;
32
+ }
33
+ export type TaskStopMethod = 'cooperative' | 'forced';
34
+ export interface FinalizeTaskStopOptions {
35
+ id: string;
36
+ runEpoch: number;
37
+ completedAt?: string;
38
+ method: TaskStopMethod;
39
+ error?: string;
40
+ terminalReason?: TaskTerminalReason;
41
+ durationMs?: number | null;
42
+ }
43
+ export interface FinalizeTaskForHostShutdownOptions {
44
+ id: string;
45
+ expectedRunEpoch: number;
46
+ workspaceId?: string | null;
47
+ completedAt?: string;
48
+ }
49
+ export type FinalizeTaskForHostShutdownOutcome = 'settled' | 'not_running' | 'epoch_mismatch' | 'workspace_mismatch';
50
+ export type TaskListRow = Pick<TaskRow, 'id' | 'thread_id' | 'agent_id' | 'status' | 'parent_task_id' | 'started_at' | 'completed_at' | 'duration_ms' | 'input_tokens' | 'output_tokens' | 'cost_usd' | 'error'> & {
51
+ terminalReason: TaskTerminalReason | null;
52
+ };
53
+ export type TaskActivityLogRow = Pick<TaskRow, 'id' | 'thread_id' | 'agent_id' | 'parent_task_id' | 'started_at' | 'completed_at'>;
54
+ export type FindTasksByThreadOptions = {
55
+ projection: 'activity-log';
56
+ };
57
+ export interface WorkflowCardRow {
58
+ taskId: string;
59
+ workflowRunId?: string;
60
+ raw?: string;
61
+ }
62
+ export interface WorkflowParentTaskRow {
63
+ id: string;
64
+ agent_id: string;
65
+ thread_id: string | null;
66
+ workspace_id: string | null;
67
+ platform: string | null;
68
+ status: string;
69
+ error: string | null;
70
+ completed_at: string | null;
71
+ duration_ms: number | null;
72
+ started_at: string;
73
+ metadata: string | null;
74
+ }
75
+ export type WorkflowParentTaskKind = 'workflow_card' | 'workflow_ui_instance';
76
+ export interface WorkflowParentTaskLookup {
77
+ workspaceId: string;
78
+ workflowRunId: string;
79
+ kind: WorkflowParentTaskKind;
80
+ }
81
+ export interface AgentProviderUsageRow {
82
+ provider: string;
83
+ inputTokens: number;
84
+ outputTokens: number;
85
+ cachedInputTokens: number;
86
+ totalTokens: number;
87
+ costUsd: number;
88
+ totalTasks: number;
89
+ unavailableTaskCount: number;
90
+ }
5
91
  export interface AgentUsageRow {
6
92
  agentId: string;
7
93
  workspaceId: string | null;
8
94
  totalTasks: number;
95
+ unavailableTaskCount?: number;
9
96
  inputTokens: number;
10
97
  outputTokens: number;
11
98
  cachedInputTokens: number;
12
99
  costUsd: number;
13
100
  totalTokens: number;
101
+ providers: AgentProviderUsageRow[];
14
102
  }
15
103
  export interface TrendRow {
16
104
  date: string;
17
105
  agentId: string;
106
+ unavailableTaskCount?: number;
18
107
  inputTokens: number;
19
108
  outputTokens: number;
20
109
  cachedInputTokens: number;
@@ -24,6 +113,7 @@ export interface TrendRow {
24
113
  export interface ProviderUsageRow {
25
114
  provider: string;
26
115
  totalTasks: number;
116
+ unavailableTaskCount?: number;
27
117
  inputTokens: number;
28
118
  outputTokens: number;
29
119
  cachedInputTokens: number;
@@ -36,6 +126,7 @@ export interface ModelUsageRow {
36
126
  model: string;
37
127
  provider: string;
38
128
  totalTasks: number;
129
+ unavailableTaskCount?: number;
39
130
  inputTokens: number;
40
131
  outputTokens: number;
41
132
  cachedInputTokens: number;
@@ -51,20 +142,80 @@ export interface ReportTaskRow {
51
142
  status: string;
52
143
  error: string | null;
53
144
  exitCode: number | null;
145
+ terminalReason: TaskTerminalReason | null;
54
146
  }
147
+ export interface DelegationEdge {
148
+ callerAgentId: string | null;
149
+ agentId: string;
150
+ taskCount: number;
151
+ totalTokens: number;
152
+ outputTokens: number;
153
+ }
154
+ export interface DelegationMatrixResult {
155
+ edges: DelegationEdge[];
156
+ truncated: boolean;
157
+ }
158
+ export type TaskEvidenceRow = Pick<TaskRow, 'id' | 'agent_id' | 'status' | 'prompt' | 'started_at' | 'completed_at' | 'thread_id'> & {
159
+ terminalReason: TaskTerminalReason | null;
160
+ };
161
+ export interface ThreadChainTurn {
162
+ id: string;
163
+ agentId: string;
164
+ status: string;
165
+ prompt: string;
166
+ startedAt: string;
167
+ completedAt: string | null;
168
+ }
169
+ export interface ThreadChain {
170
+ threadId: string;
171
+ targetAgentTurnCount: number;
172
+ turns: ThreadChainTurn[];
173
+ }
174
+ export declare const HOST_SHUTDOWN_TERMINAL_ERROR = "Stopped by app shutdown";
175
+ type TaskUsageColumns = Pick<TaskRow, 'input_tokens' | 'output_tokens' | 'cached_input_tokens' | 'cost_usd'>;
176
+ export declare function mergeTerminalReason(metadataJson: string | null | undefined, reason: TaskTerminalReason): string;
177
+ export declare function hasRecordedUsage(task: TaskUsageColumns): boolean;
55
178
  export declare const PID_NULL_REAP_GRACE_MS: number;
179
+ export declare const PENDING_ADOPT_GRACE_MS: number;
180
+ export declare const DEFAULT_TASK_REAPER_TICK_INTERVAL_MS: number;
181
+ export interface ReapOrphanedTasksOptions {
182
+ tickIntervalMs?: number;
183
+ }
56
184
  export declare class TaskRepository extends BaseSqliteRepository {
57
185
  private readonly dbPath?;
186
+ private readonly clock;
187
+ private readonly taskLogRepository;
188
+ private lastReaperTickAt?;
58
189
  private readonly pidNullObservedSince;
59
190
  constructor(opts?: {
60
191
  dbPath?: string;
61
192
  dbRoot?: string;
193
+ clock?: () => number;
62
194
  });
63
195
  resolveDbPath(): string;
64
196
  private openHandle;
197
+ heartbeatTask(opts: {
198
+ id: string;
199
+ runEpoch: number;
200
+ }): boolean;
201
+ requestTaskStop(opts: {
202
+ id: string;
203
+ requestedAt: string;
204
+ origin?: TaskStopOrigin;
205
+ callerPid?: number;
206
+ callerTaskId?: string;
207
+ }): TaskStopRequestResult;
208
+ private requestTaskStopForInstruction;
209
+ finalizeTaskStop(opts: FinalizeTaskStopOptions): boolean;
210
+ finalizeTaskForHostShutdown(opts: FinalizeTaskForHostShutdownOptions): FinalizeTaskForHostShutdownOutcome;
211
+ stopTask(id: string, options?: StopTaskOptions): Promise<StopTaskResult>;
212
+ stopTaskGenerationForInstruction(options: StopTaskGenerationForInstructionOptions): Promise<StopTaskResult>;
65
213
  startTask(opts: {
66
214
  id: string;
67
215
  agentId: string;
216
+ actorKind?: TaskActorKind | null;
217
+ actorId?: string | null;
218
+ userId?: string | null;
68
219
  prompt: string;
69
220
  mode: string;
70
221
  status: string;
@@ -76,6 +227,8 @@ export declare class TaskRepository extends BaseSqliteRepository {
76
227
  command?: string | null;
77
228
  metadata?: string | null;
78
229
  workspaceId?: string | null;
230
+ cwd?: string | null;
231
+ projectId?: string | null;
79
232
  platform?: string | null;
80
233
  crewxVersion?: string | null;
81
234
  threadId?: string | null;
@@ -83,6 +236,22 @@ export declare class TaskRepository extends BaseSqliteRepository {
83
236
  renderedPrompt?: string | null;
84
237
  codingAgentCommand?: string | null;
85
238
  }): void;
239
+ updateTaskOwnership(opts: {
240
+ id: string;
241
+ runEpoch: number;
242
+ ownership: 'runner' | 'caller';
243
+ providerPid?: number | null;
244
+ runtime?: {
245
+ model?: string | null;
246
+ renderedPrompt?: string | null;
247
+ codingAgentCommand?: string | null;
248
+ metadata?: Record<string, unknown>;
249
+ };
250
+ }): boolean;
251
+ adoptPendingTask(id: string): boolean;
252
+ failPendingTask(id: string, error: string, completedAt?: string): boolean;
253
+ stopPendingTask(id: string, error?: string, completedAt?: string, stopRequest?: TaskStopRequestContext): boolean;
254
+ listTasksByProjectId(projectId: string): TaskRow[];
86
255
  finishTask(opts: {
87
256
  id: string;
88
257
  status: string;
@@ -97,20 +266,33 @@ export declare class TaskRepository extends BaseSqliteRepository {
97
266
  costUsd?: number;
98
267
  model?: string | null;
99
268
  runEpoch?: number | null;
269
+ partialResultRecovered?: boolean;
270
+ }): void;
271
+ updateTaskLifecycle(opts: {
272
+ id: string;
273
+ status: TaskStatus;
274
+ error: string | null;
275
+ completedAt: string | null;
276
+ durationMs: number | null;
277
+ workspaceId: string;
278
+ terminalReason?: TaskTerminalReason;
100
279
  }): void;
101
280
  appendLog(taskId: string, entry: {
102
281
  timestamp: string;
103
282
  level: string;
104
283
  message: string;
105
284
  }): void;
285
+ appendLogs(taskId: string, entries: readonly TaskLogEntry[]): void;
286
+ readLogs(taskId: string): TaskLogReadResult | undefined;
287
+ readLogsTail(taskId: string, limit: number): TaskLogReadResult | undefined;
288
+ getLogState(taskId: string): TaskLogState | undefined;
106
289
  getRunningTasks(): TaskRow[];
290
+ getActiveTasks(): TaskRow[];
107
291
  getAllTasks(): TaskRow[];
108
292
  getTask(id: string): TaskRow | undefined;
109
- killTask(id: string): {
110
- killed: boolean;
111
- pid?: number;
112
- };
113
- reapOrphanedTasks(): number;
293
+ killTask(id: string): Promise<TaskKillResult>;
294
+ reapOrphanedTasks(options?: ReapOrphanedTasksOptions): number;
295
+ reapRunningWorkflowTasks(graceMs?: number): number;
114
296
  findTaskStatus(taskId: string, workspaceId?: string): TaskRow | undefined;
115
297
  findChildTasks(parentTaskId: string, workspaceId?: string): TaskRow[];
116
298
  getWorkspaceUsageSummary(workspaceId?: string): Array<{
@@ -125,7 +307,14 @@ export declare class TaskRepository extends BaseSqliteRepository {
125
307
  outputTokens: number;
126
308
  costUsd: number;
127
309
  };
310
+ findTasksByThread(threadId: string, workspaceId: string | undefined, options: FindTasksByThreadOptions): TaskActivityLogRow[];
128
311
  findTasksByThread(threadId: string, workspaceId?: string): TaskRow[];
312
+ private parseWorkflowCardMetadata;
313
+ private extractThreadIdFromCommand;
314
+ findRunningWorkflowParentTasks(): WorkflowParentTaskRow[];
315
+ findWorkflowParentTasksByWorkspace(workspaceId: string): WorkflowParentTaskRow[];
316
+ findWorkflowParentTask(opts: WorkflowParentTaskLookup): WorkflowParentTaskRow | undefined;
317
+ batchFetchWorkflowCards(threadIds: string[], workspaceId?: string): Map<string, WorkflowCardRow>;
129
318
  findAllTasks(params: {
130
319
  workspaceId?: string;
131
320
  agentId?: string;
@@ -146,9 +335,42 @@ export declare class TaskRepository extends BaseSqliteRepository {
146
335
  getAgentUsage(from: string, to: string, workspace?: string): AgentUsageRow[];
147
336
  getAgentUsageTrendRaw(from: string, to: string, workspace?: string): TrendRow[];
148
337
  findTaskForStop(taskId: string, workspaceId: string): TaskRow | undefined;
149
- markTaskFailed(taskId: string, error: string, workspaceId?: string): void;
338
+ findLatestTaskByMetadata(opts: {
339
+ agentId: string;
340
+ workspaceId: string;
341
+ metaKey: string;
342
+ metaValue: string;
343
+ }): {
344
+ id: string;
345
+ thread_id: string | null;
346
+ status: string;
347
+ result: string | null;
348
+ error: string | null;
349
+ started_at: string;
350
+ completed_at: string | null;
351
+ metadata: string | null;
352
+ } | null;
353
+ markTaskFailed(taskId: string, error: string, workspaceId?: string, status?: TaskStatus, terminalReason?: TaskTerminalReason): void;
150
354
  findTasksByPromptHint(hint: string, workspaceId?: string): TaskRow[];
151
355
  getProviderUsage(from: string, to: string, workspace?: string): ProviderUsageRow[];
152
356
  getModelUsage(from: string, to: string, workspace?: string): ModelUsageRow[];
153
357
  getTasksForReport(from: string, to: string, workspace?: string): ReportTaskRow[];
358
+ getDelegationMatrix(from: string, to: string, workspace?: string): DelegationMatrixResult;
359
+ findTaskEvidence(params: {
360
+ workspaceId?: string;
361
+ agents?: string[];
362
+ statuses?: string[];
363
+ from?: string;
364
+ to?: string;
365
+ limit?: number;
366
+ order?: 'ASC' | 'DESC';
367
+ }): TaskEvidenceRow[];
368
+ findThreadChains(params: {
369
+ targetAgentId: string;
370
+ workspaceId?: string;
371
+ from?: string;
372
+ to?: string;
373
+ maxThreads?: number;
374
+ maxTurnsPerThread?: number;
375
+ }): ThreadChain[];
154
376
  }
@@ -0,0 +1,193 @@
1
+ import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
+ import { RepositoryError } from './errors.js';
3
+ import type { ThreadActorType, ThreadEvent, ThreadHighlight, ThreadHighlightKind, ThreadHighlightRun, ThreadHighlightSource } from '../schema/index.js';
4
+ import type { ThreadPriority, ThreadState } from './thread-title.types.js';
5
+ export interface ThreadActorInput {
6
+ actorType?: ThreadActorType;
7
+ actorId?: string | null;
8
+ actor?: {
9
+ actorType?: ThreadActorType;
10
+ actorId?: string | null;
11
+ };
12
+ }
13
+ export interface ThreadSnapshotMutationInput extends ThreadActorInput {
14
+ threadId: string;
15
+ workspaceId?: string | null;
16
+ title?: string | null;
17
+ priority?: ThreadPriority | null;
18
+ state?: ThreadState | null;
19
+ taskId?: string | null;
20
+ }
21
+ export interface ThreadSnapshot {
22
+ threadId: string;
23
+ workspaceId: string | null;
24
+ title: string | null;
25
+ priority: ThreadPriority | null;
26
+ state: ThreadState | null;
27
+ metadata: string | null;
28
+ titleLocked: boolean;
29
+ updatedAt: string;
30
+ }
31
+ export interface ThreadTimelineOptions {
32
+ beforeSeq?: number;
33
+ afterSeq?: number;
34
+ limit?: number;
35
+ }
36
+ export interface ThreadTimelineQuery extends ThreadTimelineOptions {
37
+ threadId: string;
38
+ workspaceId: string;
39
+ }
40
+ export interface ThreadTimeline {
41
+ items: ThreadEvent[];
42
+ latestSeq: number;
43
+ hasMoreOlder: boolean;
44
+ }
45
+ export interface CreateThreadHighlightInput extends ThreadActorInput {
46
+ threadId: string;
47
+ workspaceId: string;
48
+ source?: ThreadHighlightSource;
49
+ kind: ThreadHighlightKind;
50
+ text: string;
51
+ taskId?: string;
52
+ coversFromTaskId?: string;
53
+ coversToTaskId?: string;
54
+ fromTaskId?: string;
55
+ toTaskId?: string;
56
+ agentId?: string | null;
57
+ sourceTaskId?: string | null;
58
+ detectorVersion?: string | null;
59
+ contentFingerprint?: string | null;
60
+ idempotencyKey?: string;
61
+ id?: string;
62
+ }
63
+ export interface UpdateThreadHighlightInput extends ThreadActorInput {
64
+ threadId: string;
65
+ workspaceId: string;
66
+ highlightId: string;
67
+ expectedRevision: number;
68
+ text?: string;
69
+ kind?: ThreadHighlightKind;
70
+ coversFromTaskId?: string;
71
+ coversToTaskId?: string;
72
+ }
73
+ export interface DismissThreadHighlightInput extends ThreadActorInput {
74
+ threadId: string;
75
+ workspaceId: string;
76
+ highlightId: string;
77
+ expectedRevision: number;
78
+ }
79
+ export interface ListActiveHighlightsOptions {
80
+ taskId?: string;
81
+ coversFromTaskId?: string;
82
+ coversToTaskId?: string;
83
+ }
84
+ export interface ThreadHighlightEligibleTurn {
85
+ taskId: string;
86
+ prompt: string;
87
+ result: string;
88
+ status: string;
89
+ startedAt: string;
90
+ completedAt: string | null;
91
+ }
92
+ export interface CreateThreadHighlightRegenerationRunInput extends ThreadActorInput {
93
+ threadId: string;
94
+ workspaceId: string;
95
+ requestId: string;
96
+ detectorVersion: string;
97
+ runId?: string;
98
+ }
99
+ export interface CreateThreadHighlightRegenerationRunResult {
100
+ run: ThreadHighlightRun;
101
+ created: boolean;
102
+ }
103
+ export interface FailThreadHighlightRegenerationRunInput extends ThreadActorInput {
104
+ runId: string;
105
+ workspaceId?: string;
106
+ errorCode: string;
107
+ }
108
+ export interface ThreadHighlightRegenerationCandidate {
109
+ kind: ThreadHighlightKind;
110
+ text: string;
111
+ anchorTaskId: string;
112
+ coversFromTaskId: string;
113
+ coversToTaskId: string;
114
+ contentFingerprint?: string;
115
+ }
116
+ export interface CompleteThreadHighlightRegenerationInput extends ThreadActorInput {
117
+ runId: string;
118
+ threadId: string;
119
+ workspaceId: string;
120
+ detectorVersion: string;
121
+ agentId?: string | null;
122
+ candidates: readonly ThreadHighlightRegenerationCandidate[];
123
+ }
124
+ export interface CompleteThreadHighlightRegenerationResult {
125
+ run: ThreadHighlightRun;
126
+ deletedCount: number;
127
+ createdCount: number;
128
+ previousAutoCount: number;
129
+ newAutoCount: number;
130
+ }
131
+ export declare const THREAD_HIGHLIGHT_DELETION_REASON_REGENERATION_REPLACED: "regeneration_replaced";
132
+ export type ThreadHighlightDeletionReason = typeof THREAD_HIGHLIGHT_DELETION_REASON_REGENERATION_REPLACED;
133
+ export declare const THREAD_HIGHLIGHT_REGENERATION_NO_ELIGIBLE_TURNS: "THREAD_HIGHLIGHT_REGENERATION_NO_ELIGIBLE_TURNS";
134
+ export declare const THREAD_HIGHLIGHT_REGENERATION_INTERRUPTED: "THREAD_HIGHLIGHT_REGENERATION_INTERRUPTED";
135
+ export declare const THREAD_HIGHLIGHT_REGENERATION_DETECTION_FAILED: "THREAD_HIGHLIGHT_REGENERATION_DETECTION_FAILED";
136
+ export declare const THREAD_HIGHLIGHT_REGENERATION_COMMIT_FAILED: "THREAD_HIGHLIGHT_REGENERATION_COMMIT_FAILED";
137
+ export type ThreadHighlightRegenerationErrorCode = typeof THREAD_HIGHLIGHT_REGENERATION_NO_ELIGIBLE_TURNS | typeof THREAD_HIGHLIGHT_REGENERATION_INTERRUPTED | typeof THREAD_HIGHLIGHT_REGENERATION_DETECTION_FAILED | typeof THREAD_HIGHLIGHT_REGENERATION_COMMIT_FAILED | string;
138
+ export declare class ThreadHistoryConflictError extends RepositoryError {
139
+ readonly threadId: string;
140
+ readonly highlightId: string;
141
+ readonly expectedRevision: number;
142
+ readonly currentRevision: number;
143
+ constructor(threadId: string, highlightId: string, expectedRevision: number, currentRevision: number);
144
+ }
145
+ export declare class ThreadHighlightConflictError extends ThreadHistoryConflictError {
146
+ }
147
+ export declare class ThreadHighlightRegenerationConflictError extends RepositoryError {
148
+ readonly stableCode: "THREAD_HIGHLIGHT_REGENERATION_IN_PROGRESS";
149
+ readonly run: ThreadHighlightRun;
150
+ constructor(run: ThreadHighlightRun);
151
+ }
152
+ export declare class ThreadHistoryRepository extends BaseSqliteRepository {
153
+ private readonly dbPath?;
154
+ constructor(opts?: {
155
+ dbPath?: string;
156
+ dbRoot?: string;
157
+ });
158
+ resolveDbPath(): string;
159
+ private openHandle;
160
+ private findThread;
161
+ private findRegenerationRun;
162
+ resolveWorkspaceId(threadId: string): string | null;
163
+ getSnapshot(threadId: string, workspaceId?: string | null): ThreadSnapshot | null;
164
+ updateSnapshot(input: ThreadSnapshotMutationInput): ThreadSnapshot;
165
+ mutateSnapshot(input: ThreadSnapshotMutationInput): ThreadSnapshot;
166
+ updateThreadSnapshot(input: ThreadSnapshotMutationInput): ThreadSnapshot;
167
+ getLatestSeq(threadId: string, workspaceId?: string | null): number | null;
168
+ listCompletedThreadHighlightTurns(threadId: string, workspaceId: string): ThreadHighlightEligibleTurn[] | null;
169
+ createHighlightRegenerationRun(input: CreateThreadHighlightRegenerationRunInput): CreateThreadHighlightRegenerationRunResult;
170
+ beginHighlightRegenerationRun(input: CreateThreadHighlightRegenerationRunInput): CreateThreadHighlightRegenerationRunResult;
171
+ queueHighlightRegenerationRun(input: CreateThreadHighlightRegenerationRunInput): CreateThreadHighlightRegenerationRunResult;
172
+ getHighlightRegenerationRun(runId: string, workspaceId?: string): ThreadHighlightRun | null;
173
+ getHighlightRegenerationRunByRequest(threadId: string, workspaceId: string, requestId: string): ThreadHighlightRun | null;
174
+ findHighlightRegenerationRun(threadId: string, workspaceId: string, requestId: string): ThreadHighlightRun | null;
175
+ startHighlightRegenerationRun(runId: string, workspaceId?: string): ThreadHighlightRun;
176
+ startHighlightRegeneration(runId: string, workspaceId?: string): ThreadHighlightRun;
177
+ failHighlightRegenerationRun(input: FailThreadHighlightRegenerationRunInput): ThreadHighlightRun;
178
+ failHighlightRegeneration(input: FailThreadHighlightRegenerationRunInput): ThreadHighlightRun;
179
+ recoverInterruptedHighlightRegenerationRuns(errorCode?: string): number;
180
+ completeHighlightRegenerationRun(input: CompleteThreadHighlightRegenerationInput): CompleteThreadHighlightRegenerationResult;
181
+ completeHighlightRegeneration(input: CompleteThreadHighlightRegenerationInput): CompleteThreadHighlightRegenerationResult;
182
+ replaceAutoHighlightsAtomically(input: CompleteThreadHighlightRegenerationInput): CompleteThreadHighlightRegenerationResult;
183
+ listTimeline(query: ThreadTimelineQuery): ThreadTimeline | null;
184
+ listTimeline(threadId: string, workspaceId: string, options?: ThreadTimelineOptions): ThreadTimeline | null;
185
+ listEvents(threadId: string, workspaceId: string, options?: ThreadTimelineOptions): ThreadTimeline | null;
186
+ getTimeline(threadId: string, workspaceId: string, options?: ThreadTimelineOptions): ThreadTimeline | null;
187
+ createHighlight(input: CreateThreadHighlightInput): ThreadHighlight;
188
+ updateHighlight(input: UpdateThreadHighlightInput): ThreadHighlight;
189
+ dismissHighlight(input: DismissThreadHighlightInput): ThreadHighlight;
190
+ listActiveHighlights(threadId: string, workspaceId: string, options?: ListActiveHighlightsOptions): ThreadHighlight[] | null;
191
+ listHighlights(threadId: string, workspaceId: string, options?: ListActiveHighlightsOptions): ThreadHighlight[] | null;
192
+ getActiveHighlights(threadId: string, workspaceId: string, options?: ListActiveHighlightsOptions): ThreadHighlight[] | null;
193
+ }
@@ -0,0 +1,27 @@
1
+ export type ThreadOriginKind = 'human' | 'agent' | 'system';
2
+ export interface ThreadOriginRow {
3
+ origin: 'direct' | 'delegated';
4
+ delegatedByAgentId: string | null;
5
+ }
6
+ export interface RawThreadOriginRow {
7
+ task_id: string;
8
+ thread_id: string;
9
+ caller_agent_id: string | null;
10
+ parent_task_id: string | null;
11
+ schedule_id: unknown;
12
+ platform: string | null;
13
+ parent_thread_id: string | null;
14
+ parent_agent_id: string | null;
15
+ }
16
+ export interface RawThreadCreatorPointerRow {
17
+ thread_id: string;
18
+ created_by_kind: string | null;
19
+ created_by_id: string | null;
20
+ created_by_task_id: string | null;
21
+ creator_task_id: string | null;
22
+ creator_actor_kind: string | null;
23
+ creator_actor_id: string | null;
24
+ creator_pointer_unverified: number;
25
+ }
26
+ export declare function lineageThreadOrigin(row: RawThreadOriginRow): ThreadOriginRow;
27
+ export declare function resolveThreadOrigin(row: RawThreadCreatorPointerRow, pointerLineage?: RawThreadOriginRow, fallbackLineage?: RawThreadOriginRow): ThreadOriginRow | undefined;
@@ -0,0 +1,29 @@
1
+ export declare const THREAD_PRIORITIES: readonly ["urgent", "high", "medium", "low"];
2
+ export type ThreadPriority = (typeof THREAD_PRIORITIES)[number];
3
+ export declare const BUILTIN_THREAD_STATES: readonly ["investigating", "in-progress", "in-review", "on-hold", "done"];
4
+ export type BuiltinThreadState = (typeof BUILTIN_THREAD_STATES)[number];
5
+ export type StableThreadState = BuiltinThreadState | `c_${string}`;
6
+ export type LegacyThreadState = `custom:${string}`;
7
+ export type ThreadState = StableThreadState | LegacyThreadState;
8
+ export interface ThreadTitleMeta {
9
+ priority?: ThreadPriority;
10
+ state?: ThreadState;
11
+ }
12
+ export interface ThreadTitlePatch {
13
+ priority?: ThreadPriority | null;
14
+ state?: ThreadState | null;
15
+ }
16
+ export declare function isThreadPriority(value: unknown): value is ThreadPriority;
17
+ export declare function isThreadState(value: unknown): value is ThreadState;
18
+ export declare function customStateLabel(state: ThreadState): string | undefined;
19
+ export declare function hasThreadTitleKey(metadataJson: string | null | undefined): boolean;
20
+ export declare function readThreadTitleMeta(metadataJson: string | null | undefined): ThreadTitleMeta;
21
+ export declare function mergeThreadTitleMeta(metadataJson: string | null | undefined, patch: ThreadTitlePatch): string | null;
22
+ export declare function threadTitleSearchHaystack(meta: ThreadTitleMeta, labelNames?: ReadonlyMap<string, string>): string;
23
+ export interface ThreadTitleFilter {
24
+ values: Set<string>;
25
+ includeNone: boolean;
26
+ }
27
+ export declare function parseThreadPriorityFilter(raw: string | undefined): ThreadTitleFilter | undefined;
28
+ export declare function parseThreadStateFilter(raw: string | undefined): ThreadTitleFilter | undefined;
29
+ export declare function matchesThreadTitleFilter(current: string | undefined, filter: ThreadTitleFilter | undefined): boolean;