shinjuku-shielded 0.3.71 → 0.3.72

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/manifest.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "carbon-shielded-wallet/bundle-manifest/v1",
3
3
  "file": "shinjuku-wallet.mjs",
4
- "sha256": "61674c4e8c6309ae6c93338211bf57a674837f572e498215300031a65b9aa743",
5
- "bytes": 12200396,
6
- "sourceCommit": "ec62139d8d55db9f55e17c488d052b6c8248acda",
4
+ "sha256": "07990722e8c34815b7af576fe293f456c602895b74cbe6f75d5ea3d8b5a1d578",
5
+ "bytes": 12201104,
6
+ "sourceCommit": "1fbac7a5425ed727041cc29b69fd7b31e8fba117",
7
7
  "sourceDirty": false,
8
8
  "installRecordMatchesLockfile": true,
9
9
  "releaseRule": "valid only when two fresh npm ci --ignore-scripts builds on different OSes give the same sha256; installRecordMatchesLockfile true means every entry npm installed equals its package-lock.json entry and every entry not marked optional, devOptional included, is installed: an optional entry (a package for another platform) may be absent",
@@ -1282,5 +1282,5 @@
1282
1282
  "version": "1.8.0"
1283
1283
  }
1284
1284
  ],
1285
- "publishedAt": "2026-10-22T16:40:39.055Z"
1285
+ "publishedAt": "2026-10-22T17:29:13.245Z"
1286
1286
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "shinjuku-shielded",
3
- "version": "0.3.71",
3
+ "version": "0.3.72",
4
4
  "mcpName": "io.github.ShinjukuStaition/shinjuku-mcp",
5
5
  "description": "Shinjuku Shielded, the private x402 facilitator on Solana: the self-custody wallet CLI and its MCP server. Shield, pay, and unshield USDC from any MCP agent, under caps you set.",
6
- "shinjukuRelease": "61674c4e",
7
- "shinjukuSha256": "61674c4e8c6309ae6c93338211bf57a674837f572e498215300031a65b9aa743",
6
+ "shinjukuRelease": "07990722",
7
+ "shinjukuSha256": "07990722e8c34815b7af576fe293f456c602895b74cbe6f75d5ea3d8b5a1d578",
8
8
  "license": "SEE LICENSE IN LICENSE.txt",
9
9
  "author": "Shinjuku Shielded",
10
10
  "homepage": "https://github.com/ShinjukuStaition/shinjuku-mcp#readme",
@@ -57365,18 +57365,18 @@ function validateRecord(raw, ordinal, { programId, pool: pool2, poolDomain, snap
57365
57365
  })
57366
57366
  });
57367
57367
  }
