@crewx/sdk 0.9.0-rc.221 → 0.9.0-rc.222

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.
@@ -32,6 +32,7 @@ export interface InitSidebarResult {
32
32
  export interface OpenSidebarTabOptions {
33
33
  groupId?: string;
34
34
  beforeThreadId?: string | null;
35
+ afterThreadId?: string;
35
36
  }
36
37
  export interface MoveSidebarTabInput {
37
38
  section: 'pinned' | 'group' | 'ungrouped';
@@ -0,0 +1,106 @@
1
+ import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
+ export declare const THREAD_BRANCH_CARRY_MAX_CHARS = 12000;
3
+ export declare const THREAD_BRANCH_CARRY_RECENT_TURNS = 4;
4
+ export declare const THREAD_BRANCH_SOURCE_MAX_BYTES: number;
5
+ export declare const THREAD_BRANCH_SNAPSHOT_VERSION = 1;
6
+ export type ThreadBranchStatus = 'active' | 'undone';
7
+ export type ThreadBranchErrorCode = 'PARENT_NO_COMPLETED_TURN' | 'PARENT_NOT_FOUND' | 'BRANCH_REQUEST_CONFLICT' | 'BRANCH_SOURCE_TOO_LARGE' | 'CORRUPT_BRANCH' | 'INVALID_INPUT' | 'DATABASE_ERROR';
8
+ export declare class ThreadBranchRepositoryError extends Error {
9
+ readonly code: ThreadBranchErrorCode;
10
+ constructor(code: ThreadBranchErrorCode, message?: string, cause?: unknown);
11
+ }
12
+ export interface ThreadBranchAttachment {
13
+ readonly filename: string;
14
+ readonly size: number;
15
+ }
16
+ export interface ThreadBranchCarryTurn {
17
+ readonly taskId: string;
18
+ readonly user: string;
19
+ readonly assistant: string;
20
+ readonly attachments: readonly ThreadBranchAttachment[];
21
+ readonly truncated?: boolean;
22
+ }
23
+ export interface ThreadBranchCarrySnapshot {
24
+ readonly version: 1;
25
+ readonly turns: readonly ThreadBranchCarryTurn[];
26
+ readonly turnsCount: number;
27
+ readonly chars: number;
28
+ readonly truncated: boolean;
29
+ }
30
+ export interface ThreadBranchSourceMessage {
31
+ readonly taskId: string;
32
+ readonly text: string;
33
+ readonly isAssistant: boolean;
34
+ readonly timestamp?: number;
35
+ readonly files?: readonly ThreadBranchAttachment[];
36
+ }
37
+ export interface ThreadBranchSourceSnapshot {
38
+ readonly version: 1;
39
+ readonly messages: readonly ThreadBranchSourceMessage[];
40
+ readonly truncated_before_task_id?: string;
41
+ }
42
+ export interface ThreadBranchSummary {
43
+ readonly id: string;
44
+ readonly workspaceId: string;
45
+ readonly parentThreadId: string;
46
+ readonly childThreadId: string;
47
+ readonly childTitle?: string;
48
+ readonly branchPointTaskId: string;
49
+ readonly branchAnswerNo: number;
50
+ readonly firstTaskId: string;
51
+ readonly parentTitle: string;
52
+ readonly actorId: string;
53
+ readonly requestId: string;
54
+ readonly carriedTurns: number;
55
+ readonly carriedChars: number;
56
+ readonly carriedTruncated: boolean;
57
+ readonly status: ThreadBranchStatus;
58
+ readonly createdAt: string;
59
+ readonly undoneAt?: string;
60
+ }
61
+ export interface ThreadBranchActiveContext {
62
+ readonly branch: ThreadBranchSummary;
63
+ readonly carry: ThreadBranchCarrySnapshot;
64
+ readonly source: ThreadBranchSourceSnapshot;
65
+ }
66
+ export interface ThreadBranchCreateResult {
67
+ readonly branchId: string;
68
+ readonly childThreadId: string;
69
+ readonly firstTaskId: string;
70
+ readonly taskId: string;
71
+ readonly branchPointTaskId: string;
72
+ readonly branchAnswerNo: number;
73
+ readonly carriedTurns: number;
74
+ readonly carriedChars: number;
75
+ readonly carriedTruncated: boolean;
76
+ readonly created: boolean;
77
+ }
78
+ export interface CreateThreadBranchInput {
79
+ readonly workspaceId: string;
80
+ readonly parentThreadId: string;
81
+ readonly actorId: string;
82
+ readonly requestId: string;
83
+ readonly prompt: string;
84
+ readonly model?: string;
85
+ readonly provider?: string;
86
+ readonly effort?: string;
87
+ readonly attachments?: readonly ThreadBranchAttachment[];
88
+ readonly afterCommit?: (result: ThreadBranchCreateResult) => void | Promise<void>;
89
+ }
90
+ export declare function neutralizeThreadBranchText(value: string): string;
91
+ export declare class ThreadBranchRepository extends BaseSqliteRepository {
92
+ private readonly dbPath?;
93
+ constructor(opts?: {
94
+ dbPath?: string;
95
+ dbRoot?: string;
96
+ });
97
+ resolveDbPath(): string;
98
+ private openHandle;
99
+ create(input: CreateThreadBranchInput): Promise<ThreadBranchCreateResult>;
100
+ getByChild(childThreadId: string): ThreadBranchSummary | undefined;
101
+ listByParent(parentThreadId: string): ThreadBranchSummary[];
102
+ getCarry(branchId: string): ThreadBranchCarrySnapshot | undefined;
103
+ getSource(branchId: string): ThreadBranchSourceSnapshot | undefined;
104
+ getActiveContextByChild(childThreadId: string): ThreadBranchActiveContext | undefined;
105
+ markUndone(branchId: string): boolean;
106
+ }
@@ -7,6 +7,7 @@ export * from './thread-creator-unverified.js';
7
7
  export * from './spans.js';
8
8
  export * from './tool-calls.js';
9
9
  export * from './thread-boxes.js';
10
+ export * from './thread-branches.js';
10
11
  export * from './request-logs.js';
11
12
  export * from './request-log-daily.js';
12
13
  export * from './usage-limit-snapshots.js';
@@ -0,0 +1,424 @@
1
+ export declare const thread_branches: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "thread_branches";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "thread_branches";
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: "thread_branches";
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
+ parent_thread_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "parent_thread_id";
45
+ tableName: "thread_branches";
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
+ child_thread_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "child_thread_id";
64
+ tableName: "thread_branches";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
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
+ branch_point_task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "branch_point_task_id";
83
+ tableName: "thread_branches";
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
+ branch_answer_no: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "branch_answer_no";
102
+ tableName: "thread_branches";
103
+ dataType: "number";
104
+ columnType: "SQLiteInteger";
105
+ data: number;
106
+ driverParam: number;
107
+ notNull: true;
108
+ hasDefault: false;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: undefined;
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {}>;
117
+ first_task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
118
+ name: "first_task_id";
119
+ tableName: "thread_branches";
120
+ dataType: "string";
121
+ columnType: "SQLiteText";
122
+ data: string;
123
+ driverParam: string;
124
+ notNull: true;
125
+ hasDefault: false;
126
+ isPrimaryKey: false;
127
+ isAutoincrement: false;
128
+ hasRuntimeDefault: false;
129
+ enumValues: [string, ...string[]];
130
+ baseColumn: never;
131
+ identity: undefined;
132
+ generated: undefined;
133
+ }, {}, {
134
+ length: number | undefined;
135
+ }>;
136
+ parent_title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
137
+ name: "parent_title";
138
+ tableName: "thread_branches";
139
+ dataType: "string";
140
+ columnType: "SQLiteText";
141
+ data: string;
142
+ driverParam: string;
143
+ notNull: true;
144
+ hasDefault: false;
145
+ isPrimaryKey: false;
146
+ isAutoincrement: false;
147
+ hasRuntimeDefault: false;
148
+ enumValues: [string, ...string[]];
149
+ baseColumn: never;
150
+ identity: undefined;
151
+ generated: undefined;
152
+ }, {}, {
153
+ length: number | undefined;
154
+ }>;
155
+ actor_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
+ name: "actor_id";
157
+ tableName: "thread_branches";
158
+ dataType: "string";
159
+ columnType: "SQLiteText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: true;
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
+ request_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "request_id";
176
+ tableName: "thread_branches";
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
+ payload_hash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
194
+ name: "payload_hash";
195
+ tableName: "thread_branches";
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
+ snapshot_version: import("drizzle-orm/sqlite-core").SQLiteColumn<{
213
+ name: "snapshot_version";
214
+ tableName: "thread_branches";
215
+ dataType: "number";
216
+ columnType: "SQLiteInteger";
217
+ data: number;
218
+ driverParam: number;
219
+ notNull: true;
220
+ hasDefault: false;
221
+ isPrimaryKey: false;
222
+ isAutoincrement: false;
223
+ hasRuntimeDefault: false;
224
+ enumValues: undefined;
225
+ baseColumn: never;
226
+ identity: undefined;
227
+ generated: undefined;
228
+ }, {}, {}>;
229
+ carry_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
230
+ name: "carry_json";
231
+ tableName: "thread_branches";
232
+ dataType: "string";
233
+ columnType: "SQLiteText";
234
+ data: string;
235
+ driverParam: string;
236
+ notNull: true;
237
+ hasDefault: false;
238
+ isPrimaryKey: false;
239
+ isAutoincrement: false;
240
+ hasRuntimeDefault: false;
241
+ enumValues: [string, ...string[]];
242
+ baseColumn: never;
243
+ identity: undefined;
244
+ generated: undefined;
245
+ }, {}, {
246
+ length: number | undefined;
247
+ }>;
248
+ carried_turns: import("drizzle-orm/sqlite-core").SQLiteColumn<{
249
+ name: "carried_turns";
250
+ tableName: "thread_branches";
251
+ dataType: "number";
252
+ columnType: "SQLiteInteger";
253
+ data: number;
254
+ driverParam: number;
255
+ notNull: true;
256
+ hasDefault: false;
257
+ isPrimaryKey: false;
258
+ isAutoincrement: false;
259
+ hasRuntimeDefault: false;
260
+ enumValues: undefined;
261
+ baseColumn: never;
262
+ identity: undefined;
263
+ generated: undefined;
264
+ }, {}, {}>;
265
+ carried_chars: import("drizzle-orm/sqlite-core").SQLiteColumn<{
266
+ name: "carried_chars";
267
+ tableName: "thread_branches";
268
+ dataType: "number";
269
+ columnType: "SQLiteInteger";
270
+ data: number;
271
+ driverParam: number;
272
+ notNull: true;
273
+ hasDefault: false;
274
+ isPrimaryKey: false;
275
+ isAutoincrement: false;
276
+ hasRuntimeDefault: false;
277
+ enumValues: undefined;
278
+ baseColumn: never;
279
+ identity: undefined;
280
+ generated: undefined;
281
+ }, {}, {}>;
282
+ carried_truncated: import("drizzle-orm/sqlite-core").SQLiteColumn<{
283
+ name: "carried_truncated";
284
+ tableName: "thread_branches";
285
+ dataType: "number";
286
+ columnType: "SQLiteInteger";
287
+ data: number;
288
+ driverParam: number;
289
+ notNull: true;
290
+ hasDefault: true;
291
+ isPrimaryKey: false;
292
+ isAutoincrement: false;
293
+ hasRuntimeDefault: false;
294
+ enumValues: undefined;
295
+ baseColumn: never;
296
+ identity: undefined;
297
+ generated: undefined;
298
+ }, {}, {}>;
299
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
300
+ name: "status";
301
+ tableName: "thread_branches";
302
+ dataType: "string";
303
+ columnType: "SQLiteText";
304
+ data: "active" | "undone";
305
+ driverParam: string;
306
+ notNull: true;
307
+ hasDefault: true;
308
+ isPrimaryKey: false;
309
+ isAutoincrement: false;
310
+ hasRuntimeDefault: false;
311
+ enumValues: ["active", "undone"];
312
+ baseColumn: never;
313
+ identity: undefined;
314
+ generated: undefined;
315
+ }, {}, {
316
+ length: number | undefined;
317
+ }>;
318
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
319
+ name: "created_at";
320
+ tableName: "thread_branches";
321
+ dataType: "string";
322
+ columnType: "SQLiteText";
323
+ data: string;
324
+ driverParam: string;
325
+ notNull: true;
326
+ hasDefault: false;
327
+ isPrimaryKey: false;
328
+ isAutoincrement: false;
329
+ hasRuntimeDefault: false;
330
+ enumValues: [string, ...string[]];
331
+ baseColumn: never;
332
+ identity: undefined;
333
+ generated: undefined;
334
+ }, {}, {
335
+ length: number | undefined;
336
+ }>;
337
+ undone_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
338
+ name: "undone_at";
339
+ tableName: "thread_branches";
340
+ dataType: "string";
341
+ columnType: "SQLiteText";
342
+ data: string;
343
+ driverParam: string;
344
+ notNull: false;
345
+ hasDefault: false;
346
+ isPrimaryKey: false;
347
+ isAutoincrement: false;
348
+ hasRuntimeDefault: false;
349
+ enumValues: [string, ...string[]];
350
+ baseColumn: never;
351
+ identity: undefined;
352
+ generated: undefined;
353
+ }, {}, {
354
+ length: number | undefined;
355
+ }>;
356
+ };
357
+ dialect: "sqlite";
358
+ }>;
359
+ export declare const thread_branch_sources: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
360
+ name: "thread_branch_sources";
361
+ schema: undefined;
362
+ columns: {
363
+ branch_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
364
+ name: "branch_id";
365
+ tableName: "thread_branch_sources";
366
+ dataType: "string";
367
+ columnType: "SQLiteText";
368
+ data: string;
369
+ driverParam: string;
370
+ notNull: true;
371
+ hasDefault: false;
372
+ isPrimaryKey: true;
373
+ isAutoincrement: false;
374
+ hasRuntimeDefault: false;
375
+ enumValues: [string, ...string[]];
376
+ baseColumn: never;
377
+ identity: undefined;
378
+ generated: undefined;
379
+ }, {}, {
380
+ length: number | undefined;
381
+ }>;
382
+ source_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
383
+ name: "source_json";
384
+ tableName: "thread_branch_sources";
385
+ dataType: "string";
386
+ columnType: "SQLiteText";
387
+ data: string;
388
+ driverParam: string;
389
+ notNull: true;
390
+ hasDefault: false;
391
+ isPrimaryKey: false;
392
+ isAutoincrement: false;
393
+ hasRuntimeDefault: false;
394
+ enumValues: [string, ...string[]];
395
+ baseColumn: never;
396
+ identity: undefined;
397
+ generated: undefined;
398
+ }, {}, {
399
+ length: number | undefined;
400
+ }>;
401
+ bytes: import("drizzle-orm/sqlite-core").SQLiteColumn<{
402
+ name: "bytes";
403
+ tableName: "thread_branch_sources";
404
+ dataType: "number";
405
+ columnType: "SQLiteInteger";
406
+ data: number;
407
+ driverParam: number;
408
+ notNull: true;
409
+ hasDefault: false;
410
+ isPrimaryKey: false;
411
+ isAutoincrement: false;
412
+ hasRuntimeDefault: false;
413
+ enumValues: undefined;
414
+ baseColumn: never;
415
+ identity: undefined;
416
+ generated: undefined;
417
+ }, {}, {}>;
418
+ };
419
+ dialect: "sqlite";
420
+ }>;
421
+ export type ThreadBranchRow = typeof thread_branches.$inferSelect;
422
+ export type NewThreadBranch = typeof thread_branches.$inferInsert;
423
+ export type ThreadBranchSourceRow = typeof thread_branch_sources.$inferSelect;
424
+ export type NewThreadBranchSource = typeof thread_branch_sources.$inferInsert;
@@ -6,7 +6,9 @@ interface UiInstanceStoreTestHooks {
6
6
  bumpRevisionBeforeCas?: boolean;
7
7
  beforeOpenRead?: () => void;
8
8
  bumpRevisionBeforeRepinCas?: boolean;
9
+ changeDefinitionHashBeforeRepinCas?: string;
9
10
  afterRepinGenerationRead?: () => void;
11
+ changeGrantsBeforeGrantReconcileCas?: boolean;
10
12
  }
