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
@@ -1,25 +1,53 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Layer from "effect/Layer";
3
- import { T3Config } from "../config/service.ts";
3
+ import { T3Config } from "../config/config.ts";
4
4
  import { AuthConfigError } from "./error.ts";
5
5
  import { T3LocalAuth } from "./local.ts";
6
6
  import { T3AuthPairing } from "./pairing.ts";
7
7
  import { T3Auth } from "./service.ts";
8
8
  import { T3AuthTransport } from "./transport.ts";
9
- import type { AuthConfigInput } from "./type.ts";
9
+ import type { AuthConfigInput, AuthEnvironmentListItem, AuthResolvedConfig } from "./type.ts";
10
10
  export declare const makeT3Auth: () => Effect.Effect<{
11
11
  pair: (pairingUrl: string) => Effect.Effect<import("./type.ts").PairResult, import("./error.ts").AuthPairingUrlError | import("./error.ts").AuthTransportError>;
12
12
  local: (input: import("./type.ts").LocalAuthInput) => Effect.Effect<import("./type.ts").LocalAuthResult, import("./error.ts").AuthLocalError>;
13
13
  writeConfig: (input: AuthConfigInput) => Effect.Effect<void, AuthConfigError, never>;
14
+ persistEnvironment: (input: {
15
+ readonly name: string;
16
+ readonly url: string;
17
+ readonly token: string;
18
+ readonly local: boolean;
19
+ readonly replace?: boolean;
20
+ readonly allowReplace: boolean;
21
+ }) => Effect.Effect<string, AuthConfigError, never>;
22
+ environmentExists: (name: string) => Effect.Effect<boolean, AuthConfigError, never>;
23
+ defaultNameFromUrl: (url: string) => Effect.Effect<string, AuthConfigError, never>;
24
+ defaultNameForLocal: () => Effect.Effect<"local", never, never>;
25
+ listEnvironments: () => Effect.Effect<AuthEnvironmentListItem[], AuthConfigError, never>;
26
+ useEnvironment: (name: string) => Effect.Effect<{
27
+ name: string;
28
+ default: true;
29
+ }, AuthConfigError, never>;
30
+ resolveUnpairTarget: (input: {
31
+ readonly name?: string;
32
+ }) => Effect.Effect<string, AuthConfigError, never>;
33
+ unpairEnvironment: (input: {
34
+ readonly name: string;
35
+ }) => Effect.Effect<{
36
+ name: string;
37
+ removed: true;
38
+ }, AuthConfigError, never>;
14
39
  status: () => Effect.Effect<{
15
- readonly authenticated: boolean;
16
- readonly role?: "client" | "owner";
17
- readonly sessionMethod?: string;
18
- readonly expiresAt?: string;
40
+ readonly config: AuthResolvedConfig;
41
+ readonly session: {
42
+ readonly authenticated: boolean;
43
+ readonly role?: "client" | "owner";
44
+ readonly sessionMethod?: string;
45
+ readonly expiresAt?: string;
46
+ };
19
47
  }, AuthConfigError | import("./error.ts").AuthTransportError, never>;
20
48
  issueWebSocketTicket: () => Effect.Effect<{
21
49
  readonly ticket: string;
22
50
  readonly expiresAt: string;
23
51
  }, AuthConfigError | import("./error.ts").AuthTransportError, never>;
24
- }, never, T3Config | T3LocalAuth | T3AuthTransport | T3AuthPairing>;
25
- export declare const T3AuthLive: Layer.Layer<T3Auth, never, T3Config | T3LocalAuth | T3AuthTransport | T3AuthPairing>;
52
+ }, never, T3AuthPairing | T3AuthTransport | T3Config | T3LocalAuth>;
53
+ export declare const T3AuthLive: Layer.Layer<T3Auth, never, T3AuthPairing | T3AuthTransport | T3Config | T3LocalAuth>;
@@ -1,5 +1,8 @@
1
1
  import * as Effect from "effect/Effect";
2
- import { Environment } from "../environment/service.ts";
2
+ import type { CliRuntime } from "../cli/runtime/service.ts";
3
+ import type { T3CliEnvShape } from "../config/env/env.ts";
3
4
  export declare const resolveLocalBaseDir: (input: {
4
5
  readonly baseDir?: string | undefined;
5
- }) => Effect.Effect<string, never, Environment | import("effect/Path").Path>;
6
+ readonly cliRuntime: CliRuntime["Service"];
7
+ readonly t3CliEnv: T3CliEnvShape;
8
+ }) => Effect.Effect<string, never, import("effect/Path").Path>;
@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3
3
  import * as FileSystem from "effect/FileSystem";
