t3code-cli 0.7.0 → 0.9.0

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 (82) hide show
  1. package/README.md +90 -35
  2. package/dist/application.js +1 -1
  3. package/dist/auth.js +1 -2
  4. package/dist/bin.js +241 -45
  5. package/dist/cli.js +1 -1
  6. package/dist/config.js +1 -3
  7. package/dist/connection.js +1 -4
  8. package/dist/index.js +1 -4
  9. package/dist/layout.js +1 -1
  10. package/dist/orchestration.js +1 -1
  11. package/dist/rpc.js +1 -1
  12. package/dist/runtime.js +1 -2
  13. package/dist/scope.js +1 -1
  14. package/dist/shared.js +85492 -0
  15. package/dist/src/application/layer.d.ts +86 -2
  16. package/dist/src/application/models.d.ts +1 -0
  17. package/dist/src/application/projects.d.ts +10 -1
  18. package/dist/src/application/service.d.ts +30 -1
  19. package/dist/src/application/shell-sequence.d.ts +9 -0
  20. package/dist/src/application/thread-commands.d.ts +27 -1
  21. package/dist/src/application/thread-wait.d.ts +9 -0
  22. package/dist/src/application/threads.d.ts +102 -2
  23. package/dist/src/cli-path/layer.d.ts +3 -0
  24. package/dist/src/cli-path/service.d.ts +8 -0
  25. package/dist/src/domain/helpers.d.ts +9 -0
  26. package/dist/src/domain/model-config.d.ts +3 -0
  27. package/dist/src/domain/thread-activities.d.ts +14 -0
  28. package/dist/src/domain/thread-lifecycle.d.ts +10 -0
  29. package/dist/src/orchestration/layer.d.ts +215 -0
  30. package/dist/src/rpc/layer.d.ts +466 -0
  31. package/dist/src/rpc/ws-group.d.ts +142 -0
  32. package/dist/src/runtime/layer.d.ts +1 -1
  33. package/dist/t3tools.js +2 -2
  34. package/dist/upstream-t3code/packages/contracts/src/environmentHttp.d.ts +33 -10
  35. package/dist/upstream-t3code/packages/contracts/src/ipc.d.ts +6 -0
  36. package/dist/upstream-t3code/packages/contracts/src/orchestration.d.ts +657 -1
  37. package/dist/upstream-t3code/packages/contracts/src/provider.d.ts +14 -0
  38. package/dist/upstream-t3code/packages/contracts/src/providerRuntime.d.ts +175 -1
  39. package/dist/upstream-t3code/packages/contracts/src/rpc.d.ts +492 -0
  40. package/dist/upstream-t3code/packages/contracts/src/server.d.ts +45 -0
  41. package/dist/upstream-t3code/packages/contracts/src/settings.d.ts +21 -0
  42. package/dist/upstream-t3code/packages/contracts/src/terminal.d.ts +6 -3
  43. package/package.json +2 -2
  44. package/src/application/service.ts +32 -0
  45. package/src/application/thread-commands.ts +45 -0
  46. package/src/application/threads.ts +100 -1
  47. package/src/cli/error.ts +15 -0
  48. package/src/cli/message-input.ts +30 -0
  49. package/src/cli/thread-format.ts +47 -0
  50. package/src/cli/thread.ts +8 -0
  51. package/src/cli/threads/approve.ts +61 -0
  52. package/src/cli/threads/archive.ts +18 -3
  53. package/src/cli/threads/callback.ts +92 -0
  54. package/src/cli/threads/respond.ts +70 -0
  55. package/src/cli/threads/show.ts +43 -0
  56. package/src/cli-path/layer.ts +10 -0
  57. package/src/cli-path/service.ts +7 -0
  58. package/src/domain/thread-activities.test.ts +321 -0
  59. package/src/domain/thread-activities.ts +244 -0
  60. package/src/domain/thread-lifecycle.ts +2 -0
  61. package/src/runtime/layer.ts +2 -0
  62. package/dist/Context-DueQ9iMH.js +0 -4916
  63. package/dist/Path-D8WPdPwR.js +0 -11406
  64. package/dist/Schema-DsQxYh6_.js +0 -13581
  65. package/dist/UrlParams-BA6gBvaY.js +0 -205
  66. package/dist/base-dir-R12OMDso.js +0 -20
  67. package/dist/error-B2t1bAP9.js +0 -169
  68. package/dist/error-BHRnjLux.js +0 -15
  69. package/dist/error-jwMt3VoW.js +0 -54
  70. package/dist/flags-CM7_iGdA.js +0 -13371
  71. package/dist/layer-CfC5qZol.js +0 -1508
  72. package/dist/layer-DHhKS5jd.js +0 -13
  73. package/dist/layer-DUv99vsS.js +0 -72
  74. package/dist/layer-DvHnKBYj.js +0 -29466
  75. package/dist/layer-MqCKkIGD.js +0 -1206
  76. package/dist/scope-GycYiJ54.js +0 -29
  77. package/dist/service-CLmRO2Dp.js +0 -8
  78. package/dist/service-ybOWV9pL.js +0 -5
  79. package/dist/src-KdbHqrex.js +0 -8874
  80. package/dist/transport-D3zBdZ1h.js +0 -539
  81. package/dist/url-SlsaG8nY.js +0 -165
  82. /package/dist/{chunk-B5meny8j.js → rolldown-runtime.js} +0 -0
