@mnemonik/shared 7.55.1 → 7.57.1
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.
- package/dist/claudeProxySettings.d.ts +45 -0
- package/dist/claudeProxySettings.d.ts.map +1 -0
- package/dist/claudeProxySettings.js +375 -0
- package/dist/claudeProxySettings.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/settingsIo.d.ts +22 -0
- package/dist/settingsIo.d.ts.map +1 -0
- package/dist/settingsIo.js +352 -0
- package/dist/settingsIo.js.map +1 -0
- package/package.json +1 -1
- package/src/claudeProxySettings.ts +505 -0
- package/src/index.ts +2 -0
- package/src/settingsIo.ts +382 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type ClaudeBaseUrlState = {
|
|
2
|
+
kind: 'absent';
|
|
3
|
+
} | {
|
|
4
|
+
kind: 'value';
|
|
5
|
+
value: string;
|
|
6
|
+
};
|
|
7
|
+
export type ClaudeProxyStatus = 'on' | 'off' | 'custom' | 'not-paired' | 'invalid';
|
|
8
|
+
export interface ClaudeProxySettingsOptions {
|
|
9
|
+
homeDir?: string;
|
|
10
|
+
settingsPath?: string;
|
|
11
|
+
configPath?: string;
|
|
12
|
+
}
|
|
13
|
+
export type ClaudeProxyPairingConfig = Record<string, unknown> & {
|
|
14
|
+
server: string;
|
|
15
|
+
proxyToken: string;
|
|
16
|
+
};
|
|
17
|
+
export interface ClaudeProxyMutationResult {
|
|
18
|
+
changed: boolean;
|
|
19
|
+
handoffCleanupUnconfirmed: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ClaudeProxyOffResult extends ClaudeProxyMutationResult {
|
|
22
|
+
outcome: 'disabled' | 'already-off';
|
|
23
|
+
}
|
|
24
|
+
export interface ClaudeProxyOnResult extends ClaudeProxyMutationResult {
|
|
25
|
+
outcome: 'enabled' | 'already-on';
|
|
26
|
+
}
|
|
27
|
+
export declare class ClaudeProxyConflictError extends Error {
|
|
28
|
+
constructor();
|
|
29
|
+
}
|
|
30
|
+
export declare class ClaudeProxySettingsError extends Error {
|
|
31
|
+
constructor();
|
|
32
|
+
}
|
|
33
|
+
export declare class ClaudeProxyNotPairedError extends Error {
|
|
34
|
+
constructor();
|
|
35
|
+
}
|
|
36
|
+
export declare function buildClaudeProxyUrl(server: string, proxyToken: string): string;
|
|
37
|
+
export declare function stageClaudeProxyPairingConfig(nextConfig: ClaudeProxyPairingConfig, options?: ClaudeProxySettingsOptions): Promise<void>;
|
|
38
|
+
export declare function assertClaudeProxyCanBeConfigured(options?: ClaudeProxySettingsOptions): Promise<void>;
|
|
39
|
+
export declare function configureClaudeProxy(server: string, proxyToken: string, options?: ClaudeProxySettingsOptions): Promise<ClaudeProxyMutationResult>;
|
|
40
|
+
export declare function turnClaudeProxyOff(options?: ClaudeProxySettingsOptions): Promise<ClaudeProxyOffResult>;
|
|
41
|
+
export declare function turnClaudeProxyOn(options?: ClaudeProxySettingsOptions): Promise<ClaudeProxyOnResult>;
|
|
42
|
+
export declare function getClaudeProxyStatus(options?: ClaudeProxySettingsOptions): Promise<ClaudeProxyStatus>;
|
|
43
|
+
export declare function formatClaudeProxyStatus(status: ClaudeProxyStatus): string;
|
|
44
|
+
export declare function formatClaudeProxyCleanupWarning(result: ClaudeProxyMutationResult): string | null;
|
|
45
|
+
//# sourceMappingURL=claudeProxySettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeProxySettings.d.ts","sourceRoot":"","sources":["../src/claudeProxySettings.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC;CACrC;AAED,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACpE,OAAO,EAAE,SAAS,GAAG,YAAY,CAAC;CACnC;AA6BD,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,cAGC;CACF;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,cAGC;CACF;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,cAGC;CACF;AAsED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB9E;AA8ID,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,wBAAwB,EACpC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,wBAAsB,gCAAgC,CACpD,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CAyBpC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,oBAAoB,CAAC,CA0B/B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAazE;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,GAAG,IAAI,CAIhG"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { dirname, join, resolve } from 'node:path';
|
|
2
|
+
import { chmod, mkdir } from 'node:fs/promises';
|
|
3
|
+
import { atomicWriteText, canonicalizeConfigTargets, installerConfigLockPath, readTextIfExists, withFileLocks, } from './settingsIo.js';
|
|
4
|
+
const PROXY_TOKEN_PATTERN = /^pxt_[a-f0-9]{32}$/;
|
|
5
|
+
export class ClaudeProxyConflictError extends Error {
|
|
6
|
+
constructor() {
|
|
7
|
+
super('Claude Code already has a base URL that does not match this paired device.');
|
|
8
|
+
this.name = 'ClaudeProxyConflictError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class ClaudeProxySettingsError extends Error {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('Claude settings are invalid or unreadable.');
|
|
14
|
+
this.name = 'ClaudeProxySettingsError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ClaudeProxyNotPairedError extends Error {
|
|
18
|
+
constructor() {
|
|
19
|
+
super('This device is not paired with Mnemonik. Run pairing first.');
|
|
20
|
+
this.name = 'ClaudeProxyNotPairedError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function resolveHomeDirectory(env = process.env) {
|
|
24
|
+
const home = env.HOME?.trim() || env.USERPROFILE?.trim();
|
|
25
|
+
if (!home)
|
|
26
|
+
throw new ClaudeProxyNotPairedError();
|
|
27
|
+
return resolve(home);
|
|
28
|
+
}
|
|
29
|
+
function resolveBasePaths(options) {
|
|
30
|
+
const homeDir = resolve(options.homeDir ?? resolveHomeDirectory());
|
|
31
|
+
const configPath = resolve(options.configPath ?? join(homeDir, '.mnemonik', 'config.json'));
|
|
32
|
+
return { homeDir, configPath };
|
|
33
|
+
}
|
|
34
|
+
async function resolvePaths(options, basePaths = resolveBasePaths(options)) {
|
|
35
|
+
const requestedSettingsPath = resolve(options.settingsPath ?? join(basePaths.homeDir, '.claude', 'settings.json'));
|
|
36
|
+
const [settingsPath, configPath] = await canonicalizeConfigTargets([
|
|
37
|
+
requestedSettingsPath,
|
|
38
|
+
basePaths.configPath,
|
|
39
|
+
]);
|
|
40
|
+
if (!settingsPath || !configPath)
|
|
41
|
+
throw new ClaudeProxySettingsError();
|
|
42
|
+
const runtimeParent = join(basePaths.homeDir, '.mnemonik', 'hooks');
|
|
43
|
+
return {
|
|
44
|
+
settingsPath,
|
|
45
|
+
configPath,
|
|
46
|
+
lockPath: installerConfigLockPath(settingsPath, runtimeParent),
|
|
47
|
+
configLockPath: installerConfigLockPath(configPath, runtimeParent),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function isRecord(value) {
|
|
51
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
52
|
+
}
|
|
53
|
+
function parseSettingsRaw(raw) {
|
|
54
|
+
if (raw === null)
|
|
55
|
+
return { raw: null, value: {}, baseUrl: { kind: 'absent' } };
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = JSON.parse(raw);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
throw new ClaudeProxySettingsError();
|
|
62
|
+
}
|
|
63
|
+
if (!isRecord(parsed))
|
|
64
|
+
throw new ClaudeProxySettingsError();
|
|
65
|
+
if (parsed.env === undefined)
|
|
66
|
+
return { raw, value: parsed, baseUrl: { kind: 'absent' } };
|
|
67
|
+
if (!isRecord(parsed.env))
|
|
68
|
+
throw new ClaudeProxySettingsError();
|
|
69
|
+
const baseUrl = parsed.env.ANTHROPIC_BASE_URL;
|
|
70
|
+
if (baseUrl === undefined)
|
|
71
|
+
return { raw, value: parsed, baseUrl: { kind: 'absent' } };
|
|
72
|
+
if (typeof baseUrl !== 'string' || baseUrl.length === 0) {
|
|
73
|
+
throw new ClaudeProxySettingsError();
|
|
74
|
+
}
|
|
75
|
+
return { raw, value: parsed, baseUrl: { kind: 'value', value: baseUrl } };
|
|
76
|
+
}
|
|
77
|
+
async function readSettings(settingsPath) {
|
|
78
|
+
try {
|
|
79
|
+
return parseSettingsRaw(await readTextIfExists(settingsPath));
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error instanceof ClaudeProxySettingsError)
|
|
83
|
+
throw error;
|
|
84
|
+
throw new ClaudeProxySettingsError();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function buildClaudeProxyUrl(server, proxyToken) {
|
|
88
|
+
const trimmedServer = server.trim();
|
|
89
|
+
if (!trimmedServer || !PROXY_TOKEN_PATTERN.test(proxyToken)) {
|
|
90
|
+
throw new ClaudeProxyNotPairedError();
|
|
91
|
+
}
|
|
92
|
+
const proxyUrl = `${trimmedServer.replace(/\/$/, '')}/proxy/${proxyToken}`;
|
|
93
|
+
try {
|
|
94
|
+
const parsed = new URL(proxyUrl);
|
|
95
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
96
|
+
throw new ClaudeProxyNotPairedError();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error instanceof ClaudeProxyNotPairedError)
|
|
101
|
+
throw error;
|
|
102
|
+
throw new ClaudeProxyNotPairedError();
|
|
103
|
+
}
|
|
104
|
+
return proxyUrl;
|
|
105
|
+
}
|
|
106
|
+
function parsePairedProxyConfig(raw) {
|
|
107
|
+
if (raw === null)
|
|
108
|
+
return null;
|
|
109
|
+
let parsed;
|
|
110
|
+
try {
|
|
111
|
+
parsed = JSON.parse(raw);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
if (!isRecord(parsed) || typeof parsed.server !== 'string')
|
|
117
|
+
return null;
|
|
118
|
+
if (typeof parsed.proxyToken !== 'string')
|
|
119
|
+
return null;
|
|
120
|
+
const previousProxyToken = parsed.previousProxyToken;
|
|
121
|
+
if (previousProxyToken !== undefined &&
|
|
122
|
+
(typeof previousProxyToken !== 'string' || !PROXY_TOKEN_PATTERN.test(previousProxyToken))) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const normalizedPreviousToken = previousProxyToken && previousProxyToken !== parsed.proxyToken ? previousProxyToken : null;
|
|
127
|
+
return {
|
|
128
|
+
raw,
|
|
129
|
+
value: parsed,
|
|
130
|
+
server: parsed.server,
|
|
131
|
+
proxyToken: parsed.proxyToken,
|
|
132
|
+
previousProxyToken: normalizedPreviousToken,
|
|
133
|
+
proxyUrl: buildClaudeProxyUrl(parsed.server, parsed.proxyToken),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function readPairedProxyConfig(configPath) {
|
|
141
|
+
try {
|
|
142
|
+
return parsePairedProxyConfig(await readTextIfExists(configPath));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function managedProxyTokenForUrl(baseUrl, config) {
|
|
149
|
+
if (matchesProxyUrlForToken(baseUrl, config.server, config.proxyToken)) {
|
|
150
|
+
return config.proxyToken;
|
|
151
|
+
}
|
|
152
|
+
if (config.previousProxyToken &&
|
|
153
|
+
matchesProxyUrlForToken(baseUrl, config.server, config.previousProxyToken)) {
|
|
154
|
+
return config.previousProxyToken;
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
function matchesProxyUrlForToken(baseUrl, server, proxyToken) {
|
|
159
|
+
return (baseUrl === buildClaudeProxyUrl(server, proxyToken) ||
|
|
160
|
+
baseUrl === `${server}/proxy/${proxyToken}`);
|
|
161
|
+
}
|
|
162
|
+
function matchesManagedProxyUrl(baseUrl, config) {
|
|
163
|
+
return managedProxyTokenForUrl(baseUrl, config) !== null;
|
|
164
|
+
}
|
|
165
|
+
function serializeConfig(config) {
|
|
166
|
+
return `${JSON.stringify(config, null, 2)}\n`;
|
|
167
|
+
}
|
|
168
|
+
async function clearPreviousProxyToken(paths, config, expectedProxyToken) {
|
|
169
|
+
if (config.proxyToken !== expectedProxyToken || config.previousProxyToken === null)
|
|
170
|
+
return;
|
|
171
|
+
const nextConfig = { ...config.value };
|
|
172
|
+
delete nextConfig.previousProxyToken;
|
|
173
|
+
await atomicWriteText(paths.configPath, serializeConfig(nextConfig), config.raw, { mode: 0o600 });
|
|
174
|
+
await chmod(paths.configPath, 0o600);
|
|
175
|
+
}
|
|
176
|
+
async function tryClearPreviousProxyToken(paths, config, expectedProxyToken) {
|
|
177
|
+
try {
|
|
178
|
+
await clearPreviousProxyToken(paths, config, expectedProxyToken);
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function withProxyLocks(paths, action) {
|
|
186
|
+
return withFileLocks([paths.lockPath, paths.configLockPath], action);
|
|
187
|
+
}
|
|
188
|
+
function setBaseUrl(settings, next) {
|
|
189
|
+
const updated = { ...settings };
|
|
190
|
+
if (next.kind === 'value') {
|
|
191
|
+
const env = isRecord(settings.env) ? { ...settings.env } : {};
|
|
192
|
+
env.ANTHROPIC_BASE_URL = next.value;
|
|
193
|
+
updated.env = env;
|
|
194
|
+
return updated;
|
|
195
|
+
}
|
|
196
|
+
if (!isRecord(settings.env))
|
|
197
|
+
return updated;
|
|
198
|
+
const env = { ...settings.env };
|
|
199
|
+
delete env.ANTHROPIC_BASE_URL;
|
|
200
|
+
if (Object.keys(env).length === 0)
|
|
201
|
+
delete updated.env;
|
|
202
|
+
else
|
|
203
|
+
updated.env = env;
|
|
204
|
+
return updated;
|
|
205
|
+
}
|
|
206
|
+
function serializeSettings(settings) {
|
|
207
|
+
return `${JSON.stringify(settings, null, 2)}\n`;
|
|
208
|
+
}
|
|
209
|
+
async function writeBaseUrl(settingsPath, settings, next) {
|
|
210
|
+
await atomicWriteText(settingsPath, serializeSettings(setBaseUrl(settings.value, next)), settings.raw);
|
|
211
|
+
}
|
|
212
|
+
async function pairedConfigOrThrow(configPath) {
|
|
213
|
+
const config = await readPairedProxyConfig(configPath);
|
|
214
|
+
if (!config)
|
|
215
|
+
throw new ClaudeProxyNotPairedError();
|
|
216
|
+
return config;
|
|
217
|
+
}
|
|
218
|
+
export async function stageClaudeProxyPairingConfig(nextConfig, options = {}) {
|
|
219
|
+
const nextProxyUrl = buildClaudeProxyUrl(nextConfig.server, nextConfig.proxyToken);
|
|
220
|
+
const basePaths = resolveBasePaths(options);
|
|
221
|
+
await mkdir(dirname(basePaths.configPath), { recursive: true, mode: 0o700 });
|
|
222
|
+
await chmod(dirname(basePaths.configPath), 0o700);
|
|
223
|
+
const paths = await resolvePaths(options, basePaths);
|
|
224
|
+
await withProxyLocks(paths, async () => {
|
|
225
|
+
const currentRaw = await readTextIfExists(paths.configPath);
|
|
226
|
+
const currentConfig = parsePairedProxyConfig(currentRaw);
|
|
227
|
+
const settings = await readSettings(paths.settingsPath);
|
|
228
|
+
let previousProxyToken = null;
|
|
229
|
+
if (settings.baseUrl.kind === 'value') {
|
|
230
|
+
if (!currentConfig)
|
|
231
|
+
throw new ClaudeProxyConflictError();
|
|
232
|
+
previousProxyToken = managedProxyTokenForUrl(settings.baseUrl.value, currentConfig);
|
|
233
|
+
if (!previousProxyToken)
|
|
234
|
+
throw new ClaudeProxyConflictError();
|
|
235
|
+
if (settings.baseUrl.value === nextProxyUrl) {
|
|
236
|
+
previousProxyToken = null;
|
|
237
|
+
}
|
|
238
|
+
else if (!matchesProxyUrlForToken(settings.baseUrl.value, nextConfig.server, previousProxyToken)) {
|
|
239
|
+
throw new ClaudeProxyConflictError();
|
|
240
|
+
}
|
|
241
|
+
else if (previousProxyToken === nextConfig.proxyToken) {
|
|
242
|
+
previousProxyToken = null;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const serializedConfig = { ...nextConfig };
|
|
246
|
+
delete serializedConfig.previousProxyToken;
|
|
247
|
+
if (previousProxyToken)
|
|
248
|
+
serializedConfig.previousProxyToken = previousProxyToken;
|
|
249
|
+
await atomicWriteText(paths.configPath, serializeConfig(serializedConfig), currentRaw, {
|
|
250
|
+
mode: 0o600,
|
|
251
|
+
});
|
|
252
|
+
await chmod(paths.configPath, 0o600);
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
export async function assertClaudeProxyCanBeConfigured(options = {}) {
|
|
256
|
+
const paths = await resolvePaths(options);
|
|
257
|
+
return withProxyLocks(paths, async () => {
|
|
258
|
+
const config = await readPairedProxyConfig(paths.configPath);
|
|
259
|
+
const settings = await readSettings(paths.settingsPath);
|
|
260
|
+
if (settings.baseUrl.kind === 'value' &&
|
|
261
|
+
(!config || !matchesManagedProxyUrl(settings.baseUrl.value, config))) {
|
|
262
|
+
throw new ClaudeProxyConflictError();
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
export async function configureClaudeProxy(server, proxyToken, options = {}) {
|
|
267
|
+
const proxyUrl = buildClaudeProxyUrl(server, proxyToken);
|
|
268
|
+
const paths = await resolvePaths(options);
|
|
269
|
+
return withProxyLocks(paths, async () => {
|
|
270
|
+
const config = await pairedConfigOrThrow(paths.configPath);
|
|
271
|
+
if (config.proxyToken !== proxyToken || config.proxyUrl !== proxyUrl) {
|
|
272
|
+
throw new ClaudeProxyConflictError();
|
|
273
|
+
}
|
|
274
|
+
const settings = await readSettings(paths.settingsPath);
|
|
275
|
+
let changed = false;
|
|
276
|
+
if (settings.baseUrl.kind === 'value') {
|
|
277
|
+
if (!matchesManagedProxyUrl(settings.baseUrl.value, config)) {
|
|
278
|
+
throw new ClaudeProxyConflictError();
|
|
279
|
+
}
|
|
280
|
+
if (settings.baseUrl.value !== proxyUrl) {
|
|
281
|
+
await writeBaseUrl(paths.settingsPath, settings, { kind: 'value', value: proxyUrl });
|
|
282
|
+
changed = true;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
await writeBaseUrl(paths.settingsPath, settings, { kind: 'value', value: proxyUrl });
|
|
287
|
+
changed = true;
|
|
288
|
+
}
|
|
289
|
+
const handoffCleanupUnconfirmed = await tryClearPreviousProxyToken(paths, config, proxyToken);
|
|
290
|
+
return { changed, handoffCleanupUnconfirmed };
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
export async function turnClaudeProxyOff(options = {}) {
|
|
294
|
+
const basePaths = resolveBasePaths(options);
|
|
295
|
+
await pairedConfigOrThrow(basePaths.configPath);
|
|
296
|
+
const paths = await resolvePaths(options, basePaths);
|
|
297
|
+
return withProxyLocks(paths, async () => {
|
|
298
|
+
const config = await pairedConfigOrThrow(paths.configPath);
|
|
299
|
+
const settings = await readSettings(paths.settingsPath);
|
|
300
|
+
if (settings.baseUrl.kind === 'absent') {
|
|
301
|
+
const handoffCleanupUnconfirmed = await tryClearPreviousProxyToken(paths, config, config.proxyToken);
|
|
302
|
+
return { changed: false, outcome: 'already-off', handoffCleanupUnconfirmed };
|
|
303
|
+
}
|
|
304
|
+
if (!matchesManagedProxyUrl(settings.baseUrl.value, config)) {
|
|
305
|
+
throw new ClaudeProxyConflictError();
|
|
306
|
+
}
|
|
307
|
+
await writeBaseUrl(paths.settingsPath, settings, { kind: 'absent' });
|
|
308
|
+
const handoffCleanupUnconfirmed = await tryClearPreviousProxyToken(paths, config, config.proxyToken);
|
|
309
|
+
return { changed: true, outcome: 'disabled', handoffCleanupUnconfirmed };
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
export async function turnClaudeProxyOn(options = {}) {
|
|
313
|
+
const basePaths = resolveBasePaths(options);
|
|
314
|
+
await pairedConfigOrThrow(basePaths.configPath);
|
|
315
|
+
const paths = await resolvePaths(options, basePaths);
|
|
316
|
+
return withProxyLocks(paths, async () => {
|
|
317
|
+
const config = await pairedConfigOrThrow(paths.configPath);
|
|
318
|
+
const settings = await readSettings(paths.settingsPath);
|
|
319
|
+
if (settings.baseUrl.kind === 'value') {
|
|
320
|
+
if (settings.baseUrl.value === config.proxyUrl) {
|
|
321
|
+
const handoffCleanupUnconfirmed = await tryClearPreviousProxyToken(paths, config, config.proxyToken);
|
|
322
|
+
return { changed: false, outcome: 'already-on', handoffCleanupUnconfirmed };
|
|
323
|
+
}
|
|
324
|
+
if (!matchesManagedProxyUrl(settings.baseUrl.value, config)) {
|
|
325
|
+
throw new ClaudeProxyConflictError();
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
await writeBaseUrl(paths.settingsPath, settings, {
|
|
329
|
+
kind: 'value',
|
|
330
|
+
value: config.proxyUrl,
|
|
331
|
+
});
|
|
332
|
+
const handoffCleanupUnconfirmed = await tryClearPreviousProxyToken(paths, config, config.proxyToken);
|
|
333
|
+
return { changed: true, outcome: 'enabled', handoffCleanupUnconfirmed };
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
export async function getClaudeProxyStatus(options = {}) {
|
|
337
|
+
try {
|
|
338
|
+
const basePaths = resolveBasePaths(options);
|
|
339
|
+
if (!(await readPairedProxyConfig(basePaths.configPath)))
|
|
340
|
+
return 'not-paired';
|
|
341
|
+
const paths = await resolvePaths(options, basePaths);
|
|
342
|
+
return await withProxyLocks(paths, async () => {
|
|
343
|
+
const config = await readPairedProxyConfig(paths.configPath);
|
|
344
|
+
if (!config)
|
|
345
|
+
return 'not-paired';
|
|
346
|
+
const settings = await readSettings(paths.settingsPath);
|
|
347
|
+
if (settings.baseUrl.kind === 'absent')
|
|
348
|
+
return 'off';
|
|
349
|
+
return matchesManagedProxyUrl(settings.baseUrl.value, config) ? 'on' : 'custom';
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
return 'invalid';
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
export function formatClaudeProxyStatus(status) {
|
|
357
|
+
switch (status) {
|
|
358
|
+
case 'on':
|
|
359
|
+
return 'Mnemonik proxy is on and correctly configured.';
|
|
360
|
+
case 'off':
|
|
361
|
+
return 'Mnemonik proxy is off.';
|
|
362
|
+
case 'custom':
|
|
363
|
+
return 'Claude Code has a base URL that does not match this paired device.';
|
|
364
|
+
case 'not-paired':
|
|
365
|
+
return 'This device is not paired with Mnemonik.';
|
|
366
|
+
case 'invalid':
|
|
367
|
+
return 'Claude settings are invalid or unreadable.';
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
export function formatClaudeProxyCleanupWarning(result) {
|
|
371
|
+
return result.handoffCleanupUnconfirmed
|
|
372
|
+
? 'Mnemonik could not confirm cleanup of the saved token handoff. The next proxy-changing command will check and retry it.'
|
|
373
|
+
: null;
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=claudeProxySettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeProxySettings.js","sourceRoot":"","sources":["../src/claudeProxySettings.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,4 +11,6 @@ export { AST_LANGUAGE_IDS, QUERY_CHAIN, VENDORED_ARTIFACT_DIR, astArtifactReport
|
|
|
11
11
|
export { MAX_AST_PARSE_BYTES, chunkWithAst, type AstChunk, type AstChunkResult, } from './ast/astChunker.js';
|
|
12
12
|
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets, redactHighEntropyTokens, } from './secretPatterns.js';
|
|
13
13
|
export { FETCH_TIMEOUT_MS, TELEMETRY_TIMEOUT_MS, POST_TOOL_TIMEOUT_MS, MCP_PRECHECK_TIMEOUT_MS, withHookTimeout, } from './hookTimeouts.js';
|
|
14
|
+
export * from './settingsIo.js';
|
|
15
|
+
export * from './claudeProxySettings.js';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,4 +11,6 @@ export { AST_LANGUAGE_IDS, QUERY_CHAIN, VENDORED_ARTIFACT_DIR, astArtifactReport
|
|
|
11
11
|
export { MAX_AST_PARSE_BYTES, chunkWithAst, } from './ast/astChunker.js';
|
|
12
12
|
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets, redactHighEntropyTokens, } from './secretPatterns.js';
|
|
13
13
|
export { FETCH_TIMEOUT_MS, TELEMETRY_TIMEOUT_MS, POST_TOOL_TIMEOUT_MS, MCP_PRECHECK_TIMEOUT_MS, withHookTimeout, } from './hookTimeouts.js';
|
|
14
|
+
export * from './settingsIo.js';
|
|
15
|
+
export * from './claudeProxySettings.js';
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,YAAY,GAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,YAAY,GAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** @internal Shared by settings I/O and runtime installation error handling. */
|
|
2
|
+
export declare function errorCode(error: unknown): string | undefined;
|
|
3
|
+
/** Non-invasive lock location shared by installers and settings editors. */
|
|
4
|
+
export declare function installerConfigLockPath(configPath: string, runtimeParent?: string): string;
|
|
5
|
+
/** Resolve aliases before locking or updating configuration files. */
|
|
6
|
+
export declare function canonicalizeConfigTargets(paths: string[]): Promise<string[]>;
|
|
7
|
+
/** @internal Shared by atomic settings writes and durable runtime installation. */
|
|
8
|
+
export declare function syncDirectory(path: string): Promise<void>;
|
|
9
|
+
export declare function withFileLock<T>(lockPath: string, action: () => Promise<T>): Promise<T>;
|
|
10
|
+
export declare function withFileLocks<T>(lockPaths: string[], action: () => Promise<T>): Promise<T>;
|
|
11
|
+
export declare function readTextIfExists(path: string): Promise<string | null>;
|
|
12
|
+
export declare function atomicWriteText(path: string, next: string, expectedCurrent: string | null, options?: {
|
|
13
|
+
mode?: number;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
export declare function atomicRestoreText(path: string, original: string | null, expectedCurrent: string): Promise<void>;
|
|
16
|
+
export interface AtomicTextChange {
|
|
17
|
+
path: string;
|
|
18
|
+
expected: string | null;
|
|
19
|
+
next: string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare function atomicWriteTransaction(changes: AtomicTextChange[]): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=settingsIo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsIo.d.ts","sourceRoot":"","sources":["../src/settingsIo.ts"],"names":[],"mappings":"AAyBA,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI5D;AAUD,4EAA4E;AAC5E,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,aAAa,SAAyB,GACrC,MAAM,CAGR;AAoCD,sEAAsE;AACtE,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAElF;AAED,mFAAmF;AACnF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW/D;AAmFD,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAa5F;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAKhG;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3E;AAmBD,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AA0CD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAkBD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BvF"}
|