4
4
  import * as Layer from "effect/Layer";
5
5
  import * as Path from "effect/Path";
6
- import { Environment } from "../environment/service.ts";
6
+ import { CliRuntime } from "../cli/runtime/service.ts";
7
7
  import { AuthLocalError } from "./error.ts";
8
8
  import type { LocalAuthOriginInput } from "./type.ts";
9
9
  declare const T3LocalAuthOrigin_base: Context.ServiceClass<T3LocalAuthOrigin, "t3cli/T3LocalAuthOrigin", {
@@ -13,6 +13,6 @@ export declare class T3LocalAuthOrigin extends T3LocalAuthOrigin_base {
13
13
  }
14
14
  export declare const makeT3LocalAuthOrigin: () => Effect.Effect<{
15
15
  resolve: (input?: LocalAuthOriginInput | undefined) => Effect.Effect<string, AuthLocalError, never>;
16
- }, never, Environment | Path.Path | FileSystem.FileSystem>;
17
- export declare const T3LocalAuthOriginLive: Layer.Layer<T3LocalAuthOrigin, never, Environment | Path.Path | FileSystem.FileSystem>;
16
+ }, import("effect/Config").ConfigError, CliRuntime | FileSystem.FileSystem | Path.Path>;
17
+ export declare const T3LocalAuthOriginLive: Layer.Layer<T3LocalAuthOrigin, import("effect/Config").ConfigError, CliRuntime | FileSystem.FileSystem | Path.Path>;
18
18
  export {};
@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
4
4
  import * as FileSystem from "effect/FileSystem";
5
5
  import * as Layer from "effect/Layer";
6
6
  import * as Path from "effect/Path";
7
- import { Environment } from "../environment/service.ts";
7
+ import { CliRuntime } from "../cli/runtime/service.ts";
8
8
  import { SqlClientFactory } from "../sql/service.ts";
9
9
  import { AuthLocalError } from "./error.ts";
10
10
  import type { LocalAuthTokenInput, LocalAuthTokenResult } from "./type.ts";
@@ -21,6 +21,6 @@ export declare const makeT3LocalAuthToken: () => Effect.Effect<{
21
21
  source: "local";
22
22
  baseDir: string;
23
23
  }, AuthLocalError, never>;
24
- }, never, Environment | Path.Path | Crypto.Crypto | FileSystem.FileSystem | SqlClientFactory>;
25
- export declare const T3LocalAuthTokenLive: Layer.Layer<T3LocalAuthToken, never, Environment | Path.Path | Crypto.Crypto | FileSystem.FileSystem | SqlClientFactory>;
24
+ }, import("effect/Config").ConfigError, CliRuntime | Crypto.Crypto | FileSystem.FileSystem | Path.Path | SqlClientFactory>;
25
+ export declare const T3LocalAuthTokenLive: Layer.Layer<T3LocalAuthToken, import("effect/Config").ConfigError, CliRuntime | Crypto.Crypto | FileSystem.FileSystem | Path.Path | SqlClientFactory>;
26
26
  export {};
@@ -0,0 +1,3 @@
1
+ import { RemoteEnvironmentAuthFetchError, RemoteEnvironmentAuthInvalidJsonError, RemoteEnvironmentAuthTimeoutError, RemoteEnvironmentAuthUndeclaredStatusError } from "@t3tools/client-runtime/authorization";
2
+ import * as Schema from "effect/Schema";
3
+ export declare const RemoteEnvironmentAuthErrorSchema: Schema.Union<readonly [Schema.Union<readonly [typeof import("@t3tools/contracts").EnvironmentRequestInvalidError, typeof import("@t3tools/contracts").EnvironmentAuthInvalidError, typeof import("@t3tools/contracts").EnvironmentScopeRequiredError, typeof import("@t3tools/contracts").EnvironmentOperationForbiddenError, typeof import("@t3tools/contracts").EnvironmentResourceNotFoundError, typeof import("@t3tools/contracts").EnvironmentInternalError]>, Schema.instanceOf<RemoteEnvironmentAuthFetchError, unknown>, Schema.instanceOf<RemoteEnvironmentAuthInvalidJsonError, unknown>, Schema.instanceOf<RemoteEnvironmentAuthTimeoutError, unknown>, Schema.instanceOf<RemoteEnvironmentAuthUndeclaredStatusError, unknown>]>;
@@ -1,13 +1,25 @@
1
1
  import * as Context from "effect/Context";
2
2
  import type * as Effect from "effect/Effect";
3
- import type { AuthSessionState, AuthWebSocketTicketResult } from "./schema.ts";
3
+ import type { AuthWebSocketTicketResult } from "./schema.ts";
4
4
  import type { AuthError } from "./error.ts";
