@crewx/sdk 0.9.0-rc.91 → 0.9.0-rc.92

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.
@@ -0,0 +1,64 @@
1
+ import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
+ export declare const STORAGE_METADATA_KINDS: readonly ["taskLogs", "requestLogs", "prompts", "threadsLedger", "tasksLedger"];
3
+ export declare const STORAGE_METADATA_UNITS: readonly ["task_log_events", "request_logs", "tasks", "threads"];
4
+ export type StorageMetadataKind = (typeof STORAGE_METADATA_KINDS)[number];
5
+ export type StorageMetadataUnit = (typeof STORAGE_METADATA_UNITS)[number];
6
+ export type StorageMetadataAge = 'over6m' | 'm3to6' | 'm1to3' | 'recent1m';
7
+ export interface StorageMetadataAggregateRow {
8
+ sourceKind: StorageMetadataKind;
9
+ age: StorageMetadataAge;
10
+ count: number;
11
+ bytes: number;
12
+ }
13
+ export interface StorageMetadataCutoffs {
14
+ cutoff6: string;
15
+ cutoff3: string;
16
+ cutoff1: string;
17
+ }
18
+ export interface StorageMetadataUnitReadiness {
19
+ cursorRowid: number;
20
+ endRowid: number | null;
21
+ complete: boolean;
22
+ }
23
+ export interface StorageMetadataReadiness {
24
+ ready: boolean;
25
+ units: Record<StorageMetadataUnit, StorageMetadataUnitReadiness>;
26
+ }
27
+ export interface StorageMetadataSnapshot {
28
+ readiness: StorageMetadataReadiness;
29
+ rows: StorageMetadataAggregateRow[];
30
+ }
31
+ export interface StorageMetadataBatchResult {
32
+ unit: StorageMetadataUnit | null;
33
+ rowsScanned: number;
34
+ rowsWritten: number;
35
+ cursorRowid: number;
36
+ complete: boolean;
37
+ ready: boolean;
38
+ elapsedMs: number;
39
+ }
40
+ export interface StorageMetadataVerificationMismatch {
41
+ sourceId: string;
42
+ metaBytes: number;
43
+ sourceBytes: number;
44
+ }
45
+ export declare class StorageMetadataRepository extends BaseSqliteRepository {
46
+ private readonly dbPath?;
47
+ constructor(opts?: {
48
+ dbPath?: string;
49
+ dbRoot?: string;
50
+ });
51
+ resolveDbPath(): string;
52
+ private hasReadableDatabase;
53
+ private openWritableDatabase;
54
+ private readReadiness;
55
+ private readAggregate;
56
+ getReadiness(): StorageMetadataReadiness;
57
+ aggregate(cutoffs: StorageMetadataCutoffs): StorageMetadataAggregateRow[];
58
+ readSnapshot(cutoffs: StorageMetadataCutoffs): StorageMetadataSnapshot;
59
+ runBackfillBatch(opts?: {
60
+ batchSize?: number;
61
+ unit?: StorageMetadataUnit;
62
+ }): StorageMetadataBatchResult;
63
+ verifySample(kind: StorageMetadataKind, limit: number): StorageMetadataVerificationMismatch[];
64
+ }
@@ -26,6 +26,12 @@ export interface WorkflowParentTaskRow {
26
26
  started_at: string;
27
27
  metadata: string | null;
28
28
  }
29
+ export type WorkflowParentTaskKind = 'workflow_card' | 'workflow_ui_instance';
30
+ export interface WorkflowParentTaskLookup {
31
+ workspaceId: string;
32
+ workflowRunId: string;
33
+ kind: WorkflowParentTaskKind;
34
+ }
29
35
  export interface AgentUsageRow {
30
36
  agentId: string;
31
37
  workspaceId: string | null;
@@ -151,6 +157,14 @@ export declare class TaskRepository extends BaseSqliteRepository {
151
157
  runEpoch?: number | null;
152
158
  partialResultRecovered?: boolean;
153
159
  }): void;