11
13
  export interface ReservationInput {
12
14
  instanceId: string;
@@ -27,6 +29,7 @@ export interface UiInstanceRepinInput {
27
29
  readonly appId: string;
28
30
  readonly currentDefinition: UiDefinition;
29
31
  readonly lineage: readonly UiDefinitionLineageEntry[];
32
+ readonly grants: readonly string[];
30
33
  readonly observedRevision: number;
31
34
  readonly hasSkillActions: boolean;
32
35
  readonly now: number;
@@ -36,6 +39,7 @@ export interface UiInstanceRepinWorkspaceGenerationInput {
36
39
  readonly workspaceId: string;
37
40
  readonly appId: string;
38
41
  readonly currentDefinition: UiDefinition;
42
+ readonly grants: readonly string[];
39
43
  readonly hasSkillActions: boolean;
40
44
  readonly now: number;
41
45
  }
@@ -127,6 +131,7 @@ export declare class UiInstanceStore {
127
131
  close(): void;
128
132
  repinInstance(input: UiInstanceRepinInput): UiInstanceRepinResult | null;
129
133
  repinWorkspaceApp(input: UiInstanceRepinWorkspaceInput): UiInstanceRepinResult[];
134
+ reconcileGrants(instanceId: string, expectedGrants: readonly string[], observedRevision: number): boolean;
130
135
  archiveDefinition(definition: UiDefinition, now: number): void;
131
136
  getArchivedDefinition(definitionHash: string): UiDefinition | null;
132
137
  repinWorkspaceGeneration(input: UiInstanceRepinWorkspaceGenerationInput): UiInstanceRepinResult[];
@@ -1,4 +1,4 @@
1
- export type EntityPrefix = 'tsk' | 'thd' | 'msg' | 'box' | 'prj' | 'mem' | 'spn' | 'cron' | 'wbs' | 'job' | 'tcl' | 'req' | 'ws' | 'wfr' | 'ntf' | 'sug' | 'brd' | 'pjc' | 'pje' | 'the' | 'thl' | 'thr' | 'uls' | 'crun';
1
+ export type EntityPrefix = 'tsk' | 'thd' | 'msg' | 'box' | 'prj' | 'mem' | 'spn' | 'cron' | 'wbs' | 'job' | 'tcl' | 'req' | 'ws' | 'wfr' | 'ntf' | 'sug' | 'brd' | 'pjc' | 'pje' | 'the' | 'thl' | 'thr' | 'uls' | 'brn' | 'crun';
2
2
  export type PrefixedId<P extends EntityPrefix> = `${P}_${string}`;
3
3
  export declare function generateId<P extends EntityPrefix>(prefix: P): PrefixedId<P>;
4
4
  export declare function generateFingerprint<P extends EntityPrefix>(prefix: P, input: string): PrefixedId<P>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/sdk",
3
- "version": "0.9.0-rc.221",
3
+ "version": "0.9.0-rc.222",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"
@@ -398,6 +398,9 @@ layouts:
398
398
  {{#if thread_state.rendered}}
399
399
  {{{thread_state.rendered}}}
400
400
  {{/if}}
401
+ {{#if branchContext.rendered}}
402
+ {{{branchContext.rendered}}}
403
+ {{/if}}
401
404
  {{#if semanticContinuity.rendered}}
402
405
  {{{semanticContinuity.rendered}}}
403
406
  {{/if}}
@@ -446,6 +449,11 @@ layouts:
446
449
  {{/if}}
447
450
  {{#if activity_log}}{{{activity_log}}}{{/if}}
448
451
  </message>
452
+ {{#if branch_markers}}
453
+ {{#each branch_markers}}
454
+ {{{this}}}
455
+ {{/each}}
456
+ {{/if}}
449
457
  {{/if}}
450
458
  {{/each}}
451
459
  {{/formatConversation}}