5
- import type { AuthConfigInput, LocalAuthInput, LocalAuthResult, PairResult } from "./type.ts";
5
+ import type { AuthConfigInput, AuthEnvironmentListItem, AuthStatusResult, AuthUnpairResult, AuthUseResult, LocalAuthInput, LocalAuthResult, PairResult, PersistEnvironmentInput } from "./type.ts";
6
6
  declare const T3Auth_base: Context.ServiceClass<T3Auth, "t3cli/T3Auth", {
7
7
  readonly pair: (value: string) => Effect.Effect<PairResult, AuthError>;
8
8
  readonly local: (input: LocalAuthInput) => Effect.Effect<LocalAuthResult, AuthError>;
9
9
  readonly writeConfig: (input: AuthConfigInput) => Effect.Effect<void, AuthError>;
10
- readonly status: () => Effect.Effect<AuthSessionState, AuthError>;
10
+ readonly persistEnvironment: (input: PersistEnvironmentInput) => Effect.Effect<string, AuthError>;
11
+ readonly environmentExists: (name: string) => Effect.Effect<boolean, AuthError>;
12
+ readonly defaultNameFromUrl: (url: string) => Effect.Effect<string, AuthError>;
13
+ readonly defaultNameForLocal: () => Effect.Effect<string, AuthError>;
14
+ readonly listEnvironments: () => Effect.Effect<readonly AuthEnvironmentListItem[], AuthError>;
15
+ readonly useEnvironment: (name: string) => Effect.Effect<AuthUseResult, AuthError>;
16
+ readonly unpairEnvironment: (input: {
17
+ readonly name: string;
18
+ }) => Effect.Effect<AuthUnpairResult, AuthError>;
19
+ readonly resolveUnpairTarget: (input: {
20
+ readonly name?: string;
21
+ }) => Effect.Effect<string, AuthError>;
22
+ readonly status: () => Effect.Effect<AuthStatusResult, AuthError>;
11
23
  readonly issueWebSocketTicket: () => Effect.Effect<AuthWebSocketTicketResult, AuthError>;
12
24
  }>;
