@botiverse/oar 0.21.2 → 0.22.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 (59) hide show
  1. package/README.md +11 -0
  2. package/dist/contracts/login.d.ts +91 -0
  3. package/dist/contracts/login.d.ts.map +1 -0
  4. package/dist/contracts/login.js +2 -0
  5. package/dist/contracts/login.js.map +1 -0
  6. package/dist/contracts/runtime.d.ts +5 -0
  7. package/dist/contracts/runtime.d.ts.map +1 -1
  8. package/dist/contracts/runtime.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/runtimes/claude/auth-status.d.ts +10 -0
  13. package/dist/runtimes/claude/auth-status.d.ts.map +1 -0
  14. package/dist/runtimes/claude/auth-status.js +47 -0
  15. package/dist/runtimes/claude/auth-status.js.map +1 -0
  16. package/dist/runtimes/claude/index.d.ts +4 -0
  17. package/dist/runtimes/claude/index.d.ts.map +1 -1
  18. package/dist/runtimes/claude/index.js +4 -0
  19. package/dist/runtimes/claude/index.js.map +1 -1
  20. package/dist/runtimes/claude/login.d.ts +6 -0
  21. package/dist/runtimes/claude/login.d.ts.map +1 -0
  22. package/dist/runtimes/claude/login.js +209 -0
  23. package/dist/runtimes/claude/login.js.map +1 -0
  24. package/dist/runtimes/codex/app-server-client.d.ts +4 -1
  25. package/dist/runtimes/codex/app-server-client.d.ts.map +1 -1
  26. package/dist/runtimes/codex/app-server-client.js +4 -4
  27. package/dist/runtimes/codex/app-server-client.js.map +1 -1
  28. package/dist/runtimes/codex/index.d.ts +3 -0
  29. package/dist/runtimes/codex/index.d.ts.map +1 -1
  30. package/dist/runtimes/codex/index.js +3 -0
  31. package/dist/runtimes/codex/index.js.map +1 -1
  32. package/dist/runtimes/codex/login.d.ts +16 -0
  33. package/dist/runtimes/codex/login.d.ts.map +1 -0
  34. package/dist/runtimes/codex/login.js +241 -0
  35. package/dist/runtimes/codex/login.js.map +1 -0
  36. package/dist/shared/executable/index.d.ts +2 -2
  37. package/dist/shared/executable/index.d.ts.map +1 -1
  38. package/dist/shared/executable/index.js +1 -1
  39. package/dist/shared/executable/index.js.map +1 -1
  40. package/dist/shared/executable/isolated.d.ts.map +1 -1
  41. package/dist/shared/executable/isolated.js +2 -5
  42. package/dist/shared/executable/isolated.js.map +1 -1
  43. package/dist/shared/executable/process.d.ts +25 -8
  44. package/dist/shared/executable/process.d.ts.map +1 -1
  45. package/dist/shared/executable/process.js +25 -1
  46. package/dist/shared/executable/process.js.map +1 -1
  47. package/dist/shared/executable/run.d.ts +2 -0
  48. package/dist/shared/executable/run.d.ts.map +1 -1
  49. package/dist/shared/executable/run.js +1 -0
  50. package/dist/shared/executable/run.js.map +1 -1
  51. package/dist/shared/installation.d.ts +6 -0
  52. package/dist/shared/installation.d.ts.map +1 -1
  53. package/dist/shared/installation.js +7 -2
  54. package/dist/shared/installation.js.map +1 -1
  55. package/dist/shared/login.d.ts +80 -0
  56. package/dist/shared/login.d.ts.map +1 -0
  57. package/dist/shared/login.js +211 -0
  58. package/dist/shared/login.js.map +1 -0
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -109,6 +109,17 @@ neither, their SDK versions following oar's (Pi's SDK is a dependency,
109
109
  Cursor's an exact peer dependency).
