sleev 0.0.11 → 0.0.13

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 (144) hide show
  1. package/README.md +19 -39
  2. package/dist/auth/browser.d.ts +12 -0
  3. package/dist/auth/browser.js +33 -24
  4. package/dist/auth/browser.js.map +1 -0
  5. package/dist/auth/firebase-tokens.d.ts +39 -0
  6. package/dist/auth/firebase-tokens.js +173 -0
  7. package/dist/auth/firebase-tokens.js.map +1 -0
  8. package/dist/auth/firebase.d.ts +17 -0
  9. package/dist/auth/firebase.js +55 -0
  10. package/dist/auth/firebase.js.map +1 -0
  11. package/dist/auth/login.d.ts +22 -0
  12. package/dist/auth/login.js +31 -28
  13. package/dist/auth/login.js.map +1 -0
  14. package/dist/auth/loopback.d.ts +19 -0
  15. package/dist/auth/loopback.js +114 -44
  16. package/dist/auth/loopback.js.map +1 -0
  17. package/dist/auth/schema.d.ts +26 -0
  18. package/dist/auth/schema.js +59 -17
  19. package/dist/auth/schema.js.map +1 -0
  20. package/dist/auth/token.d.ts +19 -0
  21. package/dist/auth/token.js +53 -0
  22. package/dist/auth/token.js.map +1 -0
  23. package/dist/auth/verify.d.ts +6 -0
  24. package/dist/auth/verify.js +22 -0
  25. package/dist/auth/verify.js.map +1 -0
  26. package/dist/cli.d.ts +8 -0
  27. package/dist/cli.js +245 -59
  28. package/dist/cli.js.map +1 -0
  29. package/dist/config/paths.d.ts +12 -0
  30. package/dist/config/paths.js +34 -0
  31. package/dist/config/paths.js.map +1 -0
  32. package/dist/config/store.d.ts +63 -0
  33. package/dist/config/store.js +270 -0
  34. package/dist/config/store.js.map +1 -0
  35. package/dist/control/local-installations.d.ts +13 -0
  36. package/dist/control/local-installations.js +37 -0
  37. package/dist/control/local-installations.js.map +1 -0
  38. package/dist/daemon/config.d.ts +10 -0
  39. package/dist/daemon/config.js +52 -0
  40. package/dist/daemon/config.js.map +1 -0
  41. package/dist/daemon/controller.d.ts +29 -0
  42. package/dist/daemon/controller.js +34 -0
  43. package/dist/daemon/controller.js.map +1 -0
  44. package/dist/daemon/health.d.ts +8 -0
  45. package/dist/daemon/health.js +47 -0
  46. package/dist/daemon/health.js.map +1 -0
  47. package/dist/daemon/start.d.ts +5 -0
  48. package/dist/daemon/start.js +24 -0
  49. package/dist/daemon/start.js.map +1 -0
  50. package/dist/daemon/systemd.d.ts +35 -0
  51. package/dist/daemon/systemd.js +181 -0
  52. package/dist/daemon/systemd.js.map +1 -0
  53. package/dist/gateway/acquire.d.ts +14 -0
  54. package/dist/gateway/acquire.js +112 -0
  55. package/dist/gateway/acquire.js.map +1 -0
  56. package/dist/gateway/manifest.d.ts +26 -0
  57. package/dist/gateway/manifest.js +98 -0
  58. package/dist/gateway/manifest.js.map +1 -0
  59. package/dist/gateway/platform.d.ts +5 -0
  60. package/dist/gateway/platform.js +27 -0
  61. package/dist/gateway/platform.js.map +1 -0
  62. package/dist/harness/claude.d.ts +8 -0
  63. package/dist/{apps → harness}/claude.js +28 -28
  64. package/dist/harness/claude.js.map +1 -0
  65. package/dist/harness/codex.d.ts +10 -0
  66. package/dist/harness/codex.js +213 -0
  67. package/dist/harness/codex.js.map +1 -0
  68. package/dist/harness/index.d.ts +13 -0
  69. package/dist/harness/index.js +63 -0
  70. package/dist/harness/index.js.map +1 -0
  71. package/dist/harness/opencode-config.d.ts +8 -0
  72. package/dist/{apps → harness}/opencode-config.js +116 -83
  73. package/dist/harness/opencode-config.js.map +1 -0
  74. package/dist/harness/opencode.d.ts +14 -0
  75. package/dist/harness/opencode.js +50 -0
  76. package/dist/harness/opencode.js.map +1 -0
  77. package/dist/harness/providers.d.ts +8 -0
  78. package/dist/harness/providers.js +30 -0
  79. package/dist/harness/providers.js.map +1 -0
  80. package/dist/harness/types.d.ts +14 -0
  81. package/dist/harness/types.js +2 -0
  82. package/dist/harness/types.js.map +1 -0
  83. package/dist/product.d.ts +12 -0
  84. package/dist/product.js +53 -10
  85. package/dist/product.js.map +1 -0
  86. package/dist/tui/clipboard.d.ts +1 -0
  87. package/dist/tui/clipboard.js +48 -0
  88. package/dist/tui/clipboard.js.map +1 -0
  89. package/dist/tui/openTuiApp.d.ts +1 -0
  90. package/dist/tui/openTuiApp.js +1436 -0
  91. package/dist/tui/openTuiApp.js.map +1 -0
  92. package/dist/tui/pages/flow-screen.d.ts +50 -0
  93. package/dist/tui/pages/flow-screen.js +435 -0
  94. package/dist/tui/pages/flow-screen.js.map +1 -0
  95. package/dist/tui/pages/footer.d.ts +7 -0
  96. package/dist/tui/pages/footer.js +14 -0
  97. package/dist/tui/pages/footer.js.map +1 -0
  98. package/dist/tui/pages/home-screen.d.ts +19 -0
  99. package/dist/tui/pages/home-screen.js +89 -0
  100. package/dist/tui/pages/home-screen.js.map +1 -0
  101. package/dist/tui/pages/index.d.ts +17 -0
  102. package/dist/tui/pages/index.js +11 -0
  103. package/dist/tui/pages/index.js.map +1 -0
  104. package/dist/tui/pages/local-setup-screen.d.ts +23 -0
  105. package/dist/tui/pages/local-setup-screen.js +134 -0
  106. package/dist/tui/pages/local-setup-screen.js.map +1 -0
  107. package/dist/tui/pages/location-card.d.ts +19 -0
  108. package/dist/tui/pages/location-card.js +116 -0
  109. package/dist/tui/pages/location-card.js.map +1 -0
  110. package/dist/tui/pages/menu-screen.d.ts +24 -0
  111. package/dist/tui/pages/menu-screen.js +117 -0
  112. package/dist/tui/pages/menu-screen.js.map +1 -0
  113. package/dist/tui/pages/session-grid.d.ts +23 -0
  114. package/dist/tui/pages/session-grid.js +552 -0
  115. package/dist/tui/pages/session-grid.js.map +1 -0
  116. package/dist/tui/pages/setup-screen.d.ts +15 -0
  117. package/dist/tui/pages/setup-screen.js +80 -0
  118. package/dist/tui/pages/setup-screen.js.map +1 -0
  119. package/dist/tui/pages/terminal-log.d.ts +14 -0
  120. package/dist/tui/pages/terminal-log.js +104 -0
  121. package/dist/tui/pages/terminal-log.js.map +1 -0
  122. package/dist/tui/pages/welcome-screen.d.ts +16 -0
  123. package/dist/tui/pages/welcome-screen.js +80 -0
  124. package/dist/tui/pages/welcome-screen.js.map +1 -0
  125. package/dist/tui/saved-tokens.d.ts +10 -0
  126. package/dist/tui/saved-tokens.js +104 -0
  127. package/dist/tui/saved-tokens.js.map +1 -0
  128. package/dist/tui/theme.d.ts +25 -0
  129. package/dist/tui/theme.js +27 -0
  130. package/dist/tui/theme.js.map +1 -0
  131. package/package.json +55 -38
  132. package/dist/apps/codex.js +0 -184
  133. package/dist/apps/opencode.js +0 -158
  134. package/dist/apps.js +0 -148
  135. package/dist/auth/command.js +0 -109
  136. package/dist/auth/index.js +0 -2
  137. package/dist/auth/validation.js +0 -27
  138. package/dist/credentials/index.js +0 -3
  139. package/dist/credentials/schema.js +0 -63
  140. package/dist/credentials/store.js +0 -52
  141. package/dist/harnesses.js +0 -66
  142. package/dist/index.js +0 -3
  143. package/dist/providers.js +0 -30
  144. package/dist/terminal.js +0 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/harness/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { HarnessAuth } from "./types.js";
