t3code-cli 0.11.0 → 0.13.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 (330) hide show
  1. package/README.md +42 -10
  2. package/dist/application.js +2 -2
  3. package/dist/auth.js +1 -1
  4. package/dist/bin.js +85549 -2668
  5. package/dist/cli.js +15 -2
  6. package/dist/config.js +120 -2
  7. package/dist/connection.js +2 -2
  8. package/dist/index.js +1 -1
  9. package/dist/node.js +6 -2
  10. package/dist/orchestration.js +2 -2
  11. package/dist/rolldown-runtime.js +1 -1
  12. package/dist/rpc.js +1 -1
  13. package/dist/runtime.js +2 -2
  14. package/dist/shared.js +23313 -8022
  15. package/dist/src/application/actions.d.ts +25 -0
  16. package/dist/src/application/index.d.ts +3 -3
  17. package/dist/src/application/layer.d.ts +66 -50
  18. package/dist/src/application/model-selection.d.ts +2 -2
  19. package/dist/src/application/models.d.ts +1 -1
  20. package/dist/src/application/project-commands.d.ts +23 -3
  21. package/dist/src/application/projects.d.ts +7 -7
  22. package/dist/src/application/service.d.ts +65 -2
  23. package/dist/src/application/shell-sequence.d.ts +25 -19
  24. package/dist/src/application/terminals.d.ts +8 -8
  25. package/dist/src/application/thread-commands.d.ts +19 -19
  26. package/dist/src/application/thread-update.d.ts +1 -1
  27. package/dist/src/application/thread-wait.d.ts +19 -15
  28. package/dist/src/application/threads.d.ts +134 -108
  29. package/dist/src/auth/error.d.ts +3 -3
  30. package/dist/src/auth/index.d.ts +1 -1
  31. package/dist/src/auth/layer.d.ts +36 -8
  32. package/dist/src/auth/local-base-dir.d.ts +5 -2
  33. package/dist/src/auth/local-origin.d.ts +3 -3
  34. package/dist/src/auth/local-token.d.ts +3 -3
  35. package/dist/src/auth/remote-error.d.ts +3 -0
  36. package/dist/src/auth/service.d.ts +15 -3
  37. package/dist/src/auth/type.d.ts +40 -1
  38. package/dist/src/cli/env/flag.d.ts +2 -0
  39. package/dist/src/cli/env/index.d.ts +2 -0
  40. package/dist/src/cli/env/selection-layer.d.ts +3 -0
  41. package/dist/src/cli/flags.d.ts +2 -0
  42. package/dist/src/cli/format/index.d.ts +1 -0
  43. package/dist/src/cli/format/output.d.ts +12 -0
  44. package/dist/src/cli/index.d.ts +4 -0
  45. package/dist/src/cli/runtime/index.d.ts +1 -0
  46. package/dist/src/cli/runtime/service.d.ts +16 -0
  47. package/dist/src/{scope → cli/scope}/resolve.d.ts +5 -4
  48. package/dist/src/config/config.d.ts +49 -0
  49. package/dist/src/config/credential/cipher-node.d.ts +3 -0
  50. package/dist/src/config/credential/cipher-web.d.ts +3 -0
  51. package/dist/src/config/credential/cipher.d.ts +29 -0
  52. package/dist/src/config/credential/env.d.ts +3 -0
  53. package/dist/src/config/credential/error.d.ts +8 -0
  54. package/dist/src/config/credential/index.d.ts +6 -0
  55. package/dist/src/config/credential/service.d.ts +34 -0
  56. package/dist/src/config/env/env.d.ts +55 -0
  57. package/dist/src/config/env/index.d.ts +2 -0
  58. package/dist/src/{layout/base-dir.d.ts → config/env/layout.d.ts} +0 -1
  59. package/dist/src/config/environment-name/index.d.ts +1 -0
  60. package/dist/src/config/environment-name/name.d.ts +10 -0
  61. package/dist/src/config/error.d.ts +4 -11
  62. package/dist/src/config/index.d.ts +10 -5
  63. package/dist/src/config/keystore/error.d.ts +8 -0
  64. package/dist/src/config/keystore/file.d.ts +9 -0
  65. package/dist/src/config/keystore/index.d.ts +4 -0
  66. package/dist/src/config/keystore/keyring-node.d.ts +4 -0
  67. package/dist/src/config/keystore/service.d.ts +33 -0
  68. package/dist/src/config/paths/index.d.ts +1 -0
  69. package/dist/src/config/paths/paths.d.ts +6 -0
  70. package/dist/src/config/persist/file-mode.d.ts +4 -0
  71. package/dist/src/config/persist/migration.d.ts +68 -0
  72. package/dist/src/config/persist/persist.d.ts +40 -0
  73. package/dist/src/config/persist/schema.d.ts +68 -0
  74. package/dist/src/config/resolve/resolve.d.ts +40 -0
  75. package/dist/src/config/selection/index.d.ts +1 -0
  76. package/dist/src/config/selection/resolve.d.ts +4 -0
  77. package/dist/src/config/selection/service.d.ts +10 -0
  78. package/dist/src/config/types.d.ts +36 -0
  79. package/dist/src/config/url/error.d.ts +10 -0
  80. package/dist/src/config/url/index.d.ts +2 -0
  81. package/dist/src/connection/error.d.ts +3 -1
  82. package/dist/src/connection/index.d.ts +0 -1
  83. package/dist/src/connection/prepared.d.ts +14 -0
  84. package/dist/src/contracts/index.d.ts +1 -1
  85. package/dist/src/domain/error.d.ts +14 -1
  86. package/dist/src/domain/helpers.d.ts +53 -43
  87. package/dist/src/domain/model-config.d.ts +92 -84
  88. package/dist/src/domain/thread-activities.d.ts +1 -1
  89. package/dist/src/domain/thread-lifecycle.d.ts +24 -20
  90. package/dist/src/index.d.ts +1 -2
  91. package/dist/src/{connection/node.d.ts → node/connection.d.ts} +1 -1
  92. package/dist/src/node/index.d.ts +1 -2
  93. package/dist/src/orchestration/index.d.ts +0 -1
  94. package/dist/src/orchestration/layer.d.ts +321 -390
  95. package/dist/src/orchestration/service.d.ts +1 -1
  96. package/dist/src/rpc/error.d.ts +4 -6
  97. package/dist/src/rpc/layer.d.ts +2036 -1917
  98. package/dist/src/rpc/operation.d.ts +4 -5732
  99. package/dist/src/rpc/service.d.ts +1 -1
  100. package/dist/src/rpc/session.d.ts +22 -0
  101. package/dist/src/rpc/ws-group.d.ts +456 -1032
  102. package/dist/src/runtime/index.d.ts +1 -2
  103. package/dist/src/runtime/layer.d.ts +12 -8
  104. package/dist/src/sql/node-sqlite-client.d.ts +1 -1
  105. package/dist/src/t3tools/index.d.ts +1 -1
  106. package/dist/t3tools.js +2 -2
  107. package/package.json +30 -25
  108. package/src/application/actions.test.ts +328 -0
  109. package/src/application/actions.ts +475 -0
  110. package/src/application/index.ts +9 -5
  111. package/src/application/layer.ts +9 -0
  112. package/src/application/model-selection.ts +2 -2
  113. package/src/application/project-commands.ts +23 -5
  114. package/src/application/projects.ts +6 -7
  115. package/src/application/service.ts +79 -1
  116. package/src/application/shell-sequence.ts +1 -1
  117. package/src/application/terminals.ts +2 -1
  118. package/src/application/thread-commands.ts +1 -1
  119. package/src/application/thread-update.ts +1 -1
  120. package/src/application/thread-wait.ts +5 -1
  121. package/src/application/threads.test.ts +9 -3
  122. package/src/application/threads.ts +6 -6
  123. package/src/auth/error.ts +4 -9
  124. package/src/auth/index.ts +7 -0
  125. package/src/auth/layer.test-utils.ts +34 -0
  126. package/src/auth/layer.ts +116 -34
  127. package/src/auth/local-base-dir.ts +13 -6
  128. package/src/auth/local-origin.ts +10 -7
  129. package/src/auth/local-token.ts +28 -23
  130. package/src/auth/remote-error.ts +17 -0
  131. package/src/auth/service.test.ts +200 -0
  132. package/src/auth/service.ts +27 -3
  133. package/src/auth/transport.ts +45 -114
  134. package/src/auth/type.ts +47 -1
  135. package/src/bin.ts +24 -6
  136. package/src/cli/action-format.ts +110 -0
  137. package/src/cli/action.ts +398 -0
  138. package/src/cli/app.ts +6 -0
  139. package/src/cli/auth.ts +76 -23
  140. package/src/cli/env/flag.ts +8 -0
  141. package/src/cli/env/index.ts +2 -0
  142. package/src/cli/env/selection-layer.test.ts +49 -0
  143. package/src/cli/env/selection-layer.ts +27 -0
  144. package/src/cli/env.ts +107 -0
  145. package/src/cli/extra-args.test.ts +32 -0
  146. package/src/cli/extra-args.ts +22 -0
  147. package/src/cli/flags.ts +11 -1
  148. package/src/cli/format/auth.ts +92 -0
  149. package/src/cli/format/human.ts +131 -0
  150. package/src/cli/format/index.ts +12 -0
  151. package/src/cli/format/model.ts +29 -0
  152. package/src/cli/format/output.ts +51 -0
  153. package/src/cli/format/project.ts +32 -0
  154. package/src/cli/format/terminal.ts +87 -0
  155. package/src/cli/{thread-format.test.ts → format/thread.test.ts} +6 -4
  156. package/src/cli/format/thread.ts +185 -0
  157. package/src/cli/index.ts +20 -0
  158. package/src/cli/interaction/confirm.ts +64 -0
  159. package/src/cli/{self-action.ts → interaction/self-action.ts} +8 -6
  160. package/src/cli/message-input.ts +1 -1
  161. package/src/cli/model.ts +9 -5
  162. package/src/cli/project.ts +13 -7
  163. package/src/cli/projects/delete.ts +13 -12
  164. package/src/cli/require.ts +9 -7
  165. package/src/cli/runtime/index.ts +1 -0
  166. package/src/cli/runtime/service.ts +28 -0
  167. package/src/{scope → cli/scope}/resolve.ts +11 -9
  168. package/src/cli/terminal/attach.ts +3 -6
  169. package/src/cli/terminal/create.ts +10 -9
  170. package/src/cli/terminal/destroy.ts +13 -11
  171. package/src/cli/terminal/list.ts +10 -9
  172. package/src/cli/terminal/read.test-utils.ts +48 -0
  173. package/src/cli/terminal/read.test.ts +35 -0
  174. package/src/cli/terminal/read.ts +3 -6
  175. package/src/cli/terminal/scope.ts +10 -5
  176. package/src/cli/terminal/shared.ts +1 -1
  177. package/src/cli/terminal/stream.ts +3 -6
  178. package/src/cli/terminal/wait.test.ts +5 -3
  179. package/src/cli/terminal/wait.ts +10 -9
  180. package/src/cli/terminal/write.test.ts +34 -0
  181. package/src/cli/terminal/write.ts +10 -9
  182. package/src/cli/threads/approve.ts +11 -7
  183. package/src/cli/threads/archive.ts +14 -9
  184. package/src/cli/threads/callback.ts +6 -4
  185. package/src/cli/threads/delete.ts +17 -11
  186. package/src/cli/threads/interrupt.ts +14 -9
  187. package/src/cli/threads/list.test.ts +5 -3
  188. package/src/cli/threads/list.ts +10 -10
  189. package/src/cli/threads/messages.ts +11 -7
  190. package/src/cli/threads/respond.ts +11 -7
  191. package/src/cli/threads/send.ts +19 -9
  192. package/src/cli/threads/show.ts +11 -7
  193. package/src/cli/threads/start.ts +18 -13
  194. package/src/cli/threads/unarchive.ts +11 -7
  195. package/src/cli/threads/update.ts +14 -9
  196. package/src/cli/threads/wait.ts +11 -7
  197. package/src/cli/wait-events.ts +1 -1
  198. package/src/config/config.ts +260 -0
  199. package/src/config/credential/cipher-node.ts +40 -0
  200. package/src/config/credential/cipher-web.ts +82 -0
  201. package/src/config/credential/cipher.ts +39 -0
  202. package/src/config/credential/env.ts +13 -0
  203. package/src/config/credential/error.ts +9 -0
  204. package/src/config/credential/index.ts +6 -0
  205. package/src/config/credential/service.test-utils.ts +25 -0
  206. package/src/config/credential/service.test.ts +116 -0
  207. package/src/config/credential/service.ts +205 -0
  208. package/src/config/env/env.test-utils.ts +14 -0
  209. package/src/config/env/env.ts +81 -0
  210. package/src/config/env/index.ts +2 -0
  211. package/src/{layout/base-dir.ts → config/env/layout.ts} +0 -9
  212. package/src/config/environment-name/index.ts +7 -0
  213. package/src/config/environment-name/name.test.ts +66 -0
  214. package/src/config/environment-name/name.ts +49 -0
  215. package/src/config/error.ts +6 -8
  216. package/src/config/index.ts +16 -5
  217. package/src/config/keystore/error.ts +9 -0
  218. package/src/config/keystore/file.ts +96 -0
  219. package/src/config/keystore/index.ts +4 -0
  220. package/src/config/keystore/keyring-node.test.ts +12 -0
  221. package/src/config/keystore/keyring-node.ts +100 -0
  222. package/src/config/keystore/service.test-utils.ts +15 -0
  223. package/src/config/keystore/service.test.ts +18 -0
  224. package/src/config/keystore/service.ts +29 -0
  225. package/src/config/layer.test-utils.ts +45 -0
  226. package/src/config/layer.test.ts +209 -0
  227. package/src/config/paths/index.ts +1 -0
  228. package/src/config/paths/paths.ts +36 -0
  229. package/src/config/persist/file-mode.ts +21 -0
  230. package/src/config/persist/migration.test.ts +71 -0
  231. package/src/config/persist/migration.ts +82 -0
  232. package/src/config/persist/persist.test.ts +113 -0
  233. package/src/config/persist/persist.ts +65 -0
  234. package/src/config/persist/schema.ts +37 -0
  235. package/src/config/platform.test-utils.ts +20 -0
  236. package/src/config/resolve/resolve.test-utils.ts +20 -0
  237. package/src/config/resolve/resolve.test.ts +137 -0
  238. package/src/config/resolve/resolve.ts +104 -0
  239. package/src/config/selection/index.ts +1 -0
  240. package/src/config/selection/resolve.ts +14 -0
  241. package/src/config/selection/service.ts +29 -0
  242. package/src/config/temp-home.test-utils.ts +7 -0
  243. package/src/config/types.ts +49 -0
  244. package/src/config/url/error.ts +8 -0
  245. package/src/config/url/index.ts +7 -0
  246. package/src/config/url/url.test.ts +31 -0
  247. package/src/connection/error.ts +4 -1
  248. package/src/connection/index.ts +0 -1
  249. package/src/connection/layer.ts +5 -2
  250. package/src/connection/prepared.ts +83 -0
  251. package/src/contracts/index.ts +1 -1
  252. package/src/domain/error.ts +20 -1
  253. package/src/domain/helpers.test.ts +1 -1
  254. package/src/domain/helpers.ts +1 -1
  255. package/src/domain/model-config.ts +1 -1
  256. package/src/domain/thread-activities.test.ts +1 -1
  257. package/src/domain/thread-activities.ts +1 -1
  258. package/src/domain/thread-lifecycle.test.ts +1 -1
  259. package/src/domain/thread-lifecycle.ts +1 -1
  260. package/src/effect.test-utils.ts +25 -0
  261. package/src/index.ts +1 -1
  262. package/src/{connection/node.ts → node/connection.ts} +1 -1
  263. package/src/node/index.ts +1 -2
  264. package/src/orchestration/index.ts +0 -1
  265. package/src/orchestration/layer.ts +3 -2
  266. package/src/orchestration/service.ts +1 -1
  267. package/src/rpc/error.ts +10 -17
  268. package/src/rpc/layer.ts +17 -51
  269. package/src/rpc/operation.ts +16 -2
  270. package/src/rpc/service.ts +2 -1
  271. package/src/rpc/session.ts +168 -0
  272. package/src/rpc/ws-group.ts +13 -27
  273. package/src/runtime/index.ts +2 -1
  274. package/src/runtime/layer.test-utils.ts +32 -0
  275. package/src/runtime/layer.test.ts +66 -0
  276. package/src/runtime/layer.ts +21 -12
  277. package/src/t3tools/index.ts +1 -1
  278. package/src/types/marked-terminal.d.ts +11 -0
  279. package/dist/layout.js +0 -2
  280. package/dist/scope.js +0 -2
  281. package/dist/src/cli/output-format.d.ts +0 -11
  282. package/dist/src/config/layer.d.ts +0 -22
  283. package/dist/src/config/service.d.ts +0 -22
  284. package/dist/src/environment/layer.d.ts +0 -3
  285. package/dist/src/environment/service.d.ts +0 -12
  286. package/dist/src/layout/index.d.ts +0 -1
  287. package/dist/upstream-t3code/packages/contracts/src/auth.d.ts +0 -441
  288. package/dist/upstream-t3code/packages/contracts/src/baseSchemas.d.ts +0 -38
  289. package/dist/upstream-t3code/packages/contracts/src/desktopBootstrap.d.ts +0 -14
  290. package/dist/upstream-t3code/packages/contracts/src/editor.d.ts +0 -124
  291. package/dist/upstream-t3code/packages/contracts/src/environment.d.ts +0 -64
  292. package/dist/upstream-t3code/packages/contracts/src/environmentHttp.d.ts +0 -762
  293. package/dist/upstream-t3code/packages/contracts/src/filesystem.d.ts +0 -26
  294. package/dist/upstream-t3code/packages/contracts/src/git.d.ts +0 -500
  295. package/dist/upstream-t3code/packages/contracts/src/index.d.ts +0 -25
  296. package/dist/upstream-t3code/packages/contracts/src/ipc.d.ts +0 -490
  297. package/dist/upstream-t3code/packages/contracts/src/keybindings.d.ts +0 -133
  298. package/dist/upstream-t3code/packages/contracts/src/model.d.ts +0 -112
  299. package/dist/upstream-t3code/packages/contracts/src/orchestration.d.ts +0 -6682
  300. package/dist/upstream-t3code/packages/contracts/src/project.d.ts +0 -45
  301. package/dist/upstream-t3code/packages/contracts/src/provider.d.ts +0 -116
  302. package/dist/upstream-t3code/packages/contracts/src/providerInstance.d.ts +0 -99
  303. package/dist/upstream-t3code/packages/contracts/src/providerRuntime.d.ts +0 -4276
  304. package/dist/upstream-t3code/packages/contracts/src/relay.d.ts +0 -1262
  305. package/dist/upstream-t3code/packages/contracts/src/relayClient.d.ts +0 -48
  306. package/dist/upstream-t3code/packages/contracts/src/remoteAccess.d.ts +0 -45
  307. package/dist/upstream-t3code/packages/contracts/src/review.d.ts +0 -37
  308. package/dist/upstream-t3code/packages/contracts/src/rpc.d.ts +0 -8218
  309. package/dist/upstream-t3code/packages/contracts/src/server.d.ts +0 -2291
  310. package/dist/upstream-t3code/packages/contracts/src/settings.d.ts +0 -271
  311. package/dist/upstream-t3code/packages/contracts/src/sourceControl.d.ts +0 -177
  312. package/dist/upstream-t3code/packages/contracts/src/terminal.d.ts +0 -330
  313. package/dist/upstream-t3code/packages/contracts/src/vcs.d.ts +0 -148
  314. package/src/cli/auth-format.ts +0 -45
  315. package/src/cli/confirm.ts +0 -31
  316. package/src/cli/model-format.ts +0 -18
  317. package/src/cli/output-format.ts +0 -45
  318. package/src/cli/project-format.ts +0 -18
  319. package/src/cli/terminal/commands.test.ts +0 -101
  320. package/src/cli/terminal-format.ts +0 -167
  321. package/src/cli/thread-format.ts +0 -128
  322. package/src/config/layer.ts +0 -105
  323. package/src/config/service.ts +0 -26
  324. package/src/environment/layer.ts +0 -12
  325. package/src/environment/service.ts +0 -13
  326. package/src/layout/index.ts +0 -1
  327. /package/dist/src/{scope → cli/scope}/index.d.ts +0 -0
  328. /package/dist/src/config/{url.d.ts → url/url.d.ts} +0 -0
  329. /package/src/{scope → cli/scope}/index.ts +0 -0
  330. /package/src/config/{url.ts → url/url.ts} +0 -0