@@ -142,6 +142,20 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
142
142
  readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
143
143
  readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
144
144
  readonly createdAt: string;
145
+ } | {
146
+ readonly type: "thread.goal.request";
147
+ readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
148
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
149
+ readonly request: {
150
+ readonly kind: "status";
151
+ } | {
152
+ readonly kind: "control";
153
+ readonly action: "pause" | "resume" | "clear";
154
+ } | {
155
+ readonly kind: "set";
156
+ readonly objective: string;
157
+ };
158
+ readonly createdAt: string;
145
159
  } | {
146
160
  readonly type: "thread.turn.start";
147
161
  readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
@@ -297,6 +311,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
297
311
  readonly updatedAt: string;
298
312
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
299
313
  } | null;
314
+ readonly goal: {
315
+ readonly objective: string;
316
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
317
+ readonly tokensUsed: number;
318
+ readonly tokenBudget: number | null;
319
+ readonly timeUsedSeconds: number;
320
+ readonly createdAt: string;
321
+ readonly updatedAt: string;
322
+ } | null;
300
323
  readonly latestUserMessageAt: string | null;
301
324
  readonly hasPendingApprovals: boolean;
302
325
  readonly hasPendingUserInput: boolean;
@@ -386,6 +409,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
386
409
  readonly updatedAt: string;
387
410
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
388
411
  } | null;
412
+ readonly goal: {
413
+ readonly objective: string;
414
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
415
+ readonly tokensUsed: number;
416
+ readonly tokenBudget: number | null;
417
+ readonly timeUsedSeconds: number;
418
+ readonly createdAt: string;
419
+ readonly updatedAt: string;
420
+ } | null;
389
421
  readonly latestUserMessageAt: string | null;
390
422
  readonly hasPendingApprovals: boolean;
391
423
  readonly hasPendingUserInput: boolean;
@@ -479,6 +511,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
479
511
  readonly updatedAt: string;
480
512
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
481
513
  } | null;
514
+ readonly goal: {
515
+ readonly objective: string;
516
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
517
+ readonly tokensUsed: number;
518
+ readonly tokenBudget: number | null;
519
+ readonly timeUsedSeconds: number;
520
+ readonly createdAt: string;
521
+ readonly updatedAt: string;
522
+ } | null;
482
523
  readonly latestUserMessageAt: string | null;
483
524
  readonly hasPendingApprovals: boolean;
484
525
  readonly hasPendingUserInput: boolean;
@@ -568,6 +609,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
568
609
  readonly updatedAt: string;
569
610
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
570
611
  } | null;
612
+ readonly goal: {
613
+ readonly objective: string;
614
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
615
+ readonly tokensUsed: number;
616
+ readonly tokenBudget: number | null;
617
+ readonly timeUsedSeconds: number;
618
+ readonly createdAt: string;
619
+ readonly updatedAt: string;
620
+ } | null;
571
621
  readonly latestUserMessageAt: string | null;
