@fased/fased 0.1.68 → 0.1.69

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 (103) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +20 -22
  3. package/config/sat-runtime.env +6 -2
  4. package/config/signer-protocol-v2.json +6 -0
  5. package/dist/agents/tools/wallet-action-tool.js +2 -0
  6. package/dist/agents/tools/wallet-tool.js +5 -3
  7. package/dist/brand.js +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  10. package/dist/cli/program/register.wallet.js +88 -5
  11. package/dist/commands/wallet.js +842 -57
  12. package/dist/config/sat-runtime-ids.js +6 -1
  13. package/dist/control-ui/assets/{app-DyPTS0oM.js → app-BLFLoFPk.js} +8 -8
  14. package/dist/control-ui/assets/{federation-DgA9e-Pn.js → federation-SGMAnM_8.js} +2 -2
  15. package/dist/control-ui/assets/{index-Cu13yYHr.js → index-S88kp5ZQ.js} +3 -3
  16. package/dist/control-ui/assets/{mining-Dg-3ll0F.js → mining-ClI8RW4u.js} +2 -2
  17. package/dist/control-ui/assets/{wallet-ByKBcYhm.js → wallet-CRIhDQbW.js} +201 -116
  18. package/dist/control-ui/index.html +1 -1
  19. package/dist/control-ui/version.json +1 -1
  20. package/dist/gateway/server-http.js +46 -9
  21. package/dist/mining/mainnet-sync.js +67 -5
  22. package/dist/operator/operator-readiness.js +1 -1
  23. package/dist/plugin-sdk/{audio-preflight-_FVQjR1r.js → audio-preflight-CS7Q_7-R.js} +2 -2
  24. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  25. package/dist/plugin-sdk/{chunk-items-LH4uKSnh.js → chunk-items-BLBZNORg.js} +1 -1
  26. package/dist/plugin-sdk/command-status.js +2 -2
  27. package/dist/plugin-sdk/{config-schema-DjU_uD-6.js → config-schema-BiBOUW89.js} +255 -47
  28. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  29. package/dist/plugin-sdk/discord.d.ts +4 -4
  30. package/dist/plugin-sdk/index.d.ts +16 -16
  31. package/dist/plugin-sdk/index.js +2 -2
  32. package/dist/plugin-sdk/{monitor-DUMMbG4h.js → monitor-WXdn4mR-.js} +4 -4
  33. package/dist/plugin-sdk/{monitor-DXIM16Hj.js → monitor-xzVAPbg2.js} +6 -6
  34. package/dist/plugin-sdk/{openresponses-http-C8lKwta1.js → openresponses-http-DnI1LFgq.js} +2 -2
  35. package/dist/plugin-sdk/{pairing-message-mKO92L-M.d.ts → pairing-message-CiTcdD6m.d.ts} +1 -1
  36. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  37. package/dist/plugin-sdk/{pw-ai-DJ_gTc4M.js → pw-ai-DZYLDC-S.js} +1 -1
  38. package/dist/plugin-sdk/{runtime-dependency-nup8niQL.js → runtime-dependency-DczkvPxn.js} +9 -9
  39. package/dist/plugin-sdk/sat-runtime.d.ts +89 -10
  40. package/dist/plugin-sdk/sat-runtime.js +2 -2
  41. package/dist/plugin-sdk/{slack-B-nOOLM0.js → slack-CkIRVDUK.js} +4 -4
  42. package/dist/plugin-sdk/slack.d.ts +4 -4
  43. package/dist/plugin-sdk/{sticker-cache-BLiId8Em.js → sticker-cache-Dpap5ce_.js} +2 -2
  44. package/dist/plugin-sdk/{telegram-actions-1X9A32Dn.js → telegram-actions-Cewdga8H.js} +3 -3
  45. package/dist/plugin-sdk/telegram.d.ts +4 -4
  46. package/dist/plugin-sdk/{tmp-fased-dir-BkpWlGUe.d.ts → tmp-fased-dir-BSEHc8MQ.d.ts} +2 -2
  47. package/dist/plugin-sdk/{types-DtCOO_hW.d.ts → types-BakzIzGN.d.ts} +1 -1
  48. package/dist/plugin-sdk/{types-B-zL9gSv.d.ts → types-CzF0YQqK.d.ts} +2 -2
  49. package/dist/plugin-sdk/{web-BvjNyYBz.js → web-DGWi7i3B.js} +2 -2
  50. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  51. package/dist/plugin-sdk/{zod-schema.providers-core-BCDlgtls.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +63 -63
  52. package/dist/wallet/local-socket-signer-lifecycle.js +79 -3
  53. package/dist/wallet/local-socket-signer-protocol.js +70 -10
  54. package/dist/wallet/mining-wallet-retirement.js +256 -0
  55. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -0
  56. package/dist/wallet/signer-protocol-v2.generated.js +6 -0
  57. package/dist/wallet/wallet-agent-selection.js +6 -10
  58. package/dist/wallet/wallet-provider-registry.js +70 -29
  59. package/dist/wallet/wallet-send-approvals.js +6 -2
  60. package/dist/wallet/wallet-status.js +56 -1
  61. package/dist/wizard/onboarding.js +32 -30
  62. package/dist/wizard/onboarding.wallet.js +10 -1
  63. package/extensions/acpx/package.json +1 -1
  64. package/extensions/bluebubbles/package.json +1 -1
  65. package/extensions/copilot-proxy/package.json +1 -1
  66. package/extensions/diagnostics-otel/package.json +1 -1
  67. package/extensions/fased-federation/package.json +1 -1
  68. package/extensions/google-gemini-cli-auth/package.json +1 -1
  69. package/extensions/imessage/package.json +1 -1
  70. package/extensions/irc/package.json +1 -1
  71. package/extensions/line/package.json +1 -1
  72. package/extensions/llm-task/package.json +1 -1
  73. package/extensions/lobster/package.json +1 -1
  74. package/extensions/matrix/CHANGELOG.md +6 -0
  75. package/extensions/matrix/package.json +1 -1
  76. package/extensions/mattermost/package.json +1 -1
  77. package/extensions/memory-core/package.json +2 -2
  78. package/extensions/memory-lancedb/package.json +1 -1
  79. package/extensions/minimax-portal-auth/package.json +1 -1
  80. package/extensions/msteams/CHANGELOG.md +6 -0
  81. package/extensions/msteams/package.json +1 -1
  82. package/extensions/nextcloud-talk/package.json +1 -1
  83. package/extensions/nostr/CHANGELOG.md +6 -0
  84. package/extensions/nostr/package.json +1 -1
  85. package/extensions/open-prose/package.json +1 -1
  86. package/extensions/sat-mining/package.json +1 -1
  87. package/extensions/signal/package.json +1 -1
  88. package/extensions/synology-chat/package.json +1 -1
  89. package/extensions/tlon/package.json +1 -1
  90. package/extensions/twitch/CHANGELOG.md +6 -0
  91. package/extensions/twitch/package.json +1 -1
  92. package/extensions/voice-call/CHANGELOG.md +6 -0
  93. package/extensions/voice-call/package.json +1 -1
  94. package/extensions/zalo/CHANGELOG.md +6 -0
  95. package/extensions/zalo/package.json +1 -1
  96. package/extensions/zalouser/CHANGELOG.md +6 -0
  97. package/extensions/zalouser/package.json +1 -1
  98. package/install.sh +276 -103
  99. package/package.json +4 -3
  100. package/scripts/install-fased-signerd.sh +4 -8
  101. package/scripts/install-runtime-profile.sh +27 -0
  102. package/scripts/start-managed.sh +13 -1
  103. package/scripts/fased-signer-wallet-import-hosting.sh +0 -78
@@ -14,7 +14,7 @@
14
14
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
15
15
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
16
16
  <script data-fased-boot-watchdog src="./boot-watchdog.js" defer></script>
17
- <script type="module" crossorigin src="./assets/index-Cu13yYHr.js"></script>
17
+ <script type="module" crossorigin src="./assets/index-S88kp5ZQ.js"></script>
18
18
  <link rel="stylesheet" crossorigin href="./assets/index-RwVraC3c.css">
19
19
  </head>
20
20
  <body>
@@ -1 +1 @@
1
- {"version":"0.1.68"}
1
+ {"version":"0.1.69"}
@@ -29,13 +29,13 @@ import { normalizeCanvasScopedUrl } from "./canvas-capability.js";
29
29
  import { A2UI_PATH, CANVAS_HOST_PATH, CANVAS_WS_PATH, handleA2uiHttpRequest } from "../canvas-host/a2ui.js";
30
30
  import { resolveFederationBondWallet } from "../wallet/solana-bond-signing.js";
31
31
  import { createAndSubmitFederationBondProof, loadPersistedFederationBondProof, submitFederationBondProof } from "../federation/auto-connect.js";
32
+ import { resolveNativeSignerWalletId } from "../wallet/native-signer-wallet-id.js";
32
33
  import { beginWalletApprovalAssertion, beginWalletPasskeyRegistration, consumeWalletApprovalGrant, createWalletApprovalChallenge, finishWalletApprovalAssertion, finishWalletPasskeyRegistration, listWalletPasskeys, readWalletApprovalAuthSnapshot, removeWalletPasskey, resolveWalletApprovalAuthMode, resolveWalletApprovalChallengeTtlSeconds, resolveWalletApprovalGrantTtlSeconds } from "../wallet/wallet-approval-auth.js";
33
34
  import { readWalletStatusSnapshot } from "../wallet/wallet-status.js";
34
35
  import { inspectSatBondPosition, inspectSatBondStakingDistributor, inspectSatBondStakingPosition, inspectSatChainSlot, invalidateSatReadCaches } from "../extensions/sat-mining/src/rpc-read.js";
35
36
  import { digestSatSubmissionIntent } from "../extensions/sat-mining/src/submission-ledger.js";
36
37
  import { runWithSatSubmissionWorkflow, submitSatCancelBondUnlock, submitSatClaimBondStakingRewards, submitSatFinalizeBondUnlock, submitSatIncreaseBondPosition, submitSatOpenBondPosition, submitSatRequestBondUnlock, submitSatSyncBondStakingPosition, submitSatSyncBondStakingRewards } from "../extensions/sat-mining/src/solana-submit.js";
37
38
  import { resolveAgentAvatar } from "../agents/identity-avatar.js";
38
- import { resolveNativeSignerWalletId } from "../wallet/native-signer-wallet-id.js";
39
39
  import { configureSignerOwnedWalletNetwork } from "../wallet/signer-network-admin.js";
40
40
  import { listWalletInboundEvents, pollWalletInboundEvents, reconcileWalletInboundEvents, recordWalletInboundWebhookEvent } from "../wallet/wallet-inbound-events.js";
41
41
  import { walletSetupCommand } from "../commands/wallet.js";
@@ -681,7 +681,7 @@ async function readWalletSettingsSignerPolicy(params) {
681
681
  ...asset,
682
682
  destinations: [...asset.destinations]
683
683
  })),