160
+ updateTaskLifecycle(opts: {
161
+ id: string;
162
+ status: string;
163
+ error: string | null;
164
+ completedAt: string | null;
165
+ durationMs: number | null;
166
+ workspaceId: string;
167
+ }): void;
154
168
  appendLog(taskId: string, entry: {
155
169
  timestamp: string;
156
170
  level: string;
@@ -188,6 +202,7 @@ export declare class TaskRepository extends BaseSqliteRepository {
188
202
  private parseWorkflowCardMetadata;
189
203
  private extractThreadIdFromCommand;
190
204
  findRunningWorkflowParentTasks(): WorkflowParentTaskRow[];
205
+ findWorkflowParentTask(opts: WorkflowParentTaskLookup): WorkflowParentTaskRow | undefined;
191
206
  batchFetchWorkflowCards(threadIds: string[], workspaceId?: string): Map<string, WorkflowCardRow>;
192
207
  findAllTasks(params: {
193
208
  workspaceId?: string;
@@ -15,3 +15,4 @@ export * from './ui-action-receipts.js';
15
15
  export * from './projects.js';
16
16
  export * from './common-codes.js';
17
17
  export * from './thread-history.js';
18
+ export * from './storage-metadata.js';
@@ -0,0 +1,181 @@
1
+ export declare const storage_metadata: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "storage_metadata";
3
+ schema: undefined;
4
+ columns: {
5
+ source_kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "source_kind";
7
+ tableName: "storage_metadata";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: false;
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
+ source_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "source_id";
26
+ tableName: "storage_metadata";
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
+ utc_ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "utc_ts";
45
+ tableName: "storage_metadata";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: false;
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
+ bytes: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "bytes";
64
+ tableName: "storage_metadata";
65
+ dataType: "number";
66
+ columnType: "SQLiteInteger";
67
+ data: number;
68
+ driverParam: number;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: undefined;
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {}>;
79
+ };
80
+ dialect: "sqlite";
81
+ }>;
82
+ export declare const storage_metadata_state: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
83
+ name: "storage_metadata_state";
84
+ schema: undefined;
85
+ columns: {
86
+ unit: import("drizzle-orm/sqlite-core").SQLiteColumn<{
87
+ name: "unit";
88
+ tableName: "storage_metadata_state";
89
+ dataType: "string";
90
+ columnType: "SQLiteText";
91
+ data: string;
92
+ driverParam: string;
93
+ notNull: true;
94
+ hasDefault: false;
95
+ isPrimaryKey: true;
96
+ isAutoincrement: false;
97
+ hasRuntimeDefault: false;
98
+ enumValues: [string, ...string[]];
99
+ baseColumn: never;
100
+ identity: undefined;
101
+ generated: undefined;
102
+ }, {}, {
103
+ length: number | undefined;
104
+ }>;
105
+ cursor_rowid: import("drizzle-orm/sqlite-core").SQLiteColumn<{
106
+ name: "cursor_rowid";
107
+ tableName: "storage_metadata_state";
108
+ dataType: "number";
109
+ columnType: "SQLiteInteger";
110
+ data: number;
111
+ driverParam: number;
112
+ notNull: true;
113
+ hasDefault: true;
114
+ isPrimaryKey: false;
115
+ isAutoincrement: false;
116
+ hasRuntimeDefault: false;
117
+ enumValues: undefined;
118
+ baseColumn: never;
119
+ identity: undefined;
120
+ generated: undefined;
121
+ }, {}, {}>;
122
+ end_rowid: import("drizzle-orm/sqlite-core").SQLiteColumn<{
123
+ name: "end_rowid";
124
+ tableName: "storage_metadata_state";
125
+ dataType: "number";
126
+ columnType: "SQLiteInteger";
127
+ data: number;
128
+ driverParam: number;
129
+ notNull: false;
130
+ hasDefault: false;
131
+ isPrimaryKey: false;
132
+ isAutoincrement: false;
133
+ hasRuntimeDefault: false;
134
+ enumValues: undefined;
135
+ baseColumn: never;
136
+ identity: undefined;
137
+ generated: undefined;
138
+ }, {}, {}>;
139
+ complete: import("drizzle-orm/sqlite-core").SQLiteColumn<{
140
+ name: "complete";
141
+ tableName: "storage_metadata_state";
142
+ dataType: "number";
143
+ columnType: "SQLiteInteger";
144
+ data: number;
145
+ driverParam: number;
146
+ notNull: true;
147
+ hasDefault: true;
148
+ isPrimaryKey: false;
149
+ isAutoincrement: false;
150
+ hasRuntimeDefault: false;
151
+ enumValues: undefined;
152
+ baseColumn: never;
153
+ identity: undefined;
154
+ generated: undefined;
155
+ }, {}, {}>;
156
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
157
+ name: "updated_at";
158
+ tableName: "storage_metadata_state";
159
+ dataType: "string";
160
+ columnType: "SQLiteText";
161
+ data: string;
162
+ driverParam: string;
163
+ notNull: true;
164
+ hasDefault: false;
165
+ isPrimaryKey: false;
166
+ isAutoincrement: false;
167
+ hasRuntimeDefault: false;
168
+ enumValues: [string, ...string[]];
169
+ baseColumn: never;
170
+ identity: undefined;
171
+ generated: undefined;
172
+ }, {}, {
173
+ length: number | undefined;
174
+ }>;
175
+ };
176
+ dialect: "sqlite";
177
+ }>;
178
+ export type StorageMetadataRow = typeof storage_metadata.$inferSelect;
179
+ export type NewStorageMetadataRow = typeof storage_metadata.$inferInsert;
180
+ export type StorageMetadataStateRow = typeof storage_metadata_state.$inferSelect;
181
+ export type NewStorageMetadataStateRow = typeof storage_metadata_state.$inferInsert;
@@ -3,4 +3,6 @@ export { resolveUiEffectiveCapabilities } from './types.js';
3
3
  export { UiRuntimeError } from './errors.js';
4
4
  export type { UiRuntimeErrorCode } from './errors.js';
5
5
  export { hashUiDefinition } from './definition.js';
6
+ export { UiInstanceStore, openUiInstanceReadStore } from './store.js';
7
+ export type { UiAuditSnapshotInput, UiInstanceReadStore } from './store.js';
6
8
  export { createUiRuntimeForTest, createUiServerRuntime } from './runtime.js';
@@ -28,7 +28,19 @@ export interface ExternalReservation {
28
28
  instance: UiInstance;
29
29
  receipt: ActionReceipt;
30
30
  reservedRevision: number;
31
+ reservationMarker: number;
31
32
  }
33
+ export interface UiAuditSnapshotInput {
34
+ instanceId: string;
35
+ workspaceId: string;
36
+ updatedAt: number;
37
+ state: JsonObject;
38
+ }
39
+ export interface UiInstanceReadStore {
40
+ get(instanceId: string): UiInstance | null;
41
+ close(): void;
42
+ }
43
+ export declare function openUiInstanceReadStore(dbPath?: string): UiInstanceReadStore;
32
44
  export declare class UiInstanceStore {
33
45
  private readonly handle;
34
46
  private readonly db;
@@ -49,12 +61,14 @@ export declare class UiInstanceStore {
49
61
  now: number;
50
62
  }): UiInstance;
51
63
  get(instanceId: string): UiInstance | null;
64
+ updateAuditSnapshot(input: UiAuditSnapshotInput): UiInstance | null;
52
65
  getReceipt(instanceId: string, requestId: string): ActionReceipt | null;
53
66
  runStateOnly(reservation: ReservationInput, handler: StateHandlerExecution['handle']): ActionReceipt;
54
67
  reserveExternal(reservation: ReservationInput): ExternalReservation;
55
68
  settleExternal(input: {
56
69
  reservation: ReservationInput;
57
70
  reservedRevision: number;
71
+ reservationMarker: number;
58
72
  outcome: ActionReceiptOutcome;
59
73
  state: JsonObject;
60
74
  result: JsonObject | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/sdk",
3
- "version": "0.9.0-rc.91",
3
+ "version": "0.9.0-rc.92",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"
@@ -1,13 +0,0 @@
1
- export interface ThreadTitleCommonCodeMigrationOptions {
2
- dbPath?: string;
3
- dbRoot?: string;
4
- configuredLabels?: readonly string[];
5
- }
6
- export interface ThreadTitleCommonCodeMigrationResult {
7
- migratedRows: number;
8
- createdCodes: number;
9
- remainingCustomReferences: number;
10
- orphanReferences: number;
11
- }
12
- export declare function migrateLegacyThreadTitleCommonCodes(options?: ThreadTitleCommonCodeMigrationOptions): ThreadTitleCommonCodeMigrationResult;
13
- export declare const migrateThreadTitleCommonCodes: typeof migrateLegacyThreadTitleCommonCodes;