@mcsherrylabs/pi-meerkat 0.7.0 → 0.8.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.
Files changed (46) hide show
  1. package/README.md +85 -33
  2. package/dist/installer/committee-init.sh +117 -0
  3. package/dist/installer/committee.conf +102 -0
  4. package/dist/installer/node-join.sh +228 -0
  5. package/dist/installer/node.conf +235 -0
  6. package/dist/installer/runtime.json +1 -0
  7. package/dist/installer-runtime/dist/scripts/recover-owner.js +15 -0
  8. package/dist/installer-runtime/dist/scripts/subscriptions-init.js +35 -0
  9. package/dist/installer-runtime/dist/scripts/versions.mjs +86 -0
  10. package/dist/installer-runtime/dist/scripts/wait-for-chain.js +90 -0
  11. package/dist/installer-runtime/dist/src/announcements.js +448 -0
  12. package/dist/installer-runtime/dist/src/app.js +539 -0
  13. package/dist/installer-runtime/dist/src/chainfetch.js +87 -0
  14. package/dist/installer-runtime/dist/src/env.js +425 -0
  15. package/dist/installer-runtime/dist/src/registry/announce.js +77 -0
  16. package/dist/installer-runtime/dist/src/registry/announcement.js +141 -0
  17. package/dist/installer-runtime/dist/src/registry/dependencies.js +28 -0
  18. package/dist/installer-runtime/dist/src/registry/detail.js +87 -0
  19. package/dist/installer-runtime/dist/src/registry/drainer.js +131 -0
  20. package/dist/installer-runtime/dist/src/registry/http.js +194 -0
  21. package/dist/installer-runtime/dist/src/registry/index.js +52 -0
  22. package/dist/installer-runtime/dist/src/registry/lease.js +35 -0
  23. package/dist/installer-runtime/dist/src/registry/ownership.js +31 -0
  24. package/dist/installer-runtime/dist/src/registry/provision.js +180 -0
  25. package/dist/installer-runtime/dist/src/registry/store.js +242 -0
  26. package/dist/installer-runtime/dist/src/registry/sweep.js +9 -0
  27. package/dist/installer-runtime/dist/src/registry/worker-module.js +87 -0
  28. package/dist/installer-runtime/dist/src/runtime.js +164 -0
  29. package/dist/installer-runtime/dist/src/store.js +138 -0
  30. package/dist/installer-runtime/package.json +1 -0
  31. package/dist/installer.d.ts +224 -0
  32. package/dist/installer.d.ts.map +1 -0
  33. package/dist/installer.js +336 -0
  34. package/dist/installer.js.map +1 -0
  35. package/dist/mcp-cli.d.ts.map +1 -1
  36. package/dist/mcp-cli.js +31 -5
  37. package/dist/mcp-cli.js.map +1 -1
  38. package/dist/registry.d.ts.map +1 -1
  39. package/dist/registry.js +8 -4
  40. package/dist/registry.js.map +1 -1
  41. package/installer/Committee.Dockerfile +6 -0
  42. package/installer/Node.Dockerfile +6 -0
  43. package/installer/Registry.Dockerfile +13 -0
  44. package/installer/runtime-control.mjs +172 -0
  45. package/installer/session-files.mjs +16 -0
  46. package/package.json +5 -4