@@ -0,0 +1,33 @@
1
+ import * as Context from "effect/Context";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { ConfigError } from "../error.ts";
4
+ import type { KeystoreUnavailableError } from "./error.ts";
5
+ export declare const masterKeyByteLength = 32;
6
+ export type MasterKeyReadResult = {
7
+ readonly kind: "missing";
8
+ } | {
9
+ readonly kind: "present";
10
+ readonly key: Uint8Array;
11
+ } | {
12
+ readonly kind: "corrupt";
13
+ readonly message: string;
14
+ } | {
15
+ readonly kind: "unavailable";
16
+ readonly message: string;
17
+ };
18
+ export type MasterKeyKeystore = {
19
+ readonly read: () => Effect.Effect<MasterKeyReadResult, ConfigError>;
20
+ readonly write: (key: Uint8Array) => Effect.Effect<void, ConfigError | KeystoreUnavailableError>;
21
+ };
22
+ declare const T3MasterKeyKeystoreFactory_base: Context.ServiceClass<T3MasterKeyKeystoreFactory, "t3cli/T3MasterKeyKeystoreFactory", {
23
+ readonly make: () => Effect.Effect<MasterKeyKeystore, KeystoreUnavailableError>;
24
+ }>;
25
+ export declare class T3MasterKeyKeystoreFactory extends T3MasterKeyKeystoreFactory_base {
26
+ }
27
+ export declare function shouldUseFileKeystoreForRead(result: MasterKeyReadResult): result is {
28
+ readonly kind: "missing";
29
+ } | {
30
+ readonly kind: "unavailable";
31
+ readonly message: string;
32
+ };
33
+ export {};
@@ -0,0 +1 @@
1
+ export { resolveConfigFilePath, resolveKeyFilePath, resolveT3cliConfigDir } from "./paths.ts";
@@ -0,0 +1,6 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Path from "effect/Path";
3
+ import { ConfigError } from "../error.ts";
4
+ export declare const resolveT3cliConfigDir: () => Effect.Effect<string, ConfigError, Path.Path>;
5
+ export declare const resolveConfigFilePath: () => Effect.Effect<string, ConfigError, Path.Path>;
6
+ export declare const resolveKeyFilePath: () => Effect.Effect<string, ConfigError, Path.Path>;
@@ -0,0 +1,4 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as FileSystem from "effect/FileSystem";
3
+ import { ConfigError } from "../error.ts";
4
+ export declare const hardenPrivateFileMode: (filePath: string, label: "config" | "credential key") => Effect.Effect<void, ConfigError, FileSystem.FileSystem>;
@@ -0,0 +1,68 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { T3CredentialCrypto } from "../credential/service.ts";
3
+ import { ConfigError } from "../error.ts";
4
+ import type { EncryptedConfig } from "../types.ts";
5
+ export declare const emptyEncryptedConfig: () => EncryptedConfig;
6
+ export declare const readEncryptedConfigFromValue: (value: unknown) => Effect.Effect<{
7
+ config: {
8
+ readonly version: 2;
9
+ readonly default?: string;
10
+ readonly environments: {
11
+ readonly [x: string]: {
12
+ readonly url: string;
13
+ readonly local: boolean;
14
+ readonly token: {
15
+ readonly kind: "encrypted";
16
+ readonly alg: "aes-256-gcm";
17
+ readonly key: "default";
18
+ readonly nonce: string;
19
+ readonly ciphertext: string;
20
+ readonly tag: string;
21
+ };
22
+ };
23
+ };
24
+ };
25
+ migratedFromV1: false;
26
+ } | {
27
+ config: {
28
+ readonly version: 2;
29
+ readonly default?: string;
30
+ readonly environments: {
31
+ readonly [x: string]: {
32
+ readonly url: string;
33
+ readonly local: boolean;
34
+ readonly token: {
35
+ readonly kind: "encrypted";
36
+ readonly alg: "aes-256-gcm";
37
+ readonly key: "default";
38
+ readonly nonce: string;
39
+ readonly ciphertext: string;
40
+ readonly tag: string;
41
+ };
42
+ };
43
+ };
44
+ };
45
+ migratedFromV1: true;
46
+ }, ConfigError, T3CredentialCrypto>;
47
+ export declare const migrateV1FileToEncrypted: (config: {
48
+ readonly url?: string;
49
+ readonly token?: string;
50
+ readonly local?: boolean;
51
+ }) => Effect.Effect<{
52
+ readonly version: 2;
53
+ readonly default?: string;
54
+ readonly environments: {
55
+ readonly [x: string]: {
56
+ readonly url: string;
57
+ readonly local: boolean;
58
+ readonly token: {
59
+ readonly kind: "encrypted";
60
+ readonly alg: "aes-256-gcm";
61
+ readonly key: "default";
62
+ readonly nonce: string;
63
+ readonly ciphertext: string;
64
+ readonly tag: string;
65
+ };
66
+ };
67
+ };
68
+ }, ConfigError, T3CredentialCrypto>;
@@ -0,0 +1,40 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as FileSystem from "effect/FileSystem";
3
+ import * as Path from "effect/Path";
4
+ import { ConfigError } from "../error.ts";
5
+ export declare const readEncryptedConfigFile: () => Effect.Effect<{
6
+ readonly version: 2;
7
+ readonly default?: string;
8
+ readonly environments: {
9
+ readonly [x: string]: {
10
+ readonly url: string;
11
+ readonly local: boolean;
12
+ readonly token: {
13
+ readonly kind: "encrypted";
14
+ readonly alg: "aes-256-gcm";
15
+ readonly key: "default";
16
+ readonly nonce: string;
17
+ readonly ciphertext: string;
18
+ readonly tag: string;
19
+ };
20
+ };
21
+ };
22
+ }, ConfigError, FileSystem.FileSystem | Path.Path | import("../credential/service.ts").T3CredentialCrypto>;
23
+ export declare const writeEncryptedConfigFile: (config: {
24
+ readonly version: 2;
25
+ readonly default?: string;
26
+ readonly environments: {
27
+ readonly [x: string]: {
28
+ readonly url: string;
29
+ readonly local: boolean;
30
+ readonly token: {
31
+ readonly kind: "encrypted";
32
+ readonly alg: "aes-256-gcm";
33
+ readonly key: "default";
34
+ readonly nonce: string;
35
+ readonly ciphertext: string;
36
+ readonly tag: string;
37
+ };
38
+ };
39
+ };
40
+ }) => Effect.Effect<void, ConfigError, FileSystem.FileSystem | Path.Path>;
@@ -0,0 +1,68 @@
1
+ import * as Schema from "effect/Schema";
2
+ export declare const EncryptedTokenSchema: Schema.Struct<{
3
+ readonly kind: Schema.Literal<"encrypted">;
4
+ readonly alg: Schema.Literal<"aes-256-gcm">;
5
+ readonly key: Schema.Literal<"default">;
6
+ readonly nonce: Schema.String;
7
+ readonly ciphertext: Schema.String;
8
+ readonly tag: Schema.String;
9
+ }>;
10
+ export declare const StoredEnvironmentFileSchema: Schema.Struct<{
11
+ readonly url: Schema.String;
12
+ readonly local: Schema.Boolean;
13
+ readonly token: Schema.Struct<{
14
+ readonly kind: Schema.Literal<"encrypted">;
15
+ readonly alg: Schema.Literal<"aes-256-gcm">;
16
+ readonly key: Schema.Literal<"default">;
17
+ readonly nonce: Schema.String;
18
+ readonly ciphertext: Schema.String;
19
+ readonly tag: Schema.String;
20
+ }>;
21
+ }>;
22
+ export declare const StoredConfigV2FileSchema: Schema.Struct<{
23
+ readonly version: Schema.Literal<2>;
24
+ readonly default: Schema.optionalKey<Schema.String>;
25
+ readonly environments: Schema.$Record<Schema.String, Schema.Struct<{
26
+ readonly url: Schema.String;
27
+ readonly local: Schema.Boolean;
28
+ readonly token: Schema.Struct<{
29
+ readonly kind: Schema.Literal<"encrypted">;
30
+ readonly alg: Schema.Literal<"aes-256-gcm">;
31
+ readonly key: Schema.Literal<"default">;
32
+ readonly nonce: Schema.String;
33
+ readonly ciphertext: Schema.String;
34
+ readonly tag: Schema.String;
35
+ }>;
36
+ }>>;
37
+ }>;
38
+ export declare const StoredConfigV1FileSchema: Schema.Struct<{
39
+ readonly url: Schema.optionalKey<Schema.String>;
40
+ readonly token: Schema.optionalKey<Schema.String>;
41
+ readonly local: Schema.optionalKey<Schema.Boolean>;
42
+ }>;
43
+ export type EncryptedToken = Schema.Schema.Type<typeof EncryptedTokenSchema>;
44
+ export type StoredEnvironmentFile = Schema.Schema.Type<typeof StoredEnvironmentFileSchema>;
45
+ export type StoredConfigV2File = Schema.Schema.Type<typeof StoredConfigV2FileSchema>;
46
+ export type StoredConfigV1File = Schema.Schema.Type<typeof StoredConfigV1FileSchema>;
47
+ export declare const StoredConfigV1FileJson: Schema.fromJsonString<Schema.Struct<{
48
+ readonly url: Schema.optionalKey<Schema.String>;
49
+ readonly token: Schema.optionalKey<Schema.String>;
50
+ readonly local: Schema.optionalKey<Schema.Boolean>;
51
+ }>>;
52
+ export declare const StoredConfigV2FileJson: Schema.fromJsonString<Schema.Struct<{
53
+ readonly version: Schema.Literal<2>;
54
+ readonly default: Schema.optionalKey<Schema.String>;
55
+ readonly environments: Schema.$Record<Schema.String, Schema.Struct<{
56
+ readonly url: Schema.String;
57
+ readonly local: Schema.Boolean;
58
+ readonly token: Schema.Struct<{
59
+ readonly kind: Schema.Literal<"encrypted">;
60
+ readonly alg: Schema.Literal<"aes-256-gcm">;
61
+ readonly key: Schema.Literal<"default">;
62
+ readonly nonce: Schema.String;
63
+ readonly ciphertext: Schema.String;
64
+ readonly tag: Schema.String;
65
+ }>;
66
+ }>>;
67
+ }>>;
68
+ export declare const UnknownConfigFileJson: Schema.UnknownFromJsonString;
@@ -0,0 +1,40 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { ConfigError } from "../error.ts";
3
+ import type { EncryptedConfig } from "../types.ts";
4
+ export type ResolveSelectionInput = {
5
+ readonly selectedEnvironment?: string | undefined;
6
+ readonly defaultEnvironment?: string | undefined;
7
+ };
8
+ export declare function selectEnvironmentName(input: ResolveSelectionInput): string | undefined;
9
+ export type ResolveCredentialInput = {
10
+ readonly envUrl?: string | undefined;
11
+ readonly envToken?: string | undefined;
12
+ };
13
+ export declare function validateCredentialEnvVars(input: ResolveCredentialInput): Effect.Effect<void, never, never> | Effect.Effect<never, ConfigError, never>;
14
+ export declare function resolveDefaultForUpsert(encrypted: EncryptedConfig, environmentName: string, makeDefault?: boolean): string | undefined;
15
+ export declare function summarizeEnvironments(encrypted: EncryptedConfig): {
16
+ name: string;
17
+ url: string;
18
+ local: boolean;
19
+ default: boolean;
20
+ }[];
21
+ export declare function buildResolvedConfigFromEnv(input: {
22
+ readonly envUrl: string;
23
+ readonly envToken: string;
24
+ }): Effect.Effect<{
25
+ url: string;
26
+ token: string;
27
+ source: "env";
28
+ local: false;
29
+ }, ConfigError, never>;
30
+ export declare function buildResolvedConfigFromStored(input: {
31
+ readonly selectedName: string;
32
+ readonly token: string;
33
+ readonly encrypted: EncryptedConfig;
34
+ }): Effect.Effect<{
35
+ url: string;
36
+ token: string;
37
+ source: "config";
38
+ local: boolean;
39
+ environment: string;
40
+ }, ConfigError, never>;
@@ -0,0 +1 @@
1
+ export * as Service from "./service.ts";
@@ -0,0 +1,4 @@
1
+ export declare function resolveConfiguredEnvironment(input: {
2
+ readonly cliFlag?: string | undefined;
3
+ readonly t3cliEnv?: string | undefined;
4
+ }): string | undefined;
@@ -0,0 +1,10 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ declare const T3ConfigSelection_base: Context.ServiceClass<T3ConfigSelection, "t3cli/T3ConfigSelection", {
5
+ readonly getSelectedEnvironment: () => Effect.Effect<string | undefined>;
6
+ }>;
7
+ export declare class T3ConfigSelection extends T3ConfigSelection_base {
8
+ }
9
+ export declare const layer: Layer.Layer<T3ConfigSelection, import("effect/Config").ConfigError, never>;
10
+ export {};
@@ -0,0 +1,36 @@
1
+ import type { EncryptedToken, StoredConfigV2File, StoredEnvironmentFile } from "./persist/schema.ts";
2
+ export type EncryptedEnvironment = StoredEnvironmentFile;
3
+ export type EncryptedConfig = StoredConfigV2File;
4
+ export type DecryptedEnvironment = {
5
+ readonly url: string;
6
+ readonly local: boolean;
7
+ readonly token: string;
8
+ };
9
+ export type DecryptedConfig = {
10
+ readonly version: 2;
11
+ readonly default?: string;
12
+ readonly environments: Readonly<Record<string, DecryptedEnvironment>>;
13
+ };
14
+ export type EnvironmentSummary = {
15
+ readonly name: string;
16
+ readonly url: string;
17
+ readonly local: boolean;
18
+ readonly default: boolean;
19
+ };
20
+ export type ResolvedConfig = {
21
+ readonly url: string;
22
+ readonly token: string;
23
+ readonly source: "env" | "config";
24
+ readonly local: boolean;
25
+ readonly environment?: string;
26
+ };
27
+ export type UpsertEnvironmentInput = {
28
+ readonly name: string;
29
+ readonly url: string;
30
+ readonly token: string;
31
+ readonly local: boolean;
32
+ readonly makeDefault?: boolean;
33
+ };
34
+ export type StoredConfig = DecryptedConfig;
35
+ export type StoredEnvironment = DecryptedEnvironment;
36
+ export type { EncryptedToken };
@@ -0,0 +1,10 @@
1
+ import * as Cause from "effect/Cause";
2
+ import * as Schema from "effect/Schema";
3
+ declare const UrlError_base: Schema.Class<UrlError, Schema.TaggedStruct<"UrlError", {
4
+ readonly message: Schema.String;
5
+ readonly protocol: Schema.optionalKey<Schema.String>;
6
+ readonly cause: Schema.optionalKey<Schema.instanceOf<Cause.IllegalArgumentError, Cause.IllegalArgumentError>>;
7
+ }>, Cause.YieldableError>;
8
+ export declare class UrlError extends UrlError_base {
9
+ }
10
+ export {};
@@ -0,0 +1,2 @@
1
+ export { normalizeHttpBaseUrl, toWebSocketBaseUrl, toHttpEndpointUrl, toWebSocketEndpointUrl, } from "./url.ts";
2
+ export { UrlError } from "./error.ts";
@@ -1,7 +1,9 @@
1
1
  import * as Schema from "effect/Schema";
