t3code-cli 0.7.0 → 0.8.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.
- package/dist/auth.js +2 -2
- package/dist/bin.js +56 -5
- package/dist/connection.js +3 -3
- package/dist/{error-B2t1bAP9.js → error-ChTsLQTu.js} +2 -2
- package/dist/{error-jwMt3VoW.js → error-CjADNVm8.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{layer-DvHnKBYj.js → layer-CMo36MrX.js} +3 -3
- package/dist/{layer-CfC5qZol.js → layer-Do8wK1t6.js} +3 -3
- package/dist/{layer-MqCKkIGD.js → layer-DwI3Skkh.js} +24 -7
- package/dist/orchestration.js +1 -1
- package/dist/rpc.js +1 -1
- package/dist/runtime.js +1 -1
- package/dist/src/application/layer.d.ts +61 -0
- package/dist/src/application/models.d.ts +1 -0
- package/dist/src/application/projects.d.ts +9 -0
- package/dist/src/application/service.d.ts +9 -0
- package/dist/src/application/shell-sequence.d.ts +9 -0
- package/dist/src/application/thread-wait.d.ts +9 -0
- package/dist/src/application/threads.d.ts +52 -1
- package/dist/src/cli-path/layer.d.ts +3 -0
- package/dist/src/cli-path/service.d.ts +8 -0
- package/dist/src/domain/helpers.d.ts +9 -0
- package/dist/src/domain/model-config.d.ts +3 -0
- package/dist/src/domain/thread-lifecycle.d.ts +9 -0
- package/dist/src/orchestration/layer.d.ts +215 -0
- package/dist/src/rpc/layer.d.ts +466 -0
- package/dist/src/rpc/ws-group.d.ts +142 -0
- package/dist/src/runtime/layer.d.ts +1 -1
- package/dist/{src-KdbHqrex.js → src-aiFPmAG7.js} +169 -13
- package/dist/t3tools.js +2 -2
- package/dist/{transport-D3zBdZ1h.js → transport-MI0Z3d2T.js} +2 -2
- package/dist/upstream-t3code/packages/contracts/src/environmentHttp.d.ts +33 -10
- package/dist/upstream-t3code/packages/contracts/src/ipc.d.ts +6 -0
- package/dist/upstream-t3code/packages/contracts/src/orchestration.d.ts +657 -1
- package/dist/upstream-t3code/packages/contracts/src/provider.d.ts +14 -0
- package/dist/upstream-t3code/packages/contracts/src/providerRuntime.d.ts +175 -1
- package/dist/upstream-t3code/packages/contracts/src/rpc.d.ts +492 -0
- package/dist/upstream-t3code/packages/contracts/src/server.d.ts +45 -0
- package/dist/upstream-t3code/packages/contracts/src/settings.d.ts +21 -0
- package/dist/upstream-t3code/packages/contracts/src/terminal.d.ts +6 -3
- package/package.json +2 -2
- package/src/application/service.ts +13 -0
- package/src/application/threads.ts +15 -1
- package/src/cli/thread.ts +2 -0
- package/src/cli/threads/callback.ts +92 -0
- package/src/cli-path/layer.ts +10 -0
- package/src/cli-path/service.ts +7 -0
- package/src/runtime/layer.ts +2 -0
|
@@ -126,6 +126,7 @@ export declare const ServerProvider: Schema.Struct<{
|
|
|
126
126
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
127
127
|
}>>;
|
|
128
128
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
129
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
129
130
|
readonly enabled: Schema.Boolean;
|
|
130
131
|
readonly installed: Schema.Boolean;
|
|
131
132
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -213,6 +214,7 @@ export declare const ServerProviders: Schema.$Array<Schema.Struct<{
|
|
|
213
214
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
214
215
|
}>>;
|
|
215
216
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
217
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
216
218
|
readonly enabled: Schema.Boolean;
|
|
217
219
|
readonly installed: Schema.Boolean;
|
|
218
220
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -595,6 +597,7 @@ export declare const ServerConfig: Schema.Struct<{
|
|
|
595
597
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
596
598
|
}>>;
|
|
597
599
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
600
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
598
601
|
readonly enabled: Schema.Boolean;
|
|
599
602
|
readonly installed: Schema.Boolean;
|
|
600
603
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -722,6 +725,11 @@ export declare const ServerConfig: Schema.Struct<{
|
|
|
722
725
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
723
726
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
724
727
|
}>, never>;
|
|
728
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
729
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
730
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
731
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
732
|
+
}>, never>;
|
|
725
733
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
726
734
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
727
735
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -860,6 +868,7 @@ export declare const ServerConfigUpdatedPayload: Schema.Struct<{
|
|
|
860
868
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
861
869
|
}>>;
|
|
862
870
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
871
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
863
872
|
readonly enabled: Schema.Boolean;
|
|
864
873
|
readonly installed: Schema.Boolean;
|
|
865
874
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -978,6 +987,11 @@ export declare const ServerConfigUpdatedPayload: Schema.Struct<{
|
|
|
978
987
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
979
988
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
980
989
|
}>, never>;
|
|
990
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
991
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
992
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
993
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
994
|
+
}>, never>;
|
|
981
995
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
982
996
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
983
997
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -1054,6 +1068,7 @@ export declare const ServerConfigProviderStatusesPayload: Schema.Struct<{
|
|
|
1054
1068
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
1055
1069
|
}>>;
|
|
1056
1070
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
1071
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
1057
1072
|
readonly enabled: Schema.Boolean;
|
|
1058
1073
|
readonly installed: Schema.Boolean;
|
|
1059
1074
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -1175,6 +1190,11 @@ export declare const ServerConfigSettingsUpdatedPayload: Schema.Struct<{
|
|
|
1175
1190
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
1176
1191
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1177
1192
|
}>, never>;
|
|
1193
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
1194
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1195
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
1196
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1197
|
+
}>, never>;
|
|
1178
1198
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
1179
1199
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1180
1200
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -1271,6 +1291,7 @@ export declare const ServerConfigStreamSnapshotEvent: Schema.Struct<{
|
|
|
1271
1291
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
1272
1292
|
}>>;
|
|
1273
1293
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
1294
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
1274
1295
|
readonly enabled: Schema.Boolean;
|
|
1275
1296
|
readonly installed: Schema.Boolean;
|
|
1276
1297
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -1398,6 +1419,11 @@ export declare const ServerConfigStreamSnapshotEvent: Schema.Struct<{
|
|
|
1398
1419
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
1399
1420
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1400
1421
|
}>, never>;
|
|
1422
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
1423
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1424
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
1425
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1426
|
+
}>, never>;
|
|
1401
1427
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
1402
1428
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1403
1429
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -1482,6 +1508,7 @@ export declare const ServerConfigStreamProviderStatusesEvent: Schema.Struct<{
|
|
|
1482
1508
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
1483
1509
|
}>>;
|
|
1484
1510
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
1511
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
1485
1512
|
readonly enabled: Schema.Boolean;
|
|
1486
1513
|
readonly installed: Schema.Boolean;
|
|
1487
1514
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -1607,6 +1634,11 @@ export declare const ServerConfigStreamSettingsUpdatedEvent: Schema.Struct<{
|
|
|
1607
1634
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
1608
1635
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1609
1636
|
}>, never>;
|
|
1637
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
1638
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1639
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
1640
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1641
|
+
}>, never>;
|
|
1610
1642
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
1611
1643
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1612
1644
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -1704,6 +1736,7 @@ export declare const ServerConfigStreamEvent: Schema.Union<readonly [Schema.Stru
|
|
|
1704
1736
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
1705
1737
|
}>>;
|
|
1706
1738
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
1739
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
1707
1740
|
readonly enabled: Schema.Boolean;
|
|
1708
1741
|
readonly installed: Schema.Boolean;
|
|
1709
1742
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -1831,6 +1864,11 @@ export declare const ServerConfigStreamEvent: Schema.Union<readonly [Schema.Stru
|
|
|
1831
1864
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
1832
1865
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1833
1866
|
}>, never>;
|
|
1867
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
1868
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1869
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
1870
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
1871
|
+
}>, never>;
|
|
1834
1872
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
1835
1873
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
1836
1874
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -1911,6 +1949,7 @@ export declare const ServerConfigStreamEvent: Schema.Union<readonly [Schema.Stru
|
|
|
1911
1949
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
1912
1950
|
}>>;
|
|
1913
1951
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
1952
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
1914
1953
|
readonly enabled: Schema.Boolean;
|
|
1915
1954
|
readonly installed: Schema.Boolean;
|
|
1916
1955
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -2034,6 +2073,11 @@ export declare const ServerConfigStreamEvent: Schema.Union<readonly [Schema.Stru
|
|
|
2034
2073
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
2035
2074
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
2036
2075
|
}>, never>;
|
|
2076
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
2077
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
2078
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
2079
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
2080
|
+
}>, never>;
|
|
2037
2081
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
2038
2082
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
2039
2083
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -2197,6 +2241,7 @@ export declare const ServerProviderUpdatedPayload: Schema.Struct<{
|
|
|
2197
2241
|
readonly groupKey: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
2198
2242
|
}>>;
|
|
2199
2243
|
readonly showInteractionModeToggle: Schema.optional<Schema.Boolean>;
|
|
2244
|
+
readonly requiresNewThreadForModelChange: Schema.optional<Schema.Boolean>;
|
|
2200
2245
|
readonly enabled: Schema.Boolean;
|
|
2201
2246
|
readonly installed: Schema.Boolean;
|
|
2202
2247
|
readonly version: Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -3,6 +3,9 @@ import * as Schema from "effect/Schema";
|
|
|
3
3
|
export declare const TimestampFormat: Schema.Literals<readonly ["locale", "12-hour", "24-hour"]>;
|
|
4
4
|
export type TimestampFormat = typeof TimestampFormat.Type;
|
|
5
5
|
export declare const DEFAULT_TIMESTAMP_FORMAT: TimestampFormat;
|
|
6
|
+
export declare const ContextMenuStyle: Schema.Literals<readonly ["default", "native", "custom"]>;
|
|
7
|
+
export type ContextMenuStyle = typeof ContextMenuStyle.Type;
|
|
8
|
+
export declare const DEFAULT_CONTEXT_MENU_STYLE: ContextMenuStyle;
|
|
6
9
|
export declare const SidebarProjectSortOrder: Schema.Literals<readonly ["updated_at", "created_at", "manual"]>;
|
|
7
10
|
export type SidebarProjectSortOrder = typeof SidebarProjectSortOrder.Type;
|
|
8
11
|
export declare const DEFAULT_SIDEBAR_PROJECT_SORT_ORDER: SidebarProjectSortOrder;
|
|
@@ -21,6 +24,7 @@ export declare const ClientSettingsSchema: Schema.Struct<{
|
|
|
21
24
|
readonly autoOpenPlanSidebar: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
22
25
|
readonly confirmThreadArchive: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
23
26
|
readonly confirmThreadDelete: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
27
|
+
readonly contextMenuStyle: Schema.withDecodingDefault<Schema.Literals<readonly ["default", "native", "custom"]>, never>;
|
|
24
28
|
readonly dismissedProviderUpdateNotificationKeys: Schema.withDecodingDefault<Schema.$Array<Schema.decodeTo<Schema.String, Schema.String, never, never>>, never>;
|
|
25
29
|
readonly diffIgnoreWhitespace: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
26
30
|
readonly diffWordWrap: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
@@ -88,6 +92,12 @@ export declare const CursorSettings: Schema.Struct<{
|
|
|
88
92
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
89
93
|
}>;
|
|
90
94
|
export type CursorSettings = typeof CursorSettings.Type;
|
|
95
|
+
export declare const GrokSettings: Schema.Struct<{
|
|
96
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
97
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
98
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
99
|
+
}>;
|
|
100
|
+
export type GrokSettings = typeof GrokSettings.Type;
|
|
91
101
|
export declare const OpenCodeSettings: Schema.Struct<{
|
|
92
102
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
93
103
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -144,6 +154,11 @@ export declare const ServerSettings: Schema.Struct<{
|
|
|
144
154
|
readonly apiEndpoint: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.String, never, never>, never>;
|
|
145
155
|
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
146
156
|
}>, never>;
|
|
157
|
+
readonly grok: Schema.withDecodingDefault<Schema.Struct<{
|
|
158
|
+
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
159
|
+
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
160
|
+
readonly customModels: Schema.withDecodingDefault<Schema.$Array<Schema.String>, never>;
|
|
161
|
+
}>, never>;
|
|
147
162
|
readonly opencode: Schema.withDecodingDefault<Schema.Struct<{
|
|
148
163
|
readonly enabled: Schema.withDecodingDefault<Schema.Boolean, never>;
|
|
149
164
|
readonly binaryPath: Schema.withDecodingDefault<Schema.decodeTo<Schema.String, Schema.decodeTo<Schema.String, Schema.String, never, never>, never, never>, never>;
|
|
@@ -223,6 +238,11 @@ export declare const ServerSettingsPatch: Schema.Struct<{
|
|
|
223
238
|
readonly apiEndpoint: Schema.optionalKey<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
224
239
|
readonly customModels: Schema.optionalKey<Schema.$Array<Schema.String>>;
|
|
225
240
|
}>>;
|
|
241
|
+
readonly grok: Schema.optionalKey<Schema.Struct<{
|
|
242
|
+
readonly enabled: Schema.optionalKey<Schema.Boolean>;
|
|
243
|
+
readonly binaryPath: Schema.optionalKey<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
244
|
+
readonly customModels: Schema.optionalKey<Schema.$Array<Schema.String>>;
|
|
245
|
+
}>>;
|
|
226
246
|
readonly opencode: Schema.optionalKey<Schema.Struct<{
|
|
227
247
|
readonly enabled: Schema.optionalKey<Schema.Boolean>;
|
|
228
248
|
readonly binaryPath: Schema.optionalKey<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
@@ -250,6 +270,7 @@ export declare const ClientSettingsPatch: Schema.Struct<{
|
|
|
250
270
|
readonly autoOpenPlanSidebar: Schema.optionalKey<Schema.Boolean>;
|
|
251
271
|
readonly confirmThreadArchive: Schema.optionalKey<Schema.Boolean>;
|
|
252
272
|
readonly confirmThreadDelete: Schema.optionalKey<Schema.Boolean>;
|
|
273
|
+
readonly contextMenuStyle: Schema.optionalKey<Schema.Literals<readonly ["default", "native", "custom"]>>;
|
|
253
274
|
readonly diffIgnoreWhitespace: Schema.optionalKey<Schema.Boolean>;
|
|
254
275
|
readonly diffWordWrap: Schema.optionalKey<Schema.Boolean>;
|
|
255
276
|
readonly favorites: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
@@ -21,10 +21,11 @@ export declare const TerminalOpenInput: Schema.Struct<{
|
|
|
21
21
|
readonly cols: Schema.optional<Schema.Int>;
|
|
22
22
|
readonly rows: Schema.optional<Schema.Int>;
|
|
23
23
|
readonly env: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
|
|
24
|
+
readonly projectId: Schema.optional<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "ProjectId">>;
|
|
24
25
|
readonly terminalId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
25
26
|
readonly threadId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
26
27
|
}>;
|
|
27
|
-
export type TerminalOpenInput =
|
|
28
|
+
export type TerminalOpenInput = typeof TerminalOpenInput.Type;
|
|
28
29
|
export declare const TerminalAttachInput: Schema.Struct<{
|
|
29
30
|
readonly cwd: Schema.optional<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
30
31
|
readonly worktreePath: Schema.optional<Schema.NullOr<Schema.decodeTo<Schema.String, Schema.String, never, never>>>;
|
|
@@ -32,10 +33,11 @@ export declare const TerminalAttachInput: Schema.Struct<{
|
|
|
32
33
|
readonly rows: Schema.optional<Schema.Int>;
|
|
33
34
|
readonly env: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
|
|
34
35
|
readonly restartIfNotRunning: Schema.optional<Schema.Boolean>;
|
|
36
|
+
readonly projectId: Schema.optional<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "ProjectId">>;
|
|
35
37
|
readonly terminalId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
36
38
|
readonly threadId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
37
39
|
}>;
|
|
38
|
-
export type TerminalAttachInput =
|
|
40
|
+
export type TerminalAttachInput = typeof TerminalAttachInput.Type;
|
|
39
41
|
export declare const TerminalWriteInput: Schema.Struct<{
|
|
40
42
|
readonly data: Schema.String;
|
|
41
43
|
readonly terminalId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
@@ -60,10 +62,11 @@ export declare const TerminalRestartInput: Schema.Struct<{
|
|
|
60
62
|
readonly cols: Schema.Int;
|
|
61
63
|
readonly rows: Schema.Int;
|
|
62
64
|
readonly env: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
|
|
65
|
+
readonly projectId: Schema.optional<Schema.brand<Schema.decodeTo<Schema.String, Schema.String, never, never>, "ProjectId">>;
|
|
63
66
|
readonly terminalId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
64
67
|
readonly threadId: Schema.decodeTo<Schema.String, Schema.String, never, never>;
|
|
65
68
|
}>;
|
|
66
|
-
export type TerminalRestartInput =
|
|
69
|
+
export type TerminalRestartInput = typeof TerminalRestartInput.Type;
|
|
67
70
|
export declare const TerminalCloseInput: Schema.Struct<{
|
|
68
71
|
readonly terminalId: Schema.optional<Schema.decodeTo<Schema.String, Schema.String, never, never>>;
|
|
69
72
|
readonly deleteHistory: Schema.optional<Schema.Boolean>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "t3code-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "CLI for t3code",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"@types/node": "^25.9.1",
|
|
99
99
|
"typescript": "^6.0.3",
|
|
100
100
|
"vite-plus": "^0.1.24",
|
|
101
|
-
"@t3tools/contracts": "0.0.
|
|
101
|
+
"@t3tools/contracts": "0.0.27"
|
|
102
102
|
},
|
|
103
103
|
"engines": {
|
|
104
104
|
"node": ">=24.0.0"
|
|
@@ -30,6 +30,12 @@ export type SendThreadInput = {
|
|
|
30
30
|
readonly options?: NonNullable<ModelSelection["options"]>;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
export type CallbackThreadInput = {
|
|
34
|
+
readonly fromThreadId: string;
|
|
35
|
+
readonly targetThreadId: string;
|
|
36
|
+
readonly prompt: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
33
39
|
export type StartThreadPolicy = {
|
|
34
40
|
readonly until: "dispatch" | "visible" | "complete";
|
|
35
41
|
};
|
|
@@ -93,5 +99,12 @@ export class T3Application extends Context.Service<
|
|
|
93
99
|
readonly waitForThread: (
|
|
94
100
|
threadId: string,
|
|
95
101
|
) => Effect.Effect<OrchestrationThread, ApplicationError>;
|
|
102
|
+
readonly callbackThread: (input: CallbackThreadInput) => Effect.Effect<
|
|
103
|
+
{
|
|
104
|
+
readonly dispatch: DispatchResult;
|
|
105
|
+
readonly targetThreadId: string;
|
|
106
|
+
},
|
|
107
|
+
ApplicationError
|
|
108
|
+
>;
|
|
96
109
|
}
|
|
97
110
|
>()("t3cli/T3Application") {}
|
|
@@ -7,7 +7,7 @@ import { T3Orchestration } from "../orchestration/service.ts";
|
|
|
7
7
|
import { ProjectLookupError, ThreadSessionError } from "../domain/error.ts";
|
|
8
8
|
import { resolveProjectScope } from "../domain/helpers.ts";
|
|
9
9
|
import { type StartThreadInput } from "./service.ts";
|
|
10
|
-
import type { SendThreadInput } from "./service.ts";
|
|
10
|
+
import type { SendThreadInput, CallbackThreadInput } from "./service.ts";
|
|
11
11
|
import { mergeModelOptions } from "./model-selection.ts";
|
|
12
12
|
import {
|
|
13
13
|
makeThreadArchiveCommand,
|
|
@@ -171,6 +171,19 @@ export const makeThreadApplication = Effect.fn("makeThreadApplication")(function
|
|
|
171
171
|
yield* failIfThreadError(thread);
|
|
172
172
|
return thread;
|
|
173
173
|
});
|
|
174
|
+
const callbackThread = Effect.fn("T3ApplicationLive.callbackThread")(function* (
|
|
175
|
+
input: CallbackThreadInput,
|
|
176
|
+
) {
|
|
177
|
+
yield* waitForThreadUntilComplete({
|
|
178
|
+
orchestration,
|
|
179
|
+
threadId: input.fromThreadId,
|
|
180
|
+
});
|
|
181
|
+
const result = yield* sendThread(
|
|
182
|
+
{ threadId: input.targetThreadId, message: input.prompt },
|
|
183
|
+
{ until: "dispatch" },
|
|
184
|
+
);
|
|
185
|
+
return { dispatch: result.dispatch, targetThreadId: input.targetThreadId };
|
|
186
|
+
});
|
|
174
187
|
|
|
175
188
|
return {
|
|
176
189
|
archiveThread,
|
|
@@ -180,6 +193,7 @@ export const makeThreadApplication = Effect.fn("makeThreadApplication")(function
|
|
|
180
193
|
startThread,
|
|
181
194
|
watchThread,
|
|
182
195
|
waitForThread,
|
|
196
|
+
callbackThread,
|
|
183
197
|
};
|
|
184
198
|
});
|
|
185
199
|
|
package/src/cli/thread.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from "effect/unstable/cli";
|
|
2
2
|
|
|
3
3
|
import { archiveThreadCommand } from "./threads/archive.ts";
|
|
4
|
+
import { callbackThreadCommand } from "./threads/callback.ts";
|
|
4
5
|
import { listThreadsCommand } from "./threads/list.ts";
|
|
5
6
|
import { getThreadMessagesCommand } from "./threads/messages.ts";
|
|
6
7
|
import { sendThreadCommand } from "./threads/send.ts";
|
|
@@ -17,6 +18,7 @@ export function createThreadCommand() {
|
|
|
17
18
|
archiveThreadCommand,
|
|
18
19
|
getThreadMessagesCommand,
|
|
19
20
|
waitForThreadCommand,
|
|
21
|
+
callbackThreadCommand,
|
|
20
22
|
]),
|
|
21
23
|
);
|
|
22
24
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as ChildProcess from "effect/unstable/process/ChildProcess";
|
|
4
|
+
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
|
|
5
|
+
import { Command, Flag } from "effect/unstable/cli";
|
|
6
|
+
|
|
7
|
+
import { threadFlag } from "../flags.ts";
|
|
8
|
+
import { MissingThreadError } from "../error.ts";
|
|
9
|
+
import { resolveThreadId } from "../../scope/index.ts";
|
|
10
|
+
import { Environment } from "../../environment/service.ts";
|
|
11
|
+
import { T3Application } from "../../application/service.ts";
|
|
12
|
+
import { T3Output } from "../output/service.ts";
|
|
13
|
+
import { CliPath } from "../../cli-path/service.ts";
|
|
14
|
+
|
|
15
|
+
export const callbackThreadCommand = Command.make(
|
|
16
|
+
"callback",
|
|
17
|
+
{
|
|
18
|
+
from: Flag.string("from").pipe(Flag.withDescription("Thread ID to watch for completion")),
|
|
19
|
+
thread: threadFlag,
|
|
20
|
+
prompt: Flag.string("prompt").pipe(Flag.withDescription("Message to send to target thread")),
|
|
21
|
+
background: Flag.boolean("background").pipe(
|
|
22
|
+
Flag.withDescription("Fork and detach as background process"),
|
|
23
|
+
Flag.optional,
|
|
24
|
+
),
|
|
25
|
+
},
|
|
26
|
+
({ from, thread, prompt, background }) =>
|
|
27
|
+
Effect.gen(function* () {
|
|
28
|
+
const application = yield* T3Application;
|
|
29
|
+
const environment = yield* Environment;
|
|
30
|
+
const output = yield* T3Output;
|
|
31
|
+
const cliPath = yield* CliPath;
|
|
32
|
+
const spawner = yield* ChildProcessSpawner;
|
|
33
|
+
|
|
34
|
+
const fromThreadId = from;
|
|
35
|
+
|
|
36
|
+
const targetThreadId = resolveThreadId({
|
|
37
|
+
value: Option.getOrUndefined(thread),
|
|
38
|
+
env: environment.env,
|
|
39
|
+
});
|
|
40
|
+
if (targetThreadId === undefined) {
|
|
41
|
+
return yield* Effect.fail(
|
|
42
|
+
new MissingThreadError({
|
|
43
|
+
message: "target thread id is required: pass --thread or set T3CODE_THREAD_ID",
|
|
44
|
+
}),
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const isBackground = Option.getOrElse(background, () => false);
|
|
49
|
+
if (isBackground) {
|
|
50
|
+
const args = [
|
|
51
|
+
cliPath.path,
|
|
52
|
+
"thread",
|
|
53
|
+
"callback",
|
|
54
|
+
"--from",
|
|
55
|
+
fromThreadId,
|
|
56
|
+
"--thread",
|
|
57
|
+
targetThreadId,
|
|
58
|
+
"--prompt",
|
|
59
|
+
prompt,
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const proc = ChildProcess.make(process.execPath, args, {
|
|
63
|
+
detached: true,
|
|
64
|
+
stdin: "ignore",
|
|
65
|
+
stdout: "ignore",
|
|
66
|
+
stderr: "ignore",
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const handle = yield* spawner.spawn(proc);
|
|
70
|
+
const reref = yield* handle.unref;
|
|
71
|
+
yield* reref.pipe(Effect.ignore);
|
|
72
|
+
|
|
73
|
+
yield* output.printInfo(
|
|
74
|
+
`background callback scheduled: ${fromThreadId} -> ${targetThreadId} (pid: ${handle.pid})`,
|
|
75
|
+
);
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
yield* output.printInfo(`watching thread ${fromThreadId} for completion...`);
|
|
80
|
+
|
|
81
|
+
const result = yield* application.callbackThread({
|
|
82
|
+
fromThreadId,
|
|
83
|
+
targetThreadId,
|
|
84
|
+
prompt,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
yield* output.printInfo(
|
|
88
|
+
`callback sent to ${result.targetThreadId} (dispatch: ${result.dispatch.sequence})`,
|
|
89
|
+
);
|
|
90
|
+
return undefined;
|
|
91
|
+
}),
|
|
92
|
+
).pipe(Command.withDescription("watch a thread and send a message when it completes"));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
|
|
4
|
+
import { CliPath } from "./service.ts";
|
|
5
|
+
|
|
6
|
+
const makeCliPath = Effect.sync(() => ({
|
|
7
|
+
path: process.argv[1] ?? "dist/bin.js",
|
|
8
|
+
}));
|
|
9
|
+
|
|
10
|
+
export const NodeCliPathLayer = Layer.effect(CliPath, makeCliPath);
|
package/src/runtime/layer.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { T3CodeConnectionProvider, makeT3CodeConnectionProvider } from "../conne
|
|
|
17
17
|
import { T3OrchestrationLive } from "../orchestration/layer.ts";
|
|
18
18
|
import { T3RpcLive } from "../rpc/layer.ts";
|
|
19
19
|
import { NodeSqlClientFactoryLive } from "../sql/node-sqlite-client.ts";
|
|
20
|
+
import { NodeCliPathLayer } from "../cli-path/layer.ts";
|
|
20
21
|
|
|
21
22
|
export const T3AuthTransportLayer = T3AuthTransportLive.pipe(
|
|
22
23
|
Layer.provide(NodeHttpClient.layerUndici),
|
|
@@ -76,4 +77,5 @@ export const AppLayer = Layer.mergeAll(
|
|
|
76
77
|
T3RpcLayer,
|
|
77
78
|
T3OrchestrationLayer,
|
|
78
79
|
T3ApplicationLayer,
|
|
80
|
+
NodeCliPathLayer,
|
|
79
81
|
);
|