@@ -0,0 +1,336 @@
1
+ // Operator-only deployment orchestration. Key generation/read/signing remains in the released
2
+ // Evolver bootstrap/child. All services/data are owned Docker resources, never host bind mounts.
3
+ import { spawn } from 'node:child_process';
4
+ import { randomBytes } from 'node:crypto';
5
+ import { constants } from 'node:fs';
6
+ import { cp, lstat, mkdir, open, readFile, rename, rm, writeFile } from 'node:fs/promises';
7
+ import { homedir } from 'node:os';
8
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ const PACKAGE = '@mcsherrylabs/pi-meerkat';
11
+ const packageDir = resolve(dirname(fileURLToPath(import.meta.url)), '..');
12
+ // Public manifest rechecked anonymously 2026-11-05; coordinated with released SDK 0.22.1.
13
+ const NODE_IMAGE = 'nexus.mcsherrylabs.com/evolver-node@sha256:38b2e175efc9b974dbc26a19eef27ee94c66701aaefd4e49219371c60ef26747';
14
+ const OWNER = 'io.meerkat.installation';
15
+ const installed = '/opt/meerkat/node_modules/@mcsherrylabs/pi-meerkat';
16
+ const runtime = `${installed}/dist/installer-runtime`;
17
+ const control = `${installed}/installer/runtime-control.mjs`;
18
+ export function managedDirectory(env = process.env) {
19
+ const base = env.XDG_STATE_HOME || join(env.HOME || homedir(), '.local', 'state');
20
+ if (!isAbsolute(base))
21
+ throw new Error('HOME/XDG_STATE_HOME must resolve to an absolute operator state directory');
22
+ return join(base, 'meerkat');
23
+ }
24
+ export const managedConfigPath = (env = process.env) => join(managedDirectory(env), 'installation.json');
25
+ export function pinnedRegistration(version) {
26
+ if (!/^\d+\.\d+\.\d+$/.test(version))
27
+ throw new Error('installer requires a released semantic package version');
28
+ return { mcpServers: { meerkat: { command: 'npx', args: ['--yes', `${PACKAGE}@${version}`, 'serve'] } } };
29
+ }
30
+ export function renderDeployment(state) {
31
+ const labels = { [OWNER]: state.id };
32
+ const volume = (name) => ({ name: `${state.project}-${name}`, labels });
33
+ const environment = {
34
+ EVOLVER_TARGET: 'local', EVOLVER_NODE: 'http://node:8440', EVOLVER_FAUCET_URL: 'http://committee:8440',
35
+ EVOLVER_CHAIN_ID: state.binding?.chainId ?? '', APP_NODE_ID: state.nodeId,
36
+ EVOLVER_SUBSCRIPTIONS_FILE: '/subscriptions/channels.conf', REGISTRY_CHANNEL: state.channel,
37
+ REGISTRY_CHANNEL_OPERATOR: state.registryOperator,
38
+ REGISTRY_CONTENT_URL: 'http://node:8450', PROCESSOR_HTTP_PORT: '8090', PROCESSOR_READ_HOST: '0.0.0.0',
39
+ };
40
+ return {
41
+ name: state.project,
42
+ services: {
43
+ committee: { image: `${state.project}-committee:${state.packageVersion}`, labels, container_name: `${state.project}-committee`,
44
+ build: { context: './package', dockerfile: 'installer/Committee.Dockerfile', labels, args: { EVOLVER_NODE_IMAGE: NODE_IMAGE } },
45
+ entrypoint: ['sh', '/config/node-init.sh'], environment: { NODE_ID: state.committeeId, PUBLIC_HOST: 'committee' },
46
+ group_add: ['1000'], volumes: ['committee-data:/data', 'genesis:/public-genesis'], restart: 'unless-stopped' },
47
+ node: { image: `${state.project}-node:${state.packageVersion}`, labels, container_name: `${state.project}-node`, entrypoint: ['sh', '/config/node-join.sh'],
48
+ build: { context: './package', dockerfile: 'installer/Node.Dockerfile', labels, args: { EVOLVER_NODE_IMAGE: NODE_IMAGE } },
49
+ environment: { APP_NODE_ID: state.nodeId, DEVNET_API: 'http://committee:8440', EVOLVER_UPSTREAM_NODE_ID: state.committeeId,
50
+ EVOLVER_ALLOWED_OUTBOUND: '1', EVOLVER_EXECUTION_ENABLED: 'true', EVOLVER_NODE_PORT: '7100', CLAIM_TIMEOUT: '90', CLAIM_WATCH_SECS: '30' },
51
+ group_add: ['1000'], volumes: ['node-data:/data', 'subscriptions:/subscriptions:ro', 'genesis:/public-genesis:ro'],
52
+ restart: 'unless-stopped' },
53
+ registry: { image: `${state.project}-registry:${state.packageVersion}`, labels, container_name: `${state.project}-registry`,
54
+ build: { context: './package', dockerfile: 'installer/Registry.Dockerfile', labels },
55
+ user: '1000:1000', environment,
56
+ volumes: [`app-state:${runtime}/state`, 'subscriptions:/subscriptions:ro', 'agent-state:/meerkat/agent'],
57
+ restart: 'unless-stopped' },
58
+ 'subscriptions-init': { image: `${state.project}-registry:${state.packageVersion}`, labels, profiles: ['initialize-only'],
59
+ user: '0:0', environment: { ...environment, EVOLVER_INITIAL_CHANNELS: JSON.stringify([state.channel]),
60
+ EVOLVER_OPERATOR_UID: '1000', EVOLVER_OPERATOR_GID: '1000' },
61
+ entrypoint: ['sh', '-ec'], command: [`chown 1000:1000 ${runtime}/state /meerkat/agent /public-genesis; chmod 700 /meerkat/agent; chmod 2770 /public-genesis; exec node ${runtime}/dist/scripts/subscriptions-init.js`],
62
+ volumes: [`app-state:${runtime}/state`, 'subscriptions:/subscriptions', 'agent-state:/meerkat/agent', 'genesis:/public-genesis'] },
63
+ },
64
+ volumes: { 'committee-data': volume('committee-data'), genesis: volume('genesis'), 'node-data': volume('node-data'),
65
+ 'app-state': volume('app-state'), subscriptions: volume('subscriptions'), 'agent-state': volume('agent-state') },
66
+ networks: { default: { name: `${state.project}-network`, internal: true, labels } },
67
+ };
68
+ }
69
+ async function command(command, args, env = process.env, cwd) {
70
+ return new Promise((resolve, reject) => {
71
+ const child = spawn(command, args, { env, cwd, stdio: ['ignore', 'pipe', 'pipe'] });
72
+ let stdout = '', stderr = '', timedOut = false;
73
+ const timer = setTimeout(() => { timedOut = true; child.kill('SIGTERM'); }, 600_000);
74
+ const hard = setTimeout(() => child.kill('SIGKILL'), 605_000);
75
+ child.stdout.on('data', data => { stdout = (stdout + String(data)).slice(-2 * 1024 * 1024); });
76
+ child.stderr.on('data', data => { stderr = (stderr + String(data)).slice(-8192); });
77
+ child.on('error', error => { clearTimeout(timer); clearTimeout(hard); reject(error); });
78
+ child.on('close', code => {
79
+ clearTimeout(timer);
80
+ clearTimeout(hard);
81
+ if (code !== 0 || timedOut)
82
+ reject(new Error(`${command} ${args[0] ?? ''} failed${timedOut ? ' (deadline)' : ''}: ${stderr}`));
83
+ else
84
+ resolve(stdout);
85
+ });
86
+ });
87
+ }
88
+ const composeArgs = (state) => ['compose', '--project-name', state.project, '--file', join(state.dir, 'compose.json')];
89
+ const request = (state) => JSON.stringify({ nodeId: state.nodeId, committeeId: state.committeeId, identity: state.identity, channel: state.channel, binding: state.binding });
90
+ const defaults = {
91
+ command,
92
+ committeeReady: async (state, env) => {
93
+ await command('docker', [...composeArgs(state), 'run', '--rm', '--no-deps',
94
+ '--entrypoint', 'node', 'registry', control, 'committee-ready', request(state)], env, state.dir);
95
+ },
96
+ nodeBinding: async (state, env) => JSON.parse(await command('docker', [...composeArgs(state), 'run', '--rm', '--no-deps',
97
+ '--entrypoint', 'node', 'registry', control, 'node-binding', request(state)], env, state.dir)),
98
+ registryReady: async (state, env) => { await command('docker', ['exec', `${state.project}-registry`, 'node', control, 'ready', request(state)], env); },
99
+ bootstrap: async (state, env) => { await command('docker', ['exec', '--workdir', '/meerkat/agent', `${state.project}-registry`, 'node', control, 'bootstrap', request(state)], env); },
100
+ };
101
+ export function operatorEnvironment(env) {
102
+ const result = {};
103
+ for (const key of ['HOME', 'PATH', 'USER', 'XDG_STATE_HOME', 'TMPDIR', 'DOCKER_HOST', 'DOCKER_CONTEXT', 'DOCKER_TLS_VERIFY', 'DOCKER_CERT_PATH', 'DOCKER_CONFIG'])
104
+ if (env[key] !== undefined)
105
+ result[key] = env[key];
106
+ return result;
107
+ }
108
+ async function privateDirectory(path) {
109
+ await mkdir(path, { recursive: true, mode: 0o700 });
110
+ const s = await lstat(path);
111
+ if (!s.isDirectory() || s.isSymbolicLink() || s.uid !== process.getuid?.() || (s.mode & 0o077))
112
+ throw new Error('managed state must be a private operator-owned directory, not a symlink');
113
+ }
114
+ async function readState(path) {
115
+ let handle;
116
+ try {
117
+ handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
118
+ }
119
+ catch (e) {
120
+ if (e.code === 'ENOENT')
121
+ return undefined;
122
+ throw e;
123
+ }
124
+ try {
125
+ const info = await handle.stat();
126
+ if (!info.isFile() || info.size > 65536 || info.uid !== process.getuid?.() || (info.mode & 0o077))
127
+ throw new Error('invalid managed installation ownership');
128
+ const parsed = JSON.parse(await handle.readFile('utf8'));
129
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
130
+ throw new Error('invalid saved installation object; refusing adoption');
131
+ return parsed;
132
+ }
133
+ finally {
134
+ await handle.close();
135
+ }
136
+ }
137
+ async function saveState(state) {
138
+ const temporary = join(state.dir, `installation.${randomBytes(8).toString('hex')}.tmp`);
139
+ const handle = await open(temporary, 'wx', 0o600);
140
+ try {
141
+ await handle.writeFile(JSON.stringify(state, null, 2) + '\n');
142
+ await handle.sync();
143
+ }
144
+ finally {
145
+ await handle.close();
146
+ }
147
+ await rename(temporary, join(state.dir, 'installation.json'));
148
+ }
149
+ async function ownership(state, deps, env, fresh) {
150
+ const daemonId = (await deps.command('docker', ['info', '--format', '{{.ID}}'], env)).trim();
151
+ if (daemonId !== state.daemonId)
152
+ throw new Error('Docker daemon identity differs; refusing resource adoption');
153
+ for (const [args, name] of [
154
+ [['ps', '-a'], `^/${state.project}-(committee|node|registry)$`],
155
+ [['volume', 'ls'], `^${state.project}-(committee-data|genesis|node-data|app-state|subscriptions|agent-state)$`],
156
+ [['network', 'ls'], `^${state.project}-network$`],
157
+ ]) {
158
+ const output = await deps.command('docker', [...args, '--filter', `name=${name}`, '--format', 'json'], env);
159
+ const rows = output.trim() ? output.trim().startsWith('[') ? JSON.parse(output) : output.trim().split('\n').map(line => JSON.parse(line)) : [];
160
+ if (fresh && rows.length)
161
+ throw new Error('foreign project resources exist; refusing adoption');
162
+ if (state.binding && ((args[0] === 'volume' && rows.length !== 6) || (args[0] === 'network' && rows.length !== 1) || (args[0] === 'ps' && rows.length < (state.ready ? 3 : 2))))
163
+ throw new Error('saved owned deployment resources are missing; refusing regeneration/re-genesis');
164
+ for (const row of rows) {
165
+ const labels = row.Labels;
166
+ if (!(typeof labels === 'string' ? labels.split(',').includes(`${OWNER}=${state.id}`) : labels?.[OWNER] === state.id))
167
+ throw new Error('unrelated resource ownership; refusing start/replacement');
168
+ }
169
+ }
170
+ }
171
+ function validateState(state, dir, version) {
172
+ if (state.version !== 1 || state.uid !== process.getuid?.() || state.dir !== dir || !/^[0-9a-f]{24}$/.test(state.id) ||
173
+ state.project !== `meerkat-${state.id}` || state.committeeId !== `meerkatquorum${state.id}` || state.nodeId !== `meerkatnode${state.id}` || state.identity !== `meerkatuser${state.id}` ||
174
+ typeof state.daemonId !== 'string' || !/^[A-Za-z0-9:._-]{8,200}$/.test(state.daemonId) ||
175
+ !/^[A-Za-z0-9]{1,50}$/.test(state.registryOperator) || state.channel !== `meerkat.${state.id}.announcements` || state.packageVersion !== version ||
176
+ !['pending', 'attempted', 'complete'].includes(state.initialization) || !Array.isArray(state.ports) || state.ports.length !== 3 ||
177
+ new Set(state.ports).size !== 3 || state.ports.some(p => !Number.isSafeInteger(p) || p < 1024 || p > 65535) ||
178
+ (state.binding && (state.binding.nodeId !== state.nodeId || !/^[0-9a-f]{64}$/.test(state.binding.chainId))))
179
+ throw new Error('invalid saved installation or package version differs; refusing automatic migration/adoption');
180
+ }
181
+ export async function managedInstallation(env = process.env) {
182
+ const state = await readState(managedConfigPath(env));
183
+ if (state) {
184
+ const version = JSON.parse(await readFile(join(packageDir, 'package.json'), 'utf8')).version;
185
+ validateState(state, managedDirectory(env), version);
186
+ }
187
+ return state;
188
+ }
189
+ /** Protocol-only stdio bridge, one new facade/private child/session per harness connection.
190
+ * Docker exec works even when daemon and harness share neither filesystem nor loopback. */
191
+ export async function serveManaged(state, env = process.env) {
192
+ await ownership(state, defaults, operatorEnvironment(env), false);
193
+ if (state.initialization !== 'complete' || !state.binding || !state.ready)
194
+ throw new Error('managed install is incomplete; rerun install');
195
+ const cleanEnv = operatorEnvironment(env);
196
+ const observed = JSON.parse(await command('docker', ['exec', `${state.project}-registry`, 'node', control, 'node-binding', request(state)], cleanEnv));
197
+ if (observed.chainId !== state.binding.chainId || observed.nodeId !== state.binding.nodeId)
198
+ throw new Error('saved managed binding changed');
199
+ const token = randomBytes(16).toString('hex');
200
+ const sessionCommand = (mode) => command('docker', ['exec', `${state.project}-registry`, 'node', control, mode, token], cleanEnv).then(() => { });
201
+ let remoteStop, requestedStop = false, started = false;
202
+ const stopRemote = () => remoteStop ??= sessionCommand('stop-session');
203
+ let onFailure = () => { };
204
+ const stop = () => { requestedStop = true; if (started)
205
+ void stopRemote().catch(error => onFailure(error)); };
206
+ process.once('SIGINT', stop);
207
+ process.once('SIGTERM', stop);
208
+ try {
209
+ await sessionCommand('prepare-session');
210
+ if (requestedStop) {
211
+ await sessionCommand('discard-session');
212
+ return;
213
+ }
214
+ await new Promise((resolve, reject) => {
215
+ onFailure = reject;
216
+ // The remote helper knows this exact preallocated token before docker exec can start.
217
+ // A signal before its PID is recorded sets cancellation, never signals an arbitrary PID.
218
+ started = true;
219
+ const child = spawn('docker', ['exec', '-i', `${state.project}-registry`, 'node', control, 'serve-session', token], { env: cleanEnv, stdio: 'inherit' });
220
+ child.once('error', error => { void sessionCommand('discard-session').then(() => reject(error), reject); });
221
+ child.once('close', code => {
222
+ void stopRemote().then(() => code === 0 || requestedStop ? resolve() : reject(new Error('owned Meerkat stdio process exited')), reject);
223
+ });
224
+ });
225
+ }
226
+ finally {
227
+ process.off('SIGINT', stop);
228
+ process.off('SIGTERM', stop);
229
+ if (started)
230
+ await stopRemote();
231
+ }
232
+ }
233
+ export async function installMeerkat(env = process.env, deps = defaults) {
234
+ if (Number(process.versions.node.split('.')[0]) < 22)
235
+ throw new Error('Meerkat install requires Node.js 22 or newer, npm/npx, and Docker Engine with Compose v2');
236
+ const packageVersion = JSON.parse(await readFile(join(packageDir, 'package.json'), 'utf8')).version;
237
+ const dir = managedDirectory(env), configPath = managedConfigPath(env), cleanEnv = operatorEnvironment(env);
238
+ await deps.command('docker', ['version', '--format', 'json'], cleanEnv);
239
+ await deps.command('docker', ['compose', 'version'], cleanEnv);
240
+ await deps.command('npm', ['--version'], cleanEnv);
241
+ await deps.command('npx', ['--version'], cleanEnv);
242
+ const daemonId = (await deps.command('docker', ['info', '--format', '{{.ID}}'], cleanEnv)).trim();
243
+ if (!/^[A-Za-z0-9:._-]{8,200}$/.test(daemonId))
244
+ throw new Error('cannot establish Docker daemon identity');
245
+ await privateDirectory(dir);
246
+ const lock = join(dir, 'install.lock');
247
+ // Do not kill a Docker CLI and abandon its remote operation. An interrupt finishes the
248
+ // current bounded operation, persists its known checkpoint, then releases only this lock.
249
+ let interrupted = false, locked = false;
250
+ const interrupt = () => { interrupted = true; };
251
+ const checkpoint = () => { if (interrupted)
252
+ throw new Error('installation interrupted; owned state retained at its last known checkpoint, rerun the same install command'); };
253
+ process.once('SIGINT', interrupt);
254
+ process.once('SIGTERM', interrupt);
255
+ try {
256
+ await mkdir(lock, { mode: 0o700 }).catch(() => { throw new Error(`another installation owns ${lock}; no automatic lock recovery`); });
257
+ locked = true;
258
+ checkpoint();
259
+ let state = await readState(configPath);
260
+ const fresh = !state;
261
+ if (!state) {
262
+ // A previous explicit facade configuration is not ours to replace or adopt.
263
+ try {
264
+ await lstat(join(dir, 'config.json'));
265
+ throw new Error('unrelated Meerkat config exists; refusing replacement');
266
+ }
267
+ catch (e) {
268
+ if (e.code !== 'ENOENT')
269
+ throw e;
270
+ }
271
+ const id = randomBytes(12).toString('hex');
272
+ const assets = JSON.parse(await readFile(join(packageDir, 'dist', 'installer', 'runtime.json'), 'utf8'));
273
+ state = { version: 1, uid: process.getuid(), id, dir, project: `meerkat-${id}`, nodeId: `meerkatnode${id}`, committeeId: `meerkatquorum${id}`,
274
+ identity: `meerkatuser${id}`, registryOperator: assets.operatorIdentity, channel: `meerkat.${id}.announcements`, ports: [8440, 8450, 8090],
275
+ packageVersion, daemonId, initialization: 'pending' };
276
+ }
277
+ validateState(state, dir, packageVersion);
278
+ if (state.initialization === 'attempted')
279
+ throw new Error('fresh initialization was interrupted; retained state requires operator inspection, never automatic reseeding');
280
+ await ownership(state, deps, cleanEnv, fresh);
281
+ checkpoint();
282
+ if (fresh) {
283
+ await cp(join(packageDir, 'dist'), join(dir, 'package', 'dist'), { recursive: true, errorOnExist: true, force: false });
284
+ await cp(join(packageDir, 'installer'), join(dir, 'package', 'installer'), { recursive: true, errorOnExist: true, force: false });
285
+ await cp(join(packageDir, 'package.json'), join(dir, 'package', 'package.json'), { errorOnExist: true, force: false });
286
+ await saveState(state);
287
+ }
288
+ const composePath = join(dir, 'compose.json');
289
+ const compose = async (...args) => deps.command('docker', [...composeArgs(state), ...args], cleanEnv, dir);
290
+ await writeFile(composePath, JSON.stringify(renderDeployment(state), null, 2), { mode: 0o600 });
291
+ await compose('config', '--quiet');
292
+ checkpoint();
293
+ if (state.initialization === 'pending') {
294
+ await compose('build', 'committee', 'node', 'registry');
295
+ checkpoint();
296
+ state.initialization = 'attempted';
297
+ await saveState(state);
298
+ await compose('--profile', 'initialize-only', 'run', '--rm', '--no-deps', 'subscriptions-init');
299
+ state.initialization = 'complete';
300
+ await saveState(state);
301
+ checkpoint();
302
+ }
303
+ await compose('up', '-d', '--no-build', '--no-recreate', 'committee');
304
+ await deps.committeeReady(state, cleanEnv);
305
+ checkpoint();
306
+ await compose('up', '-d', '--no-build', '--no-recreate', 'node');
307
+ checkpoint();
308
+ const observed = await deps.nodeBinding(state, cleanEnv);
309
+ if (observed.nodeId !== state.nodeId || !/^[0-9a-f]{64}$/.test(observed.chainId) || (state.binding && state.binding.chainId !== observed.chainId))
310
+ throw new Error('owned node returned an invalid or changed saved binding');
311
+ state.binding = observed;
312
+ await saveState(state);
313
+ checkpoint();
314
+ await writeFile(composePath, JSON.stringify(renderDeployment(state), null, 2), { mode: 0o600 });
315
+ await compose('up', '-d', '--no-build', '--no-recreate', 'registry');
316
+ checkpoint();
317
+ await deps.registryReady(state, cleanEnv);
318
+ checkpoint();
319
+ await deps.bootstrap(state, cleanEnv);
320
+ state.ready = true;
321
+ await saveState(state);
322
+ checkpoint();
323
+ return { dir, configPath, registration: pinnedRegistration(state.packageVersion) };
324
+ }
325
+ finally {
326
+ try {
327
+ if (locked)
328
+ await rm(lock, { recursive: true });
329
+ }
330
+ finally {
331
+ process.off('SIGINT', interrupt);
332
+ process.off('SIGTERM', interrupt);
333
+ }
334
+ }
335
+ }
336
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iGAAiG;AACjG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,0FAA0F;AAC1F,MAAM,UAAU,GAAG,6GAA6G,CAAC;AACjI,MAAM,KAAK,GAAG,yBAAyB,CAAC;AACxC,MAAM,SAAS,GAAG,oDAAoD,CAAC;AACvE,MAAM,OAAO,GAAG,GAAG,SAAS,yBAAyB,CAAC;AACtD,MAAM,OAAO,GAAG,GAAG,SAAS,gCAAgC,CAAC;AAa7D,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IACnH,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/B,CAAC;AACD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAU,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACpI,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAChH,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5G,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG;QAClB,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB;QACtG,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM;QACzE,0BAA0B,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO;QAC3F,yBAAyB,EAAE,KAAK,CAAC,gBAAgB;QACjD,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS;KACtG,CAAC;IACF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,OAAO;QACnB,QAAQ,EAAE;YACR,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,OAAO,YAAY;gBAC5H,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gCAAgC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE;gBAC/H,UAAU,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;gBACjH,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;YAChH,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,SAAS,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;gBACzJ,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE;gBAC1H,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,KAAK,CAAC,WAAW;oBACxH,wBAAwB,EAAE,GAAG,EAAE,yBAAyB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE;gBAC5I,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,iCAAiC,EAAE,4BAA4B,CAAC;gBAClH,OAAO,EAAE,gBAAgB,EAAE;YAC7B,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW;gBACzH,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,+BAA+B,EAAE,MAAM,EAAE;gBACpF,IAAI,EAAE,WAAW,EAAE,WAAW;gBAC9B,OAAO,EAAE,CAAC,aAAa,OAAO,QAAQ,EAAE,iCAAiC,EAAE,4BAA4B,CAAC;gBACxG,OAAO,EAAE,gBAAgB,EAAE;YAC7B,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC;gBACvH,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnG,oBAAoB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE;gBAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,OAAO,0GAA0G,OAAO,qCAAqC,CAAC;gBACtN,OAAO,EAAE,CAAC,aAAa,OAAO,QAAQ,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,yBAAyB,CAAC,EAAE;SACrI;QACD,OAAO,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YACjH,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;QAClH,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;KACpF,CAAC;AACJ,CAAC;AACD,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,IAAc,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,GAAY;IACxG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,IAAI,KAAK,CAAC,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;;gBAC1H,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AACD,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AACrI,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5L,MAAM,QAAQ,GAAkB;IAC9B,OAAO;IACP,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW;YAChH,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IACrG,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW;QACtH,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAChG,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvJ,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACvL,CAAC;AACF,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,CAAC;QAC/J,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC/F,CAAC;AACD,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAAC,CAAC;IAC7E,OAAO,CAAC,EAAE,CAAC;QAAC,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAAC,MAAM,CAAC,CAAC;IAAC,CAAC;IAC5F,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC7J,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC5I,OAAO,MAAsB,CAAC;IAChC,CAAC;YAAS,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;AACrC,CAAC;AACD,KAAK,UAAU,SAAS,CAAC,KAAmB;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC;QAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;YACnF,CAAC;QAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;IACjC,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,KAAK,UAAU,SAAS,CAAC,KAAmB,EAAE,IAAmB,EAAE,GAAsB,EAAE,KAAc;IACvG,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,IAAI,QAAQ,KAAK,KAAK,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC/G,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;QACzB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,6BAA6B,CAAC;QAC/D,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,0EAA0E,CAAC;QAC/G,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,WAAW,CAAC;KACzC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5G,MAAM,IAAI,GAAU,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtJ,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7K,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACpG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACnH,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CAAC,KAAmB,EAAE,GAAW,EAAE,OAAe;IACtE,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChH,KAAK,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,gBAAgB,KAAK,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,KAAK,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc,KAAK,CAAC,EAAE,EAAE;QACvL,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtF,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,EAAE,gBAAgB,IAAI,KAAK,CAAC,cAAc,KAAK,OAAO;QAChJ,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAC/H,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;QAC3G,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7G,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;AACpH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7F,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AACD;2FAC2F;AAC3F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAmB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC1F,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC3I,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvJ,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC7I,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzJ,IAAI,UAAqC,EAAE,aAAa,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAClF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,UAAU,KAAK,cAAc,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,SAAS,GAA6B,GAAG,EAAE,GAAE,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,IAAI,OAAO;QAAE,KAAK,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,aAAa,EAAE,CAAC;YAAC,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACvE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,SAAS,GAAG,MAAM,CAAC;YACnB,sFAAsF;YACtF,yFAAyF;YACzF,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAChH,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,cAAc,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACzB,KAAK,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1I,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,OAAO;YAAE,MAAM,UAAU,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,OAAsB,QAAQ;IACvG,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAClK,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAC;IAC9G,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC5G,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC3G,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvC,uFAAuF;IACvF,0FAA0F;IAC1F,IAAI,WAAW,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,GAAG,EAAE,GAAG,IAAI,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9K,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,MAAM,GAAG,IAAI,CAAC;QACd,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,4EAA4E;YAC5E,IAAI,CAAC;gBAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAAC,CAAC;YACxH,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YAC1E,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACzG,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,MAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE;gBAC5I,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC1I,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QACD,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,cAAc,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QAC1K,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9C,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACxH,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAClI,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACvH,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,EAAE,GAAG,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,KAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtH,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,MAAM,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACxD,UAAU,EAAE,CAAC;YACb,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC;YAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,OAAO,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAChG,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;YAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1D,UAAU,EAAE,CAAC;QACf,CAAC;QACD,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3C,UAAU,EAAE,CAAC;QACb,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QACjE,UAAU,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;YAC/I,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC;QACb,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACrE,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;IACrF,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,IAAI,MAAM;gBAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;gBAChD,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-cli.d.ts","sourceRoot":"","sources":["../src/mcp-cli.ts"],"names":[],"mappings":";AA4CA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhF"}
1
+ {"version":3,"file":"mcp-cli.d.ts","sourceRoot":"","sources":["../src/mcp-cli.ts"],"names":[],"mappings":";AAsDA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhF"}
package/dist/mcp-cli.js CHANGED
@@ -4,11 +4,21 @@ import { fileURLToPath } from "node:url";
4
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
5
  import { applyRegistryConfig, loadFacadeConfig, saveFacadeConfig } from "./mcp-config.js";
