@mcsherrylabs/evolver-mcp 0.0.0-stage → 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.
- package/dist/amount.d.ts +20 -0
- package/dist/amount.d.ts.map +1 -0
- package/dist/amount.js +44 -0
- package/dist/amount.js.map +1 -0
- package/dist/bootstrap.d.ts +264 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +901 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/channel.d.ts +78 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +288 -0
- package/dist/channel.js.map +1 -0
- package/dist/claim.d.ts +48 -0
- package/dist/claim.d.ts.map +1 -0
- package/dist/claim.js +81 -0
- package/dist/claim.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +34 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +39 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/content.d.ts +51 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +60 -0
- package/dist/content.js.map +1 -0
- package/dist/group.d.ts +60 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +204 -0
- package/dist/group.js.map +1 -0
- package/dist/identity.d.ts +87 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +230 -0
- package/dist/identity.js.map +1 -0
- package/dist/inbox.d.ts +30 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +95 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +39 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +83 -0
- package/dist/mcp.js.map +1 -0
- package/dist/read.d.ts +175 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +219 -0
- package/dist/read.js.map +1 -0
- package/dist/result.d.ts +110 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +97 -0
- package/dist/result.js.map +1 -0
- package/dist/signer.d.ts +37 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +76 -0
- package/dist/signer.js.map +1 -0
- package/dist/tools.d.ts +44 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +642 -0
- package/dist/tools.js.map +1 -0
- package/dist/write.d.ts +173 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +322 -0
- package/dist/write.js.map +1 -0
- package/package.json +55 -4
- package/README.md +0 -3
package/dist/amount.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The largest amount the wire format carries. Beyond this the node cannot decode the body. */
|
|
2
|
+
export declare const MAX_AMOUNT: bigint;
|
|
3
|
+
export type ParsedAmount = {
|
|
4
|
+
readonly ok: true;
|
|
5
|
+
readonly value: bigint;
|
|
6
|
+
} | {
|
|
7
|
+
readonly ok: false;
|
|
8
|
+
readonly error: string;
|
|
9
|
+
};
|
|
10
|
+
/** Validate and convert an amount as it arrived — a string, from a model.
|
|
11
|
+
*
|
|
12
|
+
* Refusing here is the whole point: it happens BEFORE anything is signed, so a malformed amount
|
|
13
|
+
* costs nothing instead of becoming a transaction that does the wrong thing. */
|
|
14
|
+
export declare function parseAmount(input: string): ParsedAmount;
|
|
15
|
+
/** Render an amount for a result a model will read.
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ `String(Number(v))` is correct below 2^53 and wrong above it, which is what makes the
|
|
18
|
+
* mutation survivable unless a check exercises a large magnitude. */
|
|
19
|
+
export declare const formatAmount: (value: bigint) => string;
|
|
20
|
+
//# sourceMappingURL=amount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount.d.ts","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,eAAO,MAAM,UAAU,QAAmB,CAAC;AAK3C,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD;;;iFAGiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAkBvD;AAED;;;sEAGsE;AACtE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAA4B,CAAC"}
|
package/dist/amount.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Amounts.
|
|
2
|
+
//
|
|
3
|
+
// `bigint` in code, decimal STRING on any wire (Constitution VIII). A tool result is JSON that a
|
|
4
|
+
// model reads, and a JSON number is a double — everything above 2^53 is silently wrong. There is
|
|
5
|
+
// no "small enough to be safe" exception, because the rule is about the type and not the value.
|
|
6
|
+
//
|
|
7
|
+
// ⚠️ Validation is on the STRING, before any conversion, and a range check is NOT enough:
|
|
8
|
+
//
|
|
9
|
+
// BigInt("-1") === -1n and the wire encoder loops `while (v > 0n)`, so a negative amount
|
|
10
|
+
// does not fail to encode — it encodes as a DIFFERENT POSITIVE number
|
|
11
|
+
// BigInt("0x10") === 16n
|
|
12
|
+
// BigInt("") === 0n
|
|
13
|
+
//
|
|
14
|
+
// Each of those is a silent substitution: the caller asked for one thing and a different thing
|
|
15
|
+
// would be signed. So the accepted form is exactly one shape — a canonical positive decimal.
|
|
16
|
+
/** The largest amount the wire format carries. Beyond this the node cannot decode the body. */
|
|
17
|
+
export const MAX_AMOUNT = (1n << 63n) - 1n; // 9223372036854775807
|
|
18
|
+
/** Canonical positive decimal: no sign, no padding, no leading zero, no separators, no exponent. */
|
|
19
|
+
const CANONICAL = /^[1-9][0-9]*$/;
|
|
20
|
+
/** Validate and convert an amount as it arrived — a string, from a model.
|
|
21
|
+
*
|
|
22
|
+
* Refusing here is the whole point: it happens BEFORE anything is signed, so a malformed amount
|
|
23
|
+
* costs nothing instead of becoming a transaction that does the wrong thing. */
|
|
24
|
+
export function parseAmount(input) {
|
|
25
|
+
if (typeof input !== "string")
|
|
26
|
+
return { ok: false, error: `amount must be a decimal string, got ${typeof input}` };
|
|
27
|
+
if (!CANONICAL.test(input))
|
|
28
|
+
return {
|
|
29
|
+
ok: false,
|
|
30
|
+
error: `amount "${input}" is not a positive decimal integer. It must be digits only, with no ` +
|
|
31
|
+
`sign, spaces, decimal point, exponent, separators or leading zeroes — a negative or ` +
|
|
32
|
+
`hex value would not fail to encode, it would encode as a different number.`,
|
|
33
|
+
};
|
|
34
|
+
const value = BigInt(input);
|
|
35
|
+
if (value > MAX_AMOUNT)
|
|
36
|
+
return { ok: false, error: `amount ${input} exceeds the maximum the wire carries (${MAX_AMOUNT})` };
|
|
37
|
+
return { ok: true, value };
|
|
38
|
+
}
|
|
39
|
+
/** Render an amount for a result a model will read.
|
|
40
|
+
*
|
|
41
|
+
* ⚠️ `String(Number(v))` is correct below 2^53 and wrong above it, which is what makes the
|
|
42
|
+
* mutation survivable unless a check exercises a large magnitude. */
|
|
43
|
+
export const formatAmount = (value) => value.toString(10);
|
|
44
|
+
//# sourceMappingURL=amount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,gGAAgG;AAChG,EAAE;AACF,0FAA0F;AAC1F,EAAE;AACF,gGAAgG;AAChG,kGAAkG;AAClG,2BAA2B;AAC3B,0BAA0B;AAC1B,EAAE;AACF,+FAA+F;AAC/F,6FAA6F;AAE7F,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;AAElE,oGAAoG;AACpG,MAAM,SAAS,GAAG,eAAe,CAAC;AAMlC;;;iFAGiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,OAAO,KAAK,EAAE,EAAE,CAAC;IAEtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,WAAW,KAAK,uEAAuE;gBACvF,sFAAsF;gBACtF,4EAA4E;SAC/E,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAG,UAAU;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,0CAA0C,UAAU,GAAG,EAAE,CAAC;IAEtG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;sEAGsE;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { NodeClient } from "@mcsherrylabs/evolver-client";
|
|
2
|
+
import type { Identity, ClaimResult } from "@mcsherrylabs/evolver-client";
|
|
3
|
+
export declare const BOOTSTRAP_FLAG = "--bootstrap";
|
|
4
|
+
export declare const RETRYABLE_CLAIM_ERRORS: readonly ["node_not_ready", "queue_full", "confirmation_timeout", "internal"];
|
|
5
|
+
export declare const DEFAULT_RETRY_MAX = 3;
|
|
6
|
+
/** The one registration name the bootstrap emits (D-01, A9). */
|
|
7
|
+
export declare const DEFAULT_REGISTRATION_NAME = "evolver-mcp";
|
|
8
|
+
/** The built entry the registered launch runs, relative to the repo (A7). */
|
|
9
|
+
export declare const SERVER_ENTRY_REL: string;
|
|
10
|
+
export declare const BOOTSTRAP_USAGE: string;
|
|
11
|
+
export interface ResolveResultPlan {
|
|
12
|
+
readonly target: string;
|
|
13
|
+
readonly chainUrl: string;
|
|
14
|
+
readonly faucetUrl: string;
|
|
15
|
+
}
|
|
16
|
+
export type BootstrapOutcome = {
|
|
17
|
+
readonly kind: "committed";
|
|
18
|
+
readonly blockHeight: number;
|
|
19
|
+
readonly identityName: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: "exists";
|
|
22
|
+
readonly outcome: "exists";
|
|
23
|
+
readonly identityName: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: "already_bootstrapped";
|
|
26
|
+
readonly identityName: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: "partial";
|
|
29
|
+
readonly what: string;
|
|
30
|
+
readonly cause: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "unreachable";
|
|
33
|
+
readonly chain: string;
|
|
34
|
+
readonly cause: string;
|
|
35
|
+
};
|
|
36
|
+
export type ResolveResult = {
|
|
37
|
+
readonly ok: true;
|
|
38
|
+
readonly plan: ResolveResultPlan;
|
|
39
|
+
} | {
|
|
40
|
+
readonly ok: false;
|
|
41
|
+
readonly error: BootstrapOutcome;
|
|
42
|
+
};
|
|
43
|
+
export interface StatePaths {
|
|
44
|
+
readonly dir: string;
|
|
45
|
+
readonly config: string;
|
|
46
|
+
readonly key: string;
|
|
47
|
+
readonly seed: string;
|
|
48
|
+
readonly registration: string;
|
|
49
|
+
readonly claimed: string;
|
|
50
|
+
}
|
|
51
|
+
/** The env the registered launch inherits (BOOT-06, D-01): PATHS and the content URL only —
|
|
52
|
+
* never key bytes, never the seed path, never the faucet/target. */
|
|
53
|
+
export interface RegistrationEnv {
|
|
54
|
+
readonly EVOLVER_KEY_PATH: string;
|
|
55
|
+
readonly EVOLVER_KEY_TYPE: "bls";
|
|
56
|
+
readonly EVOLVER_CONTENT_URL: string;
|
|
57
|
+
}
|
|
58
|
+
export interface GeneratedIdentity {
|
|
59
|
+
readonly identity: Identity;
|
|
60
|
+
readonly digest: Uint8Array;
|
|
61
|
+
readonly blsPop: Uint8Array;
|
|
62
|
+
readonly edPop: Uint8Array;
|
|
63
|
+
}
|
|
64
|
+
export type GenerateResult = {
|
|
65
|
+
readonly kind: "ok";
|
|
66
|
+
readonly value: GeneratedIdentity;
|
|
67
|
+
} | {
|
|
68
|
+
readonly kind: "err";
|
|
69
|
+
readonly error: BootstrapOutcome;
|
|
70
|
+
};
|
|
71
|
+
/** Seed record: the public halves beside the privates, so a resume never derives pub from priv
|
|
72
|
+
* (hand-rolled crypto, T-07-07). The JSON keys are EXACTLY these six. */
|
|
73
|
+
export interface SeedRecord {
|
|
74
|
+
readonly identity: string;
|
|
75
|
+
readonly blsPubBase64: string;
|
|
76
|
+
readonly edPubBase64: string;
|
|
77
|
+
readonly blsPrivBase64: string;
|
|
78
|
+
readonly edPrivBase64: string;
|
|
79
|
+
readonly createdAt: string;
|
|
80
|
+
}
|
|
81
|
+
export interface BootstrapPlan {
|
|
82
|
+
readonly target: string;
|
|
83
|
+
readonly chainUrl: string;
|
|
84
|
+
readonly faucetUrl: string;
|
|
85
|
+
readonly name: string;
|
|
86
|
+
/** argv `--identity` VALUE only: the string when supplied, `false` when derived; `true` only when
|
|
87
|
+
* the explicit value equals the seed's identity. A record of the invocation, never a signal. */
|
|
88
|
+
readonly explicitName: boolean | string;
|
|
89
|
+
/** "explicit" | "seed" | "derived" — step 0's answer; the field the short-circuit branches on. */
|
|
90
|
+
readonly identitySource: "explicit" | "seed" | "derived";
|
|
91
|
+
/** `--force` was passed. */
|
|
92
|
+
readonly force: boolean;
|
|
93
|
+
/** The claim attempt ceiling, resolved from `EVOLVER_BOOTSTRAP_RETRY_MAX` (default 3, clamped 1..5). */
|
|
94
|
+
readonly retryMax: number;
|
|
95
|
+
readonly paths: StatePaths;
|
|
96
|
+
readonly identity: GeneratedIdentity;
|
|
97
|
+
readonly contentUrl: string;
|
|
98
|
+
readonly contentWarning: string;
|
|
99
|
+
/** The command-line working directory (for the `.target`/`.env*` refusal of `--target local`). */
|
|
100
|
+
readonly cwd: string;
|
|
101
|
+
/** The REALPATH'd server entry (`dist/index.js`) — the ONLY canonicalised value; derived once. */
|
|
102
|
+
readonly serverEntry: string;
|
|
103
|
+
/** The launch shape the registration names (checkout `node <entry>` or package `npx …`). */
|
|
104
|
+
readonly entryCommand: EntryCommand;
|
|
105
|
+
/** Derived registration env (D-01): key PATH, key TYPE, content URL — never key bytes. */
|
|
106
|
+
readonly registrationEnv: RegistrationEnv;
|
|
107
|
+
}
|
|
108
|
+
export interface FsLike {
|
|
109
|
+
mkdir(path: string, opts: {
|
|
110
|
+
recursive: true;
|
|
111
|
+
mode: number;
|
|
112
|
+
}): void;
|
|
113
|
+
chmod(path: string, mode: number): void;
|
|
114
|
+
lstat(path: string): {
|
|
115
|
+
isSymbolicLink(): boolean;
|
|
116
|
+
};
|
|
117
|
+
writeFile(path: string, data: string | Uint8Array, opts: {
|
|
118
|
+
mode: number;
|
|
119
|
+
}): void;
|
|
120
|
+
rename(from: string, to: string): void;
|
|
121
|
+
readdir(path: string): string[];
|
|
122
|
+
readFile(path: string, encoding: "utf8"): string;
|
|
123
|
+
exists(path: string): boolean;
|
|
124
|
+
}
|
|
125
|
+
export interface BootstrapDeps {
|
|
126
|
+
readonly fs?: Partial<FsLike>;
|
|
127
|
+
readonly randomBytes?: (n: number) => Uint8Array;
|
|
128
|
+
readonly homedir?: () => string;
|
|
129
|
+
readonly now?: () => Date;
|
|
130
|
+
readonly sleep?: (ms: number) => Promise<void>;
|
|
131
|
+
readonly clientFactory?: (baseUrl: string) => NodeClient;
|
|
132
|
+
readonly getIdentityBaseUrl?: () => string | undefined;
|
|
133
|
+
readonly mintIdentity?: (name: string) => Identity;
|
|
134
|
+
/** The possibly-symlinked built entry path, before canonicalisation (used ONLY in runBootstrap's
|
|
135
|
+
* one-line entry computation). */
|
|
136
|
+
readonly serverEntryPath?: () => string;
|
|
137
|
+
/** Canonicalise the entry (used ONLY on the entry — never on the state dir, config or key). */
|
|
138
|
+
readonly realpath?: (p: string) => string;
|
|
139
|
+
}
|
|
140
|
+
export declare function resolveTarget(env: NodeJS.ProcessEnv, argvTarget: string | undefined, chainName: string | undefined, cwd: string): ResolveResult;
|
|
141
|
+
export declare function stateDirFor(env: NodeJS.ProcessEnv, target: string, homedir: string): {
|
|
142
|
+
ok: true;
|
|
143
|
+
dir: string;
|
|
144
|
+
} | {
|
|
145
|
+
ok: false;
|
|
146
|
+
reason: string;
|
|
147
|
+
};
|
|
148
|
+
/** Name the files. `identity` is the identity ACTUALLY in play (seed's name on resume, argv value on
|
|
149
|
+
* a fresh run, derived name otherwise). The dir is chosen by `stateDirFor`, never here. */
|
|
150
|
+
export declare function statePaths(stateDir: string, identity: string): StatePaths;
|
|
151
|
+
export type ParsedArgs = {
|
|
152
|
+
readonly ok: true;
|
|
153
|
+
readonly target?: string;
|
|
154
|
+
readonly identity?: string;
|
|
155
|
+
readonly force: boolean;
|
|
156
|
+
} | {
|
|
157
|
+
readonly ok: false;
|
|
158
|
+
readonly error: string;
|
|
159
|
+
};
|
|
160
|
+
export declare function parseBootstrapArgs(args: string[]): ParsedArgs;
|
|
161
|
+
export declare function generateBootstrapIdentity(name: string, mint?: (name: string) => Identity): GenerateResult;
|
|
162
|
+
export declare function seedFor(seed: SeedRecord): string;
|
|
163
|
+
export declare function keyFileFor(identity: Identity): string;
|
|
164
|
+
export declare function configFor(opts: {
|
|
165
|
+
name: string;
|
|
166
|
+
chainUrl: string;
|
|
167
|
+
}): string;
|
|
168
|
+
export declare function identityFromSeed(seed: SeedRecord): Identity;
|
|
169
|
+
export type ReadSeedResult = {
|
|
170
|
+
readonly ok: true;
|
|
171
|
+
readonly seed: SeedRecord;
|
|
172
|
+
} | {
|
|
173
|
+
readonly ok: false;
|
|
174
|
+
readonly reason: string;
|
|
175
|
+
};
|
|
176
|
+
export declare function readSeed(fs: FsLike, seedPath: string): ReadSeedResult;
|
|
177
|
+
export declare function listClaimed(fs: FsLike, dir: string): string[];
|
|
178
|
+
export declare function retryMax(env: NodeJS.ProcessEnv): number;
|
|
179
|
+
export declare function claimWithRetries(client: NodeClient, gen: GeneratedIdentity, max: number, sleep: (ms: number) => Promise<void>): Promise<{
|
|
180
|
+
attempts: number;
|
|
181
|
+
result: ClaimResult;
|
|
182
|
+
}>;
|
|
183
|
+
export declare function exitCodeFor(outcome: BootstrapOutcome): number;
|
|
184
|
+
export declare function writeState(fs: FsLike, paths: StatePaths, configContent: string, seedContent: string, keyContent: string): BootstrapOutcome | null;
|
|
185
|
+
export declare function writeClaimedMarker(fs: FsLike, claimedPath: string, marker: {
|
|
186
|
+
identity: string;
|
|
187
|
+
outcome: string;
|
|
188
|
+
blockHeight?: number;
|
|
189
|
+
claimedAt: string;
|
|
190
|
+
}): BootstrapOutcome | null;
|
|
191
|
+
export type AdoptResult = {
|
|
192
|
+
readonly ok: true;
|
|
193
|
+
} | {
|
|
194
|
+
readonly ok: false;
|
|
195
|
+
readonly cause: string;
|
|
196
|
+
readonly transport?: boolean;
|
|
197
|
+
};
|
|
198
|
+
export declare function adoptExisting(client: NodeClient, name: string, identity: Identity): Promise<AdoptResult>;
|
|
199
|
+
export declare function planBootstrap(env: NodeJS.ProcessEnv, argv: string[], cwd: string, deps: BootstrapDeps): {
|
|
200
|
+
ok: true;
|
|
201
|
+
plan: BootstrapPlan;
|
|
202
|
+
} | {
|
|
203
|
+
ok: false;
|
|
204
|
+
error: BootstrapOutcome;
|
|
205
|
+
};
|
|
206
|
+
/** The content warning (D-03): stated on every state-writing run, never blocks. */
|
|
207
|
+
export declare function renderWarnings(target: string, contentUrl: string): string[];
|
|
208
|
+
/** The stdio mcpServers entry `deriveRegistration` produces. */
|
|
209
|
+
export interface Registration {
|
|
210
|
+
readonly mcpServers: {
|
|
211
|
+
readonly "evolver-mcp": {
|
|
212
|
+
readonly type: "stdio";
|
|
213
|
+
readonly command: string;
|
|
214
|
+
readonly args: ReadonlyArray<string>;
|
|
215
|
+
readonly env: RegistrationEnv;
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/** The launch shape the registration names. Default (package mode OFF) is `node <realpath entry>`;
|
|
220
|
+
* package mode (ON) is the verbatim split of `EVOLVER_MCP_ENTRY_COMMAND` (e.g. `npx -y
|
|
221
|
+
* @mcsherrylabs/evolver-mcp`). The `--config <config>` tail is appended by the caller. */
|
|
222
|
+
export interface EntryCommand {
|
|
223
|
+
readonly command: string;
|
|
224
|
+
readonly args: ReadonlyArray<string>;
|
|
225
|
+
}
|
|
226
|
+
/** Split the `EVOLVER_MCP_ENTRY_COMMAND` value into `{command, args}` on whitespace, collapsing runs.
|
|
227
|
+
* Empty/whitespace-only yields `args: []` (an empty command is invalid and rejected by planBootstrap). */
|
|
228
|
+
export declare function splitEntryCommand(value: string): {
|
|
229
|
+
command: string;
|
|
230
|
+
args: string[];
|
|
231
|
+
};
|
|
232
|
+
/** The launch shape for a checkout run: `node <realpath entry>`. */
|
|
233
|
+
export declare function checkoutEntryCommand(serverEntry: string): EntryCommand;
|
|
234
|
+
/** Derive the one harness registration as data (BOOT-06/D-01). The entry is the REALPATH'd server
|
|
235
|
+
* entry (default) OR a package-mode command (`npx -y @mcsherrylabs/evolver-mcp`) from
|
|
236
|
+
* `EVOLVER_MCP_ENTRY_COMMAND`. `plan.paths.config`/`key` and the content URL are serialised
|
|
237
|
+
* BYTE-FOR-BYTE as given (D-04/G2: verbatim state paths). Never key bytes, never the seed path,
|
|
238
|
+
* never the faucet. */
|
|
239
|
+
export declare function deriveRegistration(plan: Pick<BootstrapPlan, "paths" | "registrationEnv">, entryCommand: EntryCommand): Registration;
|
|
240
|
+
/** The `claude mcp add` argv (scope user, transport stdio, env pairs, then the entry command). */
|
|
241
|
+
export declare function claudeAddCommand(plan: Pick<BootstrapPlan, "paths" | "registrationEnv">, entryCommand: EntryCommand): string[];
|
|
242
|
+
/** The `claude mcp add-json` argv carrying the whole entry object as its JSON payload. */
|
|
243
|
+
export declare function addJsonCommand(reg: Registration): string[];
|
|
244
|
+
/** Shell-quote one argv word for display: leave a safe token bare, else single-quote (escaping `'`
|
|
245
|
+
* as `'\''`). */
|
|
246
|
+
export declare function quoteArg(s: string): string;
|
|
247
|
+
/** The human-facing registration block: a header, the named artefacts, the two exact commands
|
|
248
|
+
* (via-flag and via-json), and the statement that the bootstrap prints them and never runs them. */
|
|
249
|
+
export declare function registrationLines(plan: Pick<BootstrapPlan, "paths" | "registrationEnv">, entryCommand: EntryCommand): string[];
|
|
250
|
+
/** The opt-in live devnet gate: enabled only when `EVOLVER_BOOTSTRAP_LIVE === "1"`; the base URL is
|
|
251
|
+
* `EVOLVER_DEVNET_URL` or the devnet default. Never on `npm test` (the var is unset there). */
|
|
252
|
+
export declare function liveGate(env: NodeJS.ProcessEnv): {
|
|
253
|
+
readonly enabled: boolean;
|
|
254
|
+
readonly baseUrl: string;
|
|
255
|
+
};
|
|
256
|
+
export declare function defaultDeps(): Required<BootstrapDeps>;
|
|
257
|
+
export declare function executeBootstrap(plan: BootstrapPlan, deps: BootstrapDeps): Promise<BootstrapOutcome>;
|
|
258
|
+
export declare function runBootstrap(argv: string[], env: NodeJS.ProcessEnv, deps?: BootstrapDeps): Promise<{
|
|
259
|
+
exitCode: number;
|
|
260
|
+
output: string;
|
|
261
|
+
toStderr: boolean;
|
|
262
|
+
}>;
|
|
263
|
+
export declare function hasBootstrapFlag(args: string[]): boolean;
|
|
264
|
+
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|