684
- ...state === "locked" ? { guidance: "Signer policy is deny-all. Install an owner-reviewed policy through the native signer control socket; the Gateway can only tighten it." } : {}
684
+ ...state === "locked" ? { guidance: `This existing wallet is deny-all. Review its immutable role, then run: fased wallet policy activate-role-baseline --wallet-id ${walletId} --role ${policy.role} --confirm` } : {}
685
685
  };
686
686
  } catch {
687
687
  return {
@@ -5078,6 +5078,16 @@ function createGatewayHttpServer(opts) {
5078
5078
  });
5079
5079
  return;
5080
5080
  }
5081
+ if (resolveWalletUserRole(existing) === "mining") {
5082
+ sendLoginResponse(409, {
5083
+ ok: false,
5084
+ error: {
5085
+ code: "mining_retirement_required",
5086
+ message: "Mining wallets cannot be deleted directly; use Retire and replace Mining wallet so signer acknowledgement precedes registry detachment"
5087
+ }
5088
+ });
5089
+ return;
5090
+ }
5081
5091
  const deletionSafety = checkNamedWalletDeletionSafety({
5082
5092
  walletId,
5083
5093
  env: process.env
@@ -5289,7 +5299,7 @@ function createGatewayHttpServer(opts) {
5289
5299
  ok: false,
5290
5300
  error: {
5291
5301
  code: "wallet_in_use",
5292
- message: "walletId is the singleton SAT Mining wallet; Archive/Replace Mining with an Agent wallet before making it the primary Agent wallet"
5302
+ message: "walletId is the singleton SAT Mining wallet; Archive/Replace Mining with an Agent wallet before making it the Default Agent wallet fallback"
5293
5303
  }
5294
5304
  });
5295
5305
  return;
@@ -5298,12 +5308,12 @@ function createGatewayHttpServer(opts) {
5298
5308
  const registry = readWalletProviderRegistry(process.env);
5299
5309
  const wallet = registry.wallets.find((entry) => entry.id === nextDefaultWalletId);
5300
5310
  const role = resolveWalletUserRole(wallet) ?? (registry.defaultWalletId === nextDefaultWalletId ? "agent" : undefined);
5301
- if (role && role !== "agent") {
5311
+ if (role !== "agent") {
5302
5312
  sendLoginResponse(409, {
5303
5313
  ok: false,
5304
5314
  error: {
5305
5315
  code: "wallet_purpose_locked",
5306
- message: "only Agent wallets can become the primary Agent fallback; create a new Agent wallet instead"
5316
+ message: "only an explicit Agent wallet can become the Default Agent wallet fallback; create or select an Agent wallet instead"
5307
5317
  }
5308
5318
  });
5309
5319
  return;
@@ -5316,9 +5326,34 @@ function createGatewayHttpServer(opts) {
5316
5326
  }
5317
5327
  const agentId = typeof payload.agentId === "string" ? payload.agentId.trim() : "";
5318
5328
  if (agentId) {
5329
+ const assignedWalletId = typeof payload.walletId === "string" ? payload.walletId.trim() : "";
5330
+ if (assignedWalletId) {
5331
+ const registry = readWalletProviderRegistry(process.env);
5332
+ const wallet = registry.wallets.find((entry) => entry.id === assignedWalletId);
5333
+ if (!wallet) {
5334
+ sendLoginResponse(404, {
5335
+ ok: false,
5336
+ error: {
5337
+ code: "wallet_not_found",
5338
+ message: "walletId does not exist"
5339
+ }
5340
+ });
5341
+ return;
5342
+ }
5343
+ if (resolveWalletUserRole(wallet) !== "agent") {
5344
+ sendLoginResponse(409, {
5345
+ ok: false,
5346
+ error: {
5347
+ code: "wallet_purpose_locked",
5348
+ message: "only an explicit Agent wallet can be assigned to an Agent"
5349
+ }
5350
+ });
5351
+ return;
5352
+ }
5353
+ }
5319
5354
  setAgentWalletAssignment({
5320
5355
  agentId,
5321
- walletId: typeof payload.walletId === "string" ? payload.walletId.trim() : undefined,
5356
+ walletId: assignedWalletId || undefined,
5322
5357
  env: process.env
5323
5358
  });
5324
5359
  }
@@ -5835,10 +5870,12 @@ function createGatewayHttpServer(opts) {
5835
5870
  }
5836
5871
  } };
5837
5872
  statusPayload.wallets = registry.wallets.map((wallet) => {
5873
+ const liveWallet = snapshot.wallets?.find((entry) => entry.id === wallet.id);
5838
5874
  const solana = findWalletChainEntry(snapshotAny.chainWallets?.solana, wallet.id);
5839
- const readiness = {
5875
+ const readiness = liveWallet?.readiness ?? {
5840
5876
  keystore: Boolean(solana?.decryptReady ?? false),
5841
- rpc: Boolean(solana?.rpcConfigured)
5877
+ rpc: Boolean(solana?.rpcConfigured),
5878
+ ready: false
5842
5879
  };
5843
5880
  return {
5844
5881
  id: wallet.id,
@@ -5850,7 +5887,7 @@ function createGatewayHttpServer(opts) {
5850
5887
  readiness,
5851
5888
  chains: wallet.addresses?.solana ? ["solana"] : [],
5852
5889
  rpcConfigured: readiness.rpc,
5853
- health: readiness.keystore ? "ok" : "degraded"
5890
+ health: readiness.ready ? "ok" : "degraded"
5854
5891
  };
5855
5892
  });
5856
5893
  if (configuredProviderId === "local-socket-signer") {
@@ -1,4 +1,4 @@
1
- import { SAT_RUNTIME_ENV_KEYS, resolveSatRuntimeIds, resolveWritableSatRuntimeDefaultsFile } from "../config/sat-runtime-ids.js";
1
+ import { SAT_RUNTIME_ENV_KEYS, SAT_RUNTIME_TRUST_ENV_KEYS, resolveSatRuntimeIds, resolveWritableSatRuntimeDefaultsFile } from "../config/sat-runtime-ids.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs/promises";
4
4
  import { createHash, createPublicKey, verify } from "node:crypto";
@@ -180,24 +180,43 @@ function readLocalIds(env) {
180
180
  function idsEqual(left, right) {
181
181
  return Boolean(left && right && left.programId === right.programId && left.bondProgramId === right.bondProgramId && left.mintAddress === right.mintAddress && left.mintProgramId === right.mintProgramId);
182
182
  }
183
- function buildEnvFile(ids) {
183
+ function buildEnvFile(ids, trust) {
184
184
  return [
185
185
  "# Managed by Fased Agent official SAT mainnet sync.",
186
186
  `${SAT_RUNTIME_ENV_KEYS.programId}=${ids.programId}`,
187
187
  `${SAT_RUNTIME_ENV_KEYS.bondProgramId}=${ids.bondProgramId}`,
188
188
  `${SAT_RUNTIME_ENV_KEYS.mintAddress}=${ids.mintAddress}`,
189
189
  `${SAT_RUNTIME_ENV_KEYS.mintProgramId}=${ids.mintProgramId}`,
190
+ `${SAT_RUNTIME_TRUST_ENV_KEYS.manifestPath}=${trust.manifestPath}`,
191
+ `${SAT_RUNTIME_TRUST_ENV_KEYS.manifestSha256}=${trust.manifestSha256}`,
192
+ `${SAT_RUNTIME_TRUST_ENV_KEYS.manifestSignaturePath}=${trust.manifestSignaturePath}`,
190
193
  ""
191
194
  ].join("\n");
192
195
  }
193
- async function writeRuntimeIds(ids, env) {
196
+ async function writeRuntimeIds(ids, env, trust) {
194
197
  const runtimeFile = resolveWritableSatRuntimeDefaultsFile(env);
198
+ const manifestPath = `${runtimeFile}.manifest.json`;
199
+ const manifestSignaturePath = `${runtimeFile}.manifest.sig`;
195
200
  await fs.mkdir(path.dirname(runtimeFile), { recursive: true });
196
- await fs.writeFile(runtimeFile, buildEnvFile(ids), { mode: 384 });
201
+ await fs.writeFile(manifestPath, trust.rawManifest, { mode: 384 });
202
+ await fs.writeFile(manifestSignaturePath, `${trust.signature.trim()}\n`, { mode: 384 });
203
+ await fs.writeFile(runtimeFile, buildEnvFile(ids, {
204
+ manifestPath,
205
+ manifestSha256: trust.manifestSha256,
206
+ manifestSignaturePath
207
+ }), { mode: 384 });
208
+ await Promise.all([
209
+ fs.chmod(manifestPath, 384),
210
+ fs.chmod(manifestSignaturePath, 384),
211
+ fs.chmod(runtimeFile, 384)
212
+ ]);
197
213
  env[SAT_RUNTIME_ENV_KEYS.programId] = ids.programId;
198
214
  env[SAT_RUNTIME_ENV_KEYS.bondProgramId] = ids.bondProgramId;
199
215
  env[SAT_RUNTIME_ENV_KEYS.mintAddress] = ids.mintAddress;
200
216
  env[SAT_RUNTIME_ENV_KEYS.mintProgramId] = ids.mintProgramId;
217
+ env[SAT_RUNTIME_TRUST_ENV_KEYS.manifestPath] = manifestPath;
218
+ env[SAT_RUNTIME_TRUST_ENV_KEYS.manifestSha256] = trust.manifestSha256;
219
+ env[SAT_RUNTIME_TRUST_ENV_KEYS.manifestSignaturePath] = manifestSignaturePath;
201
220
  return runtimeFile;
202
221
  }
203
222
  async function getSatMainnetSyncStatus(opts) {
@@ -312,7 +331,50 @@ async function syncSatMainnetRuntimeIds(opts) {
312
331
  message: before.state === "not_live" ? "Satcoin mainnet is not live yet." : before.message || "SAT mainnet manifest is not ready to apply."
313
332
  };
314
333
  }
315
- const runtimeFile = await writeRuntimeIds(before.officialIds, env);
334
+ const manifestUrl = opts?.manifestUrl?.trim() || resolveManifestUrl(env);
335
+ const rawManifest = await fetchText(manifestUrl, { required: true });
336
+ const manifestSha256 = parseSha256(await fetchText(`${manifestUrl}.sha256`, { required: true }));
337
+ const signature = await fetchText(`${manifestUrl}.sig`, { required: true });
338
+ if (!rawManifest || !manifestSha256 || !signature?.trim()) {
339
+ return {
340
+ ...before,
341
+ ok: false,
342
+ state: "failed",
343
+ message: "Verified SAT manifest artifacts could not be persisted for the native signer.",
344
+ error: "signed SAT runtime manifest, hash, or detached signature is missing"
345
+ };
346
+ }
347
+ const finalVerification = await verifyLiveManifest({
348
+ manifestUrl,
349
+ raw: rawManifest,
350
+ env
351
+ });
352
+ if (finalVerification.verification.hash !== "valid" || finalVerification.verification.signature !== "valid" || sha256Hex(rawManifest) !== manifestSha256) {
353
+ return {
354
+ ...before,
355
+ ok: false,
356
+ state: "failed",
357
+ message: "SAT manifest changed before signer runtime persistence.",
358
+ verification: finalVerification.verification,
359
+ trustKeySource: finalVerification.trustKeySource,
360
+ error: "signed SAT runtime manifest verification raced or failed"
361
+ };
362
+ }
363
+ const persistedManifest = JSON.parse(rawManifest);
364
+ if (!idsEqual(readOfficialIds(persistedManifest), before.officialIds)) {
365
+ return {
366
+ ...before,
367
+ ok: false,
368
+ state: "failed",
369
+ message: "SAT manifest IDs changed before signer runtime persistence.",
370
+ error: "signed SAT runtime ID tuple changed during sync"
371
+ };
372
+ }
373
+ const runtimeFile = await writeRuntimeIds(before.officialIds, env, {
374
+ rawManifest,
375
+ manifestSha256,
376
+ signature
377
+ });
316
378
  const after = await getSatMainnetSyncStatus({
317
379
  env,
318
380
  manifestUrl: opts?.manifestUrl
@@ -56,7 +56,7 @@ function describeOperatorReadinessChecklist(input) {
56
56
  agentWallet ? {
57
57
  title: "Agent wallet set",
58
58
  summary: defaultWallet && firstAgentWallet && defaultWallet.id !== firstAgentWallet.id ? `${defaultWallet.name} · ${firstAgentWallet.name}` : agentWallet.name,
59
- detail: defaultWallet ? "This primary Agent wallet handles paid A2A sends, payment evidence publication, skill/plugin wallet actions, and routine transfers when no explicit @wallet handle is supplied." : "This Agent wallet can be selected by explicit @wallet handle. Set it as primary if it should be the fallback when no handle is supplied.",
59
+ detail: defaultWallet ? "This Default Agent wallet is the final fallback for paid A2A sends, payment evidence publication, skill/plugin wallet actions, and routine transfers after explicit, skill, and Agent assignment routing." : "This Agent wallet can be selected explicitly or assigned to an Agent or skill. Set it as the optional fallback only when global fallback behavior is wanted.",
60
60
  tone: "success"
61
61
  } : defaultWalletId ? {
62
62
  title: "Agent wallet set",
@@ -1,4 +1,4 @@
1
- import { Et as isAudioAttachment, St as normalizeMediaAttachments, Tt as runCapability, bt as buildProviderRegistry, wt as resolveMediaAttachmentLocalRoots, xt as createMediaAttachmentCache } from "./config-schema-DjU_uD-6.js";
1
+ import { Et as isAudioAttachment, St as normalizeMediaAttachments, Tt as runCapability, bt as buildProviderRegistry, wt as resolveMediaAttachmentLocalRoots, xt as createMediaAttachmentCache } from "./config-schema-BiBOUW89.js";
2
2
  import "./runtime-CXSQwMaR.js";
3
3
  import "./subsystem-DBPNbQDQ.js";
4
4
  import { i as logVerbose, s as shouldLogVerbose } from "./globals-B_jjtAje.js";
@@ -36,7 +36,7 @@ import "./manager-BegWxNYX.js";
36
36
  import "./query-expansion-BG3FgzF7.js";
37
37
  import "./common-HCcXU-NR.js";
38
38
  import "./commands-registry-G5KXSi_y.js";
39
- import "./runtime-dependency-nup8niQL.js";
39
+ import "./runtime-dependency-DczkvPxn.js";
40
40
  import "./path-alias-guards-DjgDArrp.js";
41
41
  import "./fs-safe-g4g7GT02.js";
42
42
  import "./qr-image-B4MlMG4N.js";
@@ -1,5 +1,5 @@
1
1
  import { n as DEFAULT_ACCOUNT_ID, r as normalizeAccountId } from "./session-key--_1zVBRB.js";
2
2
  import { Y as ChannelMessageActionContext, n as ChannelPlugin, ut as getChatChannelMeta } from "./types.plugin-BcSBq42x.js";
3
- import { _ as FasedAgentPluginApi, t as PluginRuntime } from "./types-DtCOO_hW.js";
4
- import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-mKO92L-M.js";
3
+ import { _ as FasedAgentPluginApi, t as PluginRuntime } from "./types-BakzIzGN.js";
4
+ import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-CiTcdD6m.js";
5
5
  export { type ChannelMessageActionContext, type ChannelPlugin, DEFAULT_ACCOUNT_ID, type FasedAgentPluginApi, PAIRING_APPROVED_MESSAGE, type PluginRuntime, applyAccountNameToChannelSection, buildChannelConfigSchema, deleteAccountFromConfigSection, emptyPluginConfigSchema, formatPairingApproveHint, getChatChannelMeta, migrateBaseNameToDefaultAccount, normalizeAccountId, setAccountEnabledInConfigSection };
@@ -1,4 +1,4 @@
1
- import { an as wrapExternalContent } from "./config-schema-DjU_uD-6.js";
1
+ import { an as wrapExternalContent } from "./config-schema-BiBOUW89.js";
2
2
 
3
3
  //#region src/security/channel-metadata.ts
4
4
  const DEFAULT_MAX_CHARS = 800;
@@ -1,4 +1,4 @@
1
- import { Ht as buildCommandsMessage, Ut as buildCommandsMessagePaginated, Wt as buildHelpMessage } from "./config-schema-DjU_uD-6.js";
1
+ import { Ht as buildCommandsMessage, Ut as buildCommandsMessagePaginated, Wt as buildHelpMessage } from "./config-schema-BiBOUW89.js";
2
2
  import "./runtime-CXSQwMaR.js";
3
3
  import "./subsystem-DBPNbQDQ.js";
4
4
  import "./globals-B_jjtAje.js";
@@ -36,7 +36,7 @@ import "./manager-BegWxNYX.js";
36
36
  import "./query-expansion-BG3FgzF7.js";
37
37
  import "./common-HCcXU-NR.js";
38
38
  import "./commands-registry-G5KXSi_y.js";
39
- import "./runtime-dependency-nup8niQL.js";
39
+ import "./runtime-dependency-DczkvPxn.js";
40
40
  import "./path-alias-guards-DjgDArrp.js";
41
41
  import "./fs-safe-g4g7GT02.js";
42
42
  import "./qr-image-B4MlMG4N.js";