6
6
  import { createMeerkatFacade } from "./mcp-facade.js";
7
- const HELP = `meerkat-mcp [--config /absolute/operator.json]
7
+ import { installMeerkat, managedInstallation, serveManaged } from "./installer.js";
8
+ const HELP = `meerkat-mcp install
9
+ meerkat-mcp serve
10
+ meerkat-mcp [--config /absolute/operator.json]
8
11
 
9
- Without --config, initialize and the six registry reads remain usable from existing
10
- MEERKAT_URL / EVOLVER_CHAIN_ID / APP_NODE_ID inputs; tools/list is explicitly degraded.
11
- There is no project-file lookup or default authority configuration.
12
+ Install (Node.js 22+, npm/npx, Docker Engine + Compose v2) has no required deployment
13
+ parameters. It creates a private owned local chain, registry/content/inbox services,
14
+ and announcer via the released Evolver bootstrap. It prints ONE pinned public-package
15
+ stdio registration; apply it in your MCP harness yourself. It never edits a harness.
16
+ Rerun install to resume the same saved deployment; no reset/adoption/lock recovery.
17
+ Serve finds that saved deployment and owns one per-client facade/private child through
18
+ Docker exec. Local and separate-daemon Docker contexts need no host path/GID mapping.
19
+
20
+ Bare invocation without --config remains read-only/degraded: initialize and six registry
21
+ reads use existing MEERKAT_URL / EVOLVER_CHAIN_ID / APP_NODE_ID inputs. No implicit install.
12
22
 