572
622
  readonly hasPendingApprovals: boolean;
573
623
  readonly hasPendingUserInput: boolean;
@@ -619,6 +669,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
619
669
  readonly updatedAt: string;
620
670
  readonly archivedAt: string | null;
621
671
  readonly deletedAt: string | null;
672
+ readonly goal: {
673
+ readonly objective: string;
674
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
675
+ readonly tokensUsed: number;
676
+ readonly tokenBudget: number | null;
677
+ readonly timeUsedSeconds: number;
678
+ readonly createdAt: string;
679
+ readonly updatedAt: string;
680
+ } | null;
622
681
  readonly messages: readonly {
623
682
  readonly id: string & import("effect/Brand").Brand<"MessageId">;
624
683
  readonly role: "user" | "assistant" | "system";
@@ -1217,6 +1276,85 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
1217
1276
  readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
1218
1277
  readonly ingestedAt?: string | undefined;
1219
1278
  };
1279
+ } | {
1280
+ readonly type: "thread.goal-requested";
1281
+ readonly payload: {
1282
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
1283
+ readonly request: {
1284
+ readonly kind: "status";
1285
+ } | {
1286
+ readonly kind: "control";
1287
+ readonly action: "pause" | "resume" | "clear";
1288
+ } | {
1289
+ readonly kind: "set";
1290
+ readonly objective: string;
1291
+ };
1292
+ readonly createdAt: string;
1293
+ };
1294
+ readonly sequence: number;
1295
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
1296
+ readonly aggregateKind: "project" | "thread";
1297
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
1298
+ readonly occurredAt: string;
1299
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1300
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
1301
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1302
+ readonly metadata: {
1303
+ readonly providerTurnId?: string | undefined;
1304
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
1305
+ readonly adapterKey?: string | undefined;
1306
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
1307
+ readonly ingestedAt?: string | undefined;
1308
+ };
1309
+ } | {
1310
+ readonly type: "thread.goal-updated";
1311
+ readonly payload: {
1312
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
1313
+ readonly goal: {
1314
+ readonly objective: string;
1315
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
1316
+ readonly tokensUsed: number;
1317
+ readonly tokenBudget: number | null;
1318
+ readonly timeUsedSeconds: number;
1319
+ readonly createdAt: string;
1320
+ readonly updatedAt: string;
1321
+ };
1322
+ };
1323
+ readonly sequence: number;
1324
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
1325
+ readonly aggregateKind: "project" | "thread";
1326
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
1327
+ readonly occurredAt: string;
1328
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1329
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
1330
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1331
+ readonly metadata: {
1332
+ readonly providerTurnId?: string | undefined;
1333
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
1334
+ readonly adapterKey?: string | undefined;
1335
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
1336
+ readonly ingestedAt?: string | undefined;
1337
+ };
1338
+ } | {
1339
+ readonly type: "thread.goal-cleared";
1340
+ readonly payload: {
1341
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
1342
+ };
1343
+ readonly sequence: number;
1344
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
1345
+ readonly aggregateKind: "project" | "thread";
1346
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
1347
+ readonly occurredAt: string;
1348
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1349
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
1350
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
1351
+ readonly metadata: {
1352
+ readonly providerTurnId?: string | undefined;
1353
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
1354
+ readonly adapterKey?: string | undefined;
1355
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
1356
+ readonly ingestedAt?: string | undefined;
1357
+ };
1220
1358
  } | {
1221
1359
  readonly type: "thread.proposed-plan-upserted";
1222
1360
  readonly payload: {
@@ -1345,6 +1483,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
1345
1483
  readonly updatedAt: string;
1346
1484
  readonly archivedAt: string | null;
1347
1485
  readonly deletedAt: string | null;
1486
+ readonly goal: {
1487
+ readonly objective: string;
1488
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
1489
+ readonly tokensUsed: number;
1490
+ readonly tokenBudget: number | null;
1491
+ readonly timeUsedSeconds: number;
1492
+ readonly createdAt: string;
1493
+ readonly updatedAt: string;
1494
+ } | null;
1348
1495
  readonly messages: readonly {
1349
1496
  readonly id: string & import("effect/Brand").Brand<"MessageId">;
1350
1497
  readonly role: "user" | "assistant" | "system";
@@ -1943,6 +2090,85 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
1943
2090
  readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
1944
2091
  readonly ingestedAt?: string | undefined;
1945
2092
  };
2093
+ } | {
2094
+ readonly type: "thread.goal-requested";
2095
+ readonly payload: {
2096
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
2097
+ readonly request: {
2098
+ readonly kind: "status";
2099
+ } | {
2100
+ readonly kind: "control";
2101
+ readonly action: "pause" | "resume" | "clear";
2102
+ } | {
2103
+ readonly kind: "set";
2104
+ readonly objective: string;
2105
+ };
2106
+ readonly createdAt: string;
2107
+ };
2108
+ readonly sequence: number;
2109
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
2110
+ readonly aggregateKind: "project" | "thread";
2111
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
2112
+ readonly occurredAt: string;
2113
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2114
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
2115
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2116
+ readonly metadata: {
2117
+ readonly providerTurnId?: string | undefined;
2118
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
2119
+ readonly adapterKey?: string | undefined;
2120
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
2121
+ readonly ingestedAt?: string | undefined;
2122
+ };
2123
+ } | {
2124
+ readonly type: "thread.goal-updated";
2125
+ readonly payload: {
2126
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
2127
+ readonly goal: {
2128
+ readonly objective: string;
2129
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
2130
+ readonly tokensUsed: number;
2131
+ readonly tokenBudget: number | null;
2132
+ readonly timeUsedSeconds: number;
2133
+ readonly createdAt: string;
2134
+ readonly updatedAt: string;
2135
+ };
2136
+ };
2137
+ readonly sequence: number;
2138
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
2139
+ readonly aggregateKind: "project" | "thread";
2140
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
2141
+ readonly occurredAt: string;
2142
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2143
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
2144
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2145
+ readonly metadata: {
2146
+ readonly providerTurnId?: string | undefined;
2147
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
2148
+ readonly adapterKey?: string | undefined;
2149
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
2150
+ readonly ingestedAt?: string | undefined;
2151
+ };
2152
+ } | {
2153
+ readonly type: "thread.goal-cleared";
2154
+ readonly payload: {
2155
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
2156
+ };
2157
+ readonly sequence: number;
2158
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
2159
+ readonly aggregateKind: "project" | "thread";
2160
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
2161
+ readonly occurredAt: string;
2162
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2163
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
2164
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
2165
+ readonly metadata: {
2166
+ readonly providerTurnId?: string | undefined;
2167
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
2168
+ readonly adapterKey?: string | undefined;
2169
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
2170
+ readonly ingestedAt?: string | undefined;
2171
+ };
1946
2172
  } | {
1947
2173
  readonly type: "thread.proposed-plan-upserted";
1948
2174
  readonly payload: {
@@ -2161,6 +2387,7 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2161
2387
  readonly groupKey: string;
2162
2388
  } | undefined;
2163
2389
  readonly showInteractionModeToggle?: boolean | undefined;
2390
+ readonly requiresNewThreadForModelChange?: boolean | undefined;
2164
2391
  readonly message?: string | undefined;
2165
2392
  readonly availability?: "available" | "unavailable" | undefined;
2166
2393
  readonly unavailableReason?: string | undefined;
@@ -2224,6 +2451,11 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2224
2451
  readonly apiEndpoint: string;
2225
2452
  readonly customModels: readonly string[];
2226
2453
  };
2454
+ readonly grok: {
2455
+ readonly enabled: boolean;
2456
+ readonly binaryPath: string;
2457
+ readonly customModels: readonly string[];
2458
+ };
2227
2459
  readonly opencode: {
2228
2460
  readonly enabled: boolean;
2229
2461
  readonly binaryPath: string;
@@ -2319,6 +2551,7 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2319
2551
  readonly groupKey: string;
2320
2552
  } | undefined;
2321
2553
  readonly showInteractionModeToggle?: boolean | undefined;
2554
+ readonly requiresNewThreadForModelChange?: boolean | undefined;
2322
2555
  readonly message?: string | undefined;
2323
2556
  readonly availability?: "available" | "unavailable" | undefined;
2324
2557
  readonly unavailableReason?: string | undefined;
@@ -2476,6 +2709,20 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2476
2709
  readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
2477
2710
  readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
2478
2711
  readonly createdAt: string;
2712
+ } | {
2713
+ readonly type: "thread.goal.request";
2714
+ readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
2715
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
2716
+ readonly request: {
2717
+ readonly kind: "status";
2718
+ } | {
2719
+ readonly kind: "control";
2720
+ readonly action: "pause" | "resume" | "clear";
2721
+ } | {
2722
+ readonly kind: "set";
2723
+ readonly objective: string;
2724
+ };
2725
+ readonly createdAt: string;
2479
2726
  } | {
2480
2727
  readonly type: "thread.turn.start";
2481
2728
  readonly commandId: string & import("effect/Brand").Brand<"CommandId">;
@@ -2631,6 +2878,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2631
2878
  readonly updatedAt: string;
2632
2879
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
2633
2880
  } | null;