13
25
  export declare class T3Auth extends T3Auth_base {
@@ -1,13 +1,44 @@
1
1
  import type { AuthBearerBootstrapResult } from "./schema.ts";
2
+ import type { AuthSessionState } from "./schema.ts";
2
3
  export type AuthSessionRole = AuthBearerBootstrapResult["role"];
3
4
  export type PairingUrl = {
4
5
  readonly baseUrl: string;
5
6
  readonly credential: string;
6
7
  };
7
8
  export type AuthConfigInput = {
9
+ readonly name: string;
8
10
  readonly url: string;
9
11
  readonly token: string;
10
- readonly local?: boolean;
12
+ readonly local: boolean;
13
+ readonly makeDefault?: boolean;
14
+ };
15
+ export type PersistEnvironmentInput = {
16
+ readonly name: string;
17
+ readonly url: string;
18
+ readonly token: string;
19
+ readonly local: boolean;
20
+ readonly replace?: boolean;
21
+ readonly allowReplace: boolean;
22
+ };
23
+ export type AuthResolvedConfig = {
24
+ readonly url: string;
25
+ readonly token: string;
26
+ readonly source: "env" | "config";
27
+ readonly local: boolean;
28
+ readonly environment?: string;
29
+ };
30
+ export type AuthEnvironmentSummary = {
31
+ readonly name: string;
32
+ readonly url: string;
33
+ readonly local: boolean;
34
+ readonly default: boolean;
35
+ };
36
+ export type AuthStatusResult = {
37
+ readonly config: AuthResolvedConfig;
38
+ readonly session: AuthSessionState;
39
+ };
40
+ export type AuthEnvironmentListItem = AuthEnvironmentSummary & {
41
+ readonly active: boolean;
11
42
  };
12
43
  export type PairResult = {
13
44
  readonly url: string;
@@ -42,3 +73,11 @@ export type LocalAuthResult = {
42
73
  readonly source: "local";
43
74
  readonly baseDir: string;
44
75
  };
76
+ export type AuthUseResult = {
77
+ readonly name: string;
78
+ readonly default: true;
79
+ };
80
+ export type AuthUnpairResult = {
81
+ readonly name: string;
82
+ readonly removed: true;
83
+ };
@@ -0,0 +1,2 @@
1
+ import { GlobalFlag } from "effect/unstable/cli";
2
+ export declare const cliEnvironmentSetting: GlobalFlag.Setting<"environment", import("effect/Option").Option<string>>;
@@ -0,0 +1,2 @@
1
+ export { cliEnvironmentSetting } from "./flag.ts";
2
+ export * as Selection from "./selection-layer.ts";
@@ -0,0 +1,3 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { T3ConfigSelection } from "../../config/selection/service.ts";
3
+ export declare const layer: Layer.Layer<T3ConfigSelection, import("effect/Config").ConfigError, never>;
@@ -4,6 +4,8 @@ export declare const threadFlag: Flag.Flag<import("effect/Option").Option<string
4
4
  export declare const worktreeFlag: Flag.Flag<import("effect/Option").Option<string>>;
5
5
  export declare const projectPathFlag: Flag.Flag<string>;
6
6
  export declare const yesFlag: Flag.Flag<boolean>;
7
+ export declare const replaceFlag: Flag.Flag<boolean>;
8
+ export declare const envNameFlag: Flag.Flag<import("effect/Option").Option<string>>;
7
9
  export declare const forceFlag: Flag.Flag<boolean>;
8
10
  export declare const selfActionForceFlag: Flag.Flag<boolean>;
9
11
  export declare const formatFlag: Flag.Flag<"auto" | "human" | "json">;
@@ -0,0 +1 @@
1
+ export { resolveOutputFormat, canRenderLiveTerminal, isInteractiveHumanTerminal, isAgentEnvironment, humanJsonFormatChoices, humanNdjsonFormatChoices, humanJsonNdjsonFormatChoices, type HumanJsonFormat, type HumanNdjsonFormat, type HumanJsonNdjsonFormat, } from "./output.ts";
@@ -0,0 +1,12 @@
1
+ import type { T3CliEnvShape } from "../../config/env/env.ts";
2
+ import type { CliRuntime } from "../runtime/service.ts";
3
+ export declare const humanJsonFormatChoices: readonly ["auto", "human", "json"];
4
+ export declare const humanNdjsonFormatChoices: readonly ["auto", "human", "ndjson"];
5
+ export declare const humanJsonNdjsonFormatChoices: readonly ["auto", "human", "json", "ndjson"];
6
+ export type HumanJsonFormat = (typeof humanJsonFormatChoices)[number];
7
+ export type HumanNdjsonFormat = (typeof humanNdjsonFormatChoices)[number];
8
+ export type HumanJsonNdjsonFormat = (typeof humanJsonNdjsonFormatChoices)[number];
9
+ export declare function resolveOutputFormat<T extends "json" | "ndjson">(format: "auto" | "human" | T, cliRuntime: CliRuntime["Service"], t3CliEnv: T3CliEnvShape, nonHumanFormat: T): "human" | T;
10
+ export declare function canRenderLiveTerminal(cliRuntime: CliRuntime["Service"], t3CliEnv: T3CliEnvShape): boolean;
11
+ export declare function isInteractiveHumanTerminal(cliRuntime: CliRuntime["Service"], t3CliEnv: T3CliEnvShape): boolean;
12
+ export declare function isAgentEnvironment(t3CliEnv: T3CliEnvShape): boolean;
@@ -1 +1,5 @@
1
1
  export { formatFlag, modelFlags, projectFlag, projectPathFlag, threadFlag, threadFormatFlag, waitFormatFlag, worktreeFlag, } from "./flags.ts";
2
+ export * as Env from "./env/index.ts";
3
+ export * as Runtime from "./runtime/index.ts";
4
+ export { resolveCommandProjectRef, resolveProjectRef, resolveThreadId, resolveWorktreePath, } from "./scope/index.ts";
5
+ export { resolveOutputFormat, canRenderLiveTerminal, isInteractiveHumanTerminal, isAgentEnvironment, humanJsonFormatChoices, humanNdjsonFormatChoices, humanJsonNdjsonFormatChoices, type HumanJsonFormat, type HumanNdjsonFormat, type HumanJsonNdjsonFormat, } from "./format/index.ts";
@@ -0,0 +1 @@
1
+ export { CliRuntime, layer } from "./service.ts";
@@ -0,0 +1,16 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Layer from "effect/Layer";
3
+ declare const CliRuntime_base: Context.ServiceClass<CliRuntime, "t3cli/CliRuntime", {
4
+ readonly cwd: string;
5
+ readonly stdoutIsTTY: boolean;
6
+ readonly stderrIsTTY: boolean;
7
+ }>;
8
+ export declare class CliRuntime extends CliRuntime_base {
9
+ static layerTest: (input?: {
10
+ readonly cwd?: string;
11
+ readonly stdoutIsTTY?: boolean;
12
+ readonly stderrIsTTY?: boolean;
13
+ }) => Layer.Layer<CliRuntime, never, never>;
14
+ }
15
+ export declare const layer: Layer.Layer<CliRuntime, never, never>;
16
+ export {};
@@ -1,19 +1,20 @@
1
+ import type { T3CliEnvScope } from "../../config/env/env.ts";
1
2
  export declare function resolveProjectRef(input: {
2
3
  readonly value: string | undefined;
3
- readonly env: Readonly<Record<string, string | undefined>>;
4
+ readonly scope: T3CliEnvScope;
4
5
  }): string | undefined;
5
6
  export declare function resolveCommandProjectRef(input: {
6
7
  readonly value: string | undefined;
7
- readonly env: Readonly<Record<string, string | undefined>>;
8
+ readonly scope: T3CliEnvScope;
8
9
  readonly cwd: string;
9
10
  readonly isLocal?: boolean;
10
11
  }): string | undefined;
11
12
  export declare function resolveWorktreePath(input: {
12
13
  readonly value: string | undefined;
13
- readonly env: Readonly<Record<string, string | undefined>>;
14
+ readonly scope: T3CliEnvScope;
14
15
  readonly inferred?: string;
15
16
  }): string | undefined;
16
17
  export declare function resolveThreadId(input: {
17
18
  readonly value: string | undefined;
18
- readonly env: Readonly<Record<string, string | undefined>>;
19
+ readonly scope: T3CliEnvScope;
19
20
  }): string | undefined;
@@ -0,0 +1,49 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FileSystem from "effect/FileSystem";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Path from "effect/Path";
6
+ import { T3CredentialCrypto } from "./credential/service.ts";
7
+ import { ConfigError } from "./error.ts";
8
+ import { T3ConfigSelection } from "./selection/service.ts";
9
+ import type { EnvironmentSummary, ResolvedConfig, UpsertEnvironmentInput } from "./types.ts";
10
+ declare const T3Config_base: Context.ServiceClass<T3Config, "t3cli/T3Config", {
11
+ readonly resolve: () => Effect.Effect<ResolvedConfig, ConfigError>;
12
+ readonly resolveActiveEnvironmentName: () => Effect.Effect<string | undefined, ConfigError>;
13
+ readonly listEnvironments: () => Effect.Effect<readonly EnvironmentSummary[], ConfigError>;
14
+ readonly upsertEnvironment: (input: UpsertEnvironmentInput) => Effect.Effect<void, ConfigError>;
15
+ readonly setDefaultEnvironment: (name: string) => Effect.Effect<void, ConfigError>;
16
+ readonly removeEnvironment: (name: string) => Effect.Effect<void, ConfigError>;
17
+ readonly hasEnvironment: (name: string) => Effect.Effect<boolean, ConfigError>;
18
+ readonly getDefaultEnvironmentName: () => Effect.Effect<string | undefined, ConfigError>;
19
+ }>;
20
+ export declare class T3Config extends T3Config_base {
21
+ }
22
+ export declare const make: () => Effect.Effect<{
23
+ readonly resolve: () => Effect.Effect<{
24
+ url: string;
25
+ token: string;
26
+ source: "env";
27
+ local: false;
28
+ } | {
29
+ url: string;
30
+ token: string;
31
+ source: "config";
32
+ local: boolean;
33
+ environment: string;
34
+ }, ConfigError, never>;
35
+ readonly resolveActiveEnvironmentName: () => Effect.Effect<string | undefined, ConfigError, never>;
36
+ readonly listEnvironments: () => Effect.Effect<{
37
+ name: string;
38
+ url: string;
39
+ local: boolean;
40
+ default: boolean;
41
+ }[], ConfigError, never>;
42
+ readonly upsertEnvironment: (input: UpsertEnvironmentInput) => Effect.Effect<void, ConfigError, never>;
43
+ readonly setDefaultEnvironment: (name: string) => Effect.Effect<void, ConfigError, never>;
44
+ readonly removeEnvironment: (name: string) => Effect.Effect<void, ConfigError, never>;
45
+ readonly hasEnvironment: (name: string) => Effect.Effect<boolean, ConfigError, never>;
46
+ readonly getDefaultEnvironmentName: () => Effect.Effect<string | undefined, ConfigError, never>;
47
+ }, import("effect/Config").ConfigError, FileSystem.FileSystem | Path.Path | T3ConfigSelection | T3CredentialCrypto>;
48
+ export declare const layer: Layer.Layer<T3Config, import("effect/Config").ConfigError, FileSystem.FileSystem | Path.Path | T3ConfigSelection | T3CredentialCrypto>;
49
+ export {};
@@ -0,0 +1,3 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { T3CredentialCipher } from "./cipher.ts";
3
+ export declare const layerNode: Layer.Layer<T3CredentialCipher, never, never>;
@@ -0,0 +1,3 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { T3CredentialCipher } from "./cipher.ts";
3
+ export declare const layerWeb: Layer.Layer<T3CredentialCipher, never, never>;
@@ -0,0 +1,29 @@
1
+ import * as Context from "effect/Context";
2
+ import type * as Effect from "effect/Effect";
3
+ import type { CredentialCipherError } from "./error.ts";
4
+ export declare const credentialCipherNonceByteLength = 12;
5
+ export declare const credentialCipherTagByteLength = 16;
6
+ export type AesGcmEncryptInput = {
7
+ readonly key: Uint8Array;
8
+ readonly nonce: Uint8Array;
9
+ readonly plaintext: Uint8Array;
10
+ readonly additionalData: Uint8Array;
11
+ };
12
+ export type AesGcmDecryptInput = {
13
+ readonly key: Uint8Array;
14
+ readonly nonce: Uint8Array;
15
+ readonly ciphertext: Uint8Array;
16
+ readonly tag: Uint8Array;
17
+ readonly additionalData: Uint8Array;
18
+ };
19
+ export type AesGcmEncryptResult = {
20
+ readonly ciphertext: Uint8Array;
21
+ readonly tag: Uint8Array;
22
+ };
23
+ declare const T3CredentialCipher_base: Context.ServiceClass<T3CredentialCipher, "t3cli/T3CredentialCipher", {
24
+ readonly encrypt: (input: AesGcmEncryptInput) => Effect.Effect<AesGcmEncryptResult, CredentialCipherError>;
25
+ readonly decrypt: (input: AesGcmDecryptInput) => Effect.Effect<Uint8Array, CredentialCipherError>;
26
+ }>;
27
+ export declare class T3CredentialCipher extends T3CredentialCipher_base {
28
+ }
29
+ export {};
@@ -0,0 +1,3 @@
1
+ import * as Option from "effect/Option";
2
+ import type { T3CliEnvShape } from "../env/env.ts";
3
+ export declare function credentialTokenFromEnv(t3CliEnv: Pick<T3CliEnvShape, "t3codeToken">): Option.Option<string>;
@@ -0,0 +1,8 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const CredentialCipherError_base: Schema.Class<CredentialCipherError, Schema.TaggedStruct<"CredentialCipherError", {
3
+ readonly operation: Schema.Literals<readonly ["encrypt", "decrypt"]>;
4
+ readonly cause: Schema.Defect;
5
+ }>, import("effect/Cause").YieldableError>;
6
+ export declare class CredentialCipherError extends CredentialCipherError_base {
7
+ }
8
+ export {};
@@ -0,0 +1,6 @@
1
+ export * as Service from "./service.ts";
2
+ export * as Cipher from "./cipher.ts";
3
+ export * as CipherNode from "./cipher-node.ts";
4
+ export * as CipherWeb from "./cipher-web.ts";
5
+ export { credentialTokenFromEnv } from "./env.ts";
6
+ export { CredentialCipherError } from "./error.ts";
@@ -0,0 +1,34 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Crypto from "effect/Crypto";
3
+ import * as Effect from "effect/Effect";
4
+ import * as FileSystem from "effect/FileSystem";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Path from "effect/Path";
7
+ import { T3CredentialCipher } from "./cipher.ts";
8
+ import type { EncryptedToken } from "../persist/schema.ts";
9
+ import { ConfigError } from "../error.ts";
10
+ import { T3MasterKeyKeystoreFactory } from "../keystore/service.ts";
11
+ export type CredentialEncryptInput = {
12
+ readonly environmentName: string;
13
+ readonly url: string;
14
+ readonly local: boolean;
15
+ readonly token: string;
16
+ };
17
+ export type CredentialDecryptInput = {
18
+ readonly environmentName: string;
19
+ readonly url: string;
20
+ readonly local: boolean;
21
+ readonly token: EncryptedToken;
22
+ };
23
+ declare const T3CredentialCrypto_base: Context.ServiceClass<T3CredentialCrypto, "t3cli/T3CredentialCrypto", {
24
+ readonly encrypt: (input: CredentialEncryptInput) => Effect.Effect<EncryptedToken, ConfigError>;
25
+ readonly decrypt: (input: CredentialDecryptInput) => Effect.Effect<string, ConfigError>;
26
+ }>;
27
+ export declare class T3CredentialCrypto extends T3CredentialCrypto_base {
28
+ }
29
+ export declare const make: () => Effect.Effect<{
30
+ encrypt: (input: CredentialEncryptInput) => Effect.Effect<EncryptedToken, ConfigError>;
31
+ decrypt: (input: CredentialDecryptInput) => Effect.Effect<string, ConfigError>;
32
+ }, ConfigError, Crypto.Crypto | FileSystem.FileSystem | Path.Path | T3CredentialCipher | T3MasterKeyKeystoreFactory>;
33
+ export declare const layer: Layer.Layer<T3CredentialCrypto, ConfigError, Crypto.Crypto | FileSystem.FileSystem | Path.Path | T3CredentialCipher | T3MasterKeyKeystoreFactory>;
34
+ export {};
@@ -0,0 +1,55 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Option from "effect/Option";
4
+ import type * as Redacted from "effect/Redacted";
5
+ export type T3CliEnvScope = {
6
+ readonly t3codeProjectRoot?: string | undefined;
7
+ readonly t3codeProjectId?: string | undefined;
8
+ readonly t3codeWorktreePath?: string | undefined;
9
+ readonly t3codeThreadId?: string | undefined;
10
+ };
11
+ export type T3CliEnvShape = {
12
+ readonly home: Option.Option<string>;
13
+ readonly xdgConfigHome: Option.Option<string>;
14
+ readonly t3cliEnv: Option.Option<string>;
15
+ readonly t3codeUrl: Option.Option<string>;
16
+ readonly t3codeToken: Option.Option<Redacted.Redacted>;
17
+ readonly t3codeHome: Option.Option<string>;
18
+ readonly term: Option.Option<string>;
19
+ readonly ci: boolean;
20
+ readonly codexCi: boolean;
21
+ readonly codexThreadId: boolean;
22
+ readonly t3cliAgent: boolean;
23
+ readonly scope: T3CliEnvScope;
24
+ };
25
+ export declare const T3CliEnvConfig: Config.Config<{
26
+ home: Option.Option<string>;
27
+ xdgConfigHome: Option.Option<string>;
28
+ t3cliEnv: Option.Option<string>;
29
+ t3codeUrl: Option.Option<string>;
30
+ t3codeToken: Option.Option<Redacted.Redacted<string>>;
31
+ t3codeHome: Option.Option<string>;
32
+ t3codeProjectRoot: Option.Option<string>;
33
+ t3codeProjectId: Option.Option<string>;
34
+ t3codeWorktreePath: Option.Option<string>;
35
+ t3codeThreadId: Option.Option<string>;
36
+ term: Option.Option<string>;
37
+ ci: boolean;
38
+ codexCi: boolean;
39
+ codexThreadId: boolean;
40
+ t3cliAgent: boolean;
41
+ }>;
42
+ export declare const loadT3CliEnv: Effect.Effect<{
43
+ home: Option.Option<string>;
44
+ xdgConfigHome: Option.Option<string>;
45
+ t3cliEnv: Option.Option<string>;
46
+ t3codeUrl: Option.Option<string>;
47
+ t3codeToken: Option.Option<Redacted.Redacted<string>>;
48
+ t3codeHome: Option.Option<string>;
49
+ term: Option.Option<string>;
50
+ ci: boolean;
51
+ codexCi: boolean;
52
+ codexThreadId: boolean;
53
+ t3cliAgent: boolean;
54
+ scope: T3CliEnvScope;
55
+ }, Config.ConfigError, never>;
@@ -0,0 +1,2 @@
1
+ export { loadT3CliEnv, T3CliEnvConfig, type T3CliEnvScope, type T3CliEnvShape } from "./env.ts";
2
+ export { resolveT3BaseDir, type T3Layout } from "./layout.ts";
@@ -5,7 +5,6 @@ export type T3Layout = {
5
5
  readonly homeDir: string;
6
6
  readonly t3codeHome?: string | undefined;
7
7
  };
8
- export declare function readT3LayoutFromNodeProcess(): T3Layout;
9
8
  export declare const resolveT3BaseDir: (input: {
10
9
  readonly layout: T3Layout;
11
10
  readonly baseDir?: string | undefined;
@@ -0,0 +1 @@
1
+ export { defaultEnvironmentNameForLocal, defaultEnvironmentNameFromUrl, migrateV1EnvironmentName, slugifyEnvironmentName, validateEnvironmentName, } from "./name.ts";
@@ -0,0 +1,10 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { ConfigError } from "../error.ts";
3
+ export declare function slugifyEnvironmentName(value: string): string;
4
+ export declare function validateEnvironmentName(name: string): Effect.Effect<void, never, never> | Effect.Effect<never, ConfigError, never>;
5
+ export declare function defaultEnvironmentNameFromUrl(url: string): Effect.Effect<string, ConfigError, never>;
6
+ export declare function defaultEnvironmentNameForLocal(): "local";
7
+ export declare function migrateV1EnvironmentName(input: {
8
+ readonly url?: string;
9
+ readonly local?: boolean;
10
+ }): Effect.Effect<string, ConfigError, never>;
@@ -1,18 +1,11 @@
1
- import * as Cause from "effect/Cause";
2
1
  import * as Schema from "effect/Schema";
3
2
  import { PlatformError } from "effect/PlatformError";
4
- declare const UrlError_base: Schema.Class<UrlError, Schema.TaggedStruct<"UrlError", {
5
- readonly message: Schema.String;
6
- readonly protocol: Schema.optionalKey<Schema.String>;
7
- readonly cause: Schema.optionalKey<Schema.instanceOf<Cause.IllegalArgumentError, Cause.IllegalArgumentError>>;
8
- }>, Cause.YieldableError>;
9
- export declare class UrlError extends UrlError_base {
10
- }
11
3
  declare const ConfigError_base: Schema.Class<ConfigError, Schema.TaggedStruct<"ConfigError", {
12
4
  readonly message: Schema.String;
13
- readonly cause: Schema.optionalKey<Schema.Union<readonly [Schema.instanceOf<PlatformError, unknown>, Schema.instanceOf<Schema.SchemaError, unknown>]>>;
14
- }>, Cause.YieldableError>;
5
+ readonly cause: Schema.optionalKey<Schema.Union<readonly [Schema.instanceOf<PlatformError, unknown>, Schema.instanceOf<Schema.SchemaError, unknown>, Schema.Defect]>>;
6
+ }>, import("effect/Cause").YieldableError>;
15
7
  export declare class ConfigError extends ConfigError_base {
16
8
  }
17
- export type ConfigServiceError = ConfigError | UrlError;
9
+ export type ConfigServiceError = ConfigError;
10
+ export declare function isPlatformNotFoundError(error: PlatformError): boolean;
18
11
  export {};
@@ -1,5 +1,10 @@
1
- export { T3Config } from "./service.ts";
2
- export type { ResolvedConfig, StoredConfig } from "./service.ts";
3
- export { T3ConfigLive, makeT3Config } from "./layer.ts";
4
- export { ConfigError, UrlError } from "./error.ts";
5
- export type { ConfigServiceError } from "./error.ts";
1
+ export * as Config from "./config.ts";
2
+ export type { EncryptedConfig, EncryptedToken, EnvironmentSummary, ResolvedConfig, UpsertEnvironmentInput, } from "./types.ts";
3
+ export { ConfigError, type ConfigServiceError } from "./error.ts";
4
+ export * as Credential from "./credential/index.ts";
5
+ export * as Keystore from "./keystore/index.ts";
6
+ export * as Selection from "./selection/index.ts";
7
+ export * as Env from "./env/index.ts";
8
+ export * as Paths from "./paths/index.ts";
9
+ export * as Url from "./url/index.ts";
10
+ export * as EnvironmentName from "./environment-name/index.ts";
@@ -0,0 +1,8 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const KeystoreUnavailableError_base: Schema.Class<KeystoreUnavailableError, Schema.TaggedStruct<"KeystoreUnavailableError", {
3
+ readonly reason: Schema.Literals<readonly ["module-not-found", "backend-unavailable"]>;
4
+ readonly cause: Schema.Defect;
5
+ }>, import("effect/Cause").YieldableError>;
6
+ export declare class KeystoreUnavailableError extends KeystoreUnavailableError_base {
7
+ }
8
+ export {};
@@ -0,0 +1,9 @@
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
+ import { type MasterKeyReadResult } from "./service.ts";
6
+ export declare const makeFileKeystore: () => Effect.Effect<{
7
+ read: () => Effect.Effect<MasterKeyReadResult, ConfigError>;
8
+ write: (key: Uint8Array) => Effect.Effect<void, ConfigError>;
9
+ }, ConfigError, FileSystem.FileSystem | Path.Path>;
@@ -0,0 +1,4 @@
1
+ export * as Service from "./service.ts";
2
+ export { KeystoreUnavailableError } from "./error.ts";
3
+ export * as KeyringNode from "./keyring-node.ts";
4
+ export * as File from "./file.ts";
@@ -0,0 +1,4 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { T3MasterKeyKeystoreFactory, type MasterKeyReadResult } from "./service.ts";
3
+ export declare function parseKeyringPassword(password: string | null): MasterKeyReadResult;
4
+ export declare const layerNode: Layer.Layer<T3MasterKeyKeystoreFactory, never, never>;