2
+ import { ConfigError } from "../config/error.ts";
3
+ import { UrlError } from "../config/url/error.ts";
2
4
  declare const T3CodeConnectionError_base: Schema.Class<T3CodeConnectionError, Schema.TaggedStruct<"T3CodeConnectionError", {
3
5
  readonly message: Schema.String;
4
- readonly cause: Schema.optionalKey<Schema.Unknown>;
6
+ readonly cause: Schema.Union<readonly [typeof ConfigError, typeof UrlError]>;
5
7
  }>, import("effect/Cause").YieldableError>;
6
8
  export declare class T3CodeConnectionError extends T3CodeConnectionError_base {
7
9
  }
@@ -1,5 +1,4 @@
1
1
  export { T3CodeConnectionError } from "./error.ts";
2
2
  export { T3CodeRpcLayer, makeT3CodeRpcLayer } from "./layer.ts";
3
- export { T3CodeNodeRpcLayer } from "./node.ts";
4
3
  export { T3CodeConnectionProvider, T3CodeConnectionProviderLive, makeT3CodeConnectionProvider, } from "./service.ts";
5
4
  export type { T3CodeAuth, T3CodeConnection, T3CodeOrigin } from "./type.ts";
@@ -0,0 +1,14 @@
1
+ import { type ConnectionAttemptError, type PreparedConnection } from "@t3tools/client-runtime/connection";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import { HttpClient } from "effect/unstable/http";
6
+ import { T3CodeConnectionError } from "./error.ts";
7
+ import { T3CodeConnectionProvider } from "./service.ts";
8
+ declare const T3PreparedConnectionProvider_base: Context.ServiceClass<T3PreparedConnectionProvider, "t3cli/T3PreparedConnectionProvider", {
9
+ readonly get: Effect.Effect<PreparedConnection, ConnectionAttemptError | T3CodeConnectionError>;
10
+ }>;
11
+ export declare class T3PreparedConnectionProvider extends T3PreparedConnectionProvider_base {
12
+ }
13
+ export declare const T3PreparedConnectionProviderLive: Layer.Layer<T3PreparedConnectionProvider, never, HttpClient.HttpClient | T3CodeConnectionProvider>;
14
+ export {};
@@ -1 +1 @@
1
- export type { OrchestrationMessage, OrchestrationProjectShell, OrchestrationShellSnapshot, OrchestrationThread, OrchestrationThreadShell, ServerProvider, } from "#t3tools/contracts";
1
+ export type { OrchestrationMessage, OrchestrationProjectShell, OrchestrationShellSnapshot, OrchestrationThread, OrchestrationThreadShell, ServerProvider, } from "@t3tools/contracts";
@@ -40,5 +40,18 @@ declare const TerminalLookupError_base: Schema.Class<TerminalLookupError, Schema
40
40
  }>, import("effect/Cause").YieldableError>;