2881
+ readonly goal: {
2882
+ readonly objective: string;
2883
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
2884
+ readonly tokensUsed: number;
2885
+ readonly tokenBudget: number | null;
2886
+ readonly timeUsedSeconds: number;
2887
+ readonly createdAt: string;
2888
+ readonly updatedAt: string;
2889
+ } | null;
2634
2890
  readonly latestUserMessageAt: string | null;
2635
2891
  readonly hasPendingApprovals: boolean;
2636
2892
  readonly hasPendingUserInput: boolean;
@@ -2720,6 +2976,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2720
2976
  readonly updatedAt: string;
2721
2977
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
2722
2978
  } | null;
2979
+ readonly goal: {
2980
+ readonly objective: string;
2981
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
2982
+ readonly tokensUsed: number;
2983
+ readonly tokenBudget: number | null;
2984
+ readonly timeUsedSeconds: number;
2985
+ readonly createdAt: string;
2986
+ readonly updatedAt: string;
2987
+ } | null;
2723
2988
  readonly latestUserMessageAt: string | null;
2724
2989
  readonly hasPendingApprovals: boolean;
2725
2990
  readonly hasPendingUserInput: boolean;
@@ -2813,6 +3078,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2813
3078
  readonly updatedAt: string;
2814
3079
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
2815
3080
  } | null;