2
+ export type CodexPatchResult = {
3
+ path: string;
4
+ };
5
+ export declare function setupCodex(auth: HarnessAuth, path?: string): Promise<CodexPatchResult>;
6
+ export declare function patchCodex(auth: HarnessAuth, path?: string): Promise<CodexPatchResult>;
7
+ export declare function unpatchCodex(path?: string): Promise<void>;
8
+ export declare function codexPath(env?: NodeJS.ProcessEnv): string;
9
+ export declare function patchCodexConfig(input: string, auth: HarnessAuth): string;
10
+ export declare function unpatchCodexConfig(input: string): string;
@@ -0,0 +1,213 @@
1
+ // Codex setup owns global TOML patching for the OpenAI-compatible proxy provider.
2
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ const PROVIDER = "sleev";
6
+ const HARNESS = "codex cli";
7
+ const OLD_HARNESS = "codex";
8
+ export async function setupCodex(auth, path = codexPath()) {
9
+ return patchCodex(auth, path);
10
+ }
11
+ export async function patchCodex(auth, path = codexPath()) {
12
+ const existing = await readText(path);
13
+ const config = patchCodexConfig(existing, auth);
14
+ await writeText(path, config);
15
+ return { path };
16
+ }
17
+ export async function unpatchCodex(path = codexPath()) {
18
+ const existing = await readText(path);
19
+ if (!existing)
20
+ return;
21
+ const config = unpatchCodexConfig(existing);
22
+ await writeText(path, config);
23
+ }
24
+ export function codexPath(env = process.env) {
25
+ return join(env.CODEX_HOME || join(homedir(), ".codex"), "config.toml");
26
+ }
27
+ export function patchCodexConfig(input, auth) {
28
+ const previous = previousProvider(input);
29
+ const stale = removeTable(removeTable(input.trimEnd(), table(PROVIDER)), "sleev.codex");
30
+ const clean = removeRootKey(stale, "model_provider");
31
+ const root = insertRootKey(clean.trimEnd(), "model_provider", PROVIDER);
32
+ const meta = previous
33
+ ? `\n\n[sleev.codex]\nprevious_model_provider = "${toml(previous)}"`
34
+ : "";
35
+ return `${patchProvider(root, auth).trimEnd()}${meta}\n`;
36
+ }
37
+ export function unpatchCodexConfig(input) {
38
+ const previous = backup(input);
39
+ const provider = rootString(input, "model_provider") ?? "openai";
40
+ const clean = removeTable(removeTable(removeRootKey(input.trimEnd(), "model_provider"), table(PROVIDER)), "sleev.codex");
41
+ const restored = previous
42
+ ? insertRootKey(clean.trimEnd(), "model_provider", previous)
43
+ : clean;
44
+ const config = provider === PROVIDER ? restored : removeSleevKeys(input, provider);
45
+ return `${config.trimEnd()}\n`;
46
+ }
47
+ function insertRootKey(input, key, value) {
48
+ const line = `${key} = "${toml(value)}"`;
49
+ if (input.length === 0)
50
+ return line;
51
+ const lines = input.split("\n");
52
+ const index = lines.findIndex((item) => /^\s*\[/.test(item));
53
+ if (index === -1)
54
+ return `${input}\n${line}`;
55
+ return [...lines.slice(0, index), line, "", ...lines.slice(index)].join("\n");
56
+ }
57
+ function removeRootKey(input, key) {
58
+ const lines = input.split("\n");
59
+ const next = [];
60
+ let root = true;
61
+ let skipped = false;
62
+ for (const line of lines) {
63
+ if (/^\s*\[/.test(line))
64
+ root = false;
65
+ if (root && new RegExp(`^\\s*${escape(key)}\\s*=`).test(line)) {
66
+ skipped = true;
67
+ continue;
68
+ }
69
+ if (skipped && root && /^\s*$/.test(line)) {
70
+ skipped = false;
71
+ continue;
72
+ }
73
+ skipped = false;
74
+ next.push(line);
75
+ }
76
+ return next.join("\n");
77
+ }
78
+ function removeTable(input, name) {
79
+ const lines = input.split("\n");
80
+ const next = [];
81
+ let skip = false;
82
+ const header = new RegExp(`^\\s*\\[\\s*${escape(name)}(?:\\.|\\s*\\])`);
83
+ for (const line of lines) {
84
+ if (header.test(line)) {
85
+ skip = true;
86
+ continue;
87
+ }
88
+ if (skip && /^\s*\[/.test(line))
89
+ skip = header.test(line);
90
+ if (!skip)
91
+ next.push(line);
92
+ }
93
+ return next.join("\n");
94
+ }
95
+ function patchProvider(input, auth) {
96
+ return `${input.trimEnd()}\n\n[${table(PROVIDER)}]\nname = "Sleev"\n${providerKeys(auth).join("\n")}`;
97
+ }
98
+ function providerKeys(auth) {
99
+ return [
100
+ `base_url = "${toml(baseUrl(auth.proxyUrl))}"`,
101
+ 'wire_api = "responses"',
102
+ "",
103
+ `[${table(PROVIDER)}.http_headers]`,
104
+ `"sleeve-token" = "${toml(auth.token)}"`,
105
+ '"sleeve-provider" = "openai"',
106
+ `"sleeve-harness" = "${HARNESS}"`,
107
+ ];
108
+ }
109
+ function removeSleevKeys(input, provider) {
110
+ const lines = input.split("\n");
111
+ const header = new RegExp(`^\\s*\\[\\s*${escape(table(provider))}\\s*\\]\\s*(#.*)?$`);
112
+ const index = lines.findIndex((line) => header.test(line));
113
+ if (index === -1)
114
+ return input;
115
+ const current = [];
116
+ for (let i = index + 1; i < lines.length; i += 1) {
117
+ const line = lines[i] ?? "";
118
+ if (/^\s*\[/.test(line))
119
+ break;
120
+ current.push(line);
121
+ }
122
+ if (!current.some((line) => owned(line)))
123
+ return input;
124
+ return lines
125
+ .filter((line, i) => {
126
+ const inside = i > index && !/^\s*\[/.test(line);
127
+ if (!inside)
128
+ return true;
129
+ return !/^\s*(base_url|wire_api|http_headers)\s*=/.test(line);
130
+ })
131
+ .join("\n");
132
+ }
133
+ function previousProvider(input) {
134
+ const current = rootString(input, "model_provider");
135
+ return backup(input) ?? (current && current !== PROVIDER ? current : null);
136
+ }
137
+ function backup(input) {
138
+ return tableString(input, "sleev.codex", "previous_model_provider");
139
+ }
140
+ function tableString(input, name, key) {
141
+ const lines = input.split("\n");
142
+ const header = new RegExp(`^\\s*\\[\\s*${escape(name)}\\s*\\]\\s*(#.*)?$`);
143
+ const index = lines.findIndex((line) => header.test(line));
144
+ if (index === -1)
145
+ return null;
146
+ for (let i = index + 1; i < lines.length; i += 1) {
147
+ const line = lines[i] ?? "";
148
+ if (/^\s*\[/.test(line))
149
+ return null;
150
+ const match = new RegExp(`^\\s*${escape(key)}\\s*=\\s*(["'])([^"']+)\\1`).exec(line);
151
+ if (match?.[2])
152
+ return match[2];
153
+ }
154
+ return null;
155
+ }
156
+ function rootString(input, key) {
157
+ const lines = input.split("\n");
158
+ for (const line of lines) {
159
+ if (/^\s*\[/.test(line))
160
+ return null;
161
+ const match = new RegExp(`^\\s*${escape(key)}\\s*=\\s*(["'])([^"']+)\\1`).exec(line);
162
+ if (match?.[2])
163
+ return match[2];
164
+ }
165
+ return null;
166
+ }
167
+ async function readText(path) {
168
+ try {
169
+ return await readFile(path, "utf8");
170
+ }
171
+ catch (err) {
172
+ if (code(err) === "ENOENT")
173
+ return "";
174
+ throw err;
175
+ }
176
+ }
177
+ function toml(value) {
178
+ return value
179
+ .replace(/\\/g, "\\\\")
180
+ .replace(/"/g, '\\"')
181
+ .replace(/\n/g, "\\n");
182
+ }
183
+ function escape(value) {
184
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
185
+ }
186
+ function trim(url) {
187
+ return url.replace(/\/+$/, "");
188
+ }
189
+ function baseUrl(url) {
190
+ const clean = trim(url);
191
+ if (clean.endsWith("/v1"))
192
+ return clean;
193
+ return `${clean}/v1`;
194
+ }
195
+ function table(provider) {
196
+ return `model_providers.${provider}`;
197
+ }
198
+ function owned(line) {
199
+ return (line.includes(`"sleeve-harness" = "${HARNESS}"`) ||
200
+ line.includes(`"sleeve-harness" = "${OLD_HARNESS}"`));
201
+ }
202
+ async function writeText(path, config) {
203
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
204
+ await writeFile(path, config, { mode: 0o600 });
205
+ await chmod(path, 0o600);
206
+ }
207
+ function code(err) {
208
+ if (typeof err !== "object" || err === null || !("code" in err))
209
+ return undefined;
210
+ const value = err.code;
211
+ return typeof value === "string" ? value : undefined;
212
+ }
213
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/harness/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Harness, HarnessAuth, HarnessId } from "./types.js";
2
+ export type { HarnessAuth, HarnessId } from "./types.js";
3
+ export type HarnessSetupResult = {
4
+ ids: HarnessId[];
5
+ label: string;
6
+ };
7
+ export type HarnessCleanupResult = {
8
+ failures: string[];
9
+ };
10
+ export declare const HARNESSES: readonly Harness[];
11
+ export declare function setupHarnesses(auth: HarnessAuth, ids: readonly HarnessId[]): Promise<HarnessSetupResult>;
12
+ export declare function unpatchHarnesses(): Promise<HarnessCleanupResult>;
13
+ export declare function harnessLabels(ids: readonly HarnessId[]): string;
@@ -0,0 +1,63 @@
1
+ // Harness setup coordinates local tool config patchers for onboarding.
2
+ import { setupClaude, unpatchClaude } from "./claude.js";
3
+ import { setupCodex, unpatchCodex } from "./codex.js";
4
+ import { setupOpenCode, unpatchOpenCode } from "./opencode.js";
5
+ export const HARNESSES = [
6
+ {
7
+ id: "opencode",
8
+ label: "opencode",
9
+ command: "opencode",
10
+ setup: setupOpenCode,
11
+ unpatch: unpatchOpenCode,
12
+ },
13
+ {
14
+ id: "claude-code",
15
+ label: "claude code",
16
+ command: "claude",
17
+ setup: setupClaude,
18
+ unpatch: unpatchClaude,
19
+ },
20
+ {
21
+ id: "codex",
22
+ label: "codex",
23
+ command: "codex",
24
+ setup: setupCodex,
25
+ unpatch: unpatchCodex,
26
+ },
27
+ ];
28
+ export async function setupHarnesses(auth, ids) {
29
+ const configured = [];
30
+ for (const harness of HARNESSES) {
31
+ if (!ids.includes(harness.id))
32
+ continue;
33
+ const result = await harness.setup(auth);
34
+ if (result === null)
35
+ continue;
36
+ configured.push(harness.id);
37
+ }
38
+ return { ids: configured, label: harnessLabels(configured) };
39
+ }
40
+ export async function unpatchHarnesses() {
41
+ const failures = [];
42
+ await Promise.all(HARNESSES.map(async (harness) => {
43
+ try {
44
+ await harness.unpatch();
45
+ }
46
+ catch (err) {
47
+ failures.push(`${harness.label}: ${message(err)}`);
48
+ }
49
+ }));
50
+ return { failures };
51
+ }
52
+ export function harnessLabels(ids) {
53
+ if (ids.length === 0)
54
+ return "none";
55
+ const labels = ids.map((id) => HARNESSES.find((harness) => harness.id === id)?.label ?? id);
56
+ return labels.join(", ");
57
+ }
58
+ function message(err) {
59
+ if (err instanceof Error && err.message)
60
+ return err.message;
61
+ return String(err);
62
+ }
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAc/D,MAAM,CAAC,MAAM,SAAS,GAAuB;IACzC;QACI,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,eAAe;KAC3B;IACD;QACI,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,aAAa;KACzB;IACD;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,YAAY;KACxB;CACJ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,IAAiB,EACjB,GAAyB;IAEzB,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,SAAS;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,CAAC,GAAG,CACb,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5B,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAyB;IACnD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAClB,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CACtE,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IACzB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ProviderId } from "./providers.js";
2
+ import type { HarnessAuth } from "./types.js";
3
+ export declare function patchOpenCodeConfig(auth: HarnessAuth, path?: string, provider?: ProviderId): Promise<string>;
4
+ export declare function unpatchOpenCodeConfig(path?: string): Promise<string | null>;
5
+ export declare function openCodePath(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string;
6
+ export declare function openCodeJsoncPath(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string;
7
+ export declare function openCodeAuthPath(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string;
8
+ export declare function resolveOpenCodePath(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): Promise<string>;