41
41
  export declare class TerminalLookupError extends TerminalLookupError_base {
42
42
  }
43
- export type DomainError = ProjectLookupError | ModelSelectionError | ThreadEventError | ThreadSessionError | ThreadLookupError | ProjectCreateVisibilityError | TerminalLookupError;
43
+ declare const ProjectActionLookupError_base: Schema.Class<ProjectActionLookupError, Schema.TaggedStruct<"ProjectActionLookupError", {
44
+ readonly message: Schema.String;
45
+ readonly projectId: Schema.String;
46
+ readonly selector: Schema.String;
47
+ }>, import("effect/Cause").YieldableError>;
48
+ export declare class ProjectActionLookupError extends ProjectActionLookupError_base {
49
+ }
50
+ declare const ProjectActionValidationError_base: Schema.Class<ProjectActionValidationError, Schema.TaggedStruct<"ProjectActionValidationError", {
51
+ readonly message: Schema.String;
52
+ readonly projectId: Schema.String;
53
+ }>, import("effect/Cause").YieldableError>;
54
+ export declare class ProjectActionValidationError extends ProjectActionValidationError_base {
55
+ }
56
+ export type DomainError = ProjectLookupError | ModelSelectionError | ThreadEventError | ThreadSessionError | ThreadLookupError | ProjectCreateVisibilityError | TerminalLookupError | ProjectActionLookupError | ProjectActionValidationError;
44
57
  export {};