3081
+ readonly goal: {
3082
+ readonly objective: string;
3083
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
3084
+ readonly tokensUsed: number;
3085
+ readonly tokenBudget: number | null;
3086
+ readonly timeUsedSeconds: number;
3087
+ readonly createdAt: string;
3088
+ readonly updatedAt: string;
3089
+ } | null;
2816
3090
  readonly latestUserMessageAt: string | null;
2817
3091
  readonly hasPendingApprovals: boolean;
2818
3092
  readonly hasPendingUserInput: boolean;
@@ -2902,6 +3176,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2902
3176
  readonly updatedAt: string;
2903
3177
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
2904
3178
  } | null;
3179
+ readonly goal: {
3180
+ readonly objective: string;
3181
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
3182
+ readonly tokensUsed: number;
3183
+ readonly tokenBudget: number | null;
3184
+ readonly timeUsedSeconds: number;
3185
+ readonly createdAt: string;
3186
+ readonly updatedAt: string;
3187
+ } | null;
2905
3188
  readonly latestUserMessageAt: string | null;
2906
3189
  readonly hasPendingApprovals: boolean;
2907
3190
  readonly hasPendingUserInput: boolean;
@@ -2953,6 +3236,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
2953
3236
  readonly updatedAt: string;
2954
3237
  readonly archivedAt: string | null;
2955
3238
  readonly deletedAt: string | null;
3239
+ readonly goal: {
3240
+ readonly objective: string;
3241
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
3242
+ readonly tokensUsed: number;
3243
+ readonly tokenBudget: number | null;
3244
+ readonly timeUsedSeconds: number;
3245
+ readonly createdAt: string;
3246
+ readonly updatedAt: string;
3247
+ } | null;
2956
3248
  readonly messages: readonly {
2957
3249
  readonly id: string & import("effect/Brand").Brand<"MessageId">;
2958
3250
  readonly role: "user" | "assistant" | "system";
@@ -3551,6 +3843,85 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
3551
3843
  readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
3552
3844
  readonly ingestedAt?: string | undefined;
3553
3845
  };