110
110
  See [runtime updates](https://github.com/botiverse/oar/blob/main/docs/spec/update.md).
111
111
 
112
+ `runtime.login(installation, interaction)` logs an installation in through
113
+ the runtime's own login, without a terminal: the sign-in URL or device code
114
+ arrives as a `ProviderLoginInteraction` event, and a code the person pastes
115
+ back is answered through its `manual_code` prompt and written to the
116
+ runtime's stdin only. It never logs the current account out first, and
117
+ `interaction.signal` cancels it. `runtime.authStatus(installation)` reads the
118
+ runtime's local status query. Claude and Codex have both; Antigravity has
119
+ neither, since its terms do not allow signing in through a third-party tool.
120
+ See
121
+ [runtime login](https://github.com/botiverse/oar/blob/main/docs/spec/login.md).
122
+
112
123
  Images go with an input through `InputOptions.images` (`{ path }` entries:
113
124
  absolute paths to png, jpeg, gif or webp files) on prompt, steer and queue,
114
125
  as the runtime's own image content. `session.capabilities.images` says whether
@@ -0,0 +1,91 @@
1
+ import type { AvailableInstallation } from "./installation.js";
2
+ import type { ProviderLoginInteraction } from "./provider-auth.js";
3
+ /** What the runtime says about the account it is signed in to. Every field is the runtime's own word, absent when it gives none. */
4
+ export interface LoginAccount {
5
+ readonly email?: string;
6
+ /** The runtime's plan or subscription label (`max`, `pro`, ...). */
7
+ readonly plan?: string;
8
+ /** The runtime's name for how it is signed in (`claude.ai`, `chatgpt`, `apiKey`, ...). */
9
+ readonly method?: string;
10
+ }
11
+ /** Why a login ended without a logged-in runtime. */
12
+ export type LoginFailureReason = "timed_out" | "rejected" | "not_logged_in" | "interaction_failed" | "process_failed";
13
+ /** Why oar cannot drive this runtime's login. */
14
+ export type LoginUnsupportedReason = "unsupported_installation" | "version_unsupported";
15
+ /**
16
+ * How a login ended. `failed.detail` and `unsupported.detail` are for people:
17
+ * one line in the runtime's own words where it gave one, with every pasted
18
+ * code and token shape redacted.
19
+ */
20
+ export type LoginResult =
21
+ /** The runtime's own status query confirms the sign-in (or, when it cannot tell, the runtime reported success). */
22
+ {
23
+ readonly kind: "logged_in";
24
+ readonly account?: LoginAccount;
25
+ } | {
26
+ readonly kind: "failed";
27
+ readonly reason: LoginFailureReason;
28
+ readonly detail?: string;
29
+ }
30
+ /** `interaction.signal` aborted before the runtime reported success; the login process and everything it started were stopped. */
31
+ | {
32
+ readonly kind: "cancelled";
33
+ } | {
34
+ readonly kind: "unsupported";
35
+ readonly reason: LoginUnsupportedReason;
36
+ readonly detail?: string;
37
+ };
38
+ export interface LoginOptions {
39
+ /** Bound for the whole flow, the person's time in the browser included; each runtime has its own default. */
40
+ readonly timeoutMs?: number;
41
+ }
42
+ /**
43
+ * Signs the installation in through the runtime's own login, without a
44
+ * terminal. Changes the machine's credentials: oar never calls it on its own.
45
+ *
46
+ * - Events go to `interaction.onEvent`: `auth_url` and `device_code` carry
47
+ * what a person opens or types, `info` the runtime's guidance. When the
48
+ * runtime needs a code pasted back, `interaction.prompt` is asked with
49
+ * `kind: "manual_code"`; the answer is written to the runtime's stdin only.
50
+ * - Never: a token or a pasted code in an event, a result, an error or a log.
51
+ * - Never logs the current account out first: a login that fails, times out
52
+ * or is cancelled leaves the previous login as it was.
53
+ * - Aborting `interaction.signal` stops the login process with everything it
54
+ * started and resolves `cancelled`. A prompt still open when the login
55
+ * settles is moot; the caller closes it.
56
+ * - Once the runtime reports success it has stored the new login: a deadline
57
+ * or abort after that never yields `timed_out` or `cancelled`. The status
58
+ * query decides; when it cannot answer (it failed, or the caller aborted)
59
+ * the result is `logged_in` without an account.
60
+ * - Logins are not serialized: whether two may run at once is the host's
61
+ * policy.
62
+ */
63
+ export type RuntimeLogin = (installation: AvailableInstallation, interaction: ProviderLoginInteraction, options?: LoginOptions) => Promise<LoginResult>;
64
+ /**
65
+ * Whether the runtime is logged in, from its own local status query.
66
+ * `source` names the command that answered.
67
+ */
68
+ export type AuthStatus = {
69
+ readonly kind: "logged_in";
70
+ readonly account?: LoginAccount;
71
+ readonly source: string;
72
+ } | {
73
+ readonly kind: "logged_out";
74
+ readonly source: string;
75
+ }
76
+ /** The status query failed or gave an answer oar cannot read; never a guess either way. */
77
+ | {
78
+ readonly kind: "unknown";
79
+ readonly detail?: string;
80
+ readonly source?: string;
81
+ };
82
+ export interface AuthStatusOptions {
83
+ readonly timeoutMs?: number;
84
+ }
85
+ /**
86
+ * Cheap and read only: runs the runtime's local status query, never a login
87
+ * flow, and returns no secret. Hosts call it to decide whether to offer a
88
+ * login.
89
+ */
90
+ export type AuthStatusReader = (installation: AvailableInstallation, options?: AuthStatusOptions) => Promise<AuthStatus>;
91
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/contracts/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,oIAAoI;AACpI,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,UAAU,GACV,eAAe,GACf,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,iDAAiD;AACjD,MAAM,MAAM,sBAAsB,GAC9B,0BAA0B,GAC1B,qBAAqB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,MAAM,WAAW;AACrB,mHAAmH;AACjH;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5F,kIAAkI;GAChI;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExG,MAAM,WAAW,YAAY;IAC3B,6GAA6G;IAC7G,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,YAAY,EAAE,qBAAqB,EACnC,WAAW,EAAE,wBAAwB,EACrC,OAAO,CAAC,EAAE,YAAY,KACnB,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC1D,2FAA2F;GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,YAAY,EAAE,qBAAqB,EACnC,OAAO,CAAC,EAAE,iBAAiB,KACxB,OAAO,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/contracts/login.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { AuthStatusReader, RuntimeLogin } from "./login.js";
1
2
  import type { RuntimeInventories } from "./inventory.js";
2
3
  import type { UpdateChecker, Upgrader } from "./update.js";
3
4
  import type { AccountUsageReader } from "./account-usage.js";
@@ -35,6 +36,10 @@ export interface Runtime extends RuntimeInventories {
35
36
  readonly checkUpdate?: UpdateChecker;
36
37
  /** Runs the runtime's own updater; changes the machine, so only on the host's explicit call. */
37
38
  readonly upgrade?: Upgrader;
39
+ /** Signs the runtime in through its own login; changes the machine's credentials, so only on the host's explicit call. */
40
+ readonly login?: RuntimeLogin;
41
+ /** Read only: whether the runtime is signed in, from its local status query. */
42
+ readonly authStatus?: AuthStatusReader;
38
43
  }
39
44
  export declare function defineRuntime<const T extends Omit<Runtime, keyof RuntimeInventories | "brand"> & Partial<RuntimeInventories> & {
40
45
  readonly brand?: RuntimeBrand;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/contracts/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,oBAAoB,GAAG,KAAK,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAE9F,sDAAsD;AACtD,MAAM,WAAW,OAAQ,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAWD,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,kBAAkB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAExO"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/contracts/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,oBAAoB,GAAG,KAAK,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAE9F,sDAAsD;AACtD,MAAM,WAAW,OAAQ,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAC5B,0HAA0H;IAC1H,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAWD,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,kBAAkB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAExO"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/contracts/runtime.ts"],"names":[],"mappings":"AA0CA,KAAK,UAAU,WAAW;IACxB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,+DAA+D;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAsI,OAAU;IAC3K,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AACpJ,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/contracts/runtime.ts"],"names":[],"mappings":"AA+CA,KAAK,UAAU,WAAW;IACxB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,+DAA+D;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAsI,OAAU;IAC3K,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AACpJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export type { ProviderAuthFacade, ProviderAuthStatus, ProviderLoginEvent, Provid
6
6
  export type { CatalogModel, CatalogProvider, CatalogRefreshOptions, CatalogRefreshResult, ModelCatalogFacade, } from "./contracts/model-catalog.js";
7
7
  export type { ListModelsOptions, ListModelsResult, ModelEntry, ModelLister, } from "./contracts/list-models.js";
8
8
  export type { UpdateCheck, UpdateChecker, UpdateCheckOptions, UpdateCheckUnavailableReason, Upgrader, UpgradeOptions, UpgradeResult, } from "./contracts/update.js";
9
+ export type { AuthStatus, AuthStatusOptions, AuthStatusReader, LoginAccount, LoginFailureReason, LoginOptions, LoginResult, LoginUnsupportedReason, RuntimeLogin, } from "./contracts/login.js";
9
10
  export type { RefusableSessionOption, RefusedSessionOptions, Runtime } from "./contracts/runtime.js";
10
11
  export type { AdapterSession, AttributionTier, ContextUsage, ControlAction, ControlEventBody, ControlOutcome, ControlResult, Cursor, Event, EventBody, EventObserver, EventsOptions, FailureClass, Frame, FrameBody, DeliverOptions, DeliverResult, DeliverWhen, InputImage, InputOptions, InputOrigin, QueryResult, ReasoningContent, RecordEnvelope, RecordKind, RejectionCode, RequestBody, RequestDirection, RequestRecord, ResponseBody, ResponseRecord, RuntimeEventBody, UserMessage, Session, SessionCapabilities, SessionEdge, SessionGraph, SessionNode, RawEventObserver, SessionOptions, RawEvent, SessionUsage, StartSession, SteerOrQueueResult, TaskEventBody, TaskStatus, TaskType, TokenTotals, ToolOutputPart, TurnOutcome, Unsubscribe, UsageReport, } from "./contracts/session.js";
11
12
  export { defineRuntime } from "./contracts/runtime.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AvailableInstallation } from "../../contracts/installation.js";
2
+ import type { AuthStatus, AuthStatusOptions } from "../../contracts/login.js";
3
+ export declare function claudeEnv(): NodeJS.ProcessEnv;
4
+ /** `claude auth status --json`: `{ loggedIn, authMethod, email?, subscriptionType?, ... }`, exit 0 logged in, 1 logged out. */
5
+ export declare function projectClaudeAuthStatus(stdout: string): AuthStatus;
6
+ /** `signal` (internal: the login's own) stops the query; the answer is then `unknown`. */
7
+ export declare function claudeAuthStatus(installation: AvailableInstallation, options?: AuthStatusOptions & {
8
+ readonly signal?: AbortSignal;
9
+ }): Promise<AuthStatus>;
10
+ //# sourceMappingURL=auth-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-status.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/auth-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAgB,MAAM,0BAA0B,CAAC;AAO5F,wBAAgB,SAAS,IAAI,MAAM,CAAC,UAAU,CAG7C;AAMD,+HAA+H;AAC/H,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAiBlE;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,qBAAqB,EACnC,OAAO,GAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAClE,OAAO,CAAC,UAAU,CAAC,CAcrB"}
@@ -0,0 +1,47 @@
1
+ import { runExecutable } from "../../shared/executable/index.js";
2
+ import { asRecord, parseJson } from "../../shared/json.js";
3
+ const STATUS_TIMEOUT_MS = 20_000;
4
+ const STATUS_SOURCE = "claude auth status --json";
5
+ export function claudeEnv() {
6
+ // As for sessions: a claude started from inside a claude session must not think it is nested.
7
+ return { ...process.env, CLAUDECODE: undefined };
8
+ }
9
+ function text(value) {
10
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : undefined;
11
+ }
12
+ /** `claude auth status --json`: `{ loggedIn, authMethod, email?, subscriptionType?, ... }`, exit 0 logged in, 1 logged out. */
13
+ export function projectClaudeAuthStatus(stdout) {
14
+ const status = asRecord(parseJson(stdout));
15
+ if (status === null || typeof status.loggedIn !== "boolean") {
16
+ return { kind: "unknown", detail: "claude auth status gave no loggedIn field", source: STATUS_SOURCE };
17
+ }
18
+ if (!status.loggedIn) {
19
+ return { kind: "logged_out", source: STATUS_SOURCE };
20
+ }
21
+ const email = text(status.email);
22
+ const plan = text(status.subscriptionType);
23
+ const method = text(status.authMethod);
24
+ const account = {
25
+ ...(email === undefined ? {} : { email }),
26
+ ...(plan === undefined ? {} : { plan }),
27
+ ...(method === undefined ? {} : { method }),
28
+ };
29
+ return { kind: "logged_in", ...(Object.keys(account).length === 0 ? {} : { account }), source: STATUS_SOURCE };
30
+ }
31
+ /** `signal` (internal: the login's own) stops the query; the answer is then `unknown`. */
32
+ export async function claudeAuthStatus(installation, options = {}) {
33
+ if (installation.via !== "executable") {
34
+ return { kind: "unknown", detail: "not a machine-installed executable" };
35
+ }
36
+ const result = await runExecutable(installation.command, ["auth", "status", "--json"], {
37
+ env: claudeEnv(),
38
+ timeoutMs: options.timeoutMs ?? STATUS_TIMEOUT_MS,
39
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
40
+ });
41
+ // Exit 0 logged in, 1 logged out; anything else (a timeout, a crash, an abort) is no answer.
42
+ if (!result.ok && result.exitCode !== 1) {
43
+ return { kind: "unknown", detail: `claude auth status ended without an answer (exit ${String(result.exitCode)})`, source: STATUS_SOURCE };
44
+ }
45
+ return projectClaudeAuthStatus(result.stdout);
46
+ }
47
+ //# sourceMappingURL=auth-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-status.js","sourceRoot":"","sources":["../../../src/runtimes/claude/auth-status.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { claudeAuthStatus } from "./auth-status.js";
2
+ import { claudeLogin } from "./login.js";
1
3
  import { claudeUpgrade } from "./update.js";
2
4
  export declare const claudeRuntime: {
3
5
  readonly id: "claude";
@@ -13,6 +15,8 @@ export declare const claudeRuntime: {
13
15
  readonly listModels: import("../../index.js").ModelLister;
14
16
  readonly checkUpdate: import("../../index.js").UpdateChecker;
15
17
  readonly upgrade: typeof claudeUpgrade;
18
+ readonly login: typeof claudeLogin;
19
+ readonly authStatus: typeof claudeAuthStatus;
16
20
  readonly session: import("../../index.js").StartSession;
17
21
  } & import("../../index.js").RuntimeInventories & {
18
22
  readonly brand: import("../../brands.js").RuntimeBrand;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;CAaxB,CAAC;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;CAexB,CAAC;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { runtimeBrands } from "../../brands.js";
2
2
  import { claudeSkills, claudeMcpServers, claudeTools } from "./inventory.js";
3
3
  import { defineRuntime } from "../../contracts/runtime.js";
4
+ import { claudeAuthStatus } from "./auth-status.js";
5
+ import { claudeLogin } from "./login.js";
4
6
  import { claudeAccountUsage } from "./account-usage.js";
5
7
  import { claudeInstallation } from "./installation.js";
6
8
  import { claudeListModels } from "./list-models.js";
@@ -17,6 +19,8 @@ export const claudeRuntime = defineRuntime({
17
19
  listModels: claudeListModels,
18
20
  checkUpdate: claudeCheckUpdate,
19
21
  upgrade: claudeUpgrade,
22
+ login: claudeLogin,
23
+ authStatus: claudeAuthStatus,
20
24
  session: claudeSession,
21
25
  });
22
26
  export { claudeAccountUsage } from "./account-usage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/claude/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,WAAW;IAElB,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/claude/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,WAAW;IAElB,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AvailableInstallation } from "../../contracts/installation.js";
2
+ import type { LoginOptions, LoginResult } from "../../contracts/login.js";
3
+ import type { ProviderLoginInteraction } from "../../contracts/provider-auth.js";
4
+ /** Signs claude in with `claude auth login`, relaying its URL and writing the pasted code to its stdin. */
5
+ export declare function claudeLogin(installation: AvailableInstallation, interaction: ProviderLoginInteraction, options?: LoginOptions): Promise<LoginResult>;
6
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AA8OjF,2GAA2G;AAC3G,wBAAsB,WAAW,CAC/B,YAAY,EAAE,qBAAqB,EACnC,WAAW,EAAE,wBAAwB,EACrC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAUtB"}
@@ -0,0 +1,209 @@
1
+ import { errorMessage, LoginSecrets, loginBounds, loginExecutable, spawnLoginProcess, stoppedResult, } from "../../shared/login.js";
2
+ import { claudeAuthStatus, claudeEnv } from "./auth-status.js";
3
+ /*
4
+ * `claude auth login` over pipes (2.1.288). It prints, on stdout:
5
+ *
6
+ * Opening browser to sign in…
7
+ * If the browser didn't open, visit: <url> (an OSC 8 hyperlink from 2.1.202)
8
+ * Paste code here if prompted > (no newline)
9
+ *
10
+ * and races two ends: the browser's redirect to its localhost listener, and a
11
+ * `code#state` line on stdin, which the page behind <url> shows after the
12
+ * sign-in. A malformed line prints `Invalid code. Please make sure the full
13
+ * code was copied.` to stderr and reading goes on. It ends with
14
+ * `Login successful.` (exit 0, after a few seconds of telemetry flushing) or
15
+ * a failure on stderr (exit 1): `Login failed: <message>`, or a message of
16
+ * its own (a suspended account, an organization or provider that disallows
17
+ * the login). It has no deadline of its own. Reading a pasted code arrived in
18
+ * 2.1.126; `auth login` itself in 2.1.41.
19
+ */
20
+ const PASTE_FLOOR = "2.1.126";
21
+ const LOGIN_TIMEOUT_MS = 15 * 60_000;
22
+ const URL_LINE = /If the browser didn't open, visit:\s*(\S+)/u;
23
+ const PASTE_PROMPT = /Paste code here if prompted\s*>/u;
24
+ /** At the start of a stderr line only: `Login failed: Invalid code verifier` is a failure, not a retry. */
25
+ const INVALID_CODE = /^Invalid code\b/u;
26
+ const SUCCESS = /Login successful\b/u;
27
+ const FAILURE = /Login failed:\s*(.*)$/u;
28
+ /**
29
+ * The status decides once claude has exited 0 or reported success. A query
30
+ * that cannot answer (it failed, or the caller aborted) leaves claude's own
31
+ * report: a success it printed is `logged_in`, an exit 0 without one is not.
32
+ */
33
+ async function confirmed(installation, signal, reportedSuccess) {
34
+ const status = signal?.aborted === true
35
+ ? undefined
36
+ : await claudeAuthStatus(installation, signal === undefined ? {} : { signal });
37
+ if (status?.kind === "logged_in") {
38
+ return { kind: "logged_in", ...(status.account === undefined ? {} : { account: status.account }) };
39
+ }
40
+ if (status?.kind === "logged_out") {
41
+ return { kind: "failed", reason: "not_logged_in", detail: "claude auth login reported success, yet claude auth status says logged out" };
42
+ }
43
+ return reportedSuccess
44
+ ? { kind: "logged_in" }
45
+ : { kind: "failed", reason: "process_failed", detail: "claude auth login exited 0 without reporting success" };
46
+ }
47
+ /** A failed exit, in claude's words where it gave any. */
48
+ function failedExit(exit, flow, secrets) {
49
+ if (exit.error !== undefined) {
50
+ return { kind: "failed", reason: "process_failed", detail: secrets.line(exit.error) };
51
+ }
52
+ if (flow.failure !== undefined) {
53
+ return { kind: "failed", reason: "rejected", detail: secrets.line(flow.failure) };
54
+ }
55
+ // claude exits 1 for a failure it reports, also in words other than `Login failed:`.
56
+ if (exit.exitCode === 1 && flow.lastStderr !== undefined) {
57
+ return { kind: "failed", reason: "rejected", detail: secrets.line(flow.lastStderr) };
58
+ }
59
+ const ended = exit.exitCode === null ? `signal ${exit.signal ?? "unknown"}` : `code ${String(exit.exitCode)}`;
60
+ return {
61
+ kind: "failed",
62
+ reason: "process_failed",
63
+ detail: flow.lastStderr === undefined ? `claude auth login exited with ${ended}` : secrets.line(flow.lastStderr),
64
+ };
65
+ }
66
+ async function runClaudeLogin(installation, command, interaction, timeoutMs) {
67
+ const secrets = new LoginSecrets();
68
+ const interactionFailure = Promise.withResolvers();
69
+ const flow = {
70
+ urlSent: false, pasteOffered: false, promptOpen: false, settled: false, reportedSuccess: false, failure: undefined, lastStderr: undefined,
71
+ };
72
+ let child = null;
73
+ const ended = () => flow.settled;
74
+ /** The caller failed: settled at once, so no answer still in flight reaches claude. */
75
+ const interactionFailed = (error) => {
76
+ flow.settled = true;
77
+ interactionFailure.resolve({ kind: "interaction_failed", message: errorMessage(error) });
78
+ };
79
+ const ask = async (message) => {
80
+ if (flow.promptOpen || flow.settled) {
81
+ return;
82
+ }
83
+ flow.promptOpen = true;
84
+ let answer = "";
85
+ try {
86
+ answer = await interaction.prompt({ kind: "manual_code", message, placeholder: "code#state" });
87
+ }
88
+ catch (error) {
89
+ // A prompt the caller gave up on because it aborted is a cancellation, which the bounds report.
90
+ if (interaction.signal?.aborted !== true) {
91
+ interactionFailed(error);
92
+ }
93
+ return;
94
+ }
95
+ finally {
96
+ flow.promptOpen = false;
97
+ }
98
+ // The code has no whitespace; a pasted line break must not become a second attempt.
99
+ const code = answer.replaceAll(/\s+/gu, "");
100
+ // Read after the wait: the login may have ended while the caller answered.
101
+ if (ended()) {
102
+ return;
103
+ }
104
+ if (code === "") {
105
+ await ask("No code was entered. Paste the code shown after signing in");
106
+ return;
107
+ }
108
+ // The authorization code is the secret part; the state after `#` is already in the sign-in URL.
109
+ secrets.add(code);
110
+ secrets.add(code.split("#")[0] ?? code);
111
+ // Only ever to claude's stdin: never an event, a result or an error.
112
+ child?.write(`${code}\n`);
113
+ };
114
+ const offerPaste = () => {
115
+ if (!flow.pasteOffered) {
116
+ flow.pasteOffered = true;
117
+ void ask("Paste the code shown after signing in");
118
+ }
119
+ };
120
+ try {
121
+ child = spawnLoginProcess(command, ["auth", "login"], claudeEnv(), {
122
+ onLine(line, stream) {
123
+ const url = URL_LINE.exec(line)?.[1];
124
+ if (url !== undefined && !flow.urlSent) {
125
+ flow.urlSent = true;
126
+ try {
127
+ interaction.onEvent({ kind: "auth_url", url, instructions: "Open this URL and sign in; if the page then shows a code, paste it back." });
128
+ }
129
+ catch (error) {
130
+ // A caller that cannot show the URL cannot finish the login.
131
+ interactionFailed(error);
132
+ }
133
+ }
134
+ if (PASTE_PROMPT.test(line)) {
135
+ offerPaste();
136
+ }
137
+ if (stream === "stderr") {
138
+ flow.lastStderr = line;
139
+ if (INVALID_CODE.test(line)) {
140
+ void ask("That code was not accepted. Paste the full code shown after signing in");
141
+ }
142
+ }
143
+ // Unanchored: with no echo of the pasted line, claude's next words continue the prompt's line.
144
+ if (SUCCESS.test(line)) {
145
+ flow.reportedSuccess = true;
146
+ }
147
+ const failed = FAILURE.exec(line)?.[1];
148
+ if (failed !== undefined) {
149
+ flow.failure = failed;
150
+ }
151
+ },
152
+ onPartial(partial) {
153
+ if (PASTE_PROMPT.test(partial)) {
154
+ offerPaste();
155
+ }
156
+ },
157
+ });
158
+ }
159
+ catch (error) {
160
+ return { kind: "failed", reason: "process_failed", detail: secrets.line(errorMessage(error)) };
161
+ }
162
+ const bounds = loginBounds(interaction.signal, timeoutMs);
163
+ try {
164
+ const ending = await Promise.race([
165
+ // oxlint-disable-next-line promise/prefer-await-to-then -- racing three endings
166
+ child.exited.then((exit) => ({ kind: "exit", exit })),
167
+ // oxlint-disable-next-line promise/prefer-await-to-then -- racing three endings
168
+ bounds.stopped.then((stop) => ({ kind: "stop", stop })),
169
+ interactionFailure.promise,
170
+ ]);
171
+ flow.settled = true;
172
+ if (ending.kind !== "exit") {
173
+ child.stop();
174
+ await child.exited;
175
+ }
176
+ // After `Login successful.` the new login is stored; a stop or an odd exit while claude flushes does not undo it.
177
+ if (flow.reportedSuccess) {
178
+ return await confirmed(installation, interaction.signal, true);
179
+ }
180
+ switch (ending.kind) {
181
+ case "stop":
182
+ return stoppedResult(ending.stop, timeoutMs);
183
+ case "interaction_failed":
184
+ return { kind: "failed", reason: "interaction_failed", detail: secrets.line(ending.message) };
185
+ case "exit":
186
+ break;
187
+ }
188
+ return ending.exit.exitCode === 0 && ending.exit.error === undefined
189
+ ? await confirmed(installation, interaction.signal, false)
190
+ : failedExit(ending.exit, flow, secrets);
191
+ }
192
+ finally {
193
+ flow.settled = true;
194
+ bounds.dispose();
195
+ }
196
+ }
197
+ /** Signs claude in with `claude auth login`, relaying its URL and writing the pasted code to its stdin. */
198
+ export async function claudeLogin(installation, interaction, options = {}) {
199
+ const target = loginExecutable(installation, "claude", PASTE_FLOOR);
200
+ if (target.kind === "settled") {
201
+ return target.result;
202
+ }
203
+ if (interaction.signal?.aborted === true) {
204
+ return { kind: "cancelled" };
205
+ }
206
+ const result = await runClaudeLogin(installation, target.installation.command, interaction, options.timeoutMs ?? LOGIN_TIMEOUT_MS);
207
+ return result;
208
+ }
209
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/runtimes/claude/login.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type LineProcessOptions } from "../../shared/executable/index.js";
1
2
  import { type JsonRecord } from "../../shared/json.js";
2
3
  /**
3
4
  * Minimal persistent JSON-RPC client over codex app-server's stdio JSONL
@@ -48,5 +49,7 @@ export interface AppServerClient {
48
49
  onExit(handler: (code: number | null) => void): void;
49
50
  kill(): void;
50
51
  }
51
- export declare function startAppServerClient(command: string, env?: Readonly<Record<string, string>>, configOverrides?: Readonly<Record<string, string>>, cwd?: string): AppServerClient;
52
+ /** How the app-server process is handled: whether its stderr may reach the host's, and whether a kill takes its Windows process tree. */
53
+ export type AppServerProcessOptions = Pick<LineProcessOptions, "inheritStderr" | "killTree">;
54
+ export declare function startAppServerClient(command: string, env?: Readonly<Record<string, string>>, configOverrides?: Readonly<Record<string, string>>, cwd?: string, processOptions?: AppServerProcessOptions): AppServerClient;
52
55
  //# sourceMappingURL=app-server-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-server-client.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG5E;;;;GAIG;AACH,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACpF;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5G,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACjD;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,IAAI,IAAI,IAAI,CAAC;CACd;AAQD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACtD,GAAG,CAAC,EAAE,MAAM,GACX,eAAe,CAIjB"}
1
+ {"version":3,"file":"app-server-client.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE7F,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG5E;;;;GAIG;AACH,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACpF;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5G,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACjD;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,IAAI,IAAI,IAAI,CAAC;CACd;AAQD,yIAAyI;AACzI,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,EAAE,eAAe,GAAG,UAAU,CAAC,CAAC;AAE7F,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACtD,GAAG,CAAC,EAAE,MAAM,EACZ,cAAc,GAAE,uBAA4B,GAC3C,eAAe,CAIjB"}
@@ -2,17 +2,17 @@ import { spawnLineProcess } from "../../shared/executable/index.js";
2
2
  import { processFailure } from "../../shared/executable/diagnostics.js";
3
3
  import { asRecord, parseJson } from "../../shared/json.js";
4
4
  import { coordinateHomeInitialization } from "./home-initialization.js";
5
- export function startAppServerClient(command, env, configOverrides = {}, cwd) {
5
+ export function startAppServerClient(command, env, configOverrides = {}, cwd, processOptions = {}) {
6
6
  const environment = { ...process.env, ...env };
7
7
  const directory = cwd ?? process.cwd();
8
- return coordinateHomeInitialization(environment, directory, () => createAppServerClient(command, environment, configOverrides, directory));
8
+ return coordinateHomeInitialization(environment, directory, () => createAppServerClient(command, environment, configOverrides, directory, processOptions));
9
9
  }
10
- function createAppServerClient(command, env, configOverrides, cwd) {
10
+ function createAppServerClient(command, env, configOverrides, cwd, processOptions) {
11
11
  // -c KEY=VALUE injects config at launch. This is the ONLY seam that reaches
12
12
  // codex's exec tool: thread/start.sandboxMode does not (pinned on a real
13
13
  // login: thread param honored for its own turns but exec follows config).
14
14
  const overrideArgs = Object.entries(configOverrides).flatMap(([key, value]) => ["-c", `${key}=${value}`]);
15
- const child = spawnLineProcess(command, ["app-server", ...overrideArgs, "--listen", "stdio://"], { cwd, env });
15
+ const child = spawnLineProcess(command, ["app-server", ...overrideArgs, "--listen", "stdio://"], { cwd, env, ...processOptions });
16
16
  // Session initialization observes spawn failures through its pending RPC.
17
17
  // Mark this parallel promise handled while preserving its rejection for
18
18
  // callers that explicitly await spawned.