13
23
  Explicit trusted operator setup (config must not already exist):
14
24
  meerkat-mcp setup --config /absolute/operator.json
@@ -21,7 +31,7 @@ meerkat-mcp setup --config /absolute/operator.json
21
31
  Setup validates explicit inputs, checks existing key/CA references without reading
22
32
  key bytes, writes a private 0600 config, and prints ONE mcpServers.meerkat stdio
23
33
  registration using this installed entrypoint. Apply that registration yourself.
24
- No key creation, claims, installer, node startup, or existing registration changes.
34
+ Advanced setup attaches only; no key creation, claims, node startup, or registration changes.
25
35
  `;
26
36
  function flags(args, allowed) {
27
37
  const parsed = {};
@@ -45,6 +55,22 @@ export async function main(args = process.argv.slice(2)) {
45
55
  process.stdout.write(HELP);
46
56
  return;
47
57
  }
58
+ if (args[0] === "install") {
59
+ if (args.length !== 1)
60
+ throw new Error("install takes no required deployment options; advanced attach uses setup. Use --help.");
61
+ process.stdout.write(JSON.stringify(await installMeerkat(), null, 2) + "\n");
62
+ return;
63
+ }
64
+ if (args[0] === "serve") {
65
+ if (args.length === 1) {
66
+ const installation = await managedInstallation();
67
+ if (!installation)
68
+ throw new Error("No managed Meerkat installation. Run the pinned public package install command first, or use explicit --config attach.");
69
+ await serveManaged(installation);
70
+ return;
71
+ }
72
+ args = args.slice(1);
73
+ }
48
74
  if (args[0] === "setup") {
49
75
  const values = flags(args.slice(1), ["--config", "--node-url", "--content-url", "--identity", "--key-path", "--key-type",
50
76
  "--tls-insecure", "--ca-file", "--meerkat-url", "--chain-id", "--node-id", "--channel"]);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-cli.js","sourceRoot":"","sources":["../src/mcp-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-cli.js","sourceRoot":"","sources":["../src/mcp-cli.ts"],"names":[],"mappings":";AACA,8FAA8F;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnF,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AAEF,SAAS,KAAK,CAAC,IAAc,EAAE,OAA0B;IACvD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS;YACxG,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,gBAAgB,CAAC,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,QAAQ,CAAC,MAA8B,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,eAAe,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC5G,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAChI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,MAAM,mBAAmB,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,wHAAwH,CAAC,CAAC;YAC7J,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;YACtH,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACpH,MAAM,gBAAgB,CAAC,UAAU,EAAE;YACjC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;YACzF,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;YACrH,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;gBACxI,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;gBACvF,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;SAClF,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ;oBACtF,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,IAAI,MAAM;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,IAAI,MAAmB,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,YAAuC,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAkB,EAAE,CAAC,YAAY,KAAK,CAAC,KAAK,IAAI,EAAE;QACjE,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;gBACrB,CAAC;YAAC,MAAM,EAAE,CAAC;QAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClJ,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS;YAAE,IAAI,EAAE,CAAC;QACnE,MAAM,OAAO,CAAC;QACd,MAAM,YAAY,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;;;;;;uBAOuB;AACvB,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAInF;AAiCD;+EAC+E;AAC/E,eAAO,MAAM,OAAO,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACV,CAAC;AAE7C,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAQ5F,CAAC;AAEJ,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACW,CAAC;AAElF;;;;mGAImG;AACnG,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC4B,CAAC;AAElG;;cAEc;AACd,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACP,CAAC;AASnD,gGAAgG;AAChG,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAWvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAqCpI"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;;;;;;uBAOuB;AACvB,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAInF;AAoCD;+EAC+E;AAC/E,eAAO,MAAM,OAAO,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACV,CAAC;AAE7C,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAQ5F,CAAC;AAEJ,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACW,CAAC;AAElF;;;;mGAImG;AACnG,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACkC,CAAC;AAExG;;cAEc;AACd,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACP,CAAC;AASnD,gGAAgG;AAChG,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAWvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAqCpI"}
package/dist/registry.js CHANGED
@@ -34,7 +34,7 @@ const fix = (env = process.env) => env["REGISTRY_URL"]?.trim()
34
34
  : "Set MEERKAT_URL to the event processor's read server (e.g. http://registry:8090 inside a " +
35
35
  "compose network). It is a separate process from the node, so it cannot be derived from EVOLVER_URL.";
36
36
  const DEADLINE_MS = 15_000;
37
- async function getJson(base, path) {
37
+ async function getJson(base, path, textDetail = false) {
38
38
  const res = await fetch(base + path, {
39
39
  headers: { Accept: "application/json" },
40
40
  signal: AbortSignal.timeout(DEADLINE_MS),
@@ -43,15 +43,19 @@ async function getJson(base, path) {
43
43
  return null;
44
44
  if (!res.ok)
45
45
  throw new Error(`GET ${path}: HTTP ${res.status}`);
46
+ // The real detail route serves digest-verified bytes as text/plain, not JSON.
47
+ // Keep legacy JSON response/fixture decoding and all other read routes unchanged.
48
+ if (textDetail && res.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() === 'text/plain')
49
+ return res.text();
46
50
  return res.json();
47
51
  }
48
52
  /** Run a registry read, turning any failure into a kind the model can branch on. */
49
- async function read(what, path) {
53
+ async function read(what, path, textDetail = false) {
50
54
  const base = meerkatUrl();
51
55
  if (!base)
52
56
  return misconfigured(what, fix());
53
57
  try {
54
- const body = await getJson(base, path);
58
+ const body = await getJson(base, path, textDetail);
55
59
  if (body === null)
56
60
  return { kind: "not_found", what };
57
61
  return { kind: "ok", value: body };
@@ -74,7 +78,7 @@ export const service = (ledgerId) => read(`an entry for '${ledgerId}'`, `/servic
74
78
  * ⚠️ THE REGISTRY VERIFIED THE DIGEST ON THE WAY IN, over the bytes its content endpoint
