synomem 0.8.0 → 0.9.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/CHANGELOG.md +50 -0
- package/README.md +47 -68
- package/dist/backend.d.ts +18 -6
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +55 -41
- package/dist/backend.js.map +1 -1
- package/dist/cli.d.ts +20 -33
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1391 -1321
- package/dist/cli.js.map +1 -1
- package/dist/configure.d.ts +12 -46
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +51 -192
- package/dist/configure.js.map +1 -1
- package/dist/credentials.d.ts +82 -33
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +270 -44
- package/dist/credentials.js.map +1 -1
- package/dist/discover.d.ts +8 -35
- package/dist/discover.d.ts.map +1 -1
- package/dist/discover.js +42 -38
- package/dist/discover.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +1 -1
- package/dist/import.d.ts +3 -0
- package/dist/import.d.ts.map +1 -1
- package/dist/import.js +3 -0
- package/dist/import.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +18 -18
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +402 -231
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp-server.d.ts +5 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +27 -105
- package/dist/mcp-server.js.map +1 -1
- package/dist/oauth.d.ts +32 -33
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +196 -126
- package/dist/oauth.js.map +1 -1
- package/dist/profiles.d.ts +243 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +479 -0
- package/dist/profiles.js.map +1 -0
- package/dist/project.d.ts +8 -39
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +36 -94
- package/dist/project.js.map +1 -1
- package/dist/remote.d.ts +24 -17
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +54 -52
- package/dist/remote.js.map +1 -1
- package/dist/resolvers.d.ts +54 -0
- package/dist/resolvers.d.ts.map +1 -0
- package/dist/resolvers.js +336 -0
- package/dist/resolvers.js.map +1 -0
- package/dist/service.d.ts +3 -2
- package/dist/service.d.ts.map +1 -1
- package/dist/skill-install.d.ts +4 -6
- package/dist/skill-install.d.ts.map +1 -1
- package/dist/skill-install.js +13 -12
- package/dist/skill-install.js.map +1 -1
- package/dist/types.d.ts +45 -15
- package/dist/types.d.ts.map +1 -1
- package/docs/cli.md +173 -196
- package/docs/mcp.md +69 -65
- package/package.json +1 -1
- package/skills/synomem/SKILL.md +29 -26
- package/skills/synomem/references/examples.md +13 -11
- package/src/backend.ts +66 -64
- package/src/cli.ts +2123 -2219
- package/src/configure.ts +62 -241
- package/src/credentials.ts +316 -85
- package/src/discover.ts +53 -59
- package/src/errors.ts +4 -0
- package/src/import.ts +5 -0
- package/src/index.ts +15 -19
- package/src/mcp/index.ts +473 -277
- package/src/mcp-server.ts +32 -114
- package/src/oauth.ts +249 -131
- package/src/profiles.ts +661 -0
- package/src/project.ts +42 -108
- package/src/remote.ts +69 -63
- package/src/resolvers.ts +385 -0
- package/src/service.ts +2 -7
- package/src/skill-install.ts +17 -18
- package/src/types.ts +40 -15
package/dist/credentials.js
CHANGED
|
@@ -1,16 +1,74 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Credential storage, indexed by connection — never by actor or workspace.
|
|
3
|
+
*
|
|
4
|
+
* One stored secret serves every profile that routes through its connection:
|
|
5
|
+
* adding a profile for another agent or workspace never copies a refresh
|
|
6
|
+
* token, and rotating a credential updates exactly one entry. Which actor and
|
|
7
|
+
* workspace an operation uses is the profile's business (see `profiles.ts`),
|
|
8
|
+
* and the server authorizes it on every request regardless of what is stored
|
|
9
|
+
* here.
|
|
10
|
+
*
|
|
11
|
+
* Two credential kinds, deliberately distinct so nothing tries to refresh a
|
|
12
|
+
* key or treat an OAuth family as a static secret:
|
|
13
|
+
*
|
|
14
|
+
* - `oauth`: an authorization-code family for one connection, refreshed
|
|
15
|
+
* under a cross-process lock with a generation counter;
|
|
16
|
+
* - `access-key`: a member-owned `syn_…` key, used exactly as stored.
|
|
17
|
+
*
|
|
18
|
+
* Backends: the macOS Keychain, Linux Secret Service (`secret-tool`), an
|
|
19
|
+
* explicit restricted file, or the process environment. There is no silent
|
|
20
|
+
* fallback from one to another: a keychain that refuses a write is an error
|
|
21
|
+
* that names the explicit alternative.
|
|
22
|
+
*/
|
|
2
23
|
import { spawn } from 'node:child_process';
|
|
24
|
+
import { randomBytes, randomUUID } from 'node:crypto';
|
|
25
|
+
import { chmodSync, closeSync, existsSync, linkSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, statSync, writeSync, } from 'node:fs';
|
|
26
|
+
import { hostname } from 'node:os';
|
|
27
|
+
import { join } from 'node:path';
|
|
28
|
+
import { z } from 'zod';
|
|
3
29
|
import { SynomemError } from './errors.js';
|
|
30
|
+
import { atomicWriteFile } from './fs-utils.js';
|
|
4
31
|
const serviceName = 'ai.synomem.credentials';
|
|
5
32
|
const maximumOutputBytes = 128 * 1024;
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
33
|
+
export const storedOAuthCredentialSchema = z.object({
|
|
34
|
+
kind: z.literal('oauth'),
|
|
35
|
+
issuer: z.string().min(1),
|
|
36
|
+
resource: z.string().min(1),
|
|
37
|
+
clientId: z.string().min(1),
|
|
38
|
+
tokenEndpoint: z.string().min(1),
|
|
39
|
+
scope: z.string(),
|
|
40
|
+
accessToken: z.string().min(1),
|
|
41
|
+
refreshToken: z.string().min(1).optional(),
|
|
42
|
+
/** Epoch milliseconds, already reduced by a safety margin. */
|
|
43
|
+
expiresAt: z.number().int().nonnegative(),
|
|
44
|
+
/** Incremented on every successful refresh; the compare-and-swap token. */
|
|
45
|
+
generation: z.number().int().nonnegative(),
|
|
46
|
+
});
|
|
47
|
+
export const storedAccessKeySchema = z.object({
|
|
48
|
+
kind: z.literal('access-key'),
|
|
49
|
+
secret: z.string().min(1),
|
|
50
|
+
});
|
|
51
|
+
export const storedCredentialSchema = z.discriminatedUnion('kind', [
|
|
52
|
+
storedOAuthCredentialSchema,
|
|
53
|
+
storedAccessKeySchema,
|
|
54
|
+
]);
|
|
55
|
+
/** An opaque, non-secret handle for a stored secret. Never derived from names. */
|
|
56
|
+
export function newSecretReference() {
|
|
57
|
+
return `synomem-${randomUUID()}`;
|
|
58
|
+
}
|
|
59
|
+
export function parseStoredCredential(value) {
|
|
60
|
+
let raw;
|
|
61
|
+
try {
|
|
62
|
+
raw = JSON.parse(value);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw new SynomemError('AUTH_REQUIRED', 'Stored Synomem credential is malformed.');
|
|
66
|
+
}
|
|
67
|
+
const parsed = storedCredentialSchema.safeParse(raw);
|
|
68
|
+
if (!parsed.success) {
|
|
69
|
+
throw new SynomemError('AUTH_REQUIRED', 'Stored Synomem credential is in an unsupported format. Run `synomem connection login` (or `connection add-key`) again.');
|
|
70
|
+
}
|
|
71
|
+
return parsed.data;
|
|
14
72
|
}
|
|
15
73
|
async function command(executable, arguments_, input) {
|
|
16
74
|
return await new Promise((resolve, reject) => {
|
|
@@ -38,28 +96,26 @@ async function command(executable, arguments_, input) {
|
|
|
38
96
|
child.stdin.end(input);
|
|
39
97
|
});
|
|
40
98
|
}
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
const parsed = JSON.parse(value);
|
|
44
|
-
if (typeof parsed.accessToken !== 'string' ||
|
|
45
|
-
typeof parsed.tokenEndpoint !== 'string' ||
|
|
46
|
-
typeof parsed.clientId !== 'string' ||
|
|
47
|
-
typeof parsed.resource !== 'string' ||
|
|
48
|
-
typeof parsed.scope !== 'string') {
|
|
49
|
-
throw new Error();
|
|
50
|
-
}
|
|
51
|
-
return parsed;
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
throw new SynomemError('AUTH_REQUIRED', 'Stored Synomem credentials are malformed.');
|
|
55
|
-
}
|
|
56
|
-
}
|
|
99
|
+
/** macOS Keychain or Linux Secret Service. */
|
|
57
100
|
export class OsCredentialStore {
|
|
58
101
|
platform;
|
|
59
102
|
run;
|
|
60
103
|
constructor(options = {}) {
|
|
61
104
|
this.platform = options.platform ?? process.platform;
|
|
62
|
-
|
|
105
|
+
const run = options.run ?? command;
|
|
106
|
+
// A missing helper (a headless Linux box with no Secret Service) is a
|
|
107
|
+
// configuration answer, not a crash: name the explicit alternatives. There
|
|
108
|
+
// is still no fallback — the caller chooses --store file deliberately.
|
|
109
|
+
this.run = async (executable, arguments_, input) => {
|
|
110
|
+
try {
|
|
111
|
+
return await run(executable, arguments_, input);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
if (error.code === 'ENOENT')
|
|
115
|
+
this.unsupported();
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
63
119
|
}
|
|
64
120
|
async get(reference) {
|
|
65
121
|
const result = this.platform === 'darwin'
|
|
@@ -76,10 +132,10 @@ export class OsCredentialStore {
|
|
|
76
132
|
: this.unsupported();
|
|
77
133
|
if (result.code !== 0)
|
|
78
134
|
return undefined;
|
|
79
|
-
return
|
|
135
|
+
return parseStoredCredential(result.stdout.trim());
|
|
80
136
|
}
|
|
81
137
|
async set(reference, credential) {
|
|
82
|
-
const serialized = JSON.stringify(credential);
|
|
138
|
+
const serialized = JSON.stringify(storedCredentialSchema.parse(credential));
|
|
83
139
|
const result = this.platform === 'darwin'
|
|
84
140
|
? await this.run('/usr/bin/security', [
|
|
85
141
|
'add-generic-password',
|
|
@@ -88,22 +144,15 @@ export class OsCredentialStore {
|
|
|
88
144
|
'-s',
|
|
89
145
|
serviceName,
|
|
90
146
|
'-l',
|
|
91
|
-
'Synomem
|
|
147
|
+
'Synomem credential',
|
|
92
148
|
'-U',
|
|
93
149
|
'-w',
|
|
94
150
|
], `${serialized}\n`)
|
|
95
151
|
: this.platform === 'linux'
|
|
96
|
-
? await this.run('secret-tool', [
|
|
97
|
-
'store',
|
|
98
|
-
'--label=Synomem OAuth credential',
|
|
99
|
-
'service',
|
|
100
|
-
serviceName,
|
|
101
|
-
'account',
|
|
102
|
-
reference,
|
|
103
|
-
], serialized)
|
|
152
|
+
? await this.run('secret-tool', ['store', '--label=Synomem credential', 'service', serviceName, 'account', reference], serialized)
|
|
104
153
|
: this.unsupported();
|
|
105
154
|
if (result.code !== 0) {
|
|
106
|
-
throw new SynomemError('
|
|
155
|
+
throw new SynomemError('CONFIG_INVALID', 'The operating-system credential store rejected the credential. Re-run with --store file to use a restricted file instead.');
|
|
107
156
|
}
|
|
108
157
|
}
|
|
109
158
|
async delete(reference) {
|
|
@@ -121,15 +170,192 @@ export class OsCredentialStore {
|
|
|
121
170
|
return result.code === 0;
|
|
122
171
|
}
|
|
123
172
|
/*
|
|
124
|
-
* Windows Credential Manager is not implemented
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* worse than saying so plainly.
|
|
173
|
+
* Windows Credential Manager is not implemented: `cmdkey` can write a generic
|
|
174
|
+
* credential but will not read the secret back, so a store built on it would
|
|
175
|
+
* accept a credential and never return it.
|
|
128
176
|
*/
|
|
129
177
|
unsupported() {
|
|
130
178
|
throw new SynomemError('CONFIG_INVALID', this.platform === 'win32'
|
|
131
|
-
? 'Windows Credential Manager storage is not supported yet.
|
|
132
|
-
: '
|
|
179
|
+
? 'Windows Credential Manager storage is not supported yet. Use --store file, or --store environment with SYNOMEM_ACCESS_TOKEN.'
|
|
180
|
+
: 'No operating-system credential store is available here (it needs the macOS Keychain, or secret-tool with a Secret Service on Linux). Choose one explicitly: --store file keeps it in a 0600 file under your Synomem home; --store environment reads SYNOMEM_ACCESS_TOKEN.');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* One restricted file per secret under `<home>/credentials/`, mode 0600 in a
|
|
185
|
+
* 0700 directory. Chosen explicitly (`--store file`), never as a fallback.
|
|
186
|
+
*/
|
|
187
|
+
export class FileCredentialStore {
|
|
188
|
+
directory;
|
|
189
|
+
constructor(home) {
|
|
190
|
+
this.directory = join(home, 'credentials');
|
|
191
|
+
}
|
|
192
|
+
path(reference) {
|
|
193
|
+
if (!/^[A-Za-z0-9_-]{1,100}$/.test(reference)) {
|
|
194
|
+
throw new SynomemError('CONFIG_INVALID', 'Credential reference is malformed.');
|
|
195
|
+
}
|
|
196
|
+
return join(this.directory, `${reference}.json`);
|
|
197
|
+
}
|
|
198
|
+
async get(reference) {
|
|
199
|
+
const path = this.path(reference);
|
|
200
|
+
if (!existsSync(path))
|
|
201
|
+
return undefined;
|
|
202
|
+
assertPrivate(this.directory, 0o700);
|
|
203
|
+
assertPrivate(path, 0o600);
|
|
204
|
+
return parseStoredCredential(readFileSync(path, 'utf8'));
|
|
205
|
+
}
|
|
206
|
+
async set(reference, credential) {
|
|
207
|
+
if (!existsSync(this.directory))
|
|
208
|
+
mkdirSync(this.directory, { recursive: true, mode: 0o700 });
|
|
209
|
+
chmodSync(this.directory, 0o700);
|
|
210
|
+
atomicWriteFile(this.path(reference), `${JSON.stringify(storedCredentialSchema.parse(credential))}\n`, 0o600);
|
|
211
|
+
}
|
|
212
|
+
async delete(reference) {
|
|
213
|
+
const path = this.path(reference);
|
|
214
|
+
if (!existsSync(path))
|
|
215
|
+
return false;
|
|
216
|
+
rmSync(path, { force: true });
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/*
|
|
221
|
+
* Like ssh with a private key: a credential file (or its directory) that other
|
|
222
|
+
* users can read, or that another user owns, is refused rather than used. The
|
|
223
|
+
* fix is the owner's to make; silently tightening it would hide that the
|
|
224
|
+
* secret may already have been exposed.
|
|
225
|
+
*/
|
|
226
|
+
function assertPrivate(path, expected) {
|
|
227
|
+
if (process.platform === 'win32')
|
|
228
|
+
return;
|
|
229
|
+
const stat = statSync(path);
|
|
230
|
+
if (typeof process.getuid === 'function' && stat.uid !== process.getuid()) {
|
|
231
|
+
throw new SynomemError('CONFIG_INVALID', `${path} is owned by another user; refusing to use it.`);
|
|
232
|
+
}
|
|
233
|
+
if ((stat.mode & 0o077) !== 0) {
|
|
234
|
+
throw new SynomemError('CONFIG_INVALID', `${path} is accessible to other users (mode ${(stat.mode & 0o777).toString(8)}). ` +
|
|
235
|
+
`Run \`chmod ${expected.toString(8)} ${path}\` if you are sure it was not exposed, ` +
|
|
236
|
+
'otherwise remove it and sign in again.');
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
export function defaultCredentialStores(home) {
|
|
240
|
+
return { keychain: new OsCredentialStore(), file: new FileCredentialStore(home) };
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* A cross-process lock around one credential's refresh.
|
|
244
|
+
*
|
|
245
|
+
* `O_EXCL` creation is the mutual exclusion. The lock file records its owner
|
|
246
|
+
* (pid, host) and a random token. A lock is broken only when its owner is
|
|
247
|
+
* provably gone — a dead pid on this host — or, for an owner on another host
|
|
248
|
+
* or an unreadable file, once it is older than `staleMs`. A live owner is never
|
|
249
|
+
* preempted however long its refresh takes (the refresh request itself times
|
|
250
|
+
* out well inside `staleMs`).
|
|
251
|
+
*
|
|
252
|
+
* Breaking renames the file aside first and checks the token: if another
|
|
253
|
+
* process already broke and re-acquired it in between, the fresh lock is put
|
|
254
|
+
* back rather than deleted. Correctness against a concurrent writer is still
|
|
255
|
+
* the generation compare-and-swap in the refresh path; the lock exists so that
|
|
256
|
+
* only one process ever spends a given refresh token. Locks assume one host's
|
|
257
|
+
* filesystem; a home shared over a network filesystem is not supported.
|
|
258
|
+
*/
|
|
259
|
+
export async function withCredentialLock(home, name, operation, options = {}) {
|
|
260
|
+
if (!/^[A-Za-z0-9_.-]{1,100}$/.test(name)) {
|
|
261
|
+
throw new SynomemError('CONFIG_INVALID', 'Credential name is malformed.');
|
|
262
|
+
}
|
|
263
|
+
const directory = join(home, 'locks');
|
|
264
|
+
if (!existsSync(directory))
|
|
265
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
266
|
+
const path = join(directory, `${name}.lock`);
|
|
267
|
+
const staleMs = options.staleMs ?? 60_000;
|
|
268
|
+
const deadline = Date.now() + (options.timeoutMs ?? 30_000);
|
|
269
|
+
const pollMs = options.pollMs ?? 50;
|
|
270
|
+
const token = randomBytes(16).toString('hex');
|
|
271
|
+
const host = hostname();
|
|
272
|
+
let descriptor;
|
|
273
|
+
while (descriptor === undefined) {
|
|
274
|
+
try {
|
|
275
|
+
descriptor = openSync(path, 'wx', 0o600);
|
|
276
|
+
writeSync(descriptor, `${process.pid}\n${host}\n${token}\n`);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
if (error.code !== 'EEXIST')
|
|
280
|
+
throw error;
|
|
281
|
+
if (breakIfAbandoned(path, host, staleMs))
|
|
282
|
+
continue;
|
|
283
|
+
if (Date.now() > deadline) {
|
|
284
|
+
throw new SynomemError('DATABASE_BUSY', `Another Synomem process is refreshing the ${name} credential. Try again.`);
|
|
285
|
+
}
|
|
286
|
+
await new Promise((resolve) => setTimeout(resolve, pollMs));
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
try {
|
|
290
|
+
return await operation();
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
closeSync(descriptor);
|
|
294
|
+
// Release only our own lock.
|
|
295
|
+
if (readLock(path)?.token === token)
|
|
296
|
+
rmSync(path, { force: true });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
function readLock(path) {
|
|
300
|
+
try {
|
|
301
|
+
const [pid, host, token] = readFileSync(path, 'utf8').split('\n');
|
|
302
|
+
const parsed = Number(pid);
|
|
303
|
+
if (!Number.isSafeInteger(parsed) || !host || !token)
|
|
304
|
+
return undefined;
|
|
305
|
+
return { pid: parsed, host, token };
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
return undefined;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
function processAlive(pid) {
|
|
312
|
+
try {
|
|
313
|
+
process.kill(pid, 0);
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
// EPERM: it exists but belongs to someone else — alive.
|
|
318
|
+
return error.code === 'EPERM';
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/** Returns true when the caller should immediately retry acquiring. */
|
|
322
|
+
function breakIfAbandoned(path, host, staleMs) {
|
|
323
|
+
let age;
|
|
324
|
+
try {
|
|
325
|
+
age = Date.now() - statSync(path).mtimeMs;
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
return true; // Released between the failed open and now.
|
|
329
|
+
}
|
|
330
|
+
const owner = readLock(path);
|
|
331
|
+
// A lock whose contents are still being written is fresh, not abandoned.
|
|
332
|
+
if (!owner && age < 1_000)
|
|
333
|
+
return false;
|
|
334
|
+
const abandoned = owner
|
|
335
|
+
? owner.host === host
|
|
336
|
+
? !processAlive(owner.pid)
|
|
337
|
+
: age > staleMs
|
|
338
|
+
: age > staleMs;
|
|
339
|
+
if (!abandoned)
|
|
340
|
+
return false;
|
|
341
|
+
const aside = `${path}.broken-${randomBytes(6).toString('hex')}`;
|
|
342
|
+
try {
|
|
343
|
+
renameSync(path, aside);
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
return true; // Someone else broke or released it first.
|
|
347
|
+
}
|
|
348
|
+
const taken = readLock(aside);
|
|
349
|
+
if (owner && taken?.token !== owner.token) {
|
|
350
|
+
// We grabbed a lock re-acquired after our inspection: restore it.
|
|
351
|
+
try {
|
|
352
|
+
linkSync(aside, path);
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
/* a third process holds the path now; ours is the one to discard */
|
|
356
|
+
}
|
|
133
357
|
}
|
|
358
|
+
rmSync(aside, { force: true });
|
|
359
|
+
return true;
|
|
134
360
|
}
|
|
135
361
|
//# sourceMappingURL=credentials.js.map
|
package/dist/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/discover.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ContextListing, IdentityDescription } from './types.js';
|
|
1
2
|
export interface DiscoveredWorkspace {
|
|
2
3
|
id: string;
|
|
3
4
|
displayName: string;
|
|
@@ -9,18 +10,6 @@ export interface DiscoveredOrganization {
|
|
|
9
10
|
role: string;
|
|
10
11
|
workspaces: DiscoveredWorkspace[];
|
|
11
12
|
}
|
|
12
|
-
export interface WorkspaceMembership {
|
|
13
|
-
id: string;
|
|
14
|
-
displayName: string;
|
|
15
|
-
roles: string[];
|
|
16
|
-
/**
|
|
17
|
-
* Reachable right now, with this same credential, by naming it as
|
|
18
|
-
* Synomem-Workspace-Id — no new token or re-authentication. A human
|
|
19
|
-
* credential's own organization is the boundary; an agent credential has
|
|
20
|
-
* only ever one such entry, its own.
|
|
21
|
-
*/
|
|
22
|
-
addressableWithThisToken: boolean;
|
|
23
|
-
}
|
|
24
13
|
export interface DiscoveryOptions {
|
|
25
14
|
baseUrl: string;
|
|
26
15
|
accessToken: string;
|
|
@@ -28,19 +17,6 @@ export interface DiscoveryOptions {
|
|
|
28
17
|
fetch?: typeof globalThis.fetch;
|
|
29
18
|
signal?: AbortSignal;
|
|
30
19
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Every workspace a member-owned access key can reach, asked before any one
|
|
33
|
-
* of them has been chosen.
|
|
34
|
-
*
|
|
35
|
-
* Answered by the data plane rather than the control plane: an access key is
|
|
36
|
-
* not an account principal the control plane recognizes, but the data plane
|
|
37
|
-
* already knows which organization owns it and can list that organization's
|
|
38
|
-
* workspaces without requiring one to be named first.
|
|
39
|
-
*/
|
|
40
|
-
export declare function discoverAccessKeyWorkspaces(options: DiscoveryOptions): Promise<{
|
|
41
|
-
organizationId: string;
|
|
42
|
-
workspaces: DiscoveredWorkspace[];
|
|
43
|
-
}>;
|
|
44
20
|
/**
|
|
45
21
|
* Every organization this account belongs to, each with its workspaces.
|
|
46
22
|
*
|
|
@@ -50,17 +26,14 @@ export declare function discoverAccessKeyWorkspaces(options: DiscoveryOptions):
|
|
|
50
26
|
*/
|
|
51
27
|
export declare function discoverOrganizations(options: DiscoveryOptions): Promise<DiscoveredOrganization[]>;
|
|
52
28
|
/**
|
|
53
|
-
* Every
|
|
54
|
-
*
|
|
55
|
-
* `discoverOrganizations`, and the one that actually works with an ordinary
|
|
56
|
-
* bearer token (OAuth or access key alike). `/v1/me` requires a first-party
|
|
57
|
-
* control-plane credential a CLI never holds; `/v1/identity` requires only
|
|
58
|
-
* the normal `synomem:read` scope every credential already has.
|
|
29
|
+
* Every context this credential's grant may use right now, with canonical ids
|
|
30
|
+
* (`GET /v1/contexts`). Follows `nextCursor` until the listing is complete, bounded.
|
|
59
31
|
*/
|
|
60
|
-
export declare function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
32
|
+
export declare function discoverContexts(options: DiscoveryOptions): Promise<ContextListing>;
|
|
33
|
+
/** Who this credential is: account, connection, grant, and effective context if selected. */
|
|
34
|
+
export declare function describeIdentity(options: DiscoveryOptions & {
|
|
35
|
+
contextId?: string;
|
|
36
|
+
}): Promise<IdentityDescription>;
|
|
64
37
|
/** Flattens discovery into the choices a person picks from. */
|
|
65
38
|
export declare function workspaceChoices(organizations: DiscoveredOrganization[]): Array<{
|
|
66
39
|
value: string;
|
package/dist/discover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA6DD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsBnC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAazF;AAED,6FAA6F;AAC7F,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,sBAAsB,EAAE,GACtC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe1D"}
|
package/dist/discover.js
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Finding out
|
|
3
|
-
* one from memory.
|
|
2
|
+
* Finding out what a credential can reach, so nobody has to type an id from memory.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
* person to enter that during setup is asking them to leave and go find it, and
|
|
7
|
-
* the credential they just authorized already knows the answer -- or knows
|
|
8
|
-
* enough to offer a short list.
|
|
4
|
+
* Two questions, two routes, because they carry different authority:
|
|
9
5
|
*
|
|
10
|
-
*
|
|
6
|
+
* `discoverContexts` / `describeIdentity` ask the DATA plane, with any credential
|
|
7
|
+
* (OAuth access token or `syn_` access key), which workspace/actor targets that
|
|
8
|
+
* credential's grant may use right now (identity contract §4). No context has to be
|
|
9
|
+
* chosen first — that is the point.
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* -- so `discoverAccessKeyWorkspaces` lists them off the data plane, with no
|
|
15
|
-
* workspace chosen yet, which is exactly what setup cannot supply up front.
|
|
16
|
-
*
|
|
17
|
-
* A browser sign-in also authorizes an ACCOUNT, which may reach several
|
|
18
|
-
* organizations, each with several workspaces. `discoverOrganizations` lists
|
|
19
|
-
* them for selection.
|
|
11
|
+
* `discoverOrganizations` asks the control plane which organizations an account
|
|
12
|
+
* belongs to, for first-party setup flows that hold an account session.
|
|
20
13
|
*/
|
|
21
14
|
import { SynomemError } from './errors.js';
|
|
22
|
-
async function readJson(options, path) {
|
|
15
|
+
async function readJson(options, path, extraHeaders) {
|
|
23
16
|
const request = options.fetch ?? globalThis.fetch;
|
|
24
17
|
const url = new URL(path, options.baseUrl.endsWith('/') ? options.baseUrl : `${options.baseUrl}/`);
|
|
25
18
|
let response;
|
|
26
19
|
try {
|
|
27
20
|
response = await request(url, {
|
|
28
|
-
headers: {
|
|
21
|
+
headers: {
|
|
22
|
+
authorization: `Bearer ${options.accessToken}`,
|
|
23
|
+
accept: 'application/json',
|
|
24
|
+
...extraHeaders,
|
|
25
|
+
},
|
|
29
26
|
...(options.signal ? { signal: options.signal } : {}),
|
|
30
27
|
});
|
|
31
28
|
}
|
|
@@ -42,24 +39,22 @@ async function readJson(options, path) {
|
|
|
42
39
|
if (!response.ok || body.ok !== true || body.data === undefined) {
|
|
43
40
|
// 401 and 403 are the ones a person can act on, so they keep their own
|
|
44
41
|
// codes rather than being flattened into a generic protocol error.
|
|
45
|
-
const
|
|
42
|
+
const reported = body.error?.code;
|
|
43
|
+
const code = reported === 'CONTEXT_REQUIRED' ||
|
|
44
|
+
reported === 'CONTEXT_FORBIDDEN' ||
|
|
45
|
+
reported === 'CONTEXT_AMBIGUOUS' ||
|
|
46
|
+
reported === 'REAUTHORIZATION_REQUIRED'
|
|
47
|
+
? reported
|
|
48
|
+
: response.status === 401
|
|
49
|
+
? 'AUTH_REQUIRED'
|
|
50
|
+
: response.status === 403
|
|
51
|
+
? 'AUTH_FORBIDDEN'
|
|
52
|
+
: null;
|
|
46
53
|
const message = body.error?.message ?? `${url.pathname} returned ${response.status}.`;
|
|
47
54
|
throw new SynomemError(code ?? 'REMOTE_PROTOCOL', message);
|
|
48
55
|
}
|
|
49
56
|
return body.data;
|
|
50
57
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Every workspace a member-owned access key can reach, asked before any one
|
|
53
|
-
* of them has been chosen.
|
|
54
|
-
*
|
|
55
|
-
* Answered by the data plane rather than the control plane: an access key is
|
|
56
|
-
* not an account principal the control plane recognizes, but the data plane
|
|
57
|
-
* already knows which organization owns it and can list that organization's
|
|
58
|
-
* workspaces without requiring one to be named first.
|
|
59
|
-
*/
|
|
60
|
-
export async function discoverAccessKeyWorkspaces(options) {
|
|
61
|
-
return await readJson(options, 'v1/access-keys/workspaces');
|
|
62
|
-
}
|
|
63
58
|
/**
|
|
64
59
|
* Every organization this account belongs to, each with its workspaces.
|
|
65
60
|
*
|
|
@@ -86,15 +81,24 @@ export async function discoverOrganizations(options) {
|
|
|
86
81
|
return organizations;
|
|
87
82
|
}
|
|
88
83
|
/**
|
|
89
|
-
* Every
|
|
90
|
-
*
|
|
91
|
-
* `discoverOrganizations`, and the one that actually works with an ordinary
|
|
92
|
-
* bearer token (OAuth or access key alike). `/v1/me` requires a first-party
|
|
93
|
-
* control-plane credential a CLI never holds; `/v1/identity` requires only
|
|
94
|
-
* the normal `synomem:read` scope every credential already has.
|
|
84
|
+
* Every context this credential's grant may use right now, with canonical ids
|
|
85
|
+
* (`GET /v1/contexts`). Follows `nextCursor` until the listing is complete, bounded.
|
|
95
86
|
*/
|
|
96
|
-
export async function
|
|
97
|
-
|
|
87
|
+
export async function discoverContexts(options) {
|
|
88
|
+
let listing;
|
|
89
|
+
let cursor;
|
|
90
|
+
for (let page = 0; page < 20; page += 1) {
|
|
91
|
+
const next = await readJson(options, `v1/contexts?limit=100${cursor ? `&cursor=${encodeURIComponent(cursor)}` : ''}`);
|
|
92
|
+
listing = listing ? { ...next, contexts: [...listing.contexts, ...next.contexts] } : next;
|
|
93
|
+
cursor = next.nextCursor;
|
|
94
|
+
if (!cursor)
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
return { ...listing, nextCursor: null };
|
|
98
|
+
}
|
|
99
|
+
/** Who this credential is: account, connection, grant, and effective context if selected. */
|
|
100
|
+
export async function describeIdentity(options) {
|
|
101
|
+
return await readJson(options, 'v1/identity', options.contextId ? { 'synomem-context-id': options.contextId } : undefined);
|
|
98
102
|
}
|
|
99
103
|
/** Flattens discovery into the choices a person picks from. */
|
|
100
104
|
export function workspaceChoices(organizations) {
|
package/dist/discover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const errorCodes: readonly ["INVALID_INPUT", "INVALID_AGENT_ID", "INVALID_EVENT", "UNSUPPORTED_EVENT", "AGENT_NOT_FOUND", "AGENT_EXISTS", "ALIAS_CONFLICT", "TOPIC_NOT_FOUND", "TOPIC_EXISTS", "KUDOS_NOT_FOUND", "ITEM_NOT_FOUND", "MEMO_NOT_FOUND", "NOTE_NOT_FOUND", "TODO_NOT_FOUND", "REVISION_CONFLICT", "IDEMPOTENCY_CONFLICT", "MUTATION_FORBIDDEN", "SELF_AWARD_FORBIDDEN", "ACKNOWLEDGMENT_FORBIDDEN", "REVOCATION_FORBIDDEN", "READ_ONLY", "DATABASE_BUSY", "DATABASE_CORRUPT", "UNSUPPORTED_SCHEMA", "UNSAFE_PATH", "POLICY_FORBIDDEN", "CONFIG_INVALID", "AUTH_REQUIRED", "AUTH_FORBIDDEN", "UNSUPPORTED_BACKEND", "REMOTE_UNAVAILABLE", "REMOTE_PROTOCOL", "RATE_LIMITED", "INTERNAL_ERROR"];
|
|
1
|
+
export declare const errorCodes: readonly ["INVALID_INPUT", "INVALID_AGENT_ID", "INVALID_EVENT", "UNSUPPORTED_EVENT", "AGENT_NOT_FOUND", "AGENT_EXISTS", "ALIAS_CONFLICT", "TOPIC_NOT_FOUND", "TOPIC_EXISTS", "KUDOS_NOT_FOUND", "ITEM_NOT_FOUND", "MEMO_NOT_FOUND", "NOTE_NOT_FOUND", "TODO_NOT_FOUND", "REVISION_CONFLICT", "IDEMPOTENCY_CONFLICT", "MUTATION_FORBIDDEN", "SELF_AWARD_FORBIDDEN", "ACKNOWLEDGMENT_FORBIDDEN", "REVOCATION_FORBIDDEN", "READ_ONLY", "DATABASE_BUSY", "DATABASE_CORRUPT", "UNSUPPORTED_SCHEMA", "UNSAFE_PATH", "POLICY_FORBIDDEN", "CONFIG_INVALID", "AUTH_REQUIRED", "AUTH_FORBIDDEN", "CONTEXT_REQUIRED", "CONTEXT_FORBIDDEN", "CONTEXT_AMBIGUOUS", "REAUTHORIZATION_REQUIRED", "UNSUPPORTED_BACKEND", "REMOTE_UNAVAILABLE", "REMOTE_PROTOCOL", "RATE_LIMITED", "INTERNAL_ERROR"];
|
|
2
2
|
export type SynomemErrorCode = (typeof errorCodes)[number];
|
|
3
3
|
export declare class SynomemError extends Error {
|
|
4
4
|
readonly code: SynomemErrorCode;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,ovBAuCb,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMvF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAa3D"}
|
package/dist/errors.js
CHANGED
|
@@ -29,6 +29,10 @@ export const errorCodes = [
|
|
|
29
29
|
'CONFIG_INVALID',
|
|
30
30
|
'AUTH_REQUIRED',
|
|
31
31
|
'AUTH_FORBIDDEN',
|
|
32
|
+
'CONTEXT_REQUIRED',
|
|
33
|
+
'CONTEXT_FORBIDDEN',
|
|
34
|
+
'CONTEXT_AMBIGUOUS',
|
|
35
|
+
'REAUTHORIZATION_REQUIRED',
|
|
32
36
|
'UNSUPPORTED_BACKEND',
|
|
33
37
|
'REMOTE_UNAVAILABLE',
|
|
34
38
|
'REMOTE_PROTOCOL',
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;IAC1B,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;CACR,CAAC;AAIX,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IACvB,OAAO,CAA2B;IAE3C,YAAY,IAAsB,EAAE,OAAe,EAAE,OAAiC;QACpF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,YAAY;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,YAAY,CAAC,eAAe,EAAE,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACpF,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,YAAY,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,YAAY,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;IAC1B,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,0BAA0B;IAC1B,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;CACR,CAAC;AAIX,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IACvB,OAAO,CAA2B;IAE3C,YAAY,IAAsB,EAAE,OAAe,EAAE,OAAiC;QACpF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,YAAY;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,YAAY,CAAC,eAAe,EAAE,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACpF,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,YAAY,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,YAAY,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
|