@artblocks/abx-cli 0.1.0-alpha.3 → 0.1.0-alpha.30
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 +3663 -0
- package/assets/renderer-scaffold/README.md +2 -2
- package/assets/renderer-scaffold/src/MyRenderer.sol +2 -2
- package/assets/renderer-scaffold/src/interfaces/IAbxFieldRenderer.sol +1 -1
- package/assets/renderer-scaffold/src/interfaces/IAbxParams.sol +17 -0
- package/assets/renderer-scaffold/test/MyRenderer.t.sol +51 -2
- package/dist/commands/deploy.d.ts +242 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +4764 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/project.d.ts +257 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +1299 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/reads.d.ts +64 -0
- package/dist/commands/reads.d.ts.map +1 -0
- package/dist/commands/reads.js +701 -0
- package/dist/commands/reads.js.map +1 -0
- package/dist/commands/scaffold.d.ts +73 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +674 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/service.d.ts +41 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +618 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/storage.d.ts +51 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +370 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/submit-app.d.ts +58 -0
- package/dist/commands/submit-app.d.ts.map +1 -0
- package/dist/commands/submit-app.js +512 -0
- package/dist/commands/submit-app.js.map +1 -0
- package/dist/config.d.ts +90 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +285 -11
- package/dist/config.js.map +1 -1
- package/dist/conformance.d.ts +31 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +393 -0
- package/dist/conformance.js.map +1 -0
- package/dist/deps.d.ts +6 -39
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +4 -68
- package/dist/deps.js.map +1 -1
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/flag-allowlists.d.ts +53 -0
- package/dist/flag-allowlists.d.ts.map +1 -0
- package/dist/flag-allowlists.js +157 -0
- package/dist/flag-allowlists.js.map +1 -0
- package/dist/flags.d.ts +45 -0
- package/dist/flags.d.ts.map +1 -1
- package/dist/flags.js +117 -1
- package/dist/flags.js.map +1 -1
- package/dist/jsonout.d.ts +37 -0
- package/dist/jsonout.d.ts.map +1 -0
- package/dist/jsonout.js +68 -0
- package/dist/jsonout.js.map +1 -0
- package/dist/kind.d.ts +61 -0
- package/dist/kind.d.ts.map +1 -0
- package/dist/kind.js +111 -0
- package/dist/kind.js.map +1 -0
- package/dist/main.js +699 -4736
- package/dist/main.js.map +1 -1
- package/dist/mintpage.d.ts +17 -2
- package/dist/mintpage.d.ts.map +1 -1
- package/dist/mintpage.js +241 -54
- package/dist/mintpage.js.map +1 -1
- package/dist/output.d.ts +179 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +756 -0
- package/dist/output.js.map +1 -0
- package/dist/ownerops.d.ts +302 -51
- package/dist/ownerops.d.ts.map +1 -1
- package/dist/ownerops.js +1780 -357
- package/dist/ownerops.js.map +1 -1
- package/dist/preview.d.ts +81 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +535 -0
- package/dist/preview.js.map +1 -0
- package/dist/prompt.d.ts +17 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +19 -0
- package/dist/prompt.js.map +1 -0
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +16 -8
- package/dist/provision.js.map +1 -1
- package/dist/remote.d.ts +153 -52
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +406 -46
- package/dist/remote.js.map +1 -1
- package/dist/riskgate.d.ts +58 -0
- package/dist/riskgate.d.ts.map +1 -0
- package/dist/riskgate.js +212 -0
- package/dist/riskgate.js.map +1 -0
- package/dist/scaffold.d.ts +10 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +52 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema.d.ts +36 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +121 -26
- package/dist/schema.js.map +1 -1
- package/dist/script-chunks.d.ts +8 -0
- package/dist/script-chunks.d.ts.map +1 -0
- package/dist/script-chunks.js +35 -0
- package/dist/script-chunks.js.map +1 -0
- package/dist/served.d.ts +30 -0
- package/dist/served.d.ts.map +1 -0
- package/dist/served.js +112 -0
- package/dist/served.js.map +1 -0
- package/dist/signer.d.ts +13 -0
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +84 -15
- package/dist/signer.js.map +1 -1
- package/dist/update-check.d.ts +83 -4
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +140 -19
- package/dist/update-check.js.map +1 -1
- package/package.json +10 -6
- package/skill/SKILL.md +350 -150
- package/skill/reference/code-projects.md +183 -26
- package/skill/reference/creator-token.md +99 -0
- package/skill/reference/decisions.md +174 -0
- package/skill/reference/hosting.md +63 -19
- package/skill/reference/operating.md +116 -12
- package/skill/reference/setup.md +55 -6
- package/skill/reference/troubleshooting.md +42 -5
- package/dist/inspect.d.ts +0 -48
- package/dist/inspect.d.ts.map +0 -1
- package/dist/inspect.js +0 -184
- package/dist/inspect.js.map +0 -1
- package/dist/migrate.d.ts +0 -65
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js +0 -180
- package/dist/migrate.js.map +0 -1
- package/dist/onchain-uri.d.ts +0 -97
- package/dist/onchain-uri.d.ts.map +0 -1
- package/dist/onchain-uri.js +0 -243
- package/dist/onchain-uri.js.map +0 -1
- package/dist/upload.d.ts +0 -28
- package/dist/upload.d.ts.map +0 -1
- package/dist/upload.js +0 -41
- package/dist/upload.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI wrapper around the SDK's newline-aware script splitter. Parses the program (so a SyntaxError
|
|
3
|
+
* cannot ship under a green verify) and encodes chunks for `setScriptChunk`.
|
|
4
|
+
*/
|
|
5
|
+
import vm from 'node:vm';
|
|
6
|
+
import { toHex } from 'viem';
|
|
7
|
+
import { joinScriptChunks, splitScriptChunks } from '@artblocks/abx-sdk';
|
|
8
|
+
/**
|
|
9
|
+
* Plan the on-chain script chunks for a template-mode deploy. The generator joins with `'\n'`;
|
|
10
|
+
* {@link splitScriptChunks} splits so that join is byte-identical to `source`. A program that does
|
|
11
|
+
* not parse — before OR after that join — is refused here, because `abx verify` does not parse it.
|
|
12
|
+
*/
|
|
13
|
+
export function planOnChainScript(source) {
|
|
14
|
+
assertScriptParses(source, 'the script on disk');
|
|
15
|
+
const parts = splitScriptChunks(source);
|
|
16
|
+
const joined = joinScriptChunks(parts);
|
|
17
|
+
if (joined !== source) {
|
|
18
|
+
throw new Error('internal: script chunks do not reassemble to the source. The on-chain generator joins ' +
|
|
19
|
+
'chunks with a newline; this is a toolkit bug, not something to work around.');
|
|
20
|
+
}
|
|
21
|
+
return parts.map((b) => toHex(b));
|
|
22
|
+
}
|
|
23
|
+
function assertScriptParses(source, what) {
|
|
24
|
+
try {
|
|
25
|
+
// Classic script (not a module). On-chain programs do not `import`; deps ride as <script> tags.
|
|
26
|
+
new vm.Script(source, { filename: 'script.js' });
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
30
|
+
throw new Error(`${what} does not parse as JavaScript (${msg}). The generator joins chunks with a newline — ` +
|
|
31
|
+
'a split mid-token becomes a syntax error on chain, and verify would still go green. ' +
|
|
32
|
+
'Fix the script (or break long lines) before deploying.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=script-chunks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-chunks.js","sourceRoot":"","sources":["../src/script-chunks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,KAAK,EAAW,MAAM,MAAM,CAAC;AACrC,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,wFAAwF;YACtF,6EAA6E,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,IAAY;IACtD,IAAI,CAAC;QACH,gGAAgG;QAChG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,kCAAkC,GAAG,iDAAiD;YAC3F,sFAAsF;YACtF,wDAAwD,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/served.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface ServedTokenUri {
|
|
2
|
+
/** The URL followed, verbatim from the contract. `null` when the tokenURI isn't fetchable. */
|
|
3
|
+
url: string | null;
|
|
4
|
+
/** Why there was nothing to fetch, when there was nothing to fetch. */
|
|
5
|
+
skipped: string | null;
|
|
6
|
+
status: number | null;
|
|
7
|
+
contentType: string | null;
|
|
8
|
+
/** The response body as text, untruncated. `null` when the request never completed. */
|
|
9
|
+
body: string | null;
|
|
10
|
+
/** Transport-level failure (DNS, refused, timeout) — distinct from a served error status. */
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface FetchServedOptions {
|
|
14
|
+
timeoutMs?: number;
|
|
15
|
+
fetchFn?: typeof fetch;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Follow a `tokenURI` and return what came back.
|
|
19
|
+
*
|
|
20
|
+
* A `data:` URI is **not** an error here — it IS the document, and a fully-on-chain project's whole
|
|
21
|
+
* point is that there is no server to ask. Saying so plainly is the honest answer; reporting it as a
|
|
22
|
+
* failure would punish the strongest configuration the protocol offers.
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchServedTokenUri(uri: string, opts?: FetchServedOptions): Promise<ServedTokenUri>;
|
|
25
|
+
/** Whether the served answer is one a marketplace could actually use. */
|
|
26
|
+
export declare function servedOk(served: ServedTokenUri): boolean;
|
|
27
|
+
/** Pretty-print a served body when it is JSON, else return it unchanged. Never throws. */
|
|
28
|
+
export declare function prettyBody(body: string | null): string;
|
|
29
|
+
export declare function decodeOnChainJson(uri: string, verbatim?: boolean): string | null;
|
|
30
|
+
//# sourceMappingURL=served.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"served.d.ts","sourceRoot":"","sources":["../src/served.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,8FAA8F;IAC9F,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uFAAuF;IACvF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAID;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsC7G;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAExD;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOtD;AAKD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,GAAG,IAAI,CAqB9E"}
|
package/dist/served.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a URL-valued `tokenURI` **actually returns** — the served answer, not the pointer.
|
|
3
|
+
*
|
|
4
|
+
* Backlog B14. `abx tokenuri` read the chain, `abx verify` re-hashed bytes, `abx status` reported the
|
|
5
|
+
* indexing lifecycle — each a different slice, none of them the served JSON body. An agent in a cold
|
|
6
|
+
* sweep fell back to raw `curl` for exactly this, which is the tell that a command was missing.
|
|
7
|
+
*
|
|
8
|
+
* It also answers the question a *warning* couldn't. "Nothing tells you the provider you registered
|
|
9
|
+
* with isn't the base baked on-chain" is real, but the obvious check — compare the remote's base URL
|
|
10
|
+
* to the on-chain one — false-positives on the common custom-domain case (a baked `meta.creator.xyz`
|
|
11
|
+
* fronting `api.provider.xyz`), and a warning that cries wolf on the correct setup is worse than none.
|
|
12
|
+
* Fetching what the **baked** base serves makes the mismatch self-evident instead: you see the other
|
|
13
|
+
* provider's 404, or another project's document.
|
|
14
|
+
*
|
|
15
|
+
* Lives in its own module because `main.ts` exports nothing (it runs `main()` unconditionally), so
|
|
16
|
+
* anything that needs a test seam has to be extracted — the same reason `scaffold.ts` exists.
|
|
17
|
+
*/
|
|
18
|
+
import { parseDataUri } from '@artblocks/abx-sdk';
|
|
19
|
+
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
20
|
+
/**
|
|
21
|
+
* Follow a `tokenURI` and return what came back.
|
|
22
|
+
*
|
|
23
|
+
* A `data:` URI is **not** an error here — it IS the document, and a fully-on-chain project's whole
|
|
24
|
+
* point is that there is no server to ask. Saying so plainly is the honest answer; reporting it as a
|
|
25
|
+
* failure would punish the strongest configuration the protocol offers.
|
|
26
|
+
*/
|
|
27
|
+
export async function fetchServedTokenUri(uri, opts = {}) {
|
|
28
|
+
if (!/^https?:\/\//i.test(uri)) {
|
|
29
|
+
return {
|
|
30
|
+
url: null,
|
|
31
|
+
skipped: uri.startsWith('data:')
|
|
32
|
+
? 'the tokenURI IS the document (a data: URI) — it resolves on-chain, so there is no server to ask'
|
|
33
|
+
: `the tokenURI is not an http(s) URL (${uri.slice(0, 40)}…) — nothing to fetch`,
|
|
34
|
+
status: null,
|
|
35
|
+
contentType: null,
|
|
36
|
+
body: null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const doFetch = opts.fetchFn ?? fetch;
|
|
40
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
41
|
+
const ctrl = new AbortController();
|
|
42
|
+
const timer = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
43
|
+
try {
|
|
44
|
+
const res = await doFetch(uri, { signal: ctrl.signal, redirect: 'follow' });
|
|
45
|
+
return {
|
|
46
|
+
url: uri,
|
|
47
|
+
skipped: null,
|
|
48
|
+
status: res.status,
|
|
49
|
+
contentType: res.headers.get('content-type'),
|
|
50
|
+
body: await res.text(),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const aborted = err.name === 'AbortError' || ctrl.signal.aborted;
|
|
55
|
+
return {
|
|
56
|
+
url: uri,
|
|
57
|
+
skipped: null,
|
|
58
|
+
status: null,
|
|
59
|
+
contentType: null,
|
|
60
|
+
body: null,
|
|
61
|
+
error: aborted ? `no response in ${timeoutMs}ms` : err.message,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Whether the served answer is one a marketplace could actually use. */
|
|
69
|
+
export function servedOk(served) {
|
|
70
|
+
return served.status !== null && served.status >= 200 && served.status < 300;
|
|
71
|
+
}
|
|
72
|
+
/** Pretty-print a served body when it is JSON, else return it unchanged. Never throws. */
|
|
73
|
+
export function prettyBody(body) {
|
|
74
|
+
if (!body)
|
|
75
|
+
return '';
|
|
76
|
+
try {
|
|
77
|
+
return JSON.stringify(JSON.parse(body), null, 2);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return body; // not JSON — a provider's HTML error page is still worth seeing verbatim
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Read tokenURI(id) STRAIGHT FROM THE CONTRACT on-chain (no server, no node) and decode
|
|
84
|
+
// the data: URI. For a fully on-chain token (`--onchain-uri`), this is the proof it
|
|
85
|
+
// self-resolves: the renderer assembles the JSON on-chain; any RPC returns it.
|
|
86
|
+
export function decodeOnChainJson(uri, verbatim = false) {
|
|
87
|
+
const parsed = parseDataUri(uri);
|
|
88
|
+
if (!parsed || parsed.mime !== 'application/json')
|
|
89
|
+
return null;
|
|
90
|
+
const raw = parsed.base64 ? Buffer.from(parsed.body, 'base64').toString('utf8') : decodeURIComponent(parsed.body);
|
|
91
|
+
try {
|
|
92
|
+
const obj = JSON.parse(raw);
|
|
93
|
+
// `verbatim` (--json) returns the document EXACTLY as the chain assembled it. Everything below is
|
|
94
|
+
// a courtesy for human eyes, and abbreviating for eyes is fine — abbreviating for a PROGRAM is
|
|
95
|
+
// not. An integrator scraped this output, got a `data:` URI cut to 96 chars that still looked
|
|
96
|
+
// valid, and stored it; the only way to read their own token was to reimplement `eth_call`.
|
|
97
|
+
if (verbatim)
|
|
98
|
+
return JSON.stringify(obj, null, 2);
|
|
99
|
+
for (const k of Object.keys(obj)) {
|
|
100
|
+
const v = obj[k];
|
|
101
|
+
// Truncate only huge inline `data:` blobs (base64 SVGs/images); show plain locator URLs
|
|
102
|
+
// (http/ipfs/ar) IN FULL so the creator can verify where the image actually resolves.
|
|
103
|
+
if (typeof v === 'string' && v.startsWith('data:') && v.length > 96)
|
|
104
|
+
obj[k] = `${v.slice(0, 96)}… (${v.length} chars) [--json for the full value]`;
|
|
105
|
+
}
|
|
106
|
+
return JSON.stringify(obj, null, 2);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return verbatim ? raw : raw.slice(0, 600);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=served.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"served.js","sourceRoot":"","sources":["../src/served.ts"],"names":[],"mappings":"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"}
|
package/dist/signer.d.ts
CHANGED
|
@@ -41,6 +41,19 @@ export interface SignResult {
|
|
|
41
41
|
* caller hands the printed tx to an external signer).
|
|
42
42
|
*/
|
|
43
43
|
export declare function signTx(provider: TxProvider, opts: SignOptions): Promise<SignResult | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Sign + broadcast a SEQUENCE of prepared txs on the hot lane, in order — the hot-lane sibling of
|
|
46
|
+
* the wallet lane's `openWalletSession({total: N})` (one session, N approvals) and the cold lane's
|
|
47
|
+
* per-tx `signTx` loop (see e.g. `deploy-code`'s cold-lane branch in main.ts). One
|
|
48
|
+
* {@link makeHotSender} for the whole sequence, so the nonce is pinned once and gas is re-checked
|
|
49
|
+
* per tx against the target a PRIOR tx in this same sequence may just have created (a multi-tx code
|
|
50
|
+
* deploy: the setup multicall targets the clone the deploy tx just made). Replaces what used to be
|
|
51
|
+
* a hand-rolled nonce/gas loop at the one call site that needed it.
|
|
52
|
+
*/
|
|
53
|
+
export declare function signHotSequence(txs: PreparedTx[], opts: {
|
|
54
|
+
chainKey: string;
|
|
55
|
+
yes?: boolean;
|
|
56
|
+
}): Promise<SignResult[]>;
|
|
44
57
|
/**
|
|
45
58
|
* The one sign-page implementation behind the whole wallet lane — single owner ops AND
|
|
46
59
|
* multi-tx staged deploys both run through it ({@link signWallet} just opens one with
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAGA,OAAO,EASL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,MAAM,CAAC;AAG7C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhD,uGAAuG;AACvG,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAE9F,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;gGAC4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAShG;AA+BD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBvH;AAiFD;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,8FAA8F;IAC9F,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,6FAA6F;IAC7F,IAAI,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C;oGACgG;IAChG,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,yEAAyE;IACzE,KAAK,IAAI,IAAI,CAAC;CACf;AASD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CA8J1F"}
|
package/dist/signer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createServer } from 'node:http';
|
|
2
2
|
import { writeFileSync } from 'node:fs';
|
|
3
|
-
import { makePublicClient, makeWalletClient, resolveChain, } from '@artblocks/abx-sdk';
|
|
3
|
+
import { makeHotSender, makePublicClient, makeWalletClient, pinGas, resolveChain, runPrepared, sleep, waitForCodeAt, } from '@artblocks/abx-sdk';
|
|
4
|
+
import { faucetHint } from './config.js';
|
|
4
5
|
/** Announce the wallet sign-page URL: a stable, greppable line for humans/agents, plus an
|
|
5
6
|
* optional file write so a backgrounding agent can read the URL without parsing stdout. */
|
|
6
7
|
function announceSignUrl(signUrl, file) {
|
|
@@ -31,7 +32,6 @@ function explorerFor(chainKey) {
|
|
|
31
32
|
async function resolveTx(provider, signer) {
|
|
32
33
|
return typeof provider === 'function' ? await provider(signer) : provider;
|
|
33
34
|
}
|
|
34
|
-
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
35
35
|
/**
|
|
36
36
|
* Bind the sign page to a *fresh* port, robustly.
|
|
37
37
|
*
|
|
@@ -64,7 +64,7 @@ async function listenAvailable(server, preferred) {
|
|
|
64
64
|
for (let i = 0; i < 6; i++) {
|
|
65
65
|
if (await tryListen(preferred))
|
|
66
66
|
return preferred;
|
|
67
|
-
await
|
|
67
|
+
await sleep(300);
|
|
68
68
|
}
|
|
69
69
|
// Still held (a stuck/abandoned session) → don't block or crash; take a fresh ephemeral port.
|
|
70
70
|
if (await tryListen(0))
|
|
@@ -107,17 +107,46 @@ async function signHot(provider, opts) {
|
|
|
107
107
|
console.log(`\n ${C.orange}⚠${C.reset} env key ${account.address} is not the expected signer ${opts.expectedSigner} — this will likely revert.`);
|
|
108
108
|
}
|
|
109
109
|
console.log(`\n ${dim(`signing with env key ${account.address} …`)}`);
|
|
110
|
-
|
|
110
|
+
// makeHotSender pins the gas (rather than letting viem re-estimate at send time — see
|
|
111
|
+
// execute.ts's pinGas for why an estimate can come back as the calldata cost alone and silently
|
|
112
|
+
// underfund a CREATE) and throws a typed error on a `reverted` receipt instead of reporting a
|
|
113
|
+
// burned transaction as "confirmed".
|
|
114
|
+
const send = makeHotSender({ wallet, account, publicClient });
|
|
115
|
+
const receipt = await send(prepared);
|
|
116
|
+
console.log(` ${dim('tx')} ${explorerFor(opts.chainKey)}/tx/${receipt.transactionHash}`);
|
|
117
|
+
console.log(` ${green('✓')} confirmed`);
|
|
118
|
+
return { txHash: receipt.transactionHash, prepared, blockNumber: receipt.blockNumber };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Sign + broadcast a SEQUENCE of prepared txs on the hot lane, in order — the hot-lane sibling of
|
|
122
|
+
* the wallet lane's `openWalletSession({total: N})` (one session, N approvals) and the cold lane's
|
|
123
|
+
* per-tx `signTx` loop (see e.g. `deploy-code`'s cold-lane branch in main.ts). One
|
|
124
|
+
* {@link makeHotSender} for the whole sequence, so the nonce is pinned once and gas is re-checked
|
|
125
|
+
* per tx against the target a PRIOR tx in this same sequence may just have created (a multi-tx code
|
|
126
|
+
* deploy: the setup multicall targets the clone the deploy tx just made). Replaces what used to be
|
|
127
|
+
* a hand-rolled nonce/gas loop at the one call site that needed it.
|
|
128
|
+
*/
|
|
129
|
+
export async function signHotSequence(txs, opts) {
|
|
130
|
+
if (!TESTNETS.has(opts.chainKey) && !opts.yes) {
|
|
131
|
+
throw new Error(`Refusing to sign on '${opts.chainKey}' with the env key without --yes. ` +
|
|
132
|
+
`For real value, prefer the wallet lane (--sign) so the key never touches this process.`);
|
|
133
|
+
}
|
|
134
|
+
const { wallet, account } = makeWalletClient({ chainKey: opts.chainKey });
|
|
135
|
+
const publicClient = makePublicClient({ chainKey: opts.chainKey });
|
|
136
|
+
console.log(`\n ${dim(`signing ${txs.length} transaction(s) with env key ${account.address} …`)}`);
|
|
137
|
+
const send = makeHotSender({
|
|
138
|
+
wallet,
|
|
111
139
|
account,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
140
|
+
publicClient,
|
|
141
|
+
onEvent: (e) => {
|
|
142
|
+
if (e.kind === 'sending')
|
|
143
|
+
console.log(` ${purple('◆')} ${bold(e.tx.summary)}`);
|
|
144
|
+
else
|
|
145
|
+
console.log(` ${dim('tx')} ${explorerFor(opts.chainKey)}/tx/${e.receipt.transactionHash} ${green('✓')} confirmed`);
|
|
146
|
+
},
|
|
116
147
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
console.log(` ${green('✓')} confirmed`);
|
|
120
|
-
return { txHash, prepared, blockNumber: receipt.blockNumber };
|
|
148
|
+
const receipts = await runPrepared(txs, send);
|
|
149
|
+
return receipts.map((receipt, i) => ({ txHash: receipt.transactionHash, prepared: txs[i], blockNumber: receipt.blockNumber }));
|
|
121
150
|
}
|
|
122
151
|
// ── cold lane: print the tx for an external signer ───────────────────────────
|
|
123
152
|
async function signCold(provider, opts) {
|
|
@@ -127,11 +156,30 @@ async function signCold(provider, opts) {
|
|
|
127
156
|
const prepared = await resolveTx(provider, opts.expectedSigner ?? '0x0000000000000000000000000000000000000000');
|
|
128
157
|
printIntent(prepared, opts);
|
|
129
158
|
console.log(`\n ${bold('unsigned transaction')} ${dim('— sign + broadcast this with your own signer (multisig / offline):')}\n`);
|
|
130
|
-
console.log(JSON.stringify({
|
|
159
|
+
console.log(JSON.stringify({
|
|
160
|
+
to: prepared.to,
|
|
161
|
+
data: prepared.data,
|
|
162
|
+
value: prepared.value,
|
|
163
|
+
chainId: prepared.chainId,
|
|
164
|
+
// NOT a gas limit — a floor the external signer's own estimate must clear. Emitting it as
|
|
165
|
+
// `gas` would be wrong: it covers only the provable code-deposit cost, not the schema /
|
|
166
|
+
// dependency / mint legs riding the same multicall, so a signer that used it verbatim would
|
|
167
|
+
// under-fund the transaction. See execute.ts.
|
|
168
|
+
...(prepared.gasFloor ? { gasMustExceed: prepared.gasFloor } : {}),
|
|
169
|
+
}, null, 2)
|
|
131
170
|
.split('\n')
|
|
132
171
|
.map((l) => ' ' + l)
|
|
133
172
|
.join('\n'));
|
|
134
|
-
|
|
173
|
+
if (prepared.gasFloor) {
|
|
174
|
+
console.log(`\n ${C.orange}⚠${C.reset} ${bold('gasMustExceed')} ${dim('is a floor, not a limit.')} This tx stores bytes on-chain, which costs\n` +
|
|
175
|
+
` 200 gas/byte in code deposit alone. If your signer's gas estimate comes back BELOW ${BigInt(prepared.gasFloor)},\n` +
|
|
176
|
+
` it is estimating against stale state (the target contract not visible yet) — re-estimate rather than\n` +
|
|
177
|
+
` sending, or it reverts ${bold('DeploymentFailed()')} and the gas is lost.`);
|
|
178
|
+
}
|
|
179
|
+
// `index` alone fails on a node that never registered the project ("isn't indexed by this node"),
|
|
180
|
+
// which is the common case for an unsigned tx handed to someone else's signer. `add` is idempotent
|
|
181
|
+
// and registers + indexes, so naming it first works from either state.
|
|
182
|
+
console.log(`\n ${dim('Then run')} ${bold('abx add <address>')} ${dim('(or')} ${bold('abx index <address>')} ${dim('if this node already tracks it) to reflect it once mined.')}\n`);
|
|
135
183
|
return null;
|
|
136
184
|
}
|
|
137
185
|
// ── wallet lane: a single tx, on the SAME hardened session as staged deploys ──
|
|
@@ -189,6 +237,8 @@ export async function openWalletSession(opts) {
|
|
|
189
237
|
// txHash) or a message to sign (personal_sign → signature) — the latter is how the wallet signs
|
|
190
238
|
// Turbo (Arweave) upload data-items so its own credits pay. Both resolve `pendingResolve` with a
|
|
191
239
|
// Hex value (a txHash or a signature); only one item is ever in flight.
|
|
240
|
+
// `tx` carries an optional resolved `gas` (hex) the CLI pinned for this item — the page forwards it
|
|
241
|
+
// to `eth_sendTransaction` rather than letting the wallet estimate. See send() below.
|
|
192
242
|
let current = null;
|
|
193
243
|
let pendingResolve = null;
|
|
194
244
|
let pendingReject = null;
|
|
@@ -270,6 +320,12 @@ export async function openWalletSession(opts) {
|
|
|
270
320
|
const signUrl = `http://localhost:${boundPort}`;
|
|
271
321
|
console.log(`\n ${purple('◆')} ${bold('wallet signing')} ${dim(`(${chain.name}${opts.total ? `, ${opts.total} transactions` : ''})`)}`);
|
|
272
322
|
console.log(`\n Open ${bold(signUrl)} , connect a wallet${opts.expectedSigner ? ` (${opts.expectedSigner})` : ''}, and approve each step.`);
|
|
323
|
+
// Funding, said out loud at the one moment it matters. `warnUnfunded` can't help here: on the
|
|
324
|
+
// wallet lane without --for we don't know the address until the browser connects, so an empty
|
|
325
|
+
// wallet's first and only signal used to be a failed transaction. Name the requirement and the
|
|
326
|
+
// fix BEFORE they go pick a wallet, not after it reverts.
|
|
327
|
+
console.log(` ${dim(`Use a wallet holding a little ${chain.name} ETH — it pays gas, and it's free test ETH, not real money.`)}`);
|
|
328
|
+
console.log(` ${dim(`None yet? ${faucetHint(opts.chainKey)}.`)}`);
|
|
273
329
|
announceSignUrl(signUrl, opts.signUrlFile);
|
|
274
330
|
console.log(` ${dim('The key never touches this process — only signed tx hashes come back. Ctrl-C to cancel.')}\n`);
|
|
275
331
|
const onSigint = () => fail(new Error('cancelled'));
|
|
@@ -278,7 +334,16 @@ export async function openWalletSession(opts) {
|
|
|
278
334
|
connect: () => connected,
|
|
279
335
|
async send(tx) {
|
|
280
336
|
index += 1;
|
|
281
|
-
|
|
337
|
+
// A wallet session spans blocks: the deploy is approved, then setup targets the contract it
|
|
338
|
+
// just created. The browser wallet estimates against ITS OWN RPC, which we don't control and
|
|
339
|
+
// which can lag — so wait for the code to be visible and hand the page an explicit gas limit
|
|
340
|
+
// instead of letting the wallet guess. Same reasoning as the hot lane (see execute.ts).
|
|
341
|
+
if (tx.to && tx.gasFloor)
|
|
342
|
+
await waitForCodeAt(publicClient, tx.to);
|
|
343
|
+
const gas = opts.expectedSigner
|
|
344
|
+
? await pinGas(publicClient, { from: opts.expectedSigner, to: tx.to, data: tx.data, value: tx.value, gasFloor: tx.gasFloor }).catch(() => undefined)
|
|
345
|
+
: undefined;
|
|
346
|
+
current = { index, kind: 'tx', tx: gas === undefined ? tx : { ...tx, gas: `0x${gas.toString(16)}` }, consumed: false };
|
|
282
347
|
console.log(` ${dim(`tx ${opts.total ? `${index}/${opts.total}` : index}:`)} ${tx.summary} ${dim('— approve in your wallet …')}`);
|
|
283
348
|
const txHash = await new Promise((resolve, reject) => {
|
|
284
349
|
pendingResolve = resolve;
|
|
@@ -492,6 +557,10 @@ $('sign').onclick = async () => {
|
|
|
492
557
|
} else {
|
|
493
558
|
const params = {from: account, data: curTx.data, value: curTx.value};
|
|
494
559
|
if (curTx.to) params.to = curTx.to;
|
|
560
|
+
// An explicit limit the CLI resolved for this tx. Wallets that would otherwise estimate against
|
|
561
|
+
// a node lagging behind the deploy block send ~200k for a call needing ~941k, and the on-chain
|
|
562
|
+
// content write reverts DeploymentFailed(). The user can still edit it in the wallet UI.
|
|
563
|
+
if (curTx.gas) params.gas = curTx.gas;
|
|
495
564
|
const txHash = await window.ethereum.request({method:'eth_sendTransaction', params:[params]});
|
|
496
565
|
await fetch('/signed', {method:'POST', headers:{'content-type':'application/json'}, body: JSON.stringify({index: curIndex, txHash})});
|
|
497
566
|
const link = CFG.explorer ? '<a href="'+CFG.explorer+'/tx/'+txHash+'" target="_blank">'+txHash+'</a>' : txHash;
|
package/dist/signer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
|
package/dist/update-check.d.ts
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
* <pkg>/package.json) — npm always ships package.json regardless of the `files` allowlist.
|
|
4
4
|
* Returns '0.0.0' if unreadable, so callers never throw on a self-version read. */
|
|
5
5
|
export declare function readCliVersion(): string;
|
|
6
|
+
/** The version of the `@artblocks/abx-sdk` this CLI actually runs against, read from the
|
|
7
|
+
* resolved dependency's own package.json (exported via its `./package.json` entry). NOT the
|
|
8
|
+
* CLI's version: under changesets' prerelease mode each package's alpha counter increments
|
|
9
|
+
* independently, so pinning a scaffold's sdk dependency to the CLI's number can produce a
|
|
10
|
+
* range no published sdk satisfies. Falls back to the CLI's version only if resolution fails
|
|
11
|
+
* (dev-tree oddities) — better a near-right pin than '0.0.0'. */
|
|
12
|
+
export declare function readSdkVersion(): string;
|
|
6
13
|
/**
|
|
7
14
|
* Compare two semver strings. Returns -1 if a < b, 0 if equal, 1 if a > b. Handles the
|
|
8
15
|
* prerelease rule (1.0.0-alpha < 1.0.0) since our own versions are prereleases today
|
|
@@ -11,15 +18,62 @@ export declare function readCliVersion(): string;
|
|
|
11
18
|
export declare function compareVersions(a: string, b: string): number;
|
|
12
19
|
/** True when `latest` is a strictly newer release than `current`. */
|
|
13
20
|
export declare function isNewer(latest: string, current: string): boolean;
|
|
14
|
-
/** GET the `latest` dist-tag's version from the npm registry. Aborts after {@link TIMEOUT_MS};
|
|
15
|
-
* returns null on any failure (offline, timeout, non-200, malformed body) — never throws. */
|
|
16
|
-
export declare function fetchLatestVersion(pkg?: string): Promise<string | null>;
|
|
17
21
|
/**
|
|
18
|
-
*
|
|
22
|
+
* How the currently-running `abx` got onto this machine — the 3-class drift ladder the skill has
|
|
23
|
+
* long taught in prose (`SKILL.md` → "Resolve the CLI before you install anything"), now something
|
|
24
|
+
* `doctor` can just check:
|
|
25
|
+
* - `source` a repo checkout (`pnpm abx`, dev) — detected the SAME way {@link findRepoRoot} does
|
|
26
|
+
* (a `pnpm-workspace.yaml` above the running CLI), since the published package never
|
|
27
|
+
* ships one.
|
|
28
|
+
* - `npx` an npx fetch/run — a temp/cache copy npm never puts on PATH, so it can silently keep
|
|
29
|
+
* serving a stale build after an upgrade (npm's isolated cache dir contains a telltale
|
|
30
|
+
* `_npx` path segment; `npm exec` — what `npx` is today — also sets `npm_command=exec`).
|
|
31
|
+
* - `npm` a plain `npm install`, global (`-g`) or a project's local `node_modules` — same fix
|
|
32
|
+
* either way, so this doesn't split them further.
|
|
33
|
+
* Params are injectable so a test can drive every branch without touching the real filesystem/env.
|
|
34
|
+
*/
|
|
35
|
+
export type BinaryProvenance = 'source' | 'npx' | 'npm';
|
|
36
|
+
export declare function binaryProvenance(opts?: {
|
|
37
|
+
isSourceCheckout?: boolean;
|
|
38
|
+
here?: string;
|
|
39
|
+
env?: NodeJS.ProcessEnv;
|
|
40
|
+
}): BinaryProvenance;
|
|
41
|
+
/**
|
|
42
|
+
* The npm dist-tag channel a version belongs to, or null for a stable release.
|
|
43
|
+
* `0.1.0-alpha.5` → `alpha`; `0.1.0` → null; `1.0.0-5` → null (a bare numeric prerelease
|
|
44
|
+
* identifier is a version counter, not a channel name).
|
|
45
|
+
*
|
|
46
|
+
* Why this exists: the update check must not depend on prereleases living under `latest`.
|
|
47
|
+
* Today they do — `ci:publish` runs `pnpm -r publish` with no `--tag`, so npm points `latest`
|
|
48
|
+
* at each new alpha and asking for `/latest` happens to find it. That breaks the moment a
|
|
49
|
+
* stable release ships and the pipeline starts publishing prereleases under `--tag alpha`:
|
|
50
|
+
* `/latest` would only ever report the stable, and the nudge would go SILENT for every alpha
|
|
51
|
+
* user with nothing erroring. Resolving the running version's own channel alongside `latest`
|
|
52
|
+
* makes the check correct in both eras, whichever tag the pipeline uses.
|
|
53
|
+
*/
|
|
54
|
+
export declare function prereleaseChannel(version: string): string | null;
|
|
55
|
+
/** GET the version a dist-tag currently points at. Aborts after {@link TIMEOUT_MS}; returns null
|
|
56
|
+
* on any failure (offline, timeout, 404 for a tag that was never set, malformed body) — never throws. */
|
|
57
|
+
export declare function fetchDistTagVersion(tag: string, pkg?: string): Promise<string | null>;
|
|
58
|
+
/** The greatest of a set of semver strings, skipping nulls; null if none are usable. */
|
|
59
|
+
export declare function newestOf(versions: Array<string | null | undefined>): string | null;
|
|
60
|
+
/**
|
|
61
|
+
* The newest version published on any dist-tag relevant to `current`: `latest`, plus the running
|
|
62
|
+
* version's own prerelease channel when it has one ({@link prereleaseChannel}). Both are requested
|
|
63
|
+
* in parallel, so the wall clock stays one {@link TIMEOUT_MS} rather than two. Null when every
|
|
64
|
+
* request fails.
|
|
65
|
+
*/
|
|
66
|
+
export declare function fetchNewestPublished(current: string, pkg?: string): Promise<string | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the newest published version IF it is newer than `current`, else null. Reads a disk
|
|
19
69
|
* cache first and only hits the network when the cache is older than {@link TTL_MS}. On a network
|
|
20
70
|
* failure it still stamps the cache (backing off a full TTL instead of retrying every command).
|
|
21
71
|
* Swallows every error — the update check must never break or slow a real command.
|
|
22
72
|
*
|
|
73
|
+
* The cache is keyed by release channel as well as time: which dist-tags matter depends on the
|
|
74
|
+
* running version, so an entry computed on another channel (an alpha → stable upgrade, or back) is
|
|
75
|
+
* a miss rather than a day-stale answer. Entries written before this key existed simply miss once.
|
|
76
|
+
*
|
|
23
77
|
* `now` is injectable so tests can drive TTL behavior deterministically.
|
|
24
78
|
*/
|
|
25
79
|
export declare function checkForCliUpdate(current: string, now?: number): Promise<string | null>;
|
|
@@ -55,4 +109,29 @@ export declare function readSkillVersion(skillMdPath: string): string | null;
|
|
|
55
109
|
* the CLI's own installer.
|
|
56
110
|
*/
|
|
57
111
|
export declare function installedSkillVersions(): string[];
|
|
112
|
+
/** One installed skill copy: its version, where it lives, and whether it's project-local or global. */
|
|
113
|
+
export interface InstalledSkillCopy {
|
|
114
|
+
version: string;
|
|
115
|
+
path: string;
|
|
116
|
+
/** `project` = under the CWD (fixed by `abx skill install`); `global` = under HOME (needs `--global`). */
|
|
117
|
+
scope: 'project' | 'global';
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Every installed skill copy found, WITH its path and scope — not just the version set.
|
|
121
|
+
*
|
|
122
|
+
* The scope is the whole point. A stale copy anywhere used to raise a ✗ that said only "installed abx
|
|
123
|
+
* skill is vX — refresh it: `abx skill install`", and that command writes the PROJECT-local copy only.
|
|
124
|
+
* So whenever the stale copy was the GLOBAL one, following the instruction changed nothing and the ✗
|
|
125
|
+
* came back forever — the prescribed fix could not clear the condition it reported. Six cold agents
|
|
126
|
+
* hit that in one sweep; several burned turns re-running it, and one went outside its sandbox to read
|
|
127
|
+
* `~/.claude/skills` just to work out what the tool meant. A ✗ whose remedy doesn't work teaches
|
|
128
|
+
* agents to ignore ✗s, which is expensive here because the skill tells them to always act on one.
|
|
129
|
+
*/
|
|
130
|
+
export declare function installedSkillCopies(): InstalledSkillCopy[];
|
|
131
|
+
/**
|
|
132
|
+
* The exact `abx skill install` invocation that would refresh the given stale copies — `--global`
|
|
133
|
+
* when a stale copy lives under HOME, plain when it's project-local, both when both are stale.
|
|
134
|
+
* Returned as the literal command string so a readout can print something that actually works.
|
|
135
|
+
*/
|
|
136
|
+
export declare function skillRefreshCommands(stale: InstalledSkillCopy[]): string[];
|
|
58
137
|
//# sourceMappingURL=update-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AA+BA;;;oFAGoF;AACpF,wBAAgB,cAAc,IAAI,MAAM,CAavC;AAED;;;;;kEAKkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA+B5D;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AACxD,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAM,GAAG,gBAAgB,CAOlI;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhE;AAED;0GAC0G;AAC1G,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxF;AAED,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAIlF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI7F;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BzG;AAED;oDACoD;AACpD,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAC;AAEF;;oFAEoF;AACpF,eAAO,MAAM,iBAAiB,UAO7B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUnE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAED,uGAAuG;AACvG,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,EAAE,CAgB3D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAK1E"}
|