@@ -1,6 +1,6 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Path from "effect/Path";
3
- import type { OrchestrationProjectShell, OrchestrationShellSnapshot } from "#t3tools/contracts";
3
+ import type { OrchestrationProjectShell, OrchestrationShellSnapshot } from "@t3tools/contracts";
4
4
  export type ResolvedProjectScope = {
5
5
  readonly project: OrchestrationProjectShell;
6
6
  readonly inferredWorktreePath?: string;
@@ -11,6 +11,19 @@ export declare const resolveProjectScope: (snapshot: {
11
11
  readonly id: string & import("effect/Brand").Brand<"ProjectId">;
12
12
  readonly title: string;
13
13
  readonly workspaceRoot: string;
14
+ readonly repositoryIdentity?: {
15
+ readonly canonicalKey: string;
16
+ readonly locator: {
17
+ readonly source: "git-remote";
18
+ readonly remoteName: string;
19
+ readonly remoteUrl: string;
20
+ };
21
+ readonly rootPath?: string;
22
+ readonly displayName?: string;
23
+ readonly provider?: string;
24
+ readonly owner?: string;
25
+ readonly name?: string;
26
+ } | null | undefined;
14
27
  readonly defaultModelSelection: {
15
28
  readonly instanceId: string & import("effect/Brand").Brand<"ProviderInstanceId">;
16
29
  readonly model: string;
@@ -23,24 +36,13 @@ export declare const resolveProjectScope: (snapshot: {
23
36
  readonly id: string;
24
37
  readonly name: string;
25
38
  readonly command: string;
26
- readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
39
+ readonly icon: "build" | "configure" | "debug" | "lint" | "play" | "test";
27
40
  readonly runOnWorktreeCreate: boolean;
41
+ readonly previewUrl?: string | undefined;
42
+ readonly autoOpenPreview?: boolean | undefined;
28
43
  }[];
29
44
  readonly createdAt: string;
30
45
  readonly updatedAt: string;
31
- readonly repositoryIdentity?: {
32
- readonly canonicalKey: string;
33
- readonly locator: {
34
- readonly source: "git-remote";
35
- readonly remoteName: string;
36
- readonly remoteUrl: string;
37
- };
38
- readonly rootPath?: string;
39
- readonly displayName?: string;
40
- readonly provider?: string;
41
- readonly owner?: string;
42
- readonly name?: string;
43
- } | null | undefined;
44
46
  }[];
45
47
  readonly threads: readonly {
46
48
  readonly id: string & import("effect/Brand").Brand<"ThreadId">;
@@ -54,13 +56,13 @@ export declare const resolveProjectScope: (snapshot: {
54
56
  readonly value: string | boolean;
55
57
  }[];
56
58
  };
57
- readonly runtimeMode: "approval-required" | "auto-accept-edits" | "full-access";
59
+ readonly runtimeMode: "approval-required" | "auto" | "auto-accept-edits" | "full-access";
58
60
  readonly interactionMode: "default" | "plan";
59
61
  readonly branch: string | null;
60
62
  readonly worktreePath: string | null;
61
63
  readonly latestTurn: {
62
64
  readonly turnId: string & import("effect/Brand").Brand<"TurnId">;
63
- readonly state: "error" | "running" | "interrupted" | "completed";
65
+ readonly state: "completed" | "error" | "interrupted" | "running";
64
66
  readonly requestedAt: string;
65
67
  readonly startedAt: string | null;
66
68
  readonly completedAt: string | null;
@@ -73,15 +75,19 @@ export declare const resolveProjectScope: (snapshot: {
73
75
  readonly createdAt: string;
74
76
  readonly updatedAt: string;
75
77
  readonly archivedAt: string | null;
78
+ readonly settledOverride: "active" | "settled" | null;
79
+ readonly settledAt: string | null;
80
+ readonly snoozedUntil?: string | null | undefined;
81
+ readonly snoozedAt?: string | null | undefined;
76
82
  readonly session: {
77
83
  readonly threadId: string & import("effect/Brand").Brand<"ThreadId">;
78
- readonly status: "error" | "idle" | "starting" | "running" | "ready" | "interrupted" | "stopped";
84
+ readonly status: "error" | "idle" | "interrupted" | "ready" | "running" | "starting" | "stopped";
79
85
  readonly providerName: string | null;
80
- readonly runtimeMode: "approval-required" | "auto-accept-edits" | "full-access";
86
+ readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
87
+ readonly runtimeMode: "approval-required" | "auto" | "auto-accept-edits" | "full-access";
81
88
  readonly activeTurnId: (string & import("effect/Brand").Brand<"TurnId">) | null;
82
89
  readonly lastError: string | null;
83
90
  readonly updatedAt: string;
84
- readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
85
91
  } | null;
86
92
  readonly latestUserMessageAt: string | null;
87
93
  readonly hasPendingApprovals: boolean;
@@ -96,6 +102,19 @@ export declare const resolveProjectScope: (snapshot: {
96
102
  readonly id: string & import("effect/Brand").Brand<"ProjectId">;
97
103
  readonly title: string;
98
104
  readonly workspaceRoot: string;
105
+ readonly repositoryIdentity?: {
106
+ readonly canonicalKey: string;
107
+ readonly locator: {
108
+ readonly source: "git-remote";
109
+ readonly remoteName: string;
110
+ readonly remoteUrl: string;
111
+ };
112
+ readonly rootPath?: string;
113
+ readonly displayName?: string;
114
+ readonly provider?: string;
115
+ readonly owner?: string;
116
+ readonly name?: string;
117
+ } | null | undefined;
99
118
  readonly defaultModelSelection: {
100
119
  readonly instanceId: string & import("effect/Brand").Brand<"ProviderInstanceId">;
101
120
  readonly model: string;
@@ -108,11 +127,21 @@ export declare const resolveProjectScope: (snapshot: {
108
127
  readonly id: string;
109
128
  readonly name: string;
110
129
  readonly command: string;
111
- readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
130
+ readonly icon: "build" | "configure" | "debug" | "lint" | "play" | "test";
112
131
  readonly runOnWorktreeCreate: boolean;
132
+ readonly previewUrl?: string | undefined;
133
+ readonly autoOpenPreview?: boolean | undefined;
113
134
  }[];
114
135
  readonly createdAt: string;
115
136
  readonly updatedAt: string;
137
+ };
138
+ inferredWorktreePath: string;
139
+ } | {
140
+ inferredWorktreePath?: never;
141
+ project: {
142
+ readonly id: string & import("effect/Brand").Brand<"ProjectId">;
143
+ readonly title: string;
144
+ readonly workspaceRoot: string;
116
145
  readonly repositoryIdentity?: {
117
146
  readonly canonicalKey: string;
118
147
  readonly locator: {
@@ -126,13 +155,6 @@ export declare const resolveProjectScope: (snapshot: {
126
155
  readonly owner?: string;
127
156
  readonly name?: string;
128
157
  } | null | undefined;
129
- };
130
- inferredWorktreePath: string;
131
- } | {
132
- project: {
133
- readonly id: string & import("effect/Brand").Brand<"ProjectId">;
134
- readonly title: string;
135
- readonly workspaceRoot: string;
136
158
  readonly defaultModelSelection: {
137
159
  readonly instanceId: string & import("effect/Brand").Brand<"ProviderInstanceId">;
138
160
  readonly model: string;
@@ -145,25 +167,13 @@ export declare const resolveProjectScope: (snapshot: {
145
167
  readonly id: string;
146
168
  readonly name: string;
147
169
  readonly command: string;
148
- readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
170
+ readonly icon: "build" | "configure" | "debug" | "lint" | "play" | "test";
149
171
  readonly runOnWorktreeCreate: boolean;
172
+ readonly previewUrl?: string | undefined;
173
+ readonly autoOpenPreview?: boolean | undefined;
150
174
  }[];
151
175
  readonly createdAt: string;
152
176
  readonly updatedAt: string;
153
- readonly repositoryIdentity?: {
154
- readonly canonicalKey: string;
155
- readonly locator: {
156
- readonly source: "git-remote";
157
- readonly remoteName: string;
158
- readonly remoteUrl: string;
159
- };
160
- readonly rootPath?: string;
161
- readonly displayName?: string;
162
- readonly provider?: string;
163
- readonly owner?: string;
164
- readonly name?: string;
165
- } | null | undefined;
166
177
  };
167
- inferredWorktreePath?: never;
168
178
  } | undefined, never, Path.Path>;
169
179
  export declare function findProjectById(snapshot: OrchestrationShellSnapshot, projectId: string): OrchestrationProjectShell | null;