75
79
  * actually returned, and only then served them here. A mismatch leaves the entry standing with
76
80
  * its document marked unfetchable, so a 404 here means "no usable document", never "no entry". */
77
- export const detail = (ledgerId) => read(`a detail document for '${ledgerId}'`, `/services/${encodeURIComponent(ledgerId)}/detail`);
81
+ export const detail = (ledgerId) => read(`a detail document for '${ledgerId}'`, `/services/${encodeURIComponent(ledgerId)}/detail`, true);
78
82
  /** Why announcements were refused. Worth reading after announcing: a refusal is RECORDED rather
79
83
  * than returned to the announcer, so this is where an announcement that went nowhere explains
80
84
  * itself. */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ # syntax=docker/dockerfile:1
2
+ ARG EVOLVER_NODE_IMAGE
3
+ FROM ${EVOLVER_NODE_IMAGE}
4
+ # Existing local-chain initialization, with a public-only genesis export for its owned follower.
5
+ COPY dist/installer/committee-init.sh /config/node-init.sh
6
+ COPY dist/installer/committee.conf /config/node.conf
@@ -0,0 +1,6 @@
1
+ # syntax=docker/dockerfile:1
2
+ ARG EVOLVER_NODE_IMAGE
3
+ FROM ${EVOLVER_NODE_IMAGE}
4
+ # Bake the released local-chain initializer and config into the image: no daemon-host paths.
5
+ COPY dist/installer/node-join.sh /config/node-join.sh
6
+ COPY dist/installer/node.conf /config/node.conf
@@ -0,0 +1,13 @@
1
+ # syntax=docker/dockerfile:1
2
+ # This is the unchanged application runtime emitted by the package build, plus the public facade.
3
+ FROM node:22.23.3-alpine
4
+ WORKDIR /opt/meerkat
5
+ COPY . /package
6
+ RUN cd /package && npm pack --ignore-scripts --pack-destination /opt/meerkat && \
7
+ cd /opt/meerkat && npm install --omit=dev --ignore-scripts --no-audit --no-fund ./*.tgz && \
8
+ rm ./*.tgz && rm -rf /package && \
9
+ mkdir -p node_modules/@mcsherrylabs/pi-meerkat/dist/installer-runtime/state /meerkat/agent && \
10
+ chown -R 1000:1000 node_modules/@mcsherrylabs/pi-meerkat/dist/installer-runtime/state /meerkat
11
+ ENV EVOLVER_IN_CONTAINER=1
12
+ USER 1000:1000
13
+ CMD ["node", "/opt/meerkat/node_modules/@mcsherrylabs/pi-meerkat/dist/installer-runtime/dist/src/app.js"]