57368
- function requestPage(history, pool2, from) {
57369
- return from === 0 ? requestPageZero(history, pool2) : requestPageNow(history, pool2, from);
57368
+ function requestPage(history, pool2, from, signal) {
57369
+ return from === 0 ? requestPageZero(history, pool2, signal) : requestPageNow(history, pool2, from);
57370
57370
  }
57371
- function requestPageZero(history, pool2) {
57371
+ function requestPageZero(history, pool2, signal) {
57372
57372
  const source = typeof history?.rpcEndpoint === "string" ? history.rpcEndpoint : history;
57373
57373
  let byPool = pageZeroInFlight.get(source);
57374
57374
  const joined = byPool?.get(pool2);
57375
57375
  if (joined !== void 0) {
57376
57376
  markPhase("compact-page0-joined");
57377
- return joined.then((answer) => answer.error === void 0 ? answer : requestPageNow(history, pool2, 0));
57377
+ return joined.then((answer) => answer.error === void 0 ? answer : signal?.aborted ? answer : requestPageNow(history, pool2, 0, signal));
57378
57378
  }
57379
- const pending = requestPageNow(history, pool2, 0);
57379
+ const pending = requestPageNow(history, pool2, 0, signal);
57380
57380
  if (byPool === void 0) pageZeroInFlight.set(source, byPool = /* @__PURE__ */ new Map());
57381
57381
  byPool.set(pool2, pending);
57382
57382
  pending.then(() => {
@@ -57385,16 +57385,14 @@ function requestPageZero(history, pool2) {
57385
57385
  });
57386
57386
  return pending;
57387
57387
  }
57388
- function requestPageNow(history, pool2, from) {
57388
+ function requestPageNow(history, pool2, from, signal) {
57389
+ const params = [pool2, { commitment: "finalized", fromOrdinal: from, toOrdinal: from + P03_COMPACT_PAGE }];
57390
+ const read = signal !== void 0 && typeof history.abortableRpcRequest === "function" ? () => history.abortableRpcRequest("getP03Transitions", params, signal, void 0, { rejectHttpError: true }) : () => history._rpcRequest("getP03Transitions", params);
57389
57391
  const attempt = async (index) => {
57390
57392
  try {
57391
- return { response: await history._rpcRequest("getP03Transitions", [pool2, {
57392
- commitment: "finalized",
57393
- fromOrdinal: from,
57394
- toOrdinal: from + P03_COMPACT_PAGE
57395
- }]) };
57393
+ return { response: await read() };
57396
57394
  } catch (error) {
57397
- if (index + 1 >= LIST_ATTEMPTS || proxyRefusedConnection(error)) return { error };
57395
+ if (index + 1 >= LIST_ATTEMPTS || proxyRefusedConnection(error) || signal?.aborted) return { error };
57398
57396
  markPhase("compact-list-retry");
57399
57397
  await new Promise((resolve38) => setTimeout(resolve38, Math.min(8e3, 1e3 * 2 ** index)));
57400
57398
  return attempt(index + 1);
@@ -57502,11 +57500,11 @@ function startCompactPoolSnapshot({ connection, programId, pool: pool2 }) {
57502
57500
  });
57503
57501
  return { sliced, full };
57504
57502
  }
57505
- function requestCompactFirstPage({ history, pool: pool2 }) {
57503
+ function requestCompactFirstPage({ history, pool: pool2, signal }) {
57506
57504
  try {
57507
57505
  const source = typeof history === "string" ? connect2(history, "finalized", { timeoutMs: HISTORY_RPC_REQUEST_TIMEOUT_MS }) : history;
57508
57506
  if (!source || typeof source._rpcRequest !== "function") return Promise.resolve({ error: refuse3("p03_compact_history_connection_invalid") });
57509
- return requestPage(source, new import_web397.PublicKey(pool2).toBase58(), 0);
57507
+ return requestPage(source, new import_web397.PublicKey(pool2).toBase58(), 0, signal);
57510
57508
  } catch (error) {
57511
57509
  return Promise.resolve({ error });
57512
57510
  }
@@ -59243,13 +59241,19 @@ async function walkWalletP03HistoryNow({ store, connection: given, programId, po
59243
59241
  } else if (earlier !== void 0) {
59244
59242
  markPhase("refresh-start");
59245
59243
  let slicedPreRead;
59244
+ let page0Stop;
59245
+ let page0Answered = false;
59246
59246
  if (compactNext) {
59247
59247
  const started = startCompactPoolSnapshot({ connection, programId, pool: pool2 });
59248
59248
  slicedPreRead = started.sliced;
59249
59249
  poolPreRead = started.full;
59250
59250
  markPhase("compact-pool-prestarted");
59251
- if (!inTorRun() && Date.now() - remembered.at > PAGE0_PREREAD_AFTER_MS) {
59252
- firstPreRead = requestCompactFirstPage({ history: connection.historyRpcSource, pool: pool2 });
59251
+ if (inTorRun() || Date.now() - remembered.at > PAGE0_PREREAD_AFTER_MS) {
59252
+ page0Stop = inTorRun() ? new AbortController() : void 0;
59253
+ firstPreRead = requestCompactFirstPage({ history: connection.historyRpcSource, pool: pool2, signal: page0Stop?.signal });
59254
+ firstPreRead.then(() => {
59255
+ page0Answered = true;
59256
+ });
59253
59257
  markPhase("compact-page0-prestarted");
59254
59258
  }
59255
59259
  }
@@ -59275,6 +59279,10 @@ async function walkWalletP03HistoryNow({ store, connection: given, programId, po
59275
59279
  try {
59276
59280
  const refreshed = await refreshing;
59277
59281
  markPhase("walk-refreshed");
59282
+ if (page0Stop !== void 0) {
59283
+ markPhase(page0Answered ? "compact-page0-answered-before-hit" : "compact-page0-stopped-on-hit");
59284
+ page0Stop.abort();
59285
+ }
59278
59286
  rememberRunReport(runKey, refreshed);
59279
59287
  writeStderr("history: the pool made no transition since this run's last walk; that history was moved to the current pool account " + (fromSliced ? "(your own RPC read the pool account and the program's deployment account in one request)\n" : "(your own RPC read the pool account and the program's deployment account; the history source answered one signature read)\n"));
59280
59288
  return refreshed;