t3code-cli 0.10.0 → 0.12.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 (328) hide show
  1. package/README.md +75 -11
  2. package/dist/application.js +2 -2
  3. package/dist/auth.js +1 -1
  4. package/dist/bin.js +86754 -2675
  5. package/dist/cli.js +15 -2
  6. package/dist/config.js +120 -2
  7. package/dist/connection.js +2 -12
  8. package/dist/index.js +1 -1
  9. package/dist/node.js +6 -0
  10. package/dist/orchestration.js +2 -2
  11. package/dist/rpc.js +2 -2
  12. package/dist/runtime.js +2 -2
  13. package/dist/shared.js +43850 -38040
  14. package/dist/src/application/actions.d.ts +25 -0
  15. package/dist/src/application/index.d.ts +3 -2
  16. package/dist/src/application/layer.d.ts +99 -842
  17. package/dist/src/application/model-selection.d.ts +17 -2
  18. package/dist/src/application/models.d.ts +1 -87
  19. package/dist/src/application/project-commands.d.ts +31 -2
  20. package/dist/src/application/projects.d.ts +15 -137
  21. package/dist/src/application/service.d.ts +147 -5
  22. package/dist/src/application/shell-sequence.d.ts +5 -4
  23. package/dist/src/application/terminals.d.ts +66 -0
  24. package/dist/src/application/thread-commands.d.ts +48 -1
  25. package/dist/src/application/thread-update.d.ts +8 -0
  26. package/dist/src/application/thread-wait.d.ts +4 -6
  27. package/dist/src/application/threads.d.ts +36 -14
  28. package/dist/src/auth/error.d.ts +2 -1
  29. package/dist/src/auth/index.d.ts +1 -1
  30. package/dist/src/auth/layer.d.ts +34 -6
  31. package/dist/src/auth/local-base-dir.d.ts +5 -2
  32. package/dist/src/auth/local-origin.d.ts +3 -3
  33. package/dist/src/auth/local-token.d.ts +3 -3
  34. package/dist/src/auth/service.d.ts +15 -3
  35. package/dist/src/auth/type.d.ts +40 -1
  36. package/dist/src/cli/env/flag.d.ts +2 -0
  37. package/dist/src/cli/env/index.d.ts +2 -0
  38. package/dist/src/cli/env/selection-layer.d.ts +3 -0
  39. package/dist/src/cli/flags.d.ts +5 -0
  40. package/dist/src/cli/format/index.d.ts +1 -0
  41. package/dist/src/cli/format/output.d.ts +12 -0
  42. package/dist/src/cli/index.d.ts +4 -0
  43. package/dist/src/cli/runtime/index.d.ts +1 -0
  44. package/dist/src/cli/runtime/service.d.ts +16 -0
  45. package/dist/src/{scope → cli/scope}/resolve.d.ts +5 -4
  46. package/dist/src/config/config.d.ts +49 -0
  47. package/dist/src/config/credential/cipher-node.d.ts +3 -0
  48. package/dist/src/config/credential/cipher-web.d.ts +3 -0
  49. package/dist/src/config/credential/cipher.d.ts +29 -0
  50. package/dist/src/config/credential/env.d.ts +3 -0
  51. package/dist/src/config/credential/error.d.ts +8 -0
  52. package/dist/src/config/credential/index.d.ts +6 -0
  53. package/dist/src/config/credential/service.d.ts +34 -0
  54. package/dist/src/config/env/env.d.ts +55 -0
  55. package/dist/src/config/env/index.d.ts +2 -0
  56. package/dist/src/{layout/base-dir.d.ts → config/env/layout.d.ts} +0 -1
  57. package/dist/src/config/environment-name/index.d.ts +1 -0
  58. package/dist/src/config/environment-name/name.d.ts +10 -0
  59. package/dist/src/config/error.d.ts +4 -11
  60. package/dist/src/config/index.d.ts +10 -5
  61. package/dist/src/config/keystore/error.d.ts +8 -0
  62. package/dist/src/config/keystore/file.d.ts +9 -0
  63. package/dist/src/config/keystore/index.d.ts +4 -0
  64. package/dist/src/config/keystore/keyring-node.d.ts +4 -0
  65. package/dist/src/config/keystore/service.d.ts +33 -0
  66. package/dist/src/config/paths/index.d.ts +1 -0
  67. package/dist/src/config/paths/paths.d.ts +6 -0
  68. package/dist/src/config/persist/file-mode.d.ts +4 -0
  69. package/dist/src/config/persist/migration.d.ts +68 -0
  70. package/dist/src/config/persist/persist.d.ts +40 -0
  71. package/dist/src/config/persist/schema.d.ts +68 -0
  72. package/dist/src/config/resolve/resolve.d.ts +40 -0
  73. package/dist/src/config/selection/index.d.ts +1 -0
  74. package/dist/src/config/selection/resolve.d.ts +4 -0
  75. package/dist/src/config/selection/service.d.ts +10 -0
  76. package/dist/src/config/types.d.ts +36 -0
  77. package/dist/src/config/url/error.d.ts +10 -0
  78. package/dist/src/config/url/index.d.ts +2 -0
  79. package/dist/src/connection/index.d.ts +0 -1
  80. package/dist/src/contracts/index.d.ts +1 -1
  81. package/dist/src/domain/error.d.ts +27 -1
  82. package/dist/src/domain/helpers.d.ts +8 -2
  83. package/dist/src/domain/model-config.d.ts +30 -1
  84. package/dist/src/domain/thread-activities.d.ts +1 -1
  85. package/dist/src/domain/thread-lifecycle.d.ts +3 -2
  86. package/dist/src/index.d.ts +1 -2
  87. package/dist/src/{connection/node.d.ts → node/connection.d.ts} +1 -1
  88. package/dist/src/node/index.d.ts +1 -0
  89. package/dist/src/orchestration/index.d.ts +1 -1
  90. package/dist/src/orchestration/layer.d.ts +120 -829
  91. package/dist/src/orchestration/service.d.ts +2 -1
  92. package/dist/src/rpc/error.d.ts +5 -3
  93. package/dist/src/rpc/index.d.ts +5 -1
  94. package/dist/src/rpc/layer.d.ts +1166 -40
  95. package/dist/src/rpc/operation.d.ts +6280 -0
  96. package/dist/src/rpc/ws-group.d.ts +372 -27
  97. package/dist/src/runtime/index.d.ts +1 -2
  98. package/dist/src/runtime/layer.d.ts +12 -8
  99. package/dist/src/t3tools/index.d.ts +1 -1
  100. package/dist/t3tools.js +2 -2
  101. package/package.json +27 -19
  102. package/src/application/actions.test.ts +328 -0
  103. package/src/application/actions.ts +475 -0
  104. package/src/application/index.ts +32 -2
  105. package/src/application/layer.ts +43 -5
  106. package/src/application/model-selection.ts +70 -4
  107. package/src/application/models.ts +14 -14
  108. package/src/application/project-commands.ts +38 -5
  109. package/src/application/projects.ts +49 -20
  110. package/src/application/service.ts +275 -78
  111. package/src/application/shell-sequence.ts +6 -8
  112. package/src/application/terminals.ts +208 -0
  113. package/src/application/thread-commands.test.ts +43 -0
  114. package/src/application/thread-commands.ts +82 -1
  115. package/src/application/thread-update.ts +72 -0
  116. package/src/application/thread-wait.ts +47 -48
  117. package/src/application/threads.test.ts +172 -0
  118. package/src/application/threads.ts +128 -45
  119. package/src/auth/error.ts +2 -1
  120. package/src/auth/index.ts +7 -0
  121. package/src/auth/layer.test-utils.ts +34 -0
  122. package/src/auth/layer.ts +116 -34
  123. package/src/auth/local-base-dir.ts +13 -6
  124. package/src/auth/local-origin.ts +10 -7
  125. package/src/auth/local-token.ts +28 -23
  126. package/src/auth/service.test.ts +200 -0
  127. package/src/auth/service.ts +27 -3
  128. package/src/auth/transport.ts +2 -2
  129. package/src/auth/type.ts +47 -1
  130. package/src/bin.ts +26 -6
  131. package/src/cli/action-format.ts +110 -0
  132. package/src/cli/action.ts +398 -0
  133. package/src/cli/app.ts +8 -0
  134. package/src/cli/auth.ts +76 -23
  135. package/src/cli/env/flag.ts +8 -0
  136. package/src/cli/env/index.ts +2 -0
  137. package/src/cli/env/selection-layer.test.ts +49 -0
  138. package/src/cli/env/selection-layer.ts +27 -0
  139. package/src/cli/env.ts +107 -0
  140. package/src/cli/error.ts +26 -3
  141. package/src/cli/extra-args.test.ts +32 -0
  142. package/src/cli/extra-args.ts +22 -0
  143. package/src/cli/flags.ts +26 -1
  144. package/src/cli/format/auth.ts +92 -0
  145. package/src/cli/format/human.ts +131 -0
  146. package/src/cli/format/index.ts +12 -0
  147. package/src/cli/format/model.ts +29 -0
  148. package/src/cli/format/output.ts +51 -0
  149. package/src/cli/format/project.ts +32 -0
  150. package/src/cli/format/terminal.ts +87 -0
  151. package/src/cli/format/thread.test.ts +34 -0
  152. package/src/cli/format/thread.ts +185 -0
  153. package/src/cli/index.ts +20 -0
  154. package/src/cli/input/layer.ts +20 -0
  155. package/src/cli/input/service.ts +1 -0
  156. package/src/cli/interaction/confirm.ts +64 -0
  157. package/src/cli/interaction/self-action.ts +36 -0
  158. package/src/cli/message-input.ts +1 -1
  159. package/src/cli/model.ts +9 -5
  160. package/src/cli/project.ts +15 -8
  161. package/src/cli/projects/delete.ts +51 -0
  162. package/src/cli/require.ts +9 -7
  163. package/src/cli/runtime/index.ts +1 -0
  164. package/src/cli/runtime/service.ts +28 -0
  165. package/src/{scope → cli/scope}/resolve.ts +11 -9
  166. package/src/cli/terminal/attach.ts +29 -0
  167. package/src/cli/terminal/create.ts +55 -0
  168. package/src/cli/terminal/destroy.ts +62 -0
  169. package/src/cli/terminal/encoding.test.ts +63 -0
  170. package/src/cli/terminal/encoding.ts +23 -0
  171. package/src/cli/terminal/error.ts +14 -0
  172. package/src/cli/terminal/io-node-layer.ts +82 -0
  173. package/src/cli/terminal/io-service.ts +25 -0
  174. package/src/cli/terminal/list.ts +36 -0
  175. package/src/cli/terminal/read.test-utils.ts +48 -0
  176. package/src/cli/terminal/read.test.ts +35 -0
  177. package/src/cli/terminal/read.ts +99 -0
  178. package/src/cli/terminal/scope.ts +35 -0
  179. package/src/cli/terminal/shared.ts +250 -0
  180. package/src/cli/terminal/stream.ts +61 -0
  181. package/src/cli/terminal/wait.test.ts +148 -0
  182. package/src/cli/terminal/wait.ts +223 -0
  183. package/src/cli/terminal/write.test.ts +34 -0
  184. package/src/cli/terminal/write.ts +133 -0
  185. package/src/cli/terminal.ts +26 -0
  186. package/src/cli/thread.ts +8 -0
  187. package/src/cli/threads/approve.ts +11 -7
  188. package/src/cli/threads/archive.ts +23 -25
  189. package/src/cli/threads/callback.ts +6 -4
  190. package/src/cli/threads/delete.ts +67 -0
  191. package/src/cli/threads/interrupt.ts +57 -0
  192. package/src/cli/threads/list.test.ts +71 -0
  193. package/src/cli/threads/list.ts +25 -13
  194. package/src/cli/threads/messages.ts +11 -7
  195. package/src/cli/threads/respond.ts +11 -7
  196. package/src/cli/threads/send.ts +39 -9
  197. package/src/cli/threads/show.ts +11 -7
  198. package/src/cli/threads/start.ts +18 -13
  199. package/src/cli/threads/unarchive.ts +48 -0
  200. package/src/cli/threads/update.ts +155 -0
  201. package/src/cli/threads/wait.ts +11 -7
  202. package/src/cli/wait-events.ts +1 -1
  203. package/src/config/config.ts +260 -0
  204. package/src/config/credential/cipher-node.ts +40 -0
  205. package/src/config/credential/cipher-web.ts +82 -0
  206. package/src/config/credential/cipher.ts +39 -0
  207. package/src/config/credential/env.ts +13 -0
  208. package/src/config/credential/error.ts +9 -0
  209. package/src/config/credential/index.ts +6 -0
  210. package/src/config/credential/service.test-utils.ts +25 -0
  211. package/src/config/credential/service.test.ts +116 -0
  212. package/src/config/credential/service.ts +205 -0
  213. package/src/config/env/env.test-utils.ts +14 -0
  214. package/src/config/env/env.ts +81 -0
  215. package/src/config/env/index.ts +2 -0
  216. package/src/{layout/base-dir.ts → config/env/layout.ts} +0 -9
  217. package/src/config/environment-name/index.ts +7 -0
  218. package/src/config/environment-name/name.test.ts +66 -0
  219. package/src/config/environment-name/name.ts +49 -0
  220. package/src/config/error.ts +6 -8
  221. package/src/config/index.ts +16 -5
  222. package/src/config/keystore/error.ts +9 -0
  223. package/src/config/keystore/file.ts +96 -0
  224. package/src/config/keystore/index.ts +4 -0
  225. package/src/config/keystore/keyring-node.test.ts +12 -0
  226. package/src/config/keystore/keyring-node.ts +100 -0
  227. package/src/config/keystore/service.test-utils.ts +15 -0
  228. package/src/config/keystore/service.test.ts +18 -0
  229. package/src/config/keystore/service.ts +29 -0
  230. package/src/config/layer.test-utils.ts +45 -0
  231. package/src/config/layer.test.ts +209 -0
  232. package/src/config/paths/index.ts +1 -0
  233. package/src/config/paths/paths.ts +36 -0
  234. package/src/config/persist/file-mode.ts +21 -0
  235. package/src/config/persist/migration.test.ts +71 -0
  236. package/src/config/persist/migration.ts +82 -0
  237. package/src/config/persist/persist.test.ts +113 -0
  238. package/src/config/persist/persist.ts +65 -0
  239. package/src/config/persist/schema.ts +37 -0
  240. package/src/config/platform.test-utils.ts +20 -0
  241. package/src/config/resolve/resolve.test-utils.ts +20 -0
  242. package/src/config/resolve/resolve.test.ts +137 -0
  243. package/src/config/resolve/resolve.ts +104 -0
  244. package/src/config/selection/index.ts +1 -0
  245. package/src/config/selection/resolve.ts +14 -0
  246. package/src/config/selection/service.ts +29 -0
  247. package/src/config/temp-home.test-utils.ts +7 -0
  248. package/src/config/types.ts +49 -0
  249. package/src/config/url/error.ts +8 -0
  250. package/src/config/url/index.ts +7 -0
  251. package/src/config/url/url.test.ts +31 -0
  252. package/src/connection/index.ts +0 -1
  253. package/src/contracts/index.ts +1 -1
  254. package/src/domain/error.ts +39 -1
  255. package/src/domain/helpers.test.ts +1 -1
  256. package/src/domain/helpers.ts +1 -1
  257. package/src/domain/model-config.ts +5 -1
  258. package/src/domain/thread-activities.test.ts +1 -1
  259. package/src/domain/thread-activities.ts +1 -1
  260. package/src/domain/thread-lifecycle.test.ts +1 -1
  261. package/src/domain/thread-lifecycle.ts +15 -1
  262. package/src/effect.test-utils.ts +25 -0
  263. package/src/index.ts +1 -1
  264. package/src/{connection/node.ts → node/connection.ts} +1 -1
  265. package/src/node/index.ts +1 -0
  266. package/src/orchestration/index.ts +1 -1
  267. package/src/orchestration/layer.ts +34 -86
  268. package/src/orchestration/service.ts +5 -1
  269. package/src/rpc/error.ts +12 -2
  270. package/src/rpc/index.ts +5 -1
  271. package/src/rpc/layer.ts +1 -1
  272. package/src/rpc/operation.ts +83 -0
  273. package/src/rpc/ws-group.ts +25 -1
  274. package/src/runtime/index.ts +2 -1
  275. package/src/runtime/layer.test-utils.ts +32 -0
  276. package/src/runtime/layer.test.ts +66 -0
  277. package/src/runtime/layer.ts +22 -11
  278. package/src/t3tools/index.ts +1 -1
  279. package/src/types/marked-terminal.d.ts +11 -0
  280. package/dist/layout.js +0 -2
  281. package/dist/scope.js +0 -2
  282. package/dist/src/cli/output-format.d.ts +0 -9
  283. package/dist/src/config/layer.d.ts +0 -22
  284. package/dist/src/config/service.d.ts +0 -22
  285. package/dist/src/environment/layer.d.ts +0 -3
  286. package/dist/src/environment/service.d.ts +0 -12
  287. package/dist/src/layout/index.d.ts +0 -1
  288. package/dist/upstream-t3code/packages/contracts/src/auth.d.ts +0 -441
  289. package/dist/upstream-t3code/packages/contracts/src/baseSchemas.d.ts +0 -38
  290. package/dist/upstream-t3code/packages/contracts/src/desktopBootstrap.d.ts +0 -14
  291. package/dist/upstream-t3code/packages/contracts/src/editor.d.ts +0 -124
  292. package/dist/upstream-t3code/packages/contracts/src/environment.d.ts +0 -64
  293. package/dist/upstream-t3code/packages/contracts/src/environmentHttp.d.ts +0 -785
  294. package/dist/upstream-t3code/packages/contracts/src/filesystem.d.ts +0 -26
  295. package/dist/upstream-t3code/packages/contracts/src/git.d.ts +0 -500
  296. package/dist/upstream-t3code/packages/contracts/src/index.d.ts +0 -25
  297. package/dist/upstream-t3code/packages/contracts/src/ipc.d.ts +0 -496
  298. package/dist/upstream-t3code/packages/contracts/src/keybindings.d.ts +0 -133
  299. package/dist/upstream-t3code/packages/contracts/src/model.d.ts +0 -112
  300. package/dist/upstream-t3code/packages/contracts/src/orchestration.d.ts +0 -7338
  301. package/dist/upstream-t3code/packages/contracts/src/project.d.ts +0 -45
  302. package/dist/upstream-t3code/packages/contracts/src/provider.d.ts +0 -130
  303. package/dist/upstream-t3code/packages/contracts/src/providerInstance.d.ts +0 -99
  304. package/dist/upstream-t3code/packages/contracts/src/providerRuntime.d.ts +0 -4450
  305. package/dist/upstream-t3code/packages/contracts/src/relay.d.ts +0 -1262
  306. package/dist/upstream-t3code/packages/contracts/src/relayClient.d.ts +0 -48
  307. package/dist/upstream-t3code/packages/contracts/src/remoteAccess.d.ts +0 -45
  308. package/dist/upstream-t3code/packages/contracts/src/review.d.ts +0 -37
  309. package/dist/upstream-t3code/packages/contracts/src/rpc.d.ts +0 -8710
  310. package/dist/upstream-t3code/packages/contracts/src/server.d.ts +0 -2336
  311. package/dist/upstream-t3code/packages/contracts/src/settings.d.ts +0 -292
  312. package/dist/upstream-t3code/packages/contracts/src/sourceControl.d.ts +0 -177
  313. package/dist/upstream-t3code/packages/contracts/src/terminal.d.ts +0 -333
  314. package/dist/upstream-t3code/packages/contracts/src/vcs.d.ts +0 -148
  315. package/src/cli/auth-format.ts +0 -45
  316. package/src/cli/model-format.ts +0 -18
  317. package/src/cli/output-format.ts +0 -41
  318. package/src/cli/project-format.ts +0 -11
  319. package/src/cli/thread-format.ts +0 -121
  320. package/src/config/layer.ts +0 -105
  321. package/src/config/service.ts +0 -26
  322. package/src/environment/layer.ts +0 -12
  323. package/src/environment/service.ts +0 -13
  324. package/src/layout/index.ts +0 -1
  325. /package/dist/src/{scope → cli/scope}/index.d.ts +0 -0
  326. /package/dist/src/config/{url.d.ts → url/url.d.ts} +0 -0
  327. /package/src/{scope → cli/scope}/index.ts +0 -0
  328. /package/src/config/{url.ts → url/url.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import * as Crypto from "effect/Crypto";
2
2
  import * as Effect from "effect/Effect";
3
- import { type ModelSelection, type OrchestrationProjectShell, type ProviderApprovalDecision, type ProviderUserInputAnswers } from "#t3tools/contracts";
3
+ import { type ModelSelection, type OrchestrationProjectShell, type ProviderApprovalDecision, type ProviderUserInputAnswers } from "@t3tools/contracts";
4
4
  import type { ServerConfigForCli } from "../orchestration/service.ts";
5
5
  import type { SendThreadInput, StartThreadInput } from "./service.ts";
6
6
  export declare const makeThreadStartCommands: (input: {
@@ -82,6 +82,32 @@ export declare const makeThreadArchiveCommand: (threadId: string) => Effect.Effe
82
82
  commandId: string & import("effect/Brand").Brand<"CommandId">;
83
83
  threadId: string & import("effect/Brand").Brand<"ThreadId">;
84
84
  }, never, Crypto.Crypto>;
85
+ export declare const makeThreadUnarchiveCommand: (threadId: string) => Effect.Effect<{
86
+ type: "thread.unarchive";
87
+ commandId: string & import("effect/Brand").Brand<"CommandId">;
88
+ threadId: string & import("effect/Brand").Brand<"ThreadId">;
89
+ }, never, Crypto.Crypto>;
90
+ export declare const makeThreadSessionStopCommand: (threadId: string) => Effect.Effect<{
91
+ type: "thread.session.stop";
92
+ commandId: string & import("effect/Brand").Brand<"CommandId">;
93
+ threadId: string & import("effect/Brand").Brand<"ThreadId">;
94
+ createdAt: string;
95
+ }, never, Crypto.Crypto>;
96
+ export declare const makeThreadDeleteCommand: (threadId: string) => Effect.Effect<{
97
+ type: "thread.delete";
98
+ commandId: string & import("effect/Brand").Brand<"CommandId">;
99
+ threadId: string & import("effect/Brand").Brand<"ThreadId">;
100
+ }, never, Crypto.Crypto>;
101
+ export declare const makeThreadInterruptCommand: (input: {
102
+ readonly threadId: string;
103
+ readonly turnId?: string;
104
+ }) => Effect.Effect<{
105
+ createdAt: string;
106
+ turnId?: string & import("effect/Brand").Brand<"TurnId">;
107
+ type: "thread.turn.interrupt";
108
+ commandId: string & import("effect/Brand").Brand<"CommandId">;
109
+ threadId: string & import("effect/Brand").Brand<"ThreadId">;
110
+ }, never, Crypto.Crypto>;
85
111
  export declare const makeThreadApprovalRespondCommand: (input: {
86
112
  readonly threadId: string;
87
113
  readonly requestId: string;
@@ -108,3 +134,24 @@ export declare const makeThreadUserInputRespondCommand: (input: {
108
134
  };
109
135
  createdAt: string;
110
136
  }, never, Crypto.Crypto>;
137
+ export declare const makeThreadMetaUpdateCommand: (threadId: string, input: {
138
+ readonly title?: string;
139
+ readonly modelSelection?: ModelSelection;
140
+ readonly branch?: string | null;
141
+ readonly worktreePath?: string | null;
142
+ }) => Effect.Effect<{
143
+ worktreePath?: string | null;
144
+ branch?: string | null;
145
+ modelSelection?: {
146
+ readonly instanceId: string & import("effect/Brand").Brand<"ProviderInstanceId">;
147
+ readonly model: string;
148
+ readonly options?: readonly {
149
+ readonly id: string;
150
+ readonly value: string | boolean;
151
+ }[];
152
+ };
153
+ title?: string;
154
+ type: "thread.meta.update";
155
+ commandId: string & import("effect/Brand").Brand<"CommandId">;
156
+ threadId: string & import("effect/Brand").Brand<"ThreadId">;
157
+ }, never, Crypto.Crypto>;
@@ -0,0 +1,8 @@
1
+ import * as Crypto from "effect/Crypto";
2
+ import * as Effect from "effect/Effect";
3
+ import { ModelSelectionError, ThreadEventError } from "../domain/error.ts";
4
+ import { T3Orchestration } from "../orchestration/service.ts";
5
+ import type { UpdateThreadInput } from "./service.ts";
6
+ export declare function makeUpdateThread(): (input: UpdateThreadInput) => Effect.Effect<{
7
+ readonly sequence: number;
8
+ }, ModelSelectionError | ThreadEventError | import("../rpc/error.ts").RpcError, T3Orchestration | Crypto.Crypto>;
@@ -1,14 +1,12 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Stream from "effect/Stream";
3
3
  import { ThreadSessionError } from "../domain/error.ts";
4
- import type { Orchestration } from "../orchestration/service.ts";
4
+ import { T3Orchestration } from "../orchestration/service.ts";
5
5
  import type { WaitEvent } from "./service.ts";
6
6
  export declare function watchThread(input: {
7
- readonly orchestration: Orchestration;
8
7
  readonly threadId: string;
9
- }): Stream.Stream<WaitEvent, ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
8
+ }): Stream.Stream<WaitEvent, ThreadSessionError | import("../rpc/error.ts").RpcError, T3Orchestration>;
10
9
  export declare function waitForThread(input: {
11
- readonly orchestration: Orchestration;
12
10
  readonly threadId: string;
13
11
  }): Effect.Effect<{
14
12
  readonly id: string & import("effect/Brand").Brand<"ThreadId">;
@@ -44,7 +42,7 @@ export declare function waitForThread(input: {
44
42
  readonly deletedAt: string | null;
45
43
  readonly goal: {
46
44
  readonly objective: string;
47
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
45
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
48
46
  readonly tokensUsed: number;
49
47
  readonly tokenBudget: number | null;
50
48
  readonly timeUsedSeconds: number;
@@ -110,4 +108,4 @@ export declare function waitForThread(input: {
110
108
  readonly updatedAt: string;
111
109
  readonly providerInstanceId?: (string & import("effect/Brand").Brand<"ProviderInstanceId">) | undefined;
112
110
  } | null;
113
- }, ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
111
+ }, ThreadSessionError | import("../rpc/error.ts").RpcError, T3Orchestration>;
@@ -1,15 +1,16 @@
1
1
  import * as Crypto from "effect/Crypto";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Path from "effect/Path";
4
- import { Environment } from "../environment/service.ts";
4
+ import * as Stream from "effect/Stream";
5
+ import { CliRuntime } from "../cli/runtime/service.ts";
5
6
  import { T3Orchestration } from "../orchestration/service.ts";
6
- import { ProjectLookupError, ThreadSessionError } from "../domain/error.ts";
7
- import { type StartThreadInput } from "./service.ts";
8
- import type { SendThreadInput, CallbackThreadInput } from "./service.ts";
7
+ import { ProjectLookupError, ThreadLookupError, ThreadSessionError } from "../domain/error.ts";
8
+ import { type ListThreadsInclude, type StartThreadInput } from "./service.ts";
9
+ import type { CallbackThreadInput, SendThreadInput } from "./service.ts";
9
10
  import { derivePendingApprovals, derivePendingUserInputs } from "../domain/thread-activities.ts";
10
11
  import { type ThreadLifecycleStatus } from "../domain/thread-lifecycle.ts";
11
- import type { OrchestrationThread } from "#t3tools/contracts";
12
- import type { ProviderApprovalDecision, ProviderUserInputAnswers } from "#t3tools/contracts";
12
+ import type { OrchestrationThread } from "@t3tools/contracts";
13
+ import type { ProviderApprovalDecision, ProviderUserInputAnswers } from "@t3tools/contracts";
13
14
  export declare const makeThreadApplication: () => Effect.Effect<{
14
15
  approveThread: (input: {
15
16
  readonly threadId: string;
@@ -25,7 +26,22 @@ export declare const makeThreadApplication: () => Effect.Effect<{
25
26
  archiveThread: (threadId: string) => Effect.Effect<{
26
27
  readonly sequence: number;
27
28
  }, import("../rpc/error.ts").RpcError, never>;
28
- listThreads: (projectRef: string) => Effect.Effect<{
29
+ deleteThread: (threadId: string) => Effect.Effect<{
30
+ threadId: string;
31
+ dispatch: {
32
+ readonly sequence: number;
33
+ };
34
+ }, ThreadLookupError | import("../rpc/error.ts").RpcError, never>;
35
+ interruptThread: (threadId: string) => Effect.Effect<{
36
+ readonly sequence: number;
37
+ }, import("../rpc/error.ts").RpcError, never>;
38
+ updateThread: (input: import("./service.ts").UpdateThreadInput) => Effect.Effect<import("@t3tools/contracts").DispatchResult, import("./error.ts").ApplicationError>;
39
+ unarchiveThread: (threadId: string) => Effect.Effect<{
40
+ readonly sequence: number;
41
+ }, import("../rpc/error.ts").RpcError, never>;
42
+ listThreads: (projectRef: string, options?: {
43
+ readonly include?: ListThreadsInclude;
44
+ } | undefined) => Effect.Effect<{
29
45
  project: {
30
46
  readonly id: string & import("effect/Brand").Brand<"ProjectId">;
31
47
  readonly title: string;
@@ -44,6 +60,8 @@ export declare const makeThreadApplication: () => Effect.Effect<{
44
60
  readonly command: string;
45
61
  readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
46
62
  readonly runOnWorktreeCreate: boolean;
63
+ readonly previewUrl?: string | undefined;
64
+ readonly autoOpenPreview?: boolean | undefined;
47
65
  }[];
48
66
  readonly createdAt: string;
49
67
  readonly updatedAt: string;
@@ -104,7 +122,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
104
122
  } | null;
105
123
  readonly goal: {
106
124
  readonly objective: string;
107
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
125
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
108
126
  readonly tokensUsed: number;
109
127
  readonly tokenBudget: number | null;
110
128
  readonly timeUsedSeconds: number;
@@ -151,7 +169,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
151
169
  readonly deletedAt: string | null;
152
170
  readonly goal: {
153
171
  readonly objective: string;
154
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
172
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
155
173
  readonly tokensUsed: number;
156
174
  readonly tokenBudget: number | null;
157
175
  readonly timeUsedSeconds: number;
@@ -276,7 +294,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
276
294
  readonly deletedAt: string | null;
277
295
  readonly goal: {
278
296
  readonly objective: string;
279
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
297
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
280
298
  readonly tokensUsed: number;
281
299
  readonly tokenBudget: number | null;
282
300
  readonly timeUsedSeconds: number;
@@ -369,6 +387,8 @@ export declare const makeThreadApplication: () => Effect.Effect<{
369
387
  readonly command: string;
370
388
  readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
371
389
  readonly runOnWorktreeCreate: boolean;
390
+ readonly previewUrl?: string | undefined;
391
+ readonly autoOpenPreview?: boolean | undefined;
372
392
  }[];
373
393
  readonly createdAt: string;
374
394
  readonly updatedAt: string;
@@ -410,6 +430,8 @@ export declare const makeThreadApplication: () => Effect.Effect<{
410
430
  readonly command: string;
411
431
  readonly icon: "play" | "test" | "lint" | "configure" | "build" | "debug";
412
432
  readonly runOnWorktreeCreate: boolean;
433
+ readonly previewUrl?: string | undefined;
434
+ readonly autoOpenPreview?: boolean | undefined;
413
435
  }[];
414
436
  readonly createdAt: string;
415
437
  readonly updatedAt: string;
@@ -462,7 +484,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
462
484
  readonly deletedAt: string | null;
463
485
  readonly goal: {
464
486
  readonly objective: string;
465
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
487
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
466
488
  readonly tokensUsed: number;
467
489
  readonly tokenBudget: number | null;
468
490
  readonly timeUsedSeconds: number;
@@ -530,7 +552,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
530
552
  } | null;
531
553
  };
532
554
  }, ProjectLookupError | import("../domain/error.ts").ModelSelectionError | ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
533
- watchThread: (threadId: string) => import("effect/Stream").Stream<import("./service.ts").WaitEvent, ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
555
+ watchThread: (threadId: string) => Stream.Stream<import("./service.ts").WaitEvent, ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
534
556
  waitForThread: (threadId: string) => Effect.Effect<{
535
557
  readonly id: string & import("effect/Brand").Brand<"ThreadId">;
536
558
  readonly projectId: string & import("effect/Brand").Brand<"ProjectId">;
@@ -565,7 +587,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
565
587
  readonly deletedAt: string | null;
566
588
  readonly goal: {
567
589
  readonly objective: string;
568
- readonly status: "active" | "paused" | "budgetLimited" | "complete";
590
+ readonly status: "active" | "paused" | "blocked" | "usageLimited" | "budgetLimited" | "complete";
569
591
  readonly tokensUsed: number;
570
592
  readonly tokenBudget: number | null;
571
593
  readonly timeUsedSeconds: number;
@@ -638,7 +660,7 @@ export declare const makeThreadApplication: () => Effect.Effect<{
638
660
  };
639
661
  targetThreadId: string;
640
662
  }, ThreadSessionError | import("../rpc/error.ts").RpcError, never>;
641
- }, never, Environment | T3Orchestration | Path.Path | Crypto.Crypto>;
663
+ }, never, CliRuntime | T3Orchestration | Path.Path | Crypto.Crypto>;
642
664
  export type ThreadShow = {
643
665
  readonly id: string;
644
666
  readonly projectId: string;
@@ -2,7 +2,8 @@ import * as Cause from "effect/Cause";
2
2
  import * as Schema from "effect/Schema";
3
3
  import { PlatformError } from "effect/PlatformError";
4
4
  import { HttpClientError } from "effect/unstable/http";
5
- import { ConfigError, UrlError } from "../config/error.ts";
5
+ import { ConfigError } from "../config/error.ts";
6
+ import { UrlError } from "../config/url/error.ts";
6
7
  declare const AuthPairingUrlError_base: Schema.Class<AuthPairingUrlError, Schema.TaggedStruct<"AuthPairingUrlError", {
7
8
  readonly message: Schema.String;
8
9
  readonly cause: Schema.optionalKey<Schema.instanceOf<Cause.IllegalArgumentError, Cause.IllegalArgumentError>>;
@@ -7,4 +7,4 @@ export { T3AuthPairing, T3AuthPairingLive, makeT3AuthPairing, parsePairingUrl }
7
7
  export { AuthConfigError, AuthLocalDatabaseError, AuthLocalError, AuthLocalSecretError, AuthLocalSigningError, AuthPairingUrlError, AuthTransportError, } from "./error.ts";
8
8
  export type { AuthError } from "./error.ts";
9
9
  export type { AuthSessionState, AuthWebSocketTicketResult } from "./schema.ts";
10
- export type { AuthConfigInput, AuthSessionRole, LocalAuthInput, LocalAuthOriginInput, LocalAuthResult, LocalAuthTokenInput, LocalAuthTokenResult, PairingUrl, PairResult, } from "./type.ts";
10
+ export type { AuthConfigInput, AuthEnvironmentListItem, AuthEnvironmentSummary, AuthResolvedConfig, AuthSessionRole, AuthStatusResult, AuthUnpairResult, AuthUseResult, LocalAuthInput, LocalAuthOriginInput, LocalAuthResult, LocalAuthTokenInput, LocalAuthTokenResult, PairingUrl, PairResult, PersistEnvironmentInput, } from "./type.ts";
@@ -1,21 +1,49 @@
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;
@@ -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 | Path.Path | FileSystem.FileSystem>;
17
+ export declare const T3LocalAuthOriginLive: Layer.Layer<T3LocalAuthOrigin, import("effect/Config").ConfigError, CliRuntime | Path.Path | FileSystem.FileSystem>;
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 | Path.Path | Crypto.Crypto | FileSystem.FileSystem | SqlClientFactory>;
25
+ export declare const T3LocalAuthTokenLive: Layer.Layer<T3LocalAuthToken, import("effect/Config").ConfigError, CliRuntime | Path.Path | Crypto.Crypto | FileSystem.FileSystem | SqlClientFactory>;
26
26
  export {};
@@ -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>;
@@ -3,6 +3,11 @@ export declare const projectFlag: Flag.Flag<import("effect/Option").Option<strin
3
3
  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
+ 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>>;
9
+ export declare const forceFlag: Flag.Flag<boolean>;
10
+ export declare const selfActionForceFlag: Flag.Flag<boolean>;
6
11
  export declare const formatFlag: Flag.Flag<"auto" | "human" | "json">;
7
12
  export declare const threadFormatFlag: Flag.Flag<"auto" | "human" | "json" | "ndjson">;
8
13
  export declare const waitFormatFlag: Flag.Flag<"auto" | "human" | "ndjson">;
@@ -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, Path.Path | FileSystem.FileSystem | T3CredentialCrypto | T3ConfigSelection>;
48
+ export declare const layer: Layer.Layer<T3Config, import("effect/Config").ConfigError, Path.Path | FileSystem.FileSystem | T3CredentialCrypto | T3ConfigSelection>;
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>;