@sentropic/llm-mesh 0.33.0 → 0.34.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/enrollment/muse-code.d.ts +9 -0
- package/dist/enrollment/muse-code.d.ts.map +1 -1
- package/dist/enrollment/muse-code.js +22 -1
- package/dist/enrollment/muse-code.js.map +1 -1
- package/dist/node/claude-code-cli-runner.d.ts +56 -0
- package/dist/node/claude-code-cli-runner.d.ts.map +1 -0
- package/dist/node/claude-code-cli-runner.js +590 -0
- package/dist/node/claude-code-cli-runner.js.map +1 -0
- package/dist/node/claude-code-cli-wire.d.ts +55 -0
- package/dist/node/claude-code-cli-wire.d.ts.map +1 -0
- package/dist/node/claude-code-cli-wire.js +144 -0
- package/dist/node/claude-code-cli-wire.js.map +1 -0
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +3 -0
- package/dist/node/index.js.map +1 -1
- package/dist/service/custodian-refresh.d.ts +52 -0
- package/dist/service/custodian-refresh.d.ts.map +1 -0
- package/dist/service/custodian-refresh.js +51 -0
- package/dist/service/custodian-refresh.js.map +1 -0
- package/dist/service/facade.d.ts +18 -0
- package/dist/service/facade.d.ts.map +1 -1
- package/dist/service/facade.js +15 -1
- package/dist/service/facade.js.map +1 -1
- package/dist/service/local-account-transport-service.d.ts +88 -2
- package/dist/service/local-account-transport-service.d.ts.map +1 -1
- package/dist/service/local-account-transport-service.js +382 -10
- package/dist/service/local-account-transport-service.js.map +1 -1
- package/dist/service/reauth-alert.d.ts +29 -0
- package/dist/service/reauth-alert.d.ts.map +1 -0
- package/dist/service/reauth-alert.js +2 -0
- package/dist/service/reauth-alert.js.map +1 -0
- package/dist/transport/claude-code-runtime-client.d.ts +24 -0
- package/dist/transport/claude-code-runtime-client.d.ts.map +1 -1
- package/dist/transport/claude-code-runtime-client.js +66 -3
- package/dist/transport/claude-code-runtime-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ClaudeCodeCliEvent, ClaudeCodeCliRequest } from '../transport/claude-code-runtime-client.js';
|
|
2
|
+
/** Deterministic prompt rendering; pinned by unit tests with a fake CLI. */
|
|
3
|
+
export declare const renderClaudeCodeCliPrompt: (request: ClaudeCodeCliRequest) => string;
|
|
4
|
+
export interface QuotaDiagnosis {
|
|
5
|
+
readonly quota: boolean;
|
|
6
|
+
readonly retryAfterMs?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Quota-relevant text out of a CLI error payload: CLI-owned message fields
|
|
10
|
+
* only (`result`, `message`, `error`, string or numeric `code`). Numeric
|
|
11
|
+
* telemetry beside them (token usage, costs) is never signal, so a bare
|
|
12
|
+
* `429` buried in `usage` cannot trip the quota circuit.
|
|
13
|
+
*/
|
|
14
|
+
export declare const extractQuotaText: (payload: unknown) => string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Append a chunk to a byte-capped stderr tail. A non-positive cap keeps
|
|
17
|
+
* nothing (the caller still drains the pipe, but stores no bytes).
|
|
18
|
+
*/
|
|
19
|
+
export declare const appendCappedTail: (current: Buffer, chunk: Uint8Array, capBytes: number) => Buffer;
|
|
20
|
+
/** Match quota prose in CLI-owned text only (stderr, error payloads). */
|
|
21
|
+
export declare const diagnoseClaudeCodeQuota: (text: unknown) => QuotaDiagnosis;
|
|
22
|
+
export type ClaudeCodeLineOutcome = {
|
|
23
|
+
type: 'system_init';
|
|
24
|
+
init: {
|
|
25
|
+
tools?: unknown;
|
|
26
|
+
mcpServers?: unknown;
|
|
27
|
+
};
|
|
28
|
+
} | {
|
|
29
|
+
type: 'text';
|
|
30
|
+
text: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'tool_use';
|
|
33
|
+
event: Extract<ClaudeCodeCliEvent, {
|
|
34
|
+
type: 'tool_use';
|
|
35
|
+
}>;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'stop_reason';
|
|
38
|
+
reason: unknown;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'result';
|
|
41
|
+
result: {
|
|
42
|
+
finishReason: 'stop' | 'length' | 'tool_calls';
|
|
43
|
+
usage?: {
|
|
44
|
+
inputTokens?: number;
|
|
45
|
+
outputTokens?: number;
|
|
46
|
+
};
|
|
47
|
+
resultText?: string;
|
|
48
|
+
};
|
|
49
|
+
} | {
|
|
50
|
+
type: 'error_payload';
|
|
51
|
+
payload: unknown;
|
|
52
|
+
};
|
|
53
|
+
/** Normalize one stream-json line; unknown and noise lines yield nothing. */
|
|
54
|
+
export declare const parseClaudeCodeLine: (line: string) => ClaudeCodeLineOutcome[];
|
|
55
|
+
//# sourceMappingURL=claude-code-cli-wire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-cli-wire.d.ts","sourceRoot":"","sources":["../../src/node/claude-code-cli-wire.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,4CAA4C,CAAC;AAEpD,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,YAAa,oBAAoB,KAAG,MAezE,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAkBD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAAa,OAAO,KAAG,MAAM,GAAG,SAW5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAa,MAAM,SAAS,UAAU,YAAY,MAAM,KAAG,MAIvF,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,SAAU,OAAO,KAAG,cAKvD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;QACzE,KAAK,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAQhD,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,SAAU,MAAM,KAAG,qBAAqB,EAgDvE,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// @sentropic/llm-mesh/node/claude-code-cli-wire.ts
|
|
2
|
+
//
|
|
3
|
+
// Pure stream-json wire for the `claude` CLI host: deterministic prompt
|
|
4
|
+
// rendering, quota prose diagnosis, and line normalization to
|
|
5
|
+
// ClaudeCodeCliEvent outcomes. No process, clock, or network access —
|
|
6
|
+
// safe to unit-test without a CLI.
|
|
7
|
+
/** Deterministic prompt rendering; pinned by unit tests with a fake CLI. */
|
|
8
|
+
export const renderClaudeCodeCliPrompt = (request) => {
|
|
9
|
+
const lines = [];
|
|
10
|
+
for (const message of request.messages) {
|
|
11
|
+
for (const part of message.content) {
|
|
12
|
+
if (part.type === 'text') {
|
|
13
|
+
lines.push(`${message.role}: ${part.text}`);
|
|
14
|
+
}
|
|
15
|
+
else if (part.type === 'tool_use') {
|
|
16
|
+
lines.push(`${message.role} tool_use ${part.name} ${part.id}: ${JSON.stringify(part.input)}`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
lines.push(`${message.role} tool_result ${part.tool_use_id}: ${part.content}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (message.content.length === 0)
|
|
23
|
+
lines.push(`${message.role}:`);
|
|
24
|
+
}
|
|
25
|
+
return `${lines.join('\n')}\n`;
|
|
26
|
+
};
|
|
27
|
+
const QUOTA_PATTERN = /5-hour|usage.?limit|rate.?limit|too many requests|\b429\b|quota|overloaded/i;
|
|
28
|
+
const STRUCTURED_QUOTA_KEYS = ['result', 'message', 'error'];
|
|
29
|
+
const RETRY_AFTER_PATTERN = /(\d+)\s*(milliseconds?|seconds?|minutes?|hours?)/i;
|
|
30
|
+
const readRetryAfterMs = (text) => {
|
|
31
|
+
const match = RETRY_AFTER_PATTERN.exec(text);
|
|
32
|
+
if (!match)
|
|
33
|
+
return undefined;
|
|
34
|
+
const amount = Number(match[1]);
|
|
35
|
+
const unit = match[2].toLowerCase();
|
|
36
|
+
if (!Number.isSafeInteger(amount) || amount < 0)
|
|
37
|
+
return undefined;
|
|
38
|
+
const factor = unit.startsWith('millis') ? 1 : unit.startsWith('s') ? 1_000
|
|
39
|
+
: unit.startsWith('m') ? 60_000 : 3_600_000;
|
|
40
|
+
const ms = amount * factor;
|
|
41
|
+
return Number.isSafeInteger(ms) ? ms : undefined;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Quota-relevant text out of a CLI error payload: CLI-owned message fields
|
|
45
|
+
* only (`result`, `message`, `error`, string or numeric `code`). Numeric
|
|
46
|
+
* telemetry beside them (token usage, costs) is never signal, so a bare
|
|
47
|
+
* `429` buried in `usage` cannot trip the quota circuit.
|
|
48
|
+
*/
|
|
49
|
+
export const extractQuotaText = (payload) => {
|
|
50
|
+
if (!isRecord(payload))
|
|
51
|
+
return undefined;
|
|
52
|
+
const parts = [];
|
|
53
|
+
for (const key of STRUCTURED_QUOTA_KEYS) {
|
|
54
|
+
const value = payload[key];
|
|
55
|
+
if (typeof value === 'string' && value.length > 0)
|
|
56
|
+
parts.push(value);
|
|
57
|
+
}
|
|
58
|
+
const code = payload['code'];
|
|
59
|
+
if (typeof code === 'string' && code.length > 0)
|
|
60
|
+
parts.push(code);
|
|
61
|
+
else if (typeof code === 'number' && Number.isSafeInteger(code))
|
|
62
|
+
parts.push(String(code));
|
|
63
|
+
return parts.length > 0 ? parts.join(' ') : undefined;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Append a chunk to a byte-capped stderr tail. A non-positive cap keeps
|
|
67
|
+
* nothing (the caller still drains the pipe, but stores no bytes).
|
|
68
|
+
*/
|
|
69
|
+
export const appendCappedTail = (current, chunk, capBytes) => {
|
|
70
|
+
if (capBytes <= 0)
|
|
71
|
+
return Buffer.from('');
|
|
72
|
+
const next = Buffer.concat([current, Buffer.from(chunk)]);
|
|
73
|
+
return next.length <= capBytes ? next : Buffer.from(next.subarray(next.length - capBytes));
|
|
74
|
+
};
|
|
75
|
+
/** Match quota prose in CLI-owned text only (stderr, error payloads). */
|
|
76
|
+
export const diagnoseClaudeCodeQuota = (text) => {
|
|
77
|
+
if (typeof text !== 'string' || text.length === 0)
|
|
78
|
+
return { quota: false };
|
|
79
|
+
if (!QUOTA_PATTERN.test(text))
|
|
80
|
+
return { quota: false };
|
|
81
|
+
const retryAfterMs = readRetryAfterMs(text);
|
|
82
|
+
return retryAfterMs === undefined ? { quota: true } : { quota: true, retryAfterMs };
|
|
83
|
+
};
|
|
84
|
+
const isRecord = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
85
|
+
const safeInt = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
86
|
+
/** Normalize one stream-json line; unknown and noise lines yield nothing. */
|
|
87
|
+
export const parseClaudeCodeLine = (line) => {
|
|
88
|
+
let parsed;
|
|
89
|
+
try {
|
|
90
|
+
parsed = JSON.parse(line);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
if (!isRecord(parsed) || typeof parsed.type !== 'string')
|
|
96
|
+
return [];
|
|
97
|
+
if (parsed.type === 'system' && parsed.subtype === 'init') {
|
|
98
|
+
const init = {};
|
|
99
|
+
if ('tools' in parsed)
|
|
100
|
+
init.tools = parsed['tools'];
|
|
101
|
+
if ('mcp_servers' in parsed)
|
|
102
|
+
init.mcpServers = parsed['mcp_servers'];
|
|
103
|
+
else if ('mcpServers' in parsed)
|
|
104
|
+
init.mcpServers = parsed['mcpServers'];
|
|
105
|
+
return [{ type: 'system_init', init }];
|
|
106
|
+
}
|
|
107
|
+
if (parsed.type === 'assistant') {
|
|
108
|
+
const message = parsed.message;
|
|
109
|
+
if (!isRecord(message) || !Array.isArray(message.content))
|
|
110
|
+
return [];
|
|
111
|
+
const outcomes = [];
|
|
112
|
+
for (const block of message.content) {
|
|
113
|
+
if (!isRecord(block) || typeof block.type !== 'string')
|
|
114
|
+
continue;
|
|
115
|
+
if (block.type === 'text' && typeof block.text === 'string' && block.text.length > 0) {
|
|
116
|
+
outcomes.push({ type: 'text', text: block.text });
|
|
117
|
+
}
|
|
118
|
+
else if (block.type === 'tool_use' && typeof block.id === 'string'
|
|
119
|
+
&& typeof block.name === 'string' && isRecord(block.input)) {
|
|
120
|
+
outcomes.push({ type: 'tool_use',
|
|
121
|
+
event: { type: 'tool_use', id: block.id, name: block.name, input: block.input } });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (message.stop_reason !== undefined) {
|
|
125
|
+
outcomes.push({ type: 'stop_reason', reason: message.stop_reason });
|
|
126
|
+
}
|
|
127
|
+
return outcomes;
|
|
128
|
+
}
|
|
129
|
+
if (parsed.type === 'result') {
|
|
130
|
+
if (parsed.subtype === 'success' && parsed.is_error !== true) {
|
|
131
|
+
const usage = isRecord(parsed.usage) ? {
|
|
132
|
+
...(safeInt(parsed.usage.input_tokens) !== undefined ? { inputTokens: safeInt(parsed.usage.input_tokens) } : {}),
|
|
133
|
+
...(safeInt(parsed.usage.output_tokens) !== undefined ? { outputTokens: safeInt(parsed.usage.output_tokens) } : {}),
|
|
134
|
+
} : undefined;
|
|
135
|
+
const resultText = typeof parsed.result === 'string' ? parsed.result : undefined;
|
|
136
|
+
return [{ type: 'result', result: { finishReason: 'stop',
|
|
137
|
+
...(usage && Object.keys(usage).length ? { usage } : {}),
|
|
138
|
+
...(resultText !== undefined ? { resultText } : {}) } }];
|
|
139
|
+
}
|
|
140
|
+
return [{ type: 'error_payload', payload: parsed }];
|
|
141
|
+
}
|
|
142
|
+
return [];
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=claude-code-cli-wire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-cli-wire.js","sourceRoot":"","sources":["../../src/node/claude-code-cli-wire.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -20,4 +20,9 @@ export type { SeatCellConfigDirs, SeatCellInput, SeatCellReceipt, SeatCellReceip
|
|
|
20
20
|
export { SEAT_RECORD_REL_PATH, eraseSeatHome, materialiseCellHome, materialiseSeatEnvelopes, } from './seat-onboarding-materialize.js';
|
|
21
21
|
export type { CodexMcpServerSpec, CodexSeatIntent } from '../enrollment/seat-onboarding-projections.js';
|
|
22
22
|
export { CODEX_TRUST_DIALOG_PROBE, projectClaudeOnboarding, projectCodexIntent, projectMuseTrust, renderCodexSeatConfig, } from '../enrollment/seat-onboarding-projections.js';
|
|
23
|
+
export type { ClaudeCodeCliProbeOptions, ClaudeSeatAnthropicClientOptions, NodeClaudeCodeCliRunnerOptions, } from './claude-code-cli-runner.js';
|
|
24
|
+
export { CLAUDE_CODE_OAUTH_ENV_VAR, CLAUDE_CODE_RESULT_TIMEOUT_MS, CLAUDE_CODE_STREAM_PROTOCOL, DEFAULT_CLAUDE_CODE_CLI_PATH, DEFAULT_CLAUDE_CODE_EFFORT, DEFAULT_CLAUDE_CODE_TIMEOUT_MS, NodeClaudeCodeCliRunner, createClaudeSeatAnthropicClient, probeClaudeCodeCliCapabilities, } from './claude-code-cli-runner.js';
|
|
25
|
+
export { ClaudeCliQuotaError } from '../transport/claude-code-runtime-client.js';
|
|
26
|
+
export type { ClaudeCodeLineOutcome, QuotaDiagnosis } from './claude-code-cli-wire.js';
|
|
27
|
+
export { diagnoseClaudeCodeQuota, parseClaudeCodeLine, renderClaudeCodeCliPrompt, } from './claude-code-cli-wire.js';
|
|
23
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.js
CHANGED
|
@@ -11,4 +11,7 @@ export { AGY_REQUIRED_COMPLETED_STEPS, CODEX_APPROVAL_POLICY_VALUES, MUSE_TRUST_
|
|
|
11
11
|
export { CAPTURE_SOURCES, captureSeatOnboarding } from './seat-onboarding-capture.js';
|
|
12
12
|
export { SEAT_RECORD_REL_PATH, eraseSeatHome, materialiseCellHome, materialiseSeatEnvelopes, } from './seat-onboarding-materialize.js';
|
|
13
13
|
export { CODEX_TRUST_DIALOG_PROBE, projectClaudeOnboarding, projectCodexIntent, projectMuseTrust, renderCodexSeatConfig, } from '../enrollment/seat-onboarding-projections.js';
|
|
14
|
+
export { CLAUDE_CODE_OAUTH_ENV_VAR, CLAUDE_CODE_RESULT_TIMEOUT_MS, CLAUDE_CODE_STREAM_PROTOCOL, DEFAULT_CLAUDE_CODE_CLI_PATH, DEFAULT_CLAUDE_CODE_EFFORT, DEFAULT_CLAUDE_CODE_TIMEOUT_MS, NodeClaudeCodeCliRunner, createClaudeSeatAnthropicClient, probeClaudeCodeCliCapabilities, } from './claude-code-cli-runner.js';
|
|
15
|
+
export { ClaudeCliQuotaError } from '../transport/claude-code-runtime-client.js';
|
|
16
|
+
export { diagnoseClaudeCodeQuota, parseClaudeCodeLine, renderClaudeCodeCliPrompt, } from './claude-code-cli-wire.js';
|
|
14
17
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAgB3E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAO1C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAiBtF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,8CAA8C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAgB3E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAO1C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAiBtF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,8CAA8C,CAAC;AAMtD,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive custodian refresh policy (Lot 1).
|
|
3
|
+
*
|
|
4
|
+
* The custodian used to refresh only reactively, when an access token was
|
|
5
|
+
* already expired at acquire time. This module decides when a mesh-managed
|
|
6
|
+
* account must be renewed *before* expiry: inside a skew window computed
|
|
7
|
+
* from the credential TTL (25 % of TTL remaining by default, at least
|
|
8
|
+
* 10 minutes). A refresh failure flips the account to `reauth_required`
|
|
9
|
+
* early, so the route diagnostics carry the reauth signal without waiting
|
|
10
|
+
* for a business call to fail.
|
|
11
|
+
*
|
|
12
|
+
* Pure functions only: the service owns clocks, providers and persistence.
|
|
13
|
+
*/
|
|
14
|
+
export interface CustodianRefreshPolicy {
|
|
15
|
+
/** Fraction of TTL remaining that opens the refresh window (0.25). */
|
|
16
|
+
skewRatio: number;
|
|
17
|
+
/** Floor for the refresh window in ms (600_000 = 10 min). */
|
|
18
|
+
minSkewMs: number;
|
|
19
|
+
}
|
|
20
|
+
export declare const DEFAULT_CUSTODIAN_REFRESH_POLICY: CustodianRefreshPolicy;
|
|
21
|
+
/** Clamp a host-supplied policy to safe bounds; invalid fields fall back. */
|
|
22
|
+
export declare function sanitizeCustodianRefreshPolicy(policy?: CustodianRefreshPolicy): CustodianRefreshPolicy;
|
|
23
|
+
export interface RefreshWindowInput {
|
|
24
|
+
expiresAtMs: number;
|
|
25
|
+
/** Credential issuance instant; NaN/undefined falls back to the floor window. */
|
|
26
|
+
issuedAtMs?: number;
|
|
27
|
+
nowMs: number;
|
|
28
|
+
}
|
|
29
|
+
/** Width of the proactive refresh window for a credential TTL. */
|
|
30
|
+
export declare function refreshSkewMs(ttlMs: number, policy?: CustodianRefreshPolicy): number;
|
|
31
|
+
/** True when the credential must be renewed now, before it expires. */
|
|
32
|
+
export declare function shouldRefreshProactively(input: RefreshWindowInput, policy?: CustodianRefreshPolicy): boolean;
|
|
33
|
+
export type CustodianAccountAction = 'refreshed' | 'refresh-failed-reauth' | 'refresh-deferred-retry' | 'refresh-in-flight' | 'expired-no-grant' | 'skipped-healthy' | 'skipped-external' | 'skipped-no-grant' | 'skipped-no-expiry' | 'already-reauth';
|
|
34
|
+
export interface CustodianAccountReport {
|
|
35
|
+
/** Diagnostic hash of the account id; never the raw id, never a secret. */
|
|
36
|
+
accountRef: string;
|
|
37
|
+
transportProviderId: string;
|
|
38
|
+
ownerScopeRef: string;
|
|
39
|
+
action: CustodianAccountAction;
|
|
40
|
+
readiness: 'ready' | 'reauth-required';
|
|
41
|
+
expiredAt?: string;
|
|
42
|
+
/** Upcoming expiry (future): the plannable rotation window for grant-less credentials. */
|
|
43
|
+
expiresAt?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CustodianRefreshReport {
|
|
46
|
+
at: string;
|
|
47
|
+
checked: number;
|
|
48
|
+
refreshed: number;
|
|
49
|
+
reauthRequired: number;
|
|
50
|
+
accounts: CustodianAccountReport[];
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=custodian-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custodian-refresh.d.ts","sourceRoot":"","sources":["../../src/service/custodian-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAG9C,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,sBAAsB,GAC9B,sBAAsB,CAYxB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,sBAAyD,GAChE,MAAM,CAGR;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,GAAE,sBAAyD,GAChE,OAAO,CAST;AAED,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive custodian refresh policy (Lot 1).
|
|
3
|
+
*
|
|
4
|
+
* The custodian used to refresh only reactively, when an access token was
|
|
5
|
+
* already expired at acquire time. This module decides when a mesh-managed
|
|
6
|
+
* account must be renewed *before* expiry: inside a skew window computed
|
|
7
|
+
* from the credential TTL (25 % of TTL remaining by default, at least
|
|
8
|
+
* 10 minutes). A refresh failure flips the account to `reauth_required`
|
|
9
|
+
* early, so the route diagnostics carry the reauth signal without waiting
|
|
10
|
+
* for a business call to fail.
|
|
11
|
+
*
|
|
12
|
+
* Pure functions only: the service owns clocks, providers and persistence.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_CUSTODIAN_REFRESH_POLICY = {
|
|
15
|
+
skewRatio: 0.25,
|
|
16
|
+
minSkewMs: 600_000,
|
|
17
|
+
};
|
|
18
|
+
/** Clamp a host-supplied policy to safe bounds; invalid fields fall back. */
|
|
19
|
+
export function sanitizeCustodianRefreshPolicy(policy) {
|
|
20
|
+
const fallback = DEFAULT_CUSTODIAN_REFRESH_POLICY;
|
|
21
|
+
const skewRatio = policy?.skewRatio;
|
|
22
|
+
const minSkewMs = policy?.minSkewMs;
|
|
23
|
+
return {
|
|
24
|
+
skewRatio: Number.isFinite(skewRatio) && skewRatio > 0 && skewRatio <= 1
|
|
25
|
+
? skewRatio
|
|
26
|
+
: fallback.skewRatio,
|
|
27
|
+
minSkewMs: Number.isFinite(minSkewMs) && minSkewMs >= 0
|
|
28
|
+
? minSkewMs
|
|
29
|
+
: fallback.minSkewMs,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Width of the proactive refresh window for a credential TTL. */
|
|
33
|
+
export function refreshSkewMs(ttlMs, policy = DEFAULT_CUSTODIAN_REFRESH_POLICY) {
|
|
34
|
+
if (!Number.isFinite(ttlMs) || ttlMs <= 0)
|
|
35
|
+
return policy.minSkewMs;
|
|
36
|
+
return Math.min(ttlMs, Math.max(policy.minSkewMs, ttlMs * policy.skewRatio));
|
|
37
|
+
}
|
|
38
|
+
/** True when the credential must be renewed now, before it expires. */
|
|
39
|
+
export function shouldRefreshProactively(input, policy = DEFAULT_CUSTODIAN_REFRESH_POLICY) {
|
|
40
|
+
const { expiresAtMs, nowMs } = input;
|
|
41
|
+
if (!Number.isFinite(expiresAtMs))
|
|
42
|
+
return false;
|
|
43
|
+
if (expiresAtMs <= nowMs)
|
|
44
|
+
return true;
|
|
45
|
+
const issuedAtMs = input.issuedAtMs;
|
|
46
|
+
const ttlMs = issuedAtMs !== undefined && Number.isFinite(issuedAtMs)
|
|
47
|
+
? expiresAtMs - issuedAtMs
|
|
48
|
+
: Number.NaN;
|
|
49
|
+
return expiresAtMs - nowMs <= refreshSkewMs(ttlMs, policy);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=custodian-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custodian-refresh.js","sourceRoot":"","sources":["../../src/service/custodian-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,CAAC,MAAM,gCAAgC,GAA2B;IACtE,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,8BAA8B,CAC5C,MAA+B;IAE/B,MAAM,QAAQ,GAAG,gCAAgC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAK,SAAoB,GAAG,CAAC,IAAK,SAAoB,IAAI,CAAC;YAC9F,CAAC,CAAE,SAAoB;YACvB,CAAC,CAAC,QAAQ,CAAC,SAAS;QACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAK,SAAoB,IAAI,CAAC;YACjE,CAAC,CAAE,SAAoB;YACvB,CAAC,CAAC,QAAQ,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC;AASD,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,SAAiC,gCAAgC;IAEjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,wBAAwB,CACtC,KAAyB,EACzB,SAAiC,gCAAgC;IAEjE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,WAAW,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnE,CAAC,CAAC,WAAW,GAAG,UAAU;QAC1B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACf,OAAO,WAAW,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/service/facade.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ import type { SeatOnboardingV1 } from '../enrollment/seat-onboarding.js';
|
|
|
6
6
|
import type { LlmMesh } from '../mesh.js';
|
|
7
7
|
import { type InMemoryRoutePlannerOptions } from '../route-planner.js';
|
|
8
8
|
import type { RoutePlanner } from '../routing-contracts.js';
|
|
9
|
+
import type { CustodianRefreshPolicy, CustodianRefreshReport } from './custodian-refresh.js';
|
|
10
|
+
import type { ReauthAlertSink } from './reauth-alert.js';
|
|
11
|
+
export type { CustodianAccountAction, CustodianAccountReport, CustodianRefreshPolicy, CustodianRefreshReport, } from './custodian-refresh.js';
|
|
12
|
+
export type { ReauthAlertEvent, ReauthAlertReason, ReauthAlertSink, } from './reauth-alert.js';
|
|
13
|
+
export type { LocalAccountTransportServiceOptions } from './local-account-transport-service.js';
|
|
9
14
|
export interface ProviderRequest {
|
|
10
15
|
modelId: string;
|
|
11
16
|
contents: unknown[];
|
|
@@ -59,12 +64,22 @@ export interface KeyringAdapter {
|
|
|
59
64
|
export interface ConfigResolver {
|
|
60
65
|
resolveConfig(configRef: string): Promise<Record<string, unknown>>;
|
|
61
66
|
}
|
|
67
|
+
export interface CustodianOptions {
|
|
68
|
+
/** Injected clock (ms); defaults to Date.now. Tests pin it. */
|
|
69
|
+
now?: () => number;
|
|
70
|
+
/** Reauth alert sink (D4: conductor h2a + owner re-auth); never receives secrets. */
|
|
71
|
+
reauthAlert?: ReauthAlertSink;
|
|
72
|
+
/** Proactive refresh skew policy; defaults to 25 % TTL / 10 min floor. */
|
|
73
|
+
refreshPolicy?: CustodianRefreshPolicy;
|
|
74
|
+
}
|
|
62
75
|
export interface FacadeOptions {
|
|
63
76
|
configResolver: ConfigResolver;
|
|
64
77
|
keyring?: KeyringAdapter;
|
|
65
78
|
mode: 'cli' | 'portal';
|
|
66
79
|
/** Explicit owner used only to bind pre-ownerScope local keyring records. */
|
|
67
80
|
legacyAccountOwnerScopeRef?: string;
|
|
81
|
+
/** Lot 1 custodian loop options (clock, reauth sink, skew policy). */
|
|
82
|
+
custodian?: CustodianOptions;
|
|
68
83
|
}
|
|
69
84
|
export interface AccountOwnerInput {
|
|
70
85
|
ownerScope: string;
|
|
@@ -76,6 +91,9 @@ export interface RemoveAccountResult {
|
|
|
76
91
|
export interface LlmMeshAccountAdministration {
|
|
77
92
|
listAccounts(input: AccountOwnerInput): Promise<readonly AccountPublic[]>;
|
|
78
93
|
removeAccount(accountId: string, input: AccountOwnerInput): Promise<RemoveAccountResult>;
|
|
94
|
+
runCustodianRefreshCycle(): Promise<CustodianRefreshReport>;
|
|
95
|
+
startCustodianLoop(intervalMs: number, onReport?: (report: CustodianRefreshReport) => void, onError?: (error: unknown) => void): () => void;
|
|
96
|
+
stopCustodianLoop(): void;
|
|
79
97
|
}
|
|
80
98
|
export interface LlmMeshFacade {
|
|
81
99
|
/** Trusted in-process inputs only; keep codes and credential JSON out of agent tools. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAEpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAWzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACiB,KAAK,2BAA2B,EACvD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"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"}
|
package/dist/service/facade.js
CHANGED
|
@@ -29,7 +29,12 @@ export function createLlmMeshFacade(options) {
|
|
|
29
29
|
['muse-code', new MuseCodeEnrollmentProvider()],
|
|
30
30
|
['mistral-vibe', new MistralVibeEnrollmentProvider()],
|
|
31
31
|
]);
|
|
32
|
-
const
|
|
32
|
+
const serviceOptions = {
|
|
33
|
+
...(options.custodian?.now ? { now: options.custodian.now } : {}),
|
|
34
|
+
...(options.custodian?.reauthAlert ? { reauthAlert: options.custodian.reauthAlert } : {}),
|
|
35
|
+
...(options.custodian?.refreshPolicy ? { refreshPolicy: options.custodian.refreshPolicy } : {}),
|
|
36
|
+
};
|
|
37
|
+
const service = new LocalAccountTransportService(keyring, providers, options.configResolver, options.legacyAccountOwnerScopeRef, serviceOptions);
|
|
33
38
|
return {
|
|
34
39
|
async completeClaudeEnrollment(enrollmentId, code, ownerScopeRef) {
|
|
35
40
|
return service.completeClaudeEnrollment(enrollmentId, code, ownerScopeRef);
|
|
@@ -76,6 +81,15 @@ export function createLlmMeshFacade(options) {
|
|
|
76
81
|
async release(acquisition) {
|
|
77
82
|
return service.release(acquisition);
|
|
78
83
|
},
|
|
84
|
+
async runCustodianRefreshCycle() {
|
|
85
|
+
return service.runCustodianRefreshCycle();
|
|
86
|
+
},
|
|
87
|
+
startCustodianLoop(intervalMs, onReport, onError) {
|
|
88
|
+
return service.startCustodianLoop(intervalMs, onReport, onError);
|
|
89
|
+
},
|
|
90
|
+
stopCustodianLoop() {
|
|
91
|
+
service.stopCustodianLoop();
|
|
92
|
+
},
|
|
79
93
|
getAdapter(providerId) {
|
|
80
94
|
if (providerId === 'cloud-code') {
|
|
81
95
|
return new CloudCodeProviderAdapter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EACL,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,31 @@
|
|
|
1
|
-
import { type AccountTransportAccount, type AccountTransportAcquireInput, type AccountTransportAcquisition } from '../account-transports.js';
|
|
1
|
+
import { AccountTransportAcquireError, type AccountTransportAccount, type AccountTransportAcquireInput, type AccountTransportAcquisition } from '../account-transports.js';
|
|
2
2
|
import type { AccountPublic, EnrollmentCompletion, EnrollmentProvider, EnrollmentSession, StartEnrollmentInput } from '../enrollment/contracts.js';
|
|
3
3
|
import type { ConfigResolver, KeyringAdapter } from './facade.js';
|
|
4
4
|
import type { LlmMesh } from '../mesh.js';
|
|
5
5
|
import { type SeatBundleV1 } from '../enrollment/seat-bundle.js';
|
|
6
6
|
import { type SeatOnboardingV1 } from '../enrollment/seat-onboarding.js';
|
|
7
7
|
import type { AccountDirectoryPort } from '../routing-contracts.js';
|
|
8
|
+
import { type CustodianRefreshPolicy, type CustodianRefreshReport } from './custodian-refresh.js';
|
|
9
|
+
import type { ReauthAlertSink } from './reauth-alert.js';
|
|
10
|
+
export interface LocalAccountTransportServiceOptions {
|
|
11
|
+
/** Injected clock (ms); defaults to Date.now. Tests pin it. */
|
|
12
|
+
now?: () => number;
|
|
13
|
+
/** Reauth alert sink (D4); never called with secrets. Defaults to no-op. */
|
|
14
|
+
reauthAlert?: ReauthAlertSink;
|
|
15
|
+
/** Proactive refresh skew policy; defaults to 25 % TTL / 10 min floor. */
|
|
16
|
+
refreshPolicy?: CustodianRefreshPolicy;
|
|
17
|
+
}
|
|
8
18
|
export type SeatExportUnavailableReason = 'not-a-seat' | 'record-missing' | 'lineage-mismatch' | 'owner-mismatch' | 'record-invalid';
|
|
19
|
+
/**
|
|
20
|
+
* A refresh failure that must NOT flip the account: the grant was provably
|
|
21
|
+
* not consumed (an explicit 429/5xx token-endpoint response, or a typed local
|
|
22
|
+
* preparation failure before any provider request), so a retry is safe.
|
|
23
|
+
* Extends {@link AccountTransportAcquireError} so `acquire()` callers keep
|
|
24
|
+
* their handling unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare class RefreshDeferredError extends AccountTransportAcquireError {
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
9
29
|
/** Typed refusal for exportSeatBundle; the code is `seat-export-unavailable:<reason>`. */
|
|
10
30
|
export declare class SeatExportUnavailableError extends Error {
|
|
11
31
|
readonly code: string;
|
|
@@ -37,11 +57,26 @@ export declare class LocalAccountTransportService {
|
|
|
37
57
|
private readonly claimedOwnerScopes;
|
|
38
58
|
/** enrollmentId → providerId, so poll completion reaches the owning provider. */
|
|
39
59
|
private readonly enrollmentProviders;
|
|
60
|
+
/**
|
|
61
|
+
* Last credential issuance per account (enrollment, restore, or refresh).
|
|
62
|
+
* The proactive window is derived from this issuance age, never from the
|
|
63
|
+
* enrollment age: a refreshed credential restarts its own TTL.
|
|
64
|
+
*/
|
|
65
|
+
private readonly credentialIssuedAtMs;
|
|
40
66
|
private readonly pendingClaudeAccounts;
|
|
41
67
|
private claudePersistenceTail;
|
|
42
68
|
private readonly claudeSessions;
|
|
43
69
|
private routeAttemptSequence;
|
|
44
|
-
|
|
70
|
+
/** Account ids already alerted for their current reauth_required epoch. */
|
|
71
|
+
private readonly alertedReauth;
|
|
72
|
+
/** Account ids already warned about an upcoming no-grant expiry (once per enrollment). */
|
|
73
|
+
private readonly warnedExpiringNoGrant;
|
|
74
|
+
private custodianTimer;
|
|
75
|
+
private custodianTickInFlight;
|
|
76
|
+
private custodianLoopGeneration;
|
|
77
|
+
private readonly serviceOptions;
|
|
78
|
+
constructor(keyring: KeyringAdapter, providers: Map<string, EnrollmentProvider>, configResolver: ConfigResolver, legacyAccountOwnerScopeRef?: string | undefined, options?: LocalAccountTransportServiceOptions);
|
|
79
|
+
private nowMs;
|
|
45
80
|
enroll(providerId: string, input: StartEnrollmentInput): Promise<EnrollmentSession>;
|
|
46
81
|
completeClaudeEnrollment(enrollmentId: string, code: string, ownerScopeRef: string): Promise<EnrollmentCompletion>;
|
|
47
82
|
completeClaudeCredentialImport(credentialJson: string, ownerScopeRef: string): Promise<EnrollmentCompletion>;
|
|
@@ -135,5 +170,56 @@ export declare class LocalAccountTransportService {
|
|
|
135
170
|
private readPublicRecord;
|
|
136
171
|
private restorePersistedAccounts;
|
|
137
172
|
private markReauthRequired;
|
|
173
|
+
/** Secret-free custody event for an account (diagnostic ref only). */
|
|
174
|
+
private buildCustodyAlertEvent;
|
|
175
|
+
/**
|
|
176
|
+
* Emit the D4 reauth alert once per reauth_required epoch. The event is
|
|
177
|
+
* secret-free (diagnostic account ref only); a throwing sink never breaks
|
|
178
|
+
* the custodian. A fresh `active` status clears the epoch.
|
|
179
|
+
*/
|
|
180
|
+
private emitReauthAlert;
|
|
181
|
+
/**
|
|
182
|
+
* Warn once per enrollment that a grant-less credential is about to
|
|
183
|
+
* expire. Re-enrollment is the only rotation path, so the warning opens
|
|
184
|
+
* the plannable window the expiry flip alone cannot give. It uses its own
|
|
185
|
+
* epoch: the later `expired-no-grant` flip must still alert.
|
|
186
|
+
*/
|
|
187
|
+
private emitExpiringNoGrantWarning;
|
|
188
|
+
/**
|
|
189
|
+
* Proactive custodian cycle (Lot 1): refresh every mesh-managed account
|
|
190
|
+
* inside its skew window before expiry, flip `reauth_required` early on
|
|
191
|
+
* definitive refresh failure and alert (D4). Only provably unconsumed
|
|
192
|
+
* failures defer without flipping: explicit 429/5xx token-endpoint
|
|
193
|
+
* responses and typed local preparation failures. Timeouts, resets,
|
|
194
|
+
* mint/persistence failures after a possible rotation, and unknown shapes
|
|
195
|
+
* flip fail-closed: the grant may already be consumed.
|
|
196
|
+
*
|
|
197
|
+
* Externally custodied seats never refresh here and are skipped; an
|
|
198
|
+
* unknown or elapsed expiry reads reauth-required (it awaits the next
|
|
199
|
+
* import) without flipping a status the custodian never owns. A
|
|
200
|
+
* CLI-imported Muse credential carries no refresh grant yet IS renewable
|
|
201
|
+
* (the mesh re-reads the CLI store), so it follows the grant path. Static
|
|
202
|
+
* keys with no refresh grant (Vibe long-lived keys, Muse direct keys)
|
|
203
|
+
* are skipped: their rotation path is re-enrollment, not refresh. They
|
|
204
|
+
* warn once inside the refresh window (`expiring-no-grant`, with the
|
|
205
|
+
* upcoming expiry in the report) and flip on expiry.
|
|
206
|
+
*/
|
|
207
|
+
runCustodianRefreshCycle(): Promise<CustodianRefreshReport>;
|
|
208
|
+
/**
|
|
209
|
+
* Start the custodian loop: an immediate cycle, then one every `intervalMs`
|
|
210
|
+
* with a small random stagger (two replicas started together must not fire
|
|
211
|
+
* in lockstep on single-use refresh grants). Ticks never overlap; the timer
|
|
212
|
+
* is unref'd so it cannot hold the process open.
|
|
213
|
+
*
|
|
214
|
+
* The host MUST run exactly one loop per owner scope: this library holds no
|
|
215
|
+
* distributed lock, so two live loops would race on rotating grants
|
|
216
|
+
* (multi-replica custody belongs to the Lot 2 host). Cycle and
|
|
217
|
+
* report-listener failures surface through `onError`; without it a dead
|
|
218
|
+
* keyring would tick silently.
|
|
219
|
+
*
|
|
220
|
+
* Returns a stop function; `stopCustodianLoop()` stops it as well.
|
|
221
|
+
*/
|
|
222
|
+
startCustodianLoop(intervalMs: number, onReport?: (report: CustodianRefreshReport) => void, onError?: (error: unknown) => void): () => void;
|
|
223
|
+
stopCustodianLoop(): void;
|
|
138
224
|
}
|
|
139
225
|
//# sourceMappingURL=local-account-transport-service.d.ts.map
|