3846
+ } | {
3847
+ readonly type: "thread.goal-requested";
3848
+ readonly payload: {
3849
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
3850
+ readonly request: {
3851
+ readonly kind: "status";
3852
+ } | {
3853
+ readonly kind: "control";
3854
+ readonly action: "pause" | "resume" | "clear";
3855
+ } | {
3856
+ readonly kind: "set";
3857
+ readonly objective: string;
3858
+ };
3859
+ readonly createdAt: string;
3860
+ };
3861
+ readonly sequence: number;
3862
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
3863
+ readonly aggregateKind: "project" | "thread";
3864
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
3865
+ readonly occurredAt: string;
3866
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3867
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
3868
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3869
+ readonly metadata: {
3870
+ readonly providerTurnId?: string | undefined;
3871
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
3872
+ readonly adapterKey?: string | undefined;
3873
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
3874
+ readonly ingestedAt?: string | undefined;
3875
+ };
3876
+ } | {
3877
+ readonly type: "thread.goal-updated";
3878
+ readonly payload: {
3879
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
3880
+ readonly goal: {
3881
+ readonly objective: string;
3882
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
3883
+ readonly tokensUsed: number;
3884
+ readonly tokenBudget: number | null;
3885
+ readonly timeUsedSeconds: number;
3886
+ readonly createdAt: string;
3887
+ readonly updatedAt: string;
3888
+ };
3889
+ };
3890
+ readonly sequence: number;
3891
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
3892
+ readonly aggregateKind: "project" | "thread";
3893
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
3894
+ readonly occurredAt: string;
3895
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3896
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
3897
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3898
+ readonly metadata: {
3899
+ readonly providerTurnId?: string | undefined;
3900
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
3901
+ readonly adapterKey?: string | undefined;
3902
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
3903
+ readonly ingestedAt?: string | undefined;
3904
+ };
3905
+ } | {
3906
+ readonly type: "thread.goal-cleared";
3907
+ readonly payload: {
3908
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
3909
+ };
3910
+ readonly sequence: number;
3911
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
3912
+ readonly aggregateKind: "project" | "thread";
3913
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
3914
+ readonly occurredAt: string;
3915
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3916
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
3917
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
3918
+ readonly metadata: {
3919
+ readonly providerTurnId?: string | undefined;
3920
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
3921
+ readonly adapterKey?: string | undefined;
3922
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
3923
+ readonly ingestedAt?: string | undefined;
3924
+ };
3554
3925
  } | {
3555
3926
  readonly type: "thread.proposed-plan-upserted";
3556
3927
  readonly payload: {
@@ -3679,6 +4050,15 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
3679
4050
  readonly updatedAt: string;
3680
4051
  readonly archivedAt: string | null;
3681
4052
  readonly deletedAt: string | null;
4053
+ readonly goal: {
4054
+ readonly objective: string;
4055
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
4056
+ readonly tokensUsed: number;
4057
+ readonly tokenBudget: number | null;
4058
+ readonly timeUsedSeconds: number;
4059
+ readonly createdAt: string;
4060
+ readonly updatedAt: string;
4061
+ } | null;
3682
4062
  readonly messages: readonly {
3683
4063
  readonly id: string & import("effect/Brand").Brand<"MessageId">;
3684
4064
  readonly role: "user" | "assistant" | "system";
@@ -4277,6 +4657,85 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
4277
4657
  readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
4278
4658
  readonly ingestedAt?: string | undefined;
4279
4659
  };
4660
+ } | {
4661
+ readonly type: "thread.goal-requested";
4662
+ readonly payload: {
4663
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
4664
+ readonly request: {
4665
+ readonly kind: "status";
4666
+ } | {
4667
+ readonly kind: "control";
4668
+ readonly action: "pause" | "resume" | "clear";
4669
+ } | {
4670
+ readonly kind: "set";
4671
+ readonly objective: string;
4672
+ };
4673
+ readonly createdAt: string;
4674
+ };
4675
+ readonly sequence: number;
4676
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
4677
+ readonly aggregateKind: "project" | "thread";
4678
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
4679
+ readonly occurredAt: string;
4680
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4681
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
4682
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4683
+ readonly metadata: {
4684
+ readonly providerTurnId?: string | undefined;
4685
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
4686
+ readonly adapterKey?: string | undefined;
4687
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
4688
+ readonly ingestedAt?: string | undefined;
4689
+ };
4690
+ } | {
4691
+ readonly type: "thread.goal-updated";
4692
+ readonly payload: {
4693
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
4694
+ readonly goal: {
4695
+ readonly objective: string;
4696
+ readonly status: "active" | "paused" | "budgetLimited" | "complete";
4697
+ readonly tokensUsed: number;
4698
+ readonly tokenBudget: number | null;
4699
+ readonly timeUsedSeconds: number;
4700
+ readonly createdAt: string;
4701
+ readonly updatedAt: string;
4702
+ };
4703
+ };
4704
+ readonly sequence: number;
4705
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
4706
+ readonly aggregateKind: "project" | "thread";
4707
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
4708
+ readonly occurredAt: string;
4709
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4710
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
4711
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4712
+ readonly metadata: {
4713
+ readonly providerTurnId?: string | undefined;
4714
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
4715
+ readonly adapterKey?: string | undefined;
4716
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
4717
+ readonly ingestedAt?: string | undefined;
4718
+ };
4719
+ } | {
4720
+ readonly type: "thread.goal-cleared";
4721
+ readonly payload: {
4722
+ readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
4723
+ };
4724
+ readonly sequence: number;
4725
+ readonly eventId: string & import("effect/Brand").Brand<"EventId">;
4726
+ readonly aggregateKind: "project" | "thread";
4727
+ readonly aggregateId: (string & import("effect/Brand").Brand<"ThreadId">) | (string & import("effect/Brand").Brand<"ProjectId">);
4728
+ readonly occurredAt: string;
4729
+ readonly commandId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4730
+ readonly causationEventId: (string & import("effect/Brand").Brand<"EventId">) | null;
4731
+ readonly correlationId: (string & import("effect/Brand").Brand<"CommandId">) | null;
4732
+ readonly metadata: {
4733
+ readonly providerTurnId?: string | undefined;
4734
+ readonly providerItemId?: (string & import("effect/Brand").Brand<"ProviderItemId">) | undefined;
4735
+ readonly adapterKey?: string | undefined;
4736
+ readonly requestId?: (string & import("effect/Brand").Brand<"ApprovalRequestId">) | undefined;
4737
+ readonly ingestedAt?: string | undefined;
4738
+ };
4280
4739
  } | {
4281
4740
  readonly type: "thread.proposed-plan-upserted";
4282
4741
  readonly payload: {
@@ -4495,6 +4954,7 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
4495
4954
  readonly groupKey: string;
4496
4955
  } | undefined;
4497
4956
  readonly showInteractionModeToggle?: boolean | undefined;
4957
+ readonly requiresNewThreadForModelChange?: boolean | undefined;
4498
4958
  readonly message?: string | undefined;
4499
4959
  readonly availability?: "available" | "unavailable" | undefined;
4500
4960
  readonly unavailableReason?: string | undefined;
@@ -4558,6 +5018,11 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
4558
5018
  readonly apiEndpoint: string;
4559
5019
  readonly customModels: readonly string[];
4560
5020
  };
5021
+ readonly grok: {
5022
+ readonly enabled: boolean;
5023
+ readonly binaryPath: string;
5024
+ readonly customModels: readonly string[];
5025
+ };
4561
5026
  readonly opencode: {
4562
5027
  readonly enabled: boolean;
4563
5028
  readonly binaryPath: string;
@@ -4653,6 +5118,7 @@ export declare const makeT3RpcLayer: () => Effect.Effect<{
4653
5118
  readonly groupKey: string;
4654
5119
  } | undefined;
4655
5120
  readonly showInteractionModeToggle?: boolean | undefined;
5121
+ readonly requiresNewThreadForModelChange?: boolean | undefined;
4656
5122
  readonly message?: string | undefined;
4657
5123
  readonly availability?: "available" | "unavailable" | undefined;
4658
5124
  readonly unavailableReason?: string | undefined;