@sentropic/llm-mesh 0.34.1 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/dist/catalog.d.ts +52 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +20 -0
- package/dist/catalog.js.map +1 -1
- package/dist/enrollment/contracts.d.ts +1 -1
- package/dist/enrollment/contracts.d.ts.map +1 -1
- package/dist/generated-model-council.d.ts +2 -2
- package/dist/generated-model-council.d.ts.map +1 -1
- package/dist/generated-model-council.js +3 -1
- package/dist/generated-model-council.js.map +1 -1
- package/dist/node/cli/bin.d.ts +3 -0
- package/dist/node/cli/bin.d.ts.map +1 -0
- package/dist/node/cli/bin.js +15 -0
- package/dist/node/cli/bin.js.map +1 -0
- package/dist/node/cli/enroll-args.d.ts +41 -0
- package/dist/node/cli/enroll-args.d.ts.map +1 -0
- package/dist/node/cli/enroll-args.js +118 -0
- package/dist/node/cli/enroll-args.js.map +1 -0
- package/dist/node/cli/enroll-cli.d.ts +4 -0
- package/dist/node/cli/enroll-cli.d.ts.map +1 -0
- package/dist/node/cli/enroll-cli.js +124 -0
- package/dist/node/cli/enroll-cli.js.map +1 -0
- package/dist/node/cli/enroll-command.d.ts +3 -0
- package/dist/node/cli/enroll-command.d.ts.map +1 -0
- package/dist/node/cli/enroll-command.js +87 -0
- package/dist/node/cli/enroll-command.js.map +1 -0
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/keyring/encrypted-file-keyring.d.ts +7 -1
- package/dist/node/keyring/encrypted-file-keyring.d.ts.map +1 -1
- package/dist/node/keyring/encrypted-file-keyring.js +46 -1
- package/dist/node/keyring/encrypted-file-keyring.js.map +1 -1
- package/dist/providers.d.ts +4 -4
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +4 -2
- package/dist/providers.js.map +1 -1
- package/dist/routing-targets.d.ts.map +1 -1
- package/dist/routing-targets.js +39 -4
- package/dist/routing-targets.js.map +1 -1
- package/dist/service/local-account-transport-service.d.ts.map +1 -1
- package/dist/service/local-account-transport-service.js +2 -1
- package/dist/service/local-account-transport-service.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// @sentropic/llm-mesh/node/cli/enroll-cli.ts
|
|
2
|
+
//
|
|
3
|
+
// Generic device-flow enrollment CLI (muse-code first):
|
|
4
|
+
// `enroll` stores a seat account, `probe` checks it with one minimal
|
|
5
|
+
// generate through MuseAdapter/MuseRuntimeClient. stdout is a machine
|
|
6
|
+
// contract (one JSON object per line); secrets never printed.
|
|
7
|
+
import { EncryptedFileKeyring } from '../keyring/encrypted-file-keyring.js';
|
|
8
|
+
import { defaultWriters, EXIT_CODES, fail, parseArgs, resolveMasterKey, usageText, } from './enroll-args.js';
|
|
9
|
+
import { runEnroll } from './enroll-command.js';
|
|
10
|
+
const KNOWN_EFFORTS = new Set(['none', 'low', 'medium', 'high', 'xhigh', 'max']);
|
|
11
|
+
export const runProbe = async (args, deps = {}) => {
|
|
12
|
+
const writers = deps.writers ?? defaultWriters();
|
|
13
|
+
const env = deps.env ?? process.env;
|
|
14
|
+
const fetchFn = deps.fetchFn ?? fetch;
|
|
15
|
+
if (args.provider !== 'muse-code') {
|
|
16
|
+
return fail(writers, EXIT_CODES.usage, `provider '${args.provider}' has no probe; only 'muse-code' is probed`);
|
|
17
|
+
}
|
|
18
|
+
if (!args.keyringDir)
|
|
19
|
+
return fail(writers, EXIT_CODES.usage, 'missing --keyring-dir <dir>');
|
|
20
|
+
if (!args.account)
|
|
21
|
+
return fail(writers, EXIT_CODES.usage, 'missing --account <id>');
|
|
22
|
+
const effort = args.effort ?? 'low';
|
|
23
|
+
if (!KNOWN_EFFORTS.has(effort)) {
|
|
24
|
+
return fail(writers, EXIT_CODES.usage, `unknown --effort '${effort}'`);
|
|
25
|
+
}
|
|
26
|
+
const resolved = resolveMasterKey(args.keyringKeyEnv, env);
|
|
27
|
+
if (!resolved.key)
|
|
28
|
+
return fail(writers, EXIT_CODES.keyringKey, resolved.error ?? 'key error');
|
|
29
|
+
const keyring = new EncryptedFileKeyring(args.keyringDir, resolved.key);
|
|
30
|
+
let raw;
|
|
31
|
+
let publicRaw;
|
|
32
|
+
try {
|
|
33
|
+
raw = await keyring.getSecret(`sentropic-llm-mesh:${args.account}:envelope`);
|
|
34
|
+
publicRaw = await keyring.getSecret(`sentropic-llm-mesh:${args.account}:public`);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return fail(writers, EXIT_CODES.keyringKey, 'keyring read failed; check the key and permissions');
|
|
38
|
+
}
|
|
39
|
+
if (!raw) {
|
|
40
|
+
return fail(writers, EXIT_CODES.accountNotFound, `account '${args.account}' not found`);
|
|
41
|
+
}
|
|
42
|
+
// The envelope carries no provider; the public record does. Refuse any
|
|
43
|
+
// non-muse account before any token leaves the keyring: a codex OAuth
|
|
44
|
+
// token must never reach api.meta.ai.
|
|
45
|
+
try {
|
|
46
|
+
const record = JSON.parse(publicRaw ?? '');
|
|
47
|
+
if (record.providerId !== 'muse')
|
|
48
|
+
throw new Error('bad provider');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return fail(writers, EXIT_CODES.accountNotFound, `account '${args.account}' is not a muse-code seat account`);
|
|
52
|
+
}
|
|
53
|
+
let accessToken;
|
|
54
|
+
try {
|
|
55
|
+
const envelope = JSON.parse(raw);
|
|
56
|
+
if (typeof envelope.accessToken !== 'string' || !envelope.accessToken)
|
|
57
|
+
throw new Error('bad');
|
|
58
|
+
accessToken = envelope.accessToken;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return fail(writers, EXIT_CODES.probeFailed, `account '${args.account}' credential record is corrupt`);
|
|
62
|
+
}
|
|
63
|
+
// The Muse Chat wire takes no reasoning controls (the client refuses a
|
|
64
|
+
// non-empty reasoning block), so --effort is validated for forward
|
|
65
|
+
// compatibility but not forwarded.
|
|
66
|
+
let adapter;
|
|
67
|
+
try {
|
|
68
|
+
const { MuseAdapter } = await import('../../adapters.js');
|
|
69
|
+
const { MuseRuntimeClient } = await import('../../transport/muse-runtime-client.js');
|
|
70
|
+
adapter = new MuseAdapter({ client: new MuseRuntimeClient({ fetch: fetchFn }) });
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return fail(writers, EXIT_CODES.probeFailed, 'probe failed to load the muse runtime');
|
|
74
|
+
}
|
|
75
|
+
const modelId = args.model ?? 'muse-wonder-1.0';
|
|
76
|
+
const startedAt = Date.now();
|
|
77
|
+
try {
|
|
78
|
+
const response = await adapter.generate({ providerId: 'muse', modelId, messages: [{ role: 'user', content: 'probe' }], maxOutputTokens: 16 }, {
|
|
79
|
+
auth: {
|
|
80
|
+
material: { type: 'account-transport', provider: 'muse', accessToken, accountId: args.account },
|
|
81
|
+
descriptor: { sourceType: 'account-transport', accountProviderId: 'muse' },
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
// Status plus latency plus usage only; the model text stays out.
|
|
85
|
+
writers.out(JSON.stringify({
|
|
86
|
+
status: 'ok',
|
|
87
|
+
latencyMs: Date.now() - startedAt,
|
|
88
|
+
modelId: response.modelId,
|
|
89
|
+
...(response.usage ? { usage: response.usage } : {}),
|
|
90
|
+
}));
|
|
91
|
+
return EXIT_CODES.ok;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const status = error.status;
|
|
95
|
+
if (status === 402) {
|
|
96
|
+
// Measured non-seat wire: a raw MUSE_API_KEY import (muse.ts direct
|
|
97
|
+
// path) is not seat-billed, so serving refuses billing_not_configured.
|
|
98
|
+
// Seat-billed device-flow accounts (muse-code.ts) never hit this.
|
|
99
|
+
return fail(writers, EXIT_CODES.billingNotConfigured, 'billing_not_configured: non-seat muse.ts direct-key path; re-enroll a seat account');
|
|
100
|
+
}
|
|
101
|
+
if (typeof status === 'number') {
|
|
102
|
+
return fail(writers, EXIT_CODES.probeFailed, `probe failed (status ${status})`);
|
|
103
|
+
}
|
|
104
|
+
return fail(writers, EXIT_CODES.probeFailed, 'probe failed');
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
export const run = async (argv, deps = {}) => {
|
|
108
|
+
const writers = deps.writers ?? defaultWriters();
|
|
109
|
+
let args;
|
|
110
|
+
try {
|
|
111
|
+
args = parseArgs(argv);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return fail(writers, EXIT_CODES.usage, error instanceof Error ? error.message : 'bad usage');
|
|
115
|
+
}
|
|
116
|
+
if (args.command === 'help') {
|
|
117
|
+
writers.out(usageText());
|
|
118
|
+
return EXIT_CODES.ok;
|
|
119
|
+
}
|
|
120
|
+
if (args.command === 'enroll')
|
|
121
|
+
return runEnroll(args, deps);
|
|
122
|
+
return runProbe(args, deps);
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=enroll-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enroll-cli.js","sourceRoot":"","sources":["../../../src/node/cli/enroll-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enroll-command.d.ts","sourceRoot":"","sources":["../../../src/node/cli/enroll-command.ts"],"names":[],"mappings":"AAOA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AA0B1B,eAAO,MAAM,SAAS,SACd,UAAU,SACV,aAAa,KAClB,QAAQ,MAAM,CAsDhB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// @sentropic/llm-mesh/node/cli/enroll-command.ts
|
|
2
|
+
//
|
|
3
|
+
// The `enroll` command: start a device flow, print only the grant, poll,
|
|
4
|
+
// then persist. stdout is a machine contract (one JSON object per line);
|
|
5
|
+
// progress goes to stderr; secrets never printed.
|
|
6
|
+
import { EncryptedFileKeyring } from '../keyring/encrypted-file-keyring.js';
|
|
7
|
+
import { defaultWriters, EXIT_CODES, fail, openService, resolveMasterKey, } from './enroll-args.js';
|
|
8
|
+
const sanitizeStatus = (error) => {
|
|
9
|
+
const status = error.status;
|
|
10
|
+
return typeof status === 'number' ? ` (status ${status})` : null;
|
|
11
|
+
};
|
|
12
|
+
const relabelAccount = async (keyringDir, masterKey, accountId, label) => {
|
|
13
|
+
try {
|
|
14
|
+
const keyring = new EncryptedFileKeyring(keyringDir, masterKey);
|
|
15
|
+
const key = `sentropic-llm-mesh:${accountId}:public`;
|
|
16
|
+
const raw = await keyring.getSecret(key);
|
|
17
|
+
if (!raw)
|
|
18
|
+
return label;
|
|
19
|
+
const record = JSON.parse(raw);
|
|
20
|
+
await keyring.setSecret(key, JSON.stringify({ ...record, accountLabel: label }));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return label;
|
|
24
|
+
}
|
|
25
|
+
return label;
|
|
26
|
+
};
|
|
27
|
+
export const runEnroll = async (args, deps = {}) => {
|
|
28
|
+
const writers = deps.writers ?? defaultWriters();
|
|
29
|
+
const env = deps.env ?? process.env;
|
|
30
|
+
const fetchFn = deps.fetchFn ?? fetch;
|
|
31
|
+
if (args.provider !== 'muse-code' && args.provider !== 'codex') {
|
|
32
|
+
return fail(writers, EXIT_CODES.usage, `unknown provider '${args.provider}'; expected 'muse-code' or 'codex'`);
|
|
33
|
+
}
|
|
34
|
+
if (!args.keyringDir)
|
|
35
|
+
return fail(writers, EXIT_CODES.usage, 'missing --keyring-dir <dir>');
|
|
36
|
+
if (!args.ownerScope)
|
|
37
|
+
return fail(writers, EXIT_CODES.usage, 'missing --owner-scope <ref>');
|
|
38
|
+
const maxAttempts = args.maxAttempts ?? 60;
|
|
39
|
+
if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {
|
|
40
|
+
return fail(writers, EXIT_CODES.usage, 'invalid --max-attempts <n>');
|
|
41
|
+
}
|
|
42
|
+
const resolved = resolveMasterKey(args.keyringKeyEnv, env);
|
|
43
|
+
if (!resolved.key)
|
|
44
|
+
return fail(writers, EXIT_CODES.keyringKey, resolved.error ?? 'key error');
|
|
45
|
+
const service = openService(args.keyringDir, resolved.key, fetchFn);
|
|
46
|
+
let session;
|
|
47
|
+
try {
|
|
48
|
+
session = await service.enroll(args.provider, {
|
|
49
|
+
configRef: 'default',
|
|
50
|
+
mode: 'cli',
|
|
51
|
+
redirectUri: 'http://127.0.0.1',
|
|
52
|
+
ownerScope: args.ownerScope,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// Upstream bodies can echo tokens; relay only the status, never the body.
|
|
57
|
+
const suffix = sanitizeStatus(error) ?? '';
|
|
58
|
+
return fail(writers, EXIT_CODES.enrollmentFailed, `enrollment failed${suffix}`);
|
|
59
|
+
}
|
|
60
|
+
if (session.kind !== 'device-code') {
|
|
61
|
+
return fail(writers, EXIT_CODES.usage, `provider '${args.provider}' has no device flow`);
|
|
62
|
+
}
|
|
63
|
+
// First stdout line: the grant the owner approves. The user code and
|
|
64
|
+
// URL are public by device-flow design; no secret is printed.
|
|
65
|
+
writers.out(JSON.stringify({
|
|
66
|
+
verificationUrl: session.verificationUrl,
|
|
67
|
+
userCode: session.userCode,
|
|
68
|
+
expiresAt: session.expiresAt,
|
|
69
|
+
}));
|
|
70
|
+
writers.err('Waiting for the owner to approve the device login.');
|
|
71
|
+
try {
|
|
72
|
+
const completed = args.provider === 'muse-code'
|
|
73
|
+
? await service.completeMuseDeviceImport(session.enrollmentId, args.ownerScope, maxAttempts)
|
|
74
|
+
: await service.pollForCompletion(session.enrollmentId);
|
|
75
|
+
const label = args.label
|
|
76
|
+
? await relabelAccount(args.keyringDir, resolved.key, completed.accountId, args.label)
|
|
77
|
+
: completed.label;
|
|
78
|
+
// Last stdout line: the stored account only.
|
|
79
|
+
writers.out(JSON.stringify({ accountId: completed.accountId, label }));
|
|
80
|
+
return EXIT_CODES.ok;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const suffix = sanitizeStatus(error) ?? '';
|
|
84
|
+
return fail(writers, EXIT_CODES.enrollmentFailed, `enrollment poll failed${suffix}`);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=enroll-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enroll-command.js","sourceRoot":"","sources":["../../../src/node/cli/enroll-command.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type { SeatSidecar } from './seat-sidecar-file-backend.js';
|
|
|
7
7
|
export { SEAT_SIDECAR_MAX_BYTES, SeatSidecarFileBackend, parseSeatSidecar } from './seat-sidecar-file-backend.js';
|
|
8
8
|
export type { SeatExternalAuthority } from '../service/external-seat-authority.js';
|
|
9
9
|
export { SEAT_EXTERNAL_AUTHORITY_KEY, isDeviceFlowSeatAccount, isExternalSeatAccount, isExternalSeatUnavailable, markExternalSeatAuthority, readExternalSeatAuthority, } from '../service/external-seat-authority.js';
|
|
10
|
-
export { EncryptedFileKeyring, KeyringInsecurePermissionsError, } from './keyring/encrypted-file-keyring.js';
|
|
10
|
+
export { deriveKeyringMasterKey, EncryptedFileKeyring, KeyringInsecurePermissionsError, resolveKeyringMasterKey, } from './keyring/encrypted-file-keyring.js';
|
|
11
11
|
export { EnvKeyring } from './keyring/env-keyring.js';
|
|
12
12
|
export { InMemoryKeyring } from './keyring/in-memory-keyring.js';
|
|
13
13
|
export { LinuxSecretstoreKeyring } from './keyring/linux-secretstore-keyring.js';
|
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":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,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;AACtC,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClH,YAAY,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,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;AACtC,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClH,YAAY,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,GACxB,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;AAC3E,YAAY,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,kCAAkC,CAAC;AAC1C,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;AAE1C,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAEtF,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACxG,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,8CAA8C,CAAC;AACtD,YAAY,EACV,yBAAyB,EACzB,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,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;AACjF,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { SEAT_AGY_APPLICATION_TUPLE, SEAT_BUNDLE_MAX_BYTES, SEAT_BUNDLE_SCHEMA_V
|
|
|
2
2
|
export { inspectSeatStoreRecord, SeatStoreReadError } from './cli-seat-store-reader.js';
|
|
3
3
|
export { SEAT_SIDECAR_MAX_BYTES, SeatSidecarFileBackend, parseSeatSidecar } from './seat-sidecar-file-backend.js';
|
|
4
4
|
export { SEAT_EXTERNAL_AUTHORITY_KEY, isDeviceFlowSeatAccount, isExternalSeatAccount, isExternalSeatUnavailable, markExternalSeatAuthority, readExternalSeatAuthority, } from '../service/external-seat-authority.js';
|
|
5
|
-
export { EncryptedFileKeyring, KeyringInsecurePermissionsError, } from './keyring/encrypted-file-keyring.js';
|
|
5
|
+
export { deriveKeyringMasterKey, EncryptedFileKeyring, KeyringInsecurePermissionsError, resolveKeyringMasterKey, } from './keyring/encrypted-file-keyring.js';
|
|
6
6
|
export { EnvKeyring } from './keyring/env-keyring.js';
|
|
7
7
|
export { InMemoryKeyring } from './keyring/in-memory-keyring.js';
|
|
8
8
|
export { LinuxSecretstoreKeyring } from './keyring/linux-secretstore-keyring.js';
|
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,
|
|
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,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,GACxB,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"}
|
|
@@ -3,9 +3,15 @@ export declare class KeyringInsecurePermissionsError extends Error {
|
|
|
3
3
|
readonly code = "keyring_insecure_permissions";
|
|
4
4
|
constructor(target: string, expectedMode: number, actualMode: number);
|
|
5
5
|
}
|
|
6
|
+
export interface EncryptedFileKeyringOptions {
|
|
7
|
+
masterKey?: Buffer;
|
|
8
|
+
}
|
|
9
|
+
export declare const deriveKeyringMasterKey: (value: string) => Buffer;
|
|
10
|
+
export declare const resolveKeyringMasterKey: (envVarName: string) => Buffer;
|
|
6
11
|
export declare class EncryptedFileKeyring implements KeyringAdapter {
|
|
7
12
|
private readonly directory;
|
|
8
|
-
|
|
13
|
+
private readonly explicitMasterKey?;
|
|
14
|
+
constructor(directory?: string, masterKeyOrOptions?: Buffer | EncryptedFileKeyringOptions);
|
|
9
15
|
getSecret(key: string): Promise<string | null>;
|
|
10
16
|
setSecret(key: string, secret: string): Promise<void>;
|
|
11
17
|
setSecretIfAbsent(key: string, secret: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encrypted-file-keyring.d.ts","sourceRoot":"","sources":["../../../src/node/keyring/encrypted-file-keyring.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAe9D,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,IAAI,kCAAkC;gBAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAOrE;AAED,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;
|
|
1
|
+
{"version":3,"file":"encrypted-file-keyring.d.ts","sourceRoot":"","sources":["../../../src/node/keyring/encrypted-file-keyring.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAe9D,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,IAAI,kCAAkC;gBAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAOrE;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,UAAW,MAAM,KAAG,MAiBtD,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAAgB,MAAM,KAAG,MAU5D,CAAC;AAEF,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAS;gBAG1C,SAAS,SAE0C,EACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,2BAA2B;IAarD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0C9C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrD,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBhE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,UAAU;YAKJ,aAAa;YAiBb,aAAa;YAoCb,qBAAqB;YA4BrB,kBAAkB;YAOlB,wBAAwB;YAQxB,eAAe;CAO9B"}
|
|
@@ -14,11 +14,51 @@ export class KeyringInsecurePermissionsError extends Error {
|
|
|
14
14
|
this.name = 'KeyringInsecurePermissionsError';
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
export const deriveKeyringMasterKey = (value) => {
|
|
18
|
+
const trimmed = value.trim();
|
|
19
|
+
if (/^[0-9a-fA-F]{64}$/.test(trimmed)) {
|
|
20
|
+
return Buffer.from(trimmed, 'hex');
|
|
21
|
+
}
|
|
22
|
+
if (/^[A-Za-z0-9+/]{43}=$/.test(trimmed) || /^[A-Za-z0-9+/]{44}$/.test(trimmed)) {
|
|
23
|
+
try {
|
|
24
|
+
const decoded = Buffer.from(trimmed, 'base64');
|
|
25
|
+
if (decoded.length === 32)
|
|
26
|
+
return decoded;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Fall through to the refusal below.
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// No passphrase fallback: a human passphrase through one SHA-256 is
|
|
33
|
+
// offline-brute-forceable and protects long-lived refresh tokens.
|
|
34
|
+
// The key must be 32 bytes as 64 hex chars or 44/43-char base64.
|
|
35
|
+
throw new Error('keyring key must be 32 bytes as 64 hex chars or 44/43-char base64');
|
|
36
|
+
};
|
|
37
|
+
export const resolveKeyringMasterKey = (envVarName) => {
|
|
38
|
+
const name = envVarName.trim();
|
|
39
|
+
if (!name || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
|
|
40
|
+
throw new Error(`keyring key env var name is invalid: '${name}'`);
|
|
41
|
+
}
|
|
42
|
+
const value = process.env[name];
|
|
43
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
44
|
+
throw new Error(`keyring key env var '${name}' is missing or empty`);
|
|
45
|
+
}
|
|
46
|
+
return deriveKeyringMasterKey(value);
|
|
47
|
+
};
|
|
17
48
|
export class EncryptedFileKeyring {
|
|
18
49
|
directory;
|
|
50
|
+
explicitMasterKey;
|
|
19
51
|
constructor(directory = process.env.SENTROPIC_LLM_MESH_KEYRING_DIR ??
|
|
20
|
-
join(homedir(), '.sentropic', 'llm-mesh-keyring')) {
|
|
52
|
+
join(homedir(), '.sentropic', 'llm-mesh-keyring'), masterKeyOrOptions) {
|
|
21
53
|
this.directory = directory;
|
|
54
|
+
// The local Buffer stub has no isBuffer; narrow on the Uint8Array root.
|
|
55
|
+
const explicit = masterKeyOrOptions instanceof Uint8Array
|
|
56
|
+
? Buffer.from(masterKeyOrOptions)
|
|
57
|
+
: masterKeyOrOptions?.masterKey;
|
|
58
|
+
if (explicit !== undefined && explicit.length !== 32) {
|
|
59
|
+
throw new Error('Encrypted keyring master key must be 32 bytes');
|
|
60
|
+
}
|
|
61
|
+
this.explicitMasterKey = explicit;
|
|
22
62
|
}
|
|
23
63
|
async getSecret(key) {
|
|
24
64
|
let raw;
|
|
@@ -116,6 +156,11 @@ export class EncryptedFileKeyring {
|
|
|
116
156
|
};
|
|
117
157
|
}
|
|
118
158
|
async readMasterKey(create) {
|
|
159
|
+
if (this.explicitMasterKey) {
|
|
160
|
+
await mkdir(this.directory, { recursive: true, mode: 0o700 });
|
|
161
|
+
await this.setModeIfDifferent(this.directory, 0o700);
|
|
162
|
+
return this.explicitMasterKey;
|
|
163
|
+
}
|
|
119
164
|
const path = join(this.directory, '.key');
|
|
120
165
|
if (!create) {
|
|
121
166
|
return this.readExistingMasterKey(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encrypted-file-keyring.js","sourceRoot":"","sources":["../../../src/node/keyring/encrypted-file-keyring.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,EACN,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,IAAY,EAAW,EAAE,CAC5D,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAA4B,CAAC,IAAI,KAAK,IAAI,CAAC;AAE9C,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAC/C,IAAI,GAAG,8BAA8B,CAAC;IAE/C,YAAY,MAAc,EAAE,YAAoB,EAAE,UAAkB;QAClE,KAAK,CACH,qBAAqB,MAAM,6BAA6B;YACtD,cAAc,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CACtF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAChD,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"encrypted-file-keyring.js","sourceRoot":"","sources":["../../../src/node/keyring/encrypted-file-keyring.ts"],"names":[],"mappings":"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"}
|
package/dist/providers.d.ts
CHANGED
|
@@ -4,14 +4,14 @@ export type ProviderStatus = 'ready' | 'planned';
|
|
|
4
4
|
export type ProviderFamily = 'openai' | 'google' | 'anthropic' | 'mistral' | 'cohere' | 'meta' | 'typesafe';
|
|
5
5
|
export type ReasoningTier = 'none' | 'light' | 'standard' | 'advanced';
|
|
6
6
|
export type ModelTaskHint = 'chat' | 'structured' | 'summary' | 'doc';
|
|
7
|
-
export declare const knownModelIds: readonly ["gpt-5.6-sol", "gpt-6-sol", "gpt-6.1-sol", "gpt-6-astra", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-luna", "gpt-5.5", "gpt-5.4-nano", "gpt-4.1-nano", "gemini-3.7-flash", "gemini-3.8-flash", "gemini-4-argon", "gemini-3.5-flash", "gemini-3.1-flash-lite", "claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "mistral-small-2603", "magistral-medium-2509", "mistral-large-4", "mistral-medium-3.5", "zai-glm-5-3", "command-a-03-2025", "command-a-reasoning-08-2025", "google/gemini-3.5-flash@gcp", "google/gemini-3.1-flash-lite@gcp", "anthropic/claude-sonnet-4-6@gcp", "anthropic/claude-opus-4-6@gcp", "laneformer-2b-it", "muse-spark-1.3", "muse-spark-1.3-contributor", "muse-wonder-1.0", "muse-wonder-full-1.0"];
|
|
7
|
+
export declare const knownModelIds: readonly ["gpt-5.6-sol", "gpt-6-sol", "gpt-6.1-sol", "gpt-6-astra", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-luna", "gpt-5.5", "gpt-5.4-nano", "gpt-4.1-nano", "gemini-3.7-flash", "gemini-3.8-flash", "gemini-4-argon", "gemini-4-carbon", "gemini-3.5-flash", "gemini-3.1-flash-lite", "claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "claude-fable-5-2", "mistral-small-2603", "magistral-medium-2509", "mistral-large-4", "mistral-medium-3.5", "zai-glm-5-3", "command-a-03-2025", "command-a-reasoning-08-2025", "google/gemini-3.5-flash@gcp", "google/gemini-3.1-flash-lite@gcp", "anthropic/claude-sonnet-4-6@gcp", "anthropic/claude-opus-4-6@gcp", "laneformer-2b-it", "muse-spark-1.3", "muse-spark-1.3-contributor", "muse-wonder-1.0", "muse-wonder-full-1.0"];
|
|
8
8
|
export type KnownModelId = (typeof knownModelIds)[number];
|
|
9
9
|
export type ModelId = KnownModelId | (string & {});
|
|
10
10
|
export type QualifiedModelId = `${ProviderId}:${string}`;
|
|
11
11
|
export declare const knownModelIdsByProvider: {
|
|
12
12
|
readonly openai: readonly ["gpt-5.6-sol", "gpt-6-sol", "gpt-6.1-sol", "gpt-6-astra", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-luna", "gpt-5.5", "gpt-5.4-nano", "gpt-4.1-nano"];
|
|
13
|
-
readonly gemini: readonly ["gemini-3.7-flash", "gemini-3.8-flash", "gemini-4-argon", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
|
|
14
|
-
readonly anthropic: readonly ["claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1"];
|
|
13
|
+
readonly gemini: readonly ["gemini-3.7-flash", "gemini-3.8-flash", "gemini-4-argon", "gemini-4-carbon", "gemini-3.5-flash", "gemini-3.1-flash-lite"];
|
|
14
|
+
readonly anthropic: readonly ["claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "claude-fable-5-2"];
|
|
15
15
|
readonly mistral: readonly ["mistral-small-2603", "magistral-medium-2509", "mistral-large-4", "mistral-medium-3.5", "zai-glm-5-3"];
|
|
16
16
|
readonly cohere: readonly ["command-a-03-2025", "command-a-reasoning-08-2025"];
|
|
17
17
|
readonly gcp: readonly ["google/gemini-3.5-flash@gcp", "google/gemini-3.1-flash-lite@gcp", "anthropic/claude-sonnet-4-6@gcp", "anthropic/claude-opus-4-6@gcp"];
|
|
@@ -27,5 +27,5 @@ export declare const toQualifiedModelId: (model: ModelReference) => QualifiedMod
|
|
|
27
27
|
export declare const antigravityModelFleet: readonly ["claude-sonnet-4-6", "claude-opus-4-6-thinking", "gemini-3-pro-high", "gemini-3-pro-low", "gpt-oss-120b-medium"];
|
|
28
28
|
export type AntigravityFleetModelId = (typeof antigravityModelFleet)[number];
|
|
29
29
|
export declare const isProviderId: (value: string) => value is "openai" | "gemini" | "anthropic" | "mistral" | "cohere" | "gcp" | "local" | "muse" | "typesafe";
|
|
30
|
-
export declare const isKnownModelId: (value: string) => value is "gpt-5.6-sol" | "gpt-6-sol" | "gpt-6.1-sol" | "gpt-6-astra" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-6-luna" | "gpt-5.5" | "gpt-5.4-nano" | "gpt-4.1-nano" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-4-argon" | "gemini-3.5-flash" | "gemini-3.1-flash-lite" | "claude-sonnet-5" | "claude-opus-5" | "claude-opus-4-8" | "claude-fable-5" | "claude-fable-5-1" | "mistral-small-2603" | "magistral-medium-2509" | "mistral-large-4" | "mistral-medium-3.5" | "zai-glm-5-3" | "command-a-03-2025" | "command-a-reasoning-08-2025" | "google/gemini-3.5-flash@gcp" | "google/gemini-3.1-flash-lite@gcp" | "anthropic/claude-sonnet-4-6@gcp" | "anthropic/claude-opus-4-6@gcp" | "laneformer-2b-it" | "muse-spark-1.3" | "muse-spark-1.3-contributor" | "muse-wonder-1.0" | "muse-wonder-full-1.0";
|
|
30
|
+
export declare const isKnownModelId: (value: string) => value is "gpt-5.6-sol" | "gpt-6-sol" | "gpt-6.1-sol" | "gpt-6-astra" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-6-luna" | "gpt-5.5" | "gpt-5.4-nano" | "gpt-4.1-nano" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-4-argon" | "gemini-4-carbon" | "gemini-3.5-flash" | "gemini-3.1-flash-lite" | "claude-sonnet-5" | "claude-opus-5" | "claude-opus-4-8" | "claude-fable-5" | "claude-fable-5-1" | "claude-fable-5-2" | "mistral-small-2603" | "magistral-medium-2509" | "mistral-large-4" | "mistral-medium-3.5" | "zai-glm-5-3" | "command-a-03-2025" | "command-a-reasoning-08-2025" | "google/gemini-3.5-flash@gcp" | "google/gemini-3.1-flash-lite@gcp" | "anthropic/claude-sonnet-4-6@gcp" | "anthropic/claude-opus-4-6@gcp" | "laneformer-2b-it" | "muse-spark-1.3" | "muse-spark-1.3-contributor" | "muse-wonder-1.0" | "muse-wonder-full-1.0";
|
|
31
31
|
//# sourceMappingURL=providers.d.ts.map
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,qGAAsG,CAAC;AAE/H,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5G,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAEtE,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,qGAAsG,CAAC;AAE/H,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5G,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAEtE,eAAO,MAAM,aAAa,2xBAmEhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;;;;;;CAqB4B,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,UAAW,cAAc,KAAG,gBAE1D,CAAC;AAUF,eAAO,MAAM,qBAAqB,4HAMxB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,eAAO,MAAM,YAAY,UAAW,MAAM,8GAEzC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,i0BAE3C,CAAC"}
|
package/dist/providers.js
CHANGED
|
@@ -13,6 +13,7 @@ export const knownModelIds = [
|
|
|
13
13
|
'gemini-3.7-flash',
|
|
14
14
|
'gemini-3.8-flash',
|
|
15
15
|
'gemini-4-argon',
|
|
16
|
+
'gemini-4-carbon',
|
|
16
17
|
'gemini-3.5-flash',
|
|
17
18
|
'gemini-3.1-flash-lite',
|
|
18
19
|
'claude-sonnet-5',
|
|
@@ -20,6 +21,7 @@ export const knownModelIds = [
|
|
|
20
21
|
'claude-opus-4-8',
|
|
21
22
|
'claude-fable-5',
|
|
22
23
|
'claude-fable-5-1',
|
|
24
|
+
'claude-fable-5-2',
|
|
23
25
|
'mistral-small-2603',
|
|
24
26
|
'magistral-medium-2509',
|
|
25
27
|
// Mistral Large 4 ("Le Chonk", public preview 2026-10-06): 1.05T MoE, 52B
|
|
@@ -78,8 +80,8 @@ export const knownModelIdsByProvider = {
|
|
|
78
80
|
'gpt-5.4-nano',
|
|
79
81
|
'gpt-4.1-nano',
|
|
80
82
|
],
|
|
81
|
-
gemini: ['gemini-3.7-flash', 'gemini-3.8-flash', 'gemini-4-argon', 'gemini-3.5-flash', 'gemini-3.1-flash-lite'],
|
|
82
|
-
anthropic: ['claude-sonnet-5', 'claude-opus-5', 'claude-opus-4-8', 'claude-fable-5', 'claude-fable-5-1'],
|
|
83
|
+
gemini: ['gemini-3.7-flash', 'gemini-3.8-flash', 'gemini-4-argon', 'gemini-4-carbon', 'gemini-3.5-flash', 'gemini-3.1-flash-lite'],
|
|
84
|
+
anthropic: ['claude-sonnet-5', 'claude-opus-5', 'claude-opus-4-8', 'claude-fable-5', 'claude-fable-5-1', 'claude-fable-5-2'],
|
|
83
85
|
mistral: ['mistral-small-2603', 'magistral-medium-2509', 'mistral-large-4', 'mistral-medium-3.5', 'zai-glm-5-3'],
|
|
84
86
|
cohere: ['command-a-03-2025', 'command-a-reasoning-08-2025'],
|
|
85
87
|
gcp: ['google/gemini-3.5-flash@gcp', 'google/gemini-3.1-flash-lite@gcp', 'anthropic/claude-sonnet-4-6@gcp', 'anthropic/claude-opus-4-6@gcp'],
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AAY/H,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa;IACb,WAAW;IACX,aAAa;IACb,aAAa;IACb,eAAe;IACf,cAAc;IACd,YAAY;IACZ,SAAS;IACT,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,uBAAuB;IACvB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,uBAAuB;IACvB,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,iBAAiB;IACjB,oBAAoB;IACpB,qEAAqE;IACrE,sEAAsE;IACtE,0EAA0E;IAC1E,uDAAuD;IACvD,aAAa;IACb,mBAAmB;IACnB,6BAA6B;IAC7B,8EAA8E;IAC9E,gFAAgF;IAChF,gFAAgF;IAChF,0EAA0E;IAC1E,8EAA8E;IAC9E,+DAA+D;IAC/D,6EAA6E;IAC7E,qEAAqE;IACrE,6CAA6C;IAC7C,4EAA4E;IAC5E,wCAAwC;IACxC,6BAA6B;IAC7B,kCAAkC;IAClC,iCAAiC;IACjC,+BAA+B;IAC/B,sEAAsE;IACtE,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,kBAAkB;IAClB,2EAA2E;IAC3E,oEAAoE;IACpE,iEAAiE;IACjE,uEAAuE;IACvE,uEAAuE;IACvE,wBAAwB;IACxB,gBAAgB;IAChB,4BAA4B;IAC5B,iBAAiB;IACjB,sBAAsB;CACd,CAAC;AAQX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE;QACN,aAAa;QACb,WAAW;QACX,aAAa;QACb,aAAa;QACb,eAAe;QACf,cAAc;QACd,YAAY;QACZ,SAAS;QACT,cAAc;QACd,cAAc;KACf;IACD,MAAM,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing-targets.d.ts","sourceRoot":"","sources":["../src/routing-targets.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;AAC/E,MAAM,MAAM,6BAA6B,GAAG,CAC1C,KAAK,EAAE,MAAM,KACV,SAAS,aAAa,EAAE,CAAC;AAE9B,eAAO,MAAM,mBAAmB,gBACjB,SAAS,qBAAqB,EAAE,KAC5C,SAAS,OAAO,MAAM,EAAE,aAAa,CAAC,CAExC,CAAC;AAEF,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"routing-targets.d.ts","sourceRoot":"","sources":["../src/routing-targets.ts"],"names":[],"mappings":"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"}
|
package/dist/routing-targets.js
CHANGED
|
@@ -38,6 +38,9 @@ export const DEFAULT_TARGET_MAPPINGS = {
|
|
|
38
38
|
'claude-fable-5-1': {
|
|
39
39
|
providerId: 'anthropic', transportProviderId: 'claude-code', model: 'claude-fable-5-1',
|
|
40
40
|
},
|
|
41
|
+
'claude-fable-5-2': {
|
|
42
|
+
providerId: 'anthropic', transportProviderId: 'claude-code', model: 'claude-fable-5-2',
|
|
43
|
+
},
|
|
41
44
|
'gpt-5.6-luna': {
|
|
42
45
|
providerId: 'openai', transportProviderId: 'codex', model: 'gpt-5.6-luna',
|
|
43
46
|
},
|
|
@@ -65,6 +68,9 @@ export const DEFAULT_TARGET_MAPPINGS = {
|
|
|
65
68
|
'gemini-4-argon': {
|
|
66
69
|
providerId: 'gemini', transportProviderId: 'cloud-code', model: 'gemini-4-argon',
|
|
67
70
|
},
|
|
71
|
+
'gemini-4-carbon': {
|
|
72
|
+
providerId: 'gemini', transportProviderId: 'cloud-code', model: 'gemini-4-carbon',
|
|
73
|
+
},
|
|
68
74
|
'gpt-5.6-terra': {
|
|
69
75
|
providerId: 'openai', transportProviderId: 'codex', model: 'gpt-5.6-terra',
|
|
70
76
|
},
|
|
@@ -119,6 +125,15 @@ export const MUSE_ROUTE_MODEL = {
|
|
|
119
125
|
'claude-fable-5-1-max': 'muse-wonder-1.0',
|
|
120
126
|
'claude-fable-5-1-medium': 'muse-wonder-1.0',
|
|
121
127
|
'claude-fable-5-1-low': 'muse-wonder-1.0',
|
|
128
|
+
// Owner mapping 2026-11-10: Fable 5.2 requests are served by Gemini 4
|
|
129
|
+
// Carbon. No `-contributor` Carbon variant exists in the catalog, so the
|
|
130
|
+
// mapped base/high/xhigh aliases carry no muse candidate (the profile
|
|
131
|
+
// guard filters a non-muse serving model) and the cloud slot below serves
|
|
132
|
+
// Carbon. The max/medium/low aliases keep the default contributor muse
|
|
133
|
+
// candidate like every other unlisted alias.
|
|
134
|
+
'claude-fable-5-2': 'gemini-4-carbon',
|
|
135
|
+
'claude-fable-5-2-high': 'gemini-4-carbon',
|
|
136
|
+
'claude-fable-5-2-xhigh': 'gemini-4-carbon',
|
|
122
137
|
};
|
|
123
138
|
/**
|
|
124
139
|
* Muse insertion effort per launch alias (BR75-D1). Aliases absent from this
|
|
@@ -137,6 +152,12 @@ export const MUSE_ROUTE_EFFORT = {
|
|
|
137
152
|
'claude-fable-5-1-max': 'max',
|
|
138
153
|
'claude-fable-5-1-medium': 'high',
|
|
139
154
|
'claude-fable-5-1-low': 'medium',
|
|
155
|
+
'claude-fable-5-2': 'max',
|
|
156
|
+
'claude-fable-5-2-high': 'max',
|
|
157
|
+
'claude-fable-5-2-xhigh': 'max',
|
|
158
|
+
'claude-fable-5-2-max': 'max',
|
|
159
|
+
'claude-fable-5-2-medium': 'high',
|
|
160
|
+
'claude-fable-5-2-low': 'medium',
|
|
140
161
|
'claude-opus-5': 'high',
|
|
141
162
|
'claude-opus-5-high': 'xhigh',
|
|
142
163
|
'claude-opus-5-xhigh': 'xhigh',
|
|
@@ -206,16 +227,24 @@ export const GLM_ROUTE_EFFORT = {
|
|
|
206
227
|
'claude-fable-5-1-high': 'max',
|
|
207
228
|
'claude-fable-5-1-xhigh': 'max',
|
|
208
229
|
'claude-fable-5-1-max': 'max',
|
|
230
|
+
'claude-fable-5-2': 'high',
|
|
231
|
+
'claude-fable-5-2-low': 'high',
|
|
232
|
+
'claude-fable-5-2-medium': 'high',
|
|
233
|
+
'claude-fable-5-2-high': 'max',
|
|
234
|
+
'claude-fable-5-2-xhigh': 'max',
|
|
235
|
+
'claude-fable-5-2-max': 'max',
|
|
209
236
|
};
|
|
210
237
|
export const GLM_FALLBACK_MODEL = 'zai-glm-5-3';
|
|
211
238
|
// Codex slot policy (BR-C55): GPT-6 Astra serves only claude-opus-5-5-max
|
|
212
|
-
// and the claude-fable-5-1
|
|
213
|
-
// +1 effort rung. Fable 5.1
|
|
239
|
+
// and the claude-fable-5-1 and claude-fable-5-2 families; every other row
|
|
240
|
+
// serves GPT-6.1 Sol at +1 effort rung. Fable 5.1 and 5.2 keep Astra with
|
|
241
|
+
// inherited effort.
|
|
214
242
|
// Cloud slot policy (owner request 2026-10-15, Artificial Analysis
|
|
215
243
|
// Intelligence Index read 2026-10-15, see the MUSE_ROUTE_MODEL note): Gemini 4
|
|
216
244
|
// Argon at high effort serves the Opus 5.5 (base/medium/high/xhigh/max),
|
|
217
|
-
// Sonnet 5.5 (high/xhigh/max) and Fable 5.1 rows;
|
|
218
|
-
//
|
|
245
|
+
// Sonnet 5.5 (high/xhigh/max) and Fable 5.1 rows; Gemini 4 Carbon at high
|
|
246
|
+
// effort serves the Fable 5.2 rows (owner mapping 2026-11-10); Opus 5.5 low
|
|
247
|
+
// and Sonnet 5.5 medium keep Gemini 3.8 Flash high, Sonnet 5.5 low keeps
|
|
219
248
|
// 3.8 Flash medium; every other row keeps 3.8 Flash high.
|
|
220
249
|
export const STANDARD_ROUTE_DEFINITIONS = [
|
|
221
250
|
{ requestedId: 'claude-opus-5', codexModel: 'gpt-6.1-sol', cloudModel: 'gemini-3.8-flash', codexEffort: 'high', cloudEffort: 'high' },
|
|
@@ -246,6 +275,12 @@ export const STANDARD_ROUTE_DEFINITIONS = [
|
|
|
246
275
|
{ requestedId: 'claude-fable-5-1-max', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-argon', effort: 'max', cloudEffort: 'high' },
|
|
247
276
|
{ requestedId: 'claude-fable-5-1-medium', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-argon', effort: 'medium', cloudEffort: 'high' },
|
|
248
277
|
{ requestedId: 'claude-fable-5-1-low', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-argon', effort: 'low', cloudEffort: 'high' },
|
|
278
|
+
{ requestedId: 'claude-fable-5-2', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', cloudEffort: 'high' },
|
|
279
|
+
{ requestedId: 'claude-fable-5-2-high', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', effort: 'high', cloudEffort: 'high' },
|
|
280
|
+
{ requestedId: 'claude-fable-5-2-xhigh', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', effort: 'xhigh', cloudEffort: 'high' },
|
|
281
|
+
{ requestedId: 'claude-fable-5-2-max', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', effort: 'max', cloudEffort: 'high' },
|
|
282
|
+
{ requestedId: 'claude-fable-5-2-medium', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', effort: 'medium', cloudEffort: 'high' },
|
|
283
|
+
{ requestedId: 'claude-fable-5-2-low', codexModel: 'gpt-6-astra', cloudModel: 'gemini-4-carbon', effort: 'low', cloudEffort: 'high' },
|
|
249
284
|
{ requestedId: 'claude-opus-5-5', codexModel: 'gpt-6.1-sol', cloudModel: 'gemini-4-argon', codexEffort: 'high', cloudEffort: 'high' },
|
|
250
285
|
{ requestedId: 'claude-opus-5-5-high', codexModel: 'gpt-6.1-sol', cloudModel: 'gemini-4-argon', effort: 'high', codexEffort: 'xhigh', cloudEffort: 'high' },
|
|
251
286
|
{ requestedId: 'claude-opus-5-5-xhigh', codexModel: 'gpt-6.1-sol', cloudModel: 'gemini-4-argon', effort: 'xhigh', codexEffort: 'max', cloudEffort: 'high' },
|