@fased/fased 0.1.47 → 0.1.49

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 (151) hide show
  1. package/dist/agents/auth-health.js +11 -5
  2. package/dist/agents/current-model-catalog.js +21 -3
  3. package/dist/brand.js +1 -1
  4. package/dist/build-info.json +3 -3
  5. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  6. package/dist/commands/doctor-state-integrity.js +25 -2
  7. package/dist/config/sessions/transcript.js +30 -16
  8. package/dist/config/sessions.js +2 -2
  9. package/dist/control-ui/assets/{app-CHqTx3P_.js → app-6iCry787.js} +1274 -1259
  10. package/dist/control-ui/assets/{chat-model-ref-BbrdMKjQ.js → chat-model-ref-C6CFR-GR.js} +2 -2
  11. package/dist/control-ui/assets/{config-FFZLTSLS.js → config-CU5Zi8Dh.js} +2 -2
  12. package/dist/control-ui/assets/{index-CFHfNlLv.js → index-CNFgocD9.js} +3 -3
  13. package/dist/control-ui/assets/{mining-D_VAMFMY.js → mining-BdhMn18r.js} +3 -3
  14. package/dist/control-ui/assets/{providers-DqFL6WrJ.js → providers-WTJ1kMKy.js} +14 -3
  15. package/dist/control-ui/index.html +1 -1
  16. package/dist/extensions/sat-mining/src/protocol-contract.js +63 -0
  17. package/dist/extensions/sat-mining/src/solana-submit.js +3 -52
  18. package/dist/gateway/protocol/schema/agents-models-skills.js +1 -0
  19. package/dist/gateway/protocol/schema/frames.js +5 -0
  20. package/dist/gateway/protocol/schema/snapshot.js +1 -0
  21. package/dist/gateway/server/ws-connection/message-handler.js +2 -1
  22. package/dist/gateway/server-http.js +1 -0
  23. package/dist/gateway/server-methods/chat.js +4 -29
  24. package/dist/infra/system-presence.js +4 -2
  25. package/dist/light-update-status.js +1 -1
  26. package/dist/memory/inventory.js +44 -4
  27. package/dist/mining/mainnet-sync.js +70 -26
  28. package/dist/plugin-sdk/{accounts-DzLdrOVC.js → accounts-B5fY9hZy.js} +1 -1
  29. package/dist/plugin-sdk/{actions-PhofTgnO.js → actions-D-9SsSEy.js} +2 -2
  30. package/dist/plugin-sdk/{active-listener-C8a74qPO.js → active-listener-BH7rDR47.js} +1 -1
  31. package/dist/plugin-sdk/{audio-preflight-CARAVcz-.js → audio-preflight-4faayz5S.js} +26 -26
  32. package/dist/plugin-sdk/{audit-ByK45Q1d.js → audit-BQfsboqd.js} +1 -1
  33. package/dist/plugin-sdk/{channel-access-BEin0yA4.js → channel-access-CDZ-cJPq.js} +1 -1
  34. package/dist/plugin-sdk/{channel-access-configure-Di_DoR-Q.js → channel-access-configure-DlpuhlH6.js} +1 -1
  35. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  36. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  37. package/dist/plugin-sdk/{chunk-CwN3c1Fq.js → chunk-CZuCyS7k.js} +1 -1
  38. package/dist/plugin-sdk/{chunk-items-DH7ooQBZ.js → chunk-items-Cyc4Kl6A.js} +1 -1
  39. package/dist/plugin-sdk/command-status.js +26 -26
  40. package/dist/plugin-sdk/{commands-registry-Bea-V_lR.js → commands-registry-COIbIjGO.js} +2 -2
  41. package/dist/plugin-sdk/{common-BJPuBxmx.js → common-LMHJe8KW.js} +1 -1
  42. package/dist/plugin-sdk/{config-BxOWD3gF.js → config-ZMbTT0kM.js} +22 -4
  43. package/dist/plugin-sdk/{config-schema-ChJcPn7x.js → config-schema-Cku0a8Tm.js} +100 -64
  44. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  45. package/dist/plugin-sdk/discord.d.ts +4 -4
  46. package/dist/plugin-sdk/discord.js +19 -19
  47. package/dist/plugin-sdk/{handle-action-Bk-L2J84.js → handle-action-C8ZZfORB.js} +13 -13
  48. package/dist/plugin-sdk/{helpers-0E444CR0.js → helpers-vfzH9tBn.js} +1 -1
  49. package/dist/plugin-sdk/{image-ops-BYc-Ol7C.js → image-ops-BnOmQA5d.js} +1 -1
  50. package/dist/plugin-sdk/index.d.ts +9 -9
  51. package/dist/plugin-sdk/index.js +28 -28
  52. package/dist/plugin-sdk/{login-B_At7IVI.js → login-C73Wpiw8.js} +3 -3
  53. package/dist/plugin-sdk/{login-qr-BlSQ8QJF.js → login-qr-CRKHA7i8.js} +3 -3
  54. package/dist/plugin-sdk/{manager-VNI6sxbG.js → manager-CHYhpKHn.js} +2 -2
  55. package/dist/plugin-sdk/{markdown-tables-CpNefu6e.js → markdown-tables-B84dPWNG.js} +1 -1
  56. package/dist/plugin-sdk/{media-QBCmvhBQ.js → media-4daDcNER.js} +2 -2
  57. package/dist/plugin-sdk/{monitor-BhHlerHI.js → monitor-CChc6bQV.js} +30 -30
  58. package/dist/plugin-sdk/{monitor-C9UczH5N.js → monitor-DJhU-J5u.js} +31 -31
  59. package/dist/plugin-sdk/{openresponses-http-CtuFHD5w.js → openresponses-http-Dvyczr35.js} +26 -26
  60. package/dist/plugin-sdk/{optional-runtime-dependency-BaVO1F3i.js → optional-runtime-dependency-BFpqaCzp.js} +1 -1
  61. package/dist/plugin-sdk/{outbound-CWrcAWpE.js → outbound-C1xBxfNb.js} +6 -6
  62. package/dist/plugin-sdk/{outbound-attachment-Dhi2Q-_f.js → outbound-attachment-DvcxPP7b.js} +2 -2
  63. package/dist/plugin-sdk/{pairing-message-6XVXW554.d.ts → pairing-message-DWXHX-jt.d.ts} +1 -1
  64. package/dist/plugin-sdk/{pairing-message-D01_6FkJ.js → pairing-message-DpYT614h.js} +1 -1
  65. package/dist/plugin-sdk/{pairing-store-DADXOv-J.js → pairing-store-CprpGco9.js} +2 -2
  66. package/dist/plugin-sdk/{pi-model-discovery-D9-CQFS2.js → pi-model-discovery-BQ6fFRBA.js} +1 -1
  67. package/dist/plugin-sdk/{pi-model-discovery-runtime-DhNNXQgq.js → pi-model-discovery-runtime-BF_89lVj.js} +2 -2
  68. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  69. package/dist/plugin-sdk/{pw-ai-CQG7vp-Y.js → pw-ai-xgpIbHOr.js} +3 -3
  70. package/dist/plugin-sdk/{replies-C_FeIOF4.js → replies-AzJ6U6Ut.js} +2 -2
  71. package/dist/plugin-sdk/{resolve-outbound-target-DD8edEdz.js → resolve-outbound-target-COo_TR7B.js} +1 -1
  72. package/dist/plugin-sdk/{resolve-route-BPkfG5Pg.js → resolve-route-CZFzHOIe.js} +1 -1
  73. package/dist/plugin-sdk/{retry-policy-C0YsRX_6.js → retry-policy-BSdqqXsI.js} +1 -1
  74. package/dist/plugin-sdk/{runtime-CyTWeylK.js → runtime-CeoGffDi.js} +31 -18
  75. package/dist/plugin-sdk/{runtime-dependency-D6tYtvtU.js → runtime-dependency-Cvbs0GXf.js} +2 -2
  76. package/dist/plugin-sdk/sat-runtime.d.ts +3 -2
  77. package/dist/plugin-sdk/sat-runtime.js +5 -5
  78. package/dist/plugin-sdk/{send-CNxLDNQ9.js → send-B_-UtG9F.js} +6 -6
  79. package/dist/plugin-sdk/{send-Qckp3h4k.js → send-C0Q1u7N1.js} +8 -8
  80. package/dist/plugin-sdk/{send-BtFuV6zU.js → send-CGE7OgsA.js} +5 -5
  81. package/dist/plugin-sdk/{send-FcEJfLTd.js → send-DCxAv7bV.js} +6 -6
  82. package/dist/plugin-sdk/{send-BedQ8ekw.js → send-DVpCBUuL.js} +7 -7
  83. package/dist/plugin-sdk/{session-C3Ul4abD.js → session-ETYBbhLn.js} +2 -2
  84. package/dist/plugin-sdk/{skill-commands-C2CnUTPX.js → skill-commands-BQL6TBIv.js} +2 -2
  85. package/dist/plugin-sdk/{slack-bSeSOI9d.js → slack-Bs_4uivd.js} +38 -38
  86. package/dist/plugin-sdk/{slack-actions-CLyEd8FK.js → slack-actions-CBPZkfTS.js} +11 -11
  87. package/dist/plugin-sdk/slack.d.ts +4 -4
  88. package/dist/plugin-sdk/slack.js +9 -9
  89. package/dist/plugin-sdk/{sticker-cache-DBnS3hHh.js → sticker-cache-BBZMp-oQ.js} +3 -3
  90. package/dist/plugin-sdk/{tables-L5mXZ5y_.js → tables-B-G7Bb0l.js} +1 -1
  91. package/dist/plugin-sdk/{targets-eG595pY0.js → targets-D8UaoWHd.js} +1 -1
  92. package/dist/plugin-sdk/{telegram-actions-D0Kyqy_e.js → telegram-actions-BARLx9zc.js} +29 -29
  93. package/dist/plugin-sdk/telegram.d.ts +4 -4
  94. package/dist/plugin-sdk/telegram.js +8 -8
  95. package/dist/plugin-sdk/{thread-bindings.lifecycle-C_5BEWmL.js → thread-bindings.lifecycle-DwYKCLLq.js} +3 -3
  96. package/dist/plugin-sdk/{thread-bindings.state-DRZAbcUu.js → thread-bindings.state-BNWfHA0f.js} +2 -2
  97. package/dist/plugin-sdk/{tmp-fased-dir-BpMLNd4L.d.ts → tmp-fased-dir-Be1wBhVz.d.ts} +1 -1
  98. package/dist/plugin-sdk/{types-0CsXVmg8.d.ts → types-CJGVZX6j.d.ts} +1 -1
  99. package/dist/plugin-sdk/{types-DMLEeE52.d.ts → types-CXLEOrJX.d.ts} +1 -1
  100. package/dist/plugin-sdk/{wallet-status-2yrXvqSS.js → wallet-status-Coekn_SJ.js} +77 -28
  101. package/dist/plugin-sdk/{web-CSRe4zy2.js → web-BwolzGVF.js} +31 -31
  102. package/dist/plugin-sdk/{whatsapp-actions-CkLkpg8M.js → whatsapp-actions-CSvf6eev.js} +13 -13
  103. package/dist/plugin-sdk/{whatsapp-heartbeat-DuAE9_88.js → whatsapp-heartbeat-Bw7OtTe6.js} +2 -2
  104. package/dist/plugin-sdk/whatsapp.d.ts +3 -3
  105. package/dist/plugin-sdk/whatsapp.js +12 -12
  106. package/dist/plugin-sdk/{wsl-CXVwPntb.js → wsl-By1Mc-oS.js} +3 -3
  107. package/dist/plugin-sdk/{zod-schema.providers-core-FaYR6KdD.d.ts → zod-schema.providers-core-TI6sL-6B.d.ts} +16 -16
  108. package/dist/providers/registry.js +1 -1
  109. package/dist/version.js +11 -1
  110. package/extensions/acpx/package.json +1 -1
  111. package/extensions/bluebubbles/package.json +1 -1
  112. package/extensions/copilot-proxy/package.json +1 -1
  113. package/extensions/diagnostics-otel/package.json +1 -1
  114. package/extensions/fased-federation/package.json +1 -1
  115. package/extensions/google-gemini-cli-auth/package.json +1 -1
  116. package/extensions/imessage/package.json +1 -1
  117. package/extensions/irc/package.json +1 -1
  118. package/extensions/line/package.json +1 -1
  119. package/extensions/llm-task/package.json +1 -1
  120. package/extensions/lobster/package.json +1 -1
  121. package/extensions/matrix/CHANGELOG.md +12 -0
  122. package/extensions/matrix/package.json +1 -1
  123. package/extensions/mattermost/package.json +1 -1
  124. package/extensions/memory-core/package.json +2 -2
  125. package/extensions/memory-lancedb/package.json +1 -1
  126. package/extensions/minimax-portal-auth/package.json +1 -1
  127. package/extensions/msteams/CHANGELOG.md +12 -0
  128. package/extensions/msteams/package.json +1 -1
  129. package/extensions/nextcloud-talk/package.json +1 -1
  130. package/extensions/nostr/CHANGELOG.md +12 -0
  131. package/extensions/nostr/package.json +1 -1
  132. package/extensions/open-prose/package.json +1 -1
  133. package/extensions/sat-mining/index.ts +122 -13
  134. package/extensions/sat-mining/package.json +1 -1
  135. package/extensions/sat-mining/src/protocol-contract.ts +64 -0
  136. package/extensions/sat-mining/src/round-watcher.ts +6 -4
  137. package/extensions/sat-mining/src/runtime.ts +9 -3
  138. package/extensions/sat-mining/src/solana-submit.ts +7 -53
  139. package/extensions/signal/package.json +1 -1
  140. package/extensions/synology-chat/package.json +1 -1
  141. package/extensions/tlon/package.json +1 -1
  142. package/extensions/twitch/CHANGELOG.md +12 -0
  143. package/extensions/twitch/package.json +1 -1
  144. package/extensions/voice-call/CHANGELOG.md +12 -0
  145. package/extensions/voice-call/package.json +1 -1
  146. package/extensions/zalo/CHANGELOG.md +12 -0
  147. package/extensions/zalo/package.json +1 -1
  148. package/extensions/zalouser/CHANGELOG.md +12 -0
  149. package/extensions/zalouser/package.json +1 -1
  150. package/package.json +1 -1
  151. package/scripts/start-managed.sh +21 -1
@@ -1,13 +1,13 @@
1
- import { An as GATEWAY_CLIENT_IDS, B as INPUT_PROVENANCE_KIND_VALUES, Bn as CLI_DEFAULT_OPERATOR_SCOPES, Hn as resolveLeastPrivilegeOperatorScopesForMethod, Mn as GATEWAY_CLIENT_NAMES, jn as GATEWAY_CLIENT_MODES } from "./runtime-CyTWeylK.js";
1
+ import { An as GATEWAY_CLIENT_IDS, B as INPUT_PROVENANCE_KIND_VALUES, Bn as CLI_DEFAULT_OPERATOR_SCOPES, Hn as resolveLeastPrivilegeOperatorScopesForMethod, Mn as GATEWAY_CLIENT_NAMES, jn as GATEWAY_CLIENT_MODES } from "./runtime-CeoGffDi.js";
2
2
  import { i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir } from "./paths-BEmvSyOV.js";
3
3
  import { _ as shortenHomeInString, a as ensureDir$1, h as resolveUserPath, t as CONFIG_DIR } from "./utils-CYk9EKoq.js";
4
- import { Gn as isPrivateNetworkBaseUrl, Kt as normalizeProviderId$1, Mn as resolveFasedAgentAgentDir, ir as DEFAULT_CONTEXT_TOKENS, n as loadConfig, qn as assertSecretInputResolved, sr as VERSION } from "./config-BxOWD3gF.js";
4
+ import { Gn as isPrivateNetworkBaseUrl, Kt as normalizeProviderId$1, Mn as resolveFasedAgentAgentDir, ir as DEFAULT_CONTEXT_TOKENS, n as loadConfig, qn as assertSecretInputResolved, sr as VERSION } from "./config-ZMbTT0kM.js";
5
5
  import { l as resolveAgentIdFromSessionKey } from "./session-key-HSJ2KQTc.js";
6
6
  import { n as logError, t as logDebug } from "./logger-BbFvCoKk.js";
7
7
  import { n as redactSensitiveText } from "./redact-Bm8vu_ju.js";
8
8
  import { n as redactSensitiveUrlLikeString } from "./redact-sensitive-url-dPvnFFsK.js";
9
9
  import { a as normalizeDeviceAuthRole, n as clearDevicePairing, o as normalizeDeviceAuthScopes } from "./device-pairing-D2Yq-_U6.js";
10
- import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-D9-CQFS2.js";
10
+ import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-BQ6fFRBA.js";
11
11
  import { i as isSecureWebSocketUrl, t as rawDataToString } from "./ws-CocpWGhl.js";
12
12
  import { createRequire } from "node:module";
13
13
  import path from "node:path";
@@ -1294,6 +1294,7 @@ const ModelsAuthStatusParamsSchema = Type.Object({}, { additionalProperties: fal
1294
1294
  const ModelsAuthStatusKindSchema = Type.Union([
1295
1295
  Type.Literal("ok"),
1296
1296
  Type.Literal("expiring"),
1297
+ Type.Literal("refresh-required"),
1297
1298
  Type.Literal("expired"),
1298
1299
  Type.Literal("missing"),
1299
1300
  Type.Literal("static")
@@ -3068,6 +3069,7 @@ const PresenceEntrySchema = Type.Object({
3068
3069
  host: Type.Optional(NonEmptyString),
3069
3070
  ip: Type.Optional(NonEmptyString),
3070
3071
  version: Type.Optional(NonEmptyString),
3072
+ runtimeSource: Type.Optional(NonEmptyString),
3071
3073
  platform: Type.Optional(NonEmptyString),
3072
3074
  deviceFamily: Type.Optional(NonEmptyString),
3073
3075
  modelIdentifier: Type.Optional(NonEmptyString),
@@ -3160,6 +3162,11 @@ const HelloOkSchema = Type.Object({
3160
3162
  protocol: Type.Integer({ minimum: 1 }),
3161
3163
  server: Type.Object({
3162
3164
  version: NonEmptyString,
3165
+ runtimeSource: Type.Optional(Type.Union([
3166
+ Type.Literal("source-checkout"),
3167
+ Type.Literal("managed-package"),
3168
+ Type.Literal("packaged-runtime")
3169
+ ])),
3163
3170
  connId: NonEmptyString
3164
3171
  }, { additionalProperties: false }),
3165
3172
  features: Type.Object({
@@ -4689,17 +4696,39 @@ function randomIdempotencyKey() {
4689
4696
  //#region src/mining/mainnet-sync.ts
4690
4697
  const DEFAULT_MANIFEST_URL = "https://satcoin.app/.well-known/sat-mainnet-addresses.json";
4691
4698
  const DEFAULT_TIMEOUT_MS = 12e3;
4692
- const EMBEDDED_TRUSTED_KEYS = [];
4699
+ const EMBEDDED_TRUSTED_KEYS = [{
4700
+ id: "sat-mainnet-2026-01",
4701
+ publicKeyBase64Url: "F-Kv6SBcZHvs1LQ0LNHwYQ6VuKidpkv1nkgRqggn1kk",
4702
+ fingerprintSha256: "7fc6f335e13fbba3cee2f833e4ab656a19fd8c0715b9d9097a3e196f0e3a0ebd"
4703
+ }];
4704
+ for (const key of EMBEDDED_TRUSTED_KEYS) {
4705
+ const publicKeyBytes = Buffer.from(key.publicKeyBase64Url, "base64url");
4706
+ const fingerprint = createHash("sha256").update(publicKeyBytes).digest("hex");
4707
+ if (publicKeyBytes.length !== 32 || fingerprint !== key.fingerprintSha256) throw new Error(`Invalid embedded SAT mainnet manifest key: ${key.id}`);
4708
+ }
4693
4709
  function trustedKeysFromEnv(env) {
4694
4710
  const raw = String(env.FASED_SAT_MAINNET_MANIFEST_PUBLIC_KEY ?? "").trim();
4695
- if (!raw) return [];
4696
- return [{
4697
- id: String(env.FASED_SAT_MAINNET_MANIFEST_PUBLIC_KEY_ID ?? "env").trim() || "env",
4698
- publicKeyBase64Url: raw
4699
- }];
4711
+ const id = String(env.FASED_SAT_MAINNET_MANIFEST_PUBLIC_KEY_ID ?? "env").trim() || "env";
4712
+ const rotated = String(env.FASED_SAT_MAINNET_MANIFEST_PUBLIC_KEYS ?? "").split(",").map((entry) => entry.trim()).filter(Boolean).map((publicKeyBase64Url, index) => ({
4713
+ id: `${id}-${index + 1}`,
4714
+ publicKeyBase64Url,
4715
+ source: "environment"
4716
+ }));
4717
+ return [...raw ? [{
4718
+ id,
4719
+ publicKeyBase64Url: raw,
4720
+ source: "environment"
4721
+ }] : [], ...rotated];
4700
4722
  }
4701
4723
  function resolveTrustedKeys(env) {
4702
- return [...EMBEDDED_TRUSTED_KEYS, ...trustedKeysFromEnv(env)];
4724
+ return [...EMBEDDED_TRUSTED_KEYS.map((key) => ({
4725
+ ...key,
4726
+ source: "embedded"
4727
+ })), ...trustedKeysFromEnv(env)];
4728
+ }
4729
+ function resolveConfiguredTrustKeySource(env) {
4730
+ if (EMBEDDED_TRUSTED_KEYS.length > 0) return "embedded";
4731
+ return trustedKeysFromEnv(env).length > 0 ? "environment" : "missing";
4703
4732
  }
4704
4733
  function resolveManifestUrl(env) {
4705
4734
  return String(env.FASED_SAT_MAINNET_MANIFEST_URL ?? "").trim() || DEFAULT_MANIFEST_URL;
@@ -4758,37 +4787,54 @@ function verifyDetachedEd25519Signature(params) {
4758
4787
  x: normalizeBase64Url(trustedKey.publicKeyBase64Url)
4759
4788
  }
4760
4789
  });
4761
- if (verify(null, Buffer.from(params.payload), publicKey, signature)) return true;
4790
+ if (verify(null, Buffer.from(params.payload), publicKey, signature)) return trustedKey;
4762
4791
  } catch {}
4763
- return false;
4792
+ return null;
4764
4793
  }
4765
4794
  async function verifyLiveManifest(params) {
4795
+ const configuredTrustKeySource = resolveConfiguredTrustKeySource(params.env);
4766
4796
  const expectedHash = parseSha256(await fetchText(`${params.manifestUrl}.sha256`, { required: false }).catch(() => null));
4767
4797
  if (!expectedHash) return {
4768
- hash: "missing",
4769
- signature: "missing"
4798
+ verification: {
4799
+ hash: "missing",
4800
+ signature: "missing"
4801
+ },
4802
+ trustKeySource: configuredTrustKeySource
4770
4803
  };
4771
4804
  if (sha256Hex$1(params.raw) !== expectedHash) return {
4772
- hash: "invalid",
4773
- signature: "missing"
4805
+ verification: {
4806
+ hash: "invalid",
4807
+ signature: "missing"
4808
+ },
4809
+ trustKeySource: configuredTrustKeySource
4774
4810
  };
4775
4811
  const signature = await fetchText(`${params.manifestUrl}.sig`, { required: false }).catch(() => null);
4776
4812
  if (!signature?.trim()) return {
4777
- hash: "valid",
4778
- signature: "missing"
4813
+ verification: {
4814
+ hash: "valid",
4815
+ signature: "missing"
4816
+ },
4817
+ trustKeySource: configuredTrustKeySource
4779
4818
  };
4780
4819
  const trustedKeys = resolveTrustedKeys(params.env);
4781
- if (!trustedKeys.length || !verifyDetachedEd25519Signature({
4820
+ const verifiedKey = verifyDetachedEd25519Signature({
4782
4821
  payload: params.raw,
4783
4822
  signatureBase64: signature.trim(),
4784
4823
  trustedKeys
4785
- })) return {
4786
- hash: "valid",
4787
- signature: "invalid"
4824
+ });
4825
+ if (!verifiedKey) return {
4826
+ verification: {
4827
+ hash: "valid",
4828
+ signature: "invalid"
4829
+ },
4830
+ trustKeySource: configuredTrustKeySource
4788
4831
  };
4789
4832
  return {
4790
- hash: "valid",
4791
- signature: "valid"
4833
+ verification: {
4834
+ hash: "valid",
4835
+ signature: "valid"
4836
+ },
4837
+ trustKeySource: verifiedKey.source
4792
4838
  };
4793
4839
  }
4794
4840
  function readLocalIds(env) {
@@ -4845,11 +4891,12 @@ async function getSatMainnetSyncStatus(opts) {
4845
4891
  verification: {
4846
4892
  hash: "not_required",
4847
4893
  signature: "not_required"
4848
- }
4894
+ },
4895
+ trustKeySource: "not_required"
4849
4896
  };
4850
4897
  const officialIds = readOfficialIds(manifest);
4851
4898
  if (!officialIds) throw new Error("live manifest is missing the complete SAT runtime id tuple");
4852
- const verification = await verifyLiveManifest({
4899
+ const { verification, trustKeySource } = await verifyLiveManifest({
4853
4900
  manifestUrl,
4854
4901
  raw,
4855
4902
  env
@@ -4868,7 +4915,8 @@ async function getSatMainnetSyncStatus(opts) {
4868
4915
  officialIds,
4869
4916
  needsSync: false,
4870
4917
  verification,
4871
- error: "Signed manifest verification failed."
4918
+ trustKeySource,
4919
+ error: trustKeySource === "missing" ? "This Fased release has no trusted SAT mainnet manifest key. Update Fased before syncing or mining." : "Signed manifest verification failed."
4872
4920
  };
4873
4921
  const synced = idsEqual(localIds, officialIds);
4874
4922
  return {
@@ -4884,7 +4932,8 @@ async function getSatMainnetSyncStatus(opts) {
4884
4932
  officialIds,
4885
4933
  needsSync: !synced,
4886
4934
  runtimeFile: resolveWritableSatRuntimeDefaultsFile(env),
4887
- verification
4935
+ verification,
4936
+ trustKeySource
4888
4937
  };
4889
4938
  } catch (error) {
4890
4939
  return {
@@ -1,17 +1,17 @@
1
- import { Bt as formatDurationPrecise, Ht as enqueueSystemEvent, J as sleepWithAbort, K as buildPairingReply, L as resolveMentionGating, Mr as readStoreAllowFromForDmPolicy, Nr as resolveDmGroupAccessWithCommandGate, Ot as normalizeGroupActivation, Pr as resolveDmGroupAccessWithLists, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, Zt as registerUnhandledRejectionHandler, dt as resolveInboundDebounceMs, fn as buildMentionRegexes, ft as formatInboundEnvelope, kt as parseActivationCommand, ln as hasControlCommand, mn as normalizeMentionText, mt as resolveEnvelopeFormatOptions, nt as recordPendingHistoryEntryIfEnabled, or as createDedupeCache, ot as shouldAckReactionForWhatsApp, q as computeBackoff, st as dispatchReplyWithBufferedBlockDispatcher, un as shouldComputeCommandAuthorized, ut as createInboundDebouncer, vt as getReplyFromConfig } from "./config-schema-ChJcPn7x.js";
2
- import { C as recordSessionMetaFromInbound, S as readSessionUpdatedAt, _n as resolveChannelGroupRequireMention, bn as resolveGroupSessionKey, gn as resolveChannelGroupPolicy, w as updateLastRoute, x as loadSessionStore } from "./runtime-CyTWeylK.js";
1
+ import { Bt as formatDurationPrecise, Ht as enqueueSystemEvent, J as sleepWithAbort, K as buildPairingReply, L as resolveMentionGating, Mr as readStoreAllowFromForDmPolicy, Nr as resolveDmGroupAccessWithCommandGate, Ot as normalizeGroupActivation, Pr as resolveDmGroupAccessWithLists, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, Zt as registerUnhandledRejectionHandler, dt as resolveInboundDebounceMs, fn as buildMentionRegexes, ft as formatInboundEnvelope, kt as parseActivationCommand, ln as hasControlCommand, mn as normalizeMentionText, mt as resolveEnvelopeFormatOptions, nt as recordPendingHistoryEntryIfEnabled, or as createDedupeCache, ot as shouldAckReactionForWhatsApp, q as computeBackoff, st as dispatchReplyWithBufferedBlockDispatcher, un as shouldComputeCommandAuthorized, ut as createInboundDebouncer, vt as getReplyFromConfig } from "./config-schema-Cku0a8Tm.js";
2
+ import { C as recordSessionMetaFromInbound, S as readSessionUpdatedAt, _n as resolveChannelGroupRequireMention, bn as resolveGroupSessionKey, gn as resolveChannelGroupPolicy, w as updateLastRoute, x as loadSessionStore } from "./runtime-CeoGffDi.js";
3
3
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DBPNbQDQ.js";
4
4
  import { i as logVerbose, p as getChildLogger, s as shouldLogVerbose } from "./globals-B_jjtAje.js";
5
5
  import "./paths-BEmvSyOV.js";
6
6
  import { d as normalizeE164, l as isSelfChatMode, m as resolveJidToE164, n as clamp, u as jidToE164, x as toWhatsappJid, y as sleep } from "./utils-CYk9EKoq.js";
7
- import { Cr as formatCliCommand, n as loadConfig } from "./config-BxOWD3gF.js";
7
+ import { Cr as formatCliCommand, n as loadConfig } from "./config-ZMbTT0kM.js";
8
8
  import "./agent-scope-BbgPlhtw.js";
9
9
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-HSJ2KQTc.js";
10
10
  import "./accounts-RHZyaB73.js";
11
11
  import "./accounts-CuqIKU8X.js";
12
12
  import "./logger-BbFvCoKk.js";
13
13
  import "./exec-DQ8j4Fm3.js";
14
- import { _ as webAuthExists, c as logWebSelfId, d as pickWebChannel, i as resolveWhatsAppAccount, o as WA_WEB_AUTH_DIR, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-DzLdrOVC.js";
14
+ import { _ as webAuthExists, c as logWebSelfId, d as pickWebChannel, i as resolveWhatsAppAccount, o as WA_WEB_AUTH_DIR, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-B5fY9hZy.js";
15
15
  import "./allow-list-BYeKk0Sy.js";
16
16
  import "./redact-Bm8vu_ju.js";
17
17
  import "./github-copilot-token-CUK__1s1.js";
@@ -21,11 +21,11 @@ import "./ip-C70a-YlD.js";
21
21
  import "./ssrf-BZG8Ztod.js";
22
22
  import "./fetch-guard-BuYrl6q2.js";
23
23
  import { n as redactSensitiveUrlLikeString } from "./redact-sensitive-url-dPvnFFsK.js";
24
- import "./send-FcEJfLTd.js";
25
- import { A as resolveDefaultGroupPolicy, M as warnMissingProviderGroupPolicyFallbackOnce, j as resolveOpenProviderRuntimeGroupPolicy } from "./helpers-0E444CR0.js";
26
- import { D as formatLocationText, O as toLocationContext } from "./wsl-CXVwPntb.js";
27
- import { a as upsertChannelPairingRequest } from "./pairing-store-DADXOv-J.js";
28
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-CwN3c1Fq.js";
24
+ import "./send-DCxAv7bV.js";
25
+ import { A as resolveDefaultGroupPolicy, M as warnMissingProviderGroupPolicyFallbackOnce, j as resolveOpenProviderRuntimeGroupPolicy } from "./helpers-vfzH9tBn.js";
26
+ import { D as formatLocationText, O as toLocationContext } from "./wsl-By1Mc-oS.js";
27
+ import { a as upsertChannelPairingRequest } from "./pairing-store-CprpGco9.js";
28
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-CZuCyS7k.js";
29
29
  import "./tailscale-status-ClsquRGs.js";
30
30
  import { l as resolveIdentityNamePrefix, n as createReplyPrefixOptions, u as resolveMessagePrefix } from "./reply-prefix-Bqzm6DC1.js";
31
31
  import "./tokens-BvtlOzVP.js";
@@ -34,40 +34,40 @@ import "./pairing-token-N_6Jbt1L.js";
34
34
  import "./diagnostic-Dfn1iERm.js";
35
35
  import "./diagnostic-session-state-HO94DMou.js";
36
36
  import { t as redactIdentifier } from "./redact-identifier-Q3tkvxhm.js";
37
- import "./optional-runtime-dependency-BaVO1F3i.js";
38
- import "./image-ops-BYc-Ol7C.js";
39
- import "./wallet-status-2yrXvqSS.js";
40
- import "./pi-model-discovery-D9-CQFS2.js";
41
- import "./runtime-dependency-D6tYtvtU.js";
37
+ import "./optional-runtime-dependency-BFpqaCzp.js";
38
+ import "./image-ops-BnOmQA5d.js";
39
+ import "./wallet-status-Coekn_SJ.js";
40
+ import "./pi-model-discovery-BQ6fFRBA.js";
41
+ import "./runtime-dependency-Cvbs0GXf.js";
42
42
  import "./ws-CocpWGhl.js";
43
43
  import "./path-alias-guards-Dg3gU-MA.js";
44
44
  import "./fs-safe-BG-VzVkL.js";
45
- import { n as resolveMarkdownTableMode } from "./markdown-tables-CpNefu6e.js";
46
- import { n as loadWebMedia, u as getAgentScopedMediaLocalRoots } from "./media-QBCmvhBQ.js";
47
- import "./send-CNxLDNQ9.js";
48
- import { a as saveMediaBuffer } from "./outbound-attachment-Dhi2Q-_f.js";
45
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-B84dPWNG.js";
46
+ import { n as loadWebMedia, u as getAgentScopedMediaLocalRoots } from "./media-4daDcNER.js";
47
+ import "./send-B_-UtG9F.js";
48
+ import { a as saveMediaBuffer } from "./outbound-attachment-DvcxPP7b.js";
49
49
  import "./fetch-Cu-ahkie.js";
50
- import "./thread-bindings.state-DRZAbcUu.js";
50
+ import "./thread-bindings.state-BNWfHA0f.js";
51
51
  import "./memory-search-C3C0bD2H.js";
52
- import "./manager-VNI6sxbG.js";
52
+ import "./manager-CHYhpKHn.js";
53
53
  import "./query-expansion-Zr9qQixm.js";
54
- import "./common-BJPuBxmx.js";
55
- import "./commands-registry-Bea-V_lR.js";
56
- import "./skill-commands-C2CnUTPX.js";
54
+ import "./common-LMHJe8KW.js";
55
+ import "./commands-registry-COIbIjGO.js";
56
+ import "./skill-commands-BQL6TBIv.js";
57
57
  import { t as finalizeInboundContext } from "./inbound-context-BFnIdcqI.js";
58
58
  import "./directory-live-DatqU-eS.js";
59
- import "./targets-eG595pY0.js";
59
+ import "./targets-D8UaoWHd.js";
60
60
  import "./sandbox-paths-lj7_EVuA.js";
61
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BPkfG5Pg.js";
61
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CZFzHOIe.js";
62
62
  import "./render-Bwu_WxwA.js";
63
- import { t as convertMarkdownTables } from "./tables-L5mXZ5y_.js";
63
+ import { t as convertMarkdownTables } from "./tables-B-G7Bb0l.js";
64
64
  import { n as recordChannelActivity } from "./channel-activity-Cg1xRoc2.js";
65
- import { r as setActiveWebListener } from "./active-listener-C8a74qPO.js";
65
+ import { r as setActiveWebListener } from "./active-listener-BH7rDR47.js";
66
66
  import "./shared-clhhbWN3.js";
67
- import "./whatsapp-heartbeat-DuAE9_88.js";
68
- import { i as markdownToWhatsApp, n as sendMessageWhatsApp, r as sendReactionWhatsApp } from "./outbound-CWrcAWpE.js";
69
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-C3Ul4abD.js";
70
- import { t as loginWeb } from "./login-B_At7IVI.js";
67
+ import "./whatsapp-heartbeat-Bw7OtTe6.js";
68
+ import { i as markdownToWhatsApp, n as sendMessageWhatsApp, r as sendReactionWhatsApp } from "./outbound-C1xBxfNb.js";
69
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-ETYBbhLn.js";
70
+ import { t as loginWeb } from "./login-C73Wpiw8.js";
71
71
  import { randomUUID } from "node:crypto";
72
72
  import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
73
73
 
@@ -1,15 +1,15 @@
1
- import "./runtime-CyTWeylK.js";
1
+ import "./runtime-CeoGffDi.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
5
5
  import "./utils-CYk9EKoq.js";
6
- import "./config-BxOWD3gF.js";
6
+ import "./config-ZMbTT0kM.js";
7
7
  import "./agent-scope-BbgPlhtw.js";
8
8
  import "./accounts-RHZyaB73.js";
9
9
  import "./accounts-CuqIKU8X.js";
10
10
  import "./logger-BbFvCoKk.js";
11
11
  import "./exec-DQ8j4Fm3.js";
12
- import { i as resolveWhatsAppAccount } from "./accounts-DzLdrOVC.js";
12
+ import { i as resolveWhatsAppAccount } from "./accounts-B5fY9hZy.js";
13
13
  import "./redact-Bm8vu_ju.js";
14
14
  import "./github-copilot-token-CUK__1s1.js";
15
15
  import "./retry-DstNBhDW.js";
@@ -17,19 +17,19 @@ import "./paths-CTZ2RS_E.js";
17
17
  import "./ip-C70a-YlD.js";
18
18
  import "./ssrf-BZG8Ztod.js";
19
19
  import "./fetch-guard-BuYrl6q2.js";
20
- import "./chunk-CwN3c1Fq.js";
21
- import "./optional-runtime-dependency-BaVO1F3i.js";
22
- import "./image-ops-BYc-Ol7C.js";
20
+ import "./chunk-CZuCyS7k.js";
21
+ import "./optional-runtime-dependency-BFpqaCzp.js";
22
+ import "./image-ops-BnOmQA5d.js";
23
23
  import "./path-alias-guards-Dg3gU-MA.js";
24
24
  import "./fs-safe-BG-VzVkL.js";
25
- import "./markdown-tables-CpNefu6e.js";
26
- import "./media-QBCmvhBQ.js";
27
- import { a as jsonResult, c as readReactionParams, d as readStringParam, n as createActionGate, t as ToolAuthorizationError } from "./common-BJPuBxmx.js";
25
+ import "./markdown-tables-B84dPWNG.js";
26
+ import "./media-4daDcNER.js";
27
+ import { a as jsonResult, c as readReactionParams, d as readStringParam, n as createActionGate, t as ToolAuthorizationError } from "./common-LMHJe8KW.js";
28
28
  import "./render-Bwu_WxwA.js";
29
- import "./tables-L5mXZ5y_.js";
30
- import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-DD8edEdz.js";
31
- import { r as sendReactionWhatsApp } from "./outbound-CWrcAWpE.js";
32
- import "./session-C3Ul4abD.js";
29
+ import "./tables-B-G7Bb0l.js";
30
+ import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-COo_TR7B.js";
31
+ import { r as sendReactionWhatsApp } from "./outbound-C1xBxfNb.js";
32
+ import "./session-ETYBbhLn.js";
33
33
 
34
34
  //#region src/agents/tools/whatsapp-target-auth.ts
35
35
  function resolveAuthorizedWhatsAppOutboundTarget(params) {
@@ -1,9 +1,9 @@
1
- import { x as loadSessionStore } from "./runtime-CyTWeylK.js";
1
+ import { x as loadSessionStore } from "./runtime-CeoGffDi.js";
2
2
  import { f as normalizeChatChannelId } from "./subsystem-DBPNbQDQ.js";
3
3
  import { d as normalizeE164 } from "./utils-CYk9EKoq.js";
4
4
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-HSJ2KQTc.js";
5
5
  import { l as resolveStorePath } from "./paths-CTZ2RS_E.js";
6
- import { r as readChannelAllowFromStoreSync } from "./pairing-store-DADXOv-J.js";
6
+ import { r as readChannelAllowFromStoreSync } from "./pairing-store-CprpGco9.js";
7
7
 
8
8
  //#region src/channels/plugins/whatsapp-heartbeat.ts
9
9
  function getSessionRecipients(cfg) {
@@ -1,8 +1,8 @@
1
1
  import { n as DEFAULT_ACCOUNT_ID, r as normalizeAccountId } from "./session-key--_1zVBRB.js";
2
2
  import { At as FasedAgentConfig, Cn as DmPolicy, F as ChannelAccountSnapshot, J as ChannelMessageActionAdapter, Wt as WhatsAppAccountConfig, it as ChannelStatusIssue, n as ChannelPlugin, r as ChannelOnboardingAdapter, u as ChannelMessageActionName, ut as getChatChannelMeta, wn as GroupPolicy } from "./types.plugin-CvUiB3Kh.js";
3
- import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-DMLEeE52.js";
4
- import { D as normalizeE164 } from "./types-0CsXVmg8.js";
5
- 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-6XVXW554.js";
3
+ import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-CXLEOrJX.js";
4
+ import { D as normalizeE164 } from "./types-CJGVZX6j.js";
5
+ 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-DWXHX-jt.js";
6
6
  import { _ as buildTokenChannelStatusSummary, m as resolveWhatsAppGroupToolPolicy, p as resolveWhatsAppGroupRequireMention } from "./group-mentions-DLOOve8d.js";
7
7
  import { z } from "zod";
8
8
 
@@ -1,30 +1,30 @@
1
- import { $t as resolveWhatsAppGroupToolPolicy, At as resolveWhatsAppMentionStripPatterns, Mt as normalizeWhatsAppAllowFromEntries, Nn as getChatChannelMeta, Nt as normalizeWhatsAppMessagingTarget, Qt as resolveWhatsAppGroupRequireMention, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, jt as looksLikeWhatsAppTargetId, kt as resolveWhatsAppGroupIntroHint, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-CyTWeylK.js";
1
+ import { $t as resolveWhatsAppGroupToolPolicy, At as resolveWhatsAppMentionStripPatterns, Mt as normalizeWhatsAppAllowFromEntries, Nn as getChatChannelMeta, Nt as normalizeWhatsAppMessagingTarget, Qt as resolveWhatsAppGroupRequireMention, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, jt as looksLikeWhatsAppTargetId, kt as resolveWhatsAppGroupIntroHint, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-CeoGffDi.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
5
5
  import { c as isRecord, d as normalizeE164, f as pathExists } from "./utils-CYk9EKoq.js";
6
- import { Cr as formatCliCommand, l as WhatsAppConfigSchema } from "./config-BxOWD3gF.js";
6
+ import { Cr as formatCliCommand, l as WhatsAppConfigSchema } from "./config-ZMbTT0kM.js";
7
7
  import "./agent-scope-BbgPlhtw.js";
8
8
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
9
9
  import "./accounts-RHZyaB73.js";
10
10
  import "./accounts-CuqIKU8X.js";
11
11
  import "./logger-BbFvCoKk.js";
12
12
  import "./exec-DQ8j4Fm3.js";
13
- import { a as resolveWhatsAppAuthDir, i as resolveWhatsAppAccount, n as listWhatsAppAccountIds, r as resolveDefaultWhatsAppAccountId } from "./accounts-DzLdrOVC.js";
13
+ import { a as resolveWhatsAppAuthDir, i as resolveWhatsAppAccount, n as listWhatsAppAccountIds, r as resolveDefaultWhatsAppAccountId } from "./accounts-B5fY9hZy.js";
14
14
  import "./redact-Bm8vu_ju.js";
15
15
  import "./github-copilot-token-CUK__1s1.js";
16
16
  import "./retry-DstNBhDW.js";
17
17
  import "./paths-CTZ2RS_E.js";
18
- import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-D01_6FkJ.js";
19
- import { A as resolveDefaultGroupPolicy, D as formatDocsLink, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, i as normalizeAllowFromEntries, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, w as buildTokenChannelStatusSummary, x as splitOnboardingEntries } from "./helpers-0E444CR0.js";
20
- import "./pairing-store-DADXOv-J.js";
21
- import "./optional-runtime-dependency-BaVO1F3i.js";
22
- import "./image-ops-BYc-Ol7C.js";
23
- import { d as readStringParam, n as createActionGate } from "./common-BJPuBxmx.js";
18
+ import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n as applyAccountNameToChannelSection, o as setAccountEnabledInConfigSection, r as migrateBaseNameToDefaultAccount, s as buildChannelConfigSchema, t as PAIRING_APPROVED_MESSAGE, u as emptyPluginConfigSchema } from "./pairing-message-DpYT614h.js";
19
+ import { A as resolveDefaultGroupPolicy, D as formatDocsLink, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, i as normalizeAllowFromEntries, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, w as buildTokenChannelStatusSummary, x as splitOnboardingEntries } from "./helpers-vfzH9tBn.js";
20
+ import "./pairing-store-CprpGco9.js";
21
+ import "./optional-runtime-dependency-BFpqaCzp.js";
22
+ import "./image-ops-BnOmQA5d.js";
23
+ import { d as readStringParam, n as createActionGate } from "./common-LMHJe8KW.js";
24
24
  import { n as asString, r as collectIssuesForEnabledAccounts } from "./shared-clhhbWN3.js";
25
25
  import "./channel-core-BOkyXXLa.js";
26
- import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-DD8edEdz.js";
27
- import { t as resolveWhatsAppHeartbeatRecipients } from "./whatsapp-heartbeat-DuAE9_88.js";
26
+ import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-COo_TR7B.js";
27
+ import { t as resolveWhatsAppHeartbeatRecipients } from "./whatsapp-heartbeat-Bw7OtTe6.js";
28
28
  import path from "node:path";
29
29
 
30
30
  //#region src/config/merge-config.ts
@@ -293,7 +293,7 @@ const whatsappOnboardingAdapter = {
293
293
  message: linked ? "WhatsApp already linked. Re-link now?" : "Link WhatsApp now (QR)?",
294
294
  initialValue: !linked
295
295
  })) try {
296
- const { loginWeb } = await import("./login-B_At7IVI.js").then((n) => n.n);
296
+ const { loginWeb } = await import("./login-C73Wpiw8.js").then((n) => n.n);
297
297
  await loginWeb(false, void 0, runtime, accountId);
298
298
  } catch (err) {
299
299
  runtime.error(`WhatsApp login failed: ${String(err)}`);
@@ -1,10 +1,10 @@
1
1
  import { t as createSubsystemLogger } from "./subsystem-DBPNbQDQ.js";
2
2
  import { c as expandHomePrefix } from "./paths-BEmvSyOV.js";
3
3
  import { t as CONFIG_DIR } from "./utils-CYk9EKoq.js";
4
- import { Ft as resolveTelegramPreviewStreamMode } from "./config-BxOWD3gF.js";
4
+ import { Ft as resolveTelegramPreviewStreamMode } from "./config-ZMbTT0kM.js";
5
5
  import { p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
6
- import { n as readChannelAllowFromStore } from "./pairing-store-DADXOv-J.js";
7
- import { h as normalizeMimeType, u as getFileExtension } from "./image-ops-BYc-Ol7C.js";
6
+ import { n as readChannelAllowFromStore } from "./pairing-store-CprpGco9.js";
7
+ import { h as normalizeMimeType, u as getFileExtension } from "./image-ops-BnOmQA5d.js";
8
8
  import path from "node:path";
9
9
  import fs, { readFileSync } from "node:fs";
10
10
  import JSON5 from "json5";
@@ -8,8 +8,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
8
8
  off: "off";
9
9
  allowlist: "allowlist";
10
10
  group: "group";
11
- dm: "dm";
12
11
  all: "all";
12
+ dm: "dm";
13
13
  }>>;
14
14
  }, z.core.$strict>]>>;
15
15
  markdown: z.ZodOptional<z.ZodObject<{
@@ -146,8 +146,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
146
146
  }>>;
147
147
  reactionLevel: z.ZodOptional<z.ZodEnum<{
148
148
  off: "off";
149
- ack: "ack";
150
149
  minimal: "minimal";
150
+ ack: "ack";
151
151
  extensive: "extensive";
152
152
  }>>;
153
153
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -165,8 +165,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
165
165
  off: "off";
166
166
  allowlist: "allowlist";
167
167
  group: "group";
168
- dm: "dm";
169
168
  all: "all";
169
+ dm: "dm";
170
170
  }>>;
171
171
  }, z.core.$strict>]>>;
172
172
  markdown: z.ZodOptional<z.ZodObject<{
@@ -303,8 +303,8 @@ declare const TelegramConfigSchema: z.ZodObject<{
303
303
  }>>;
304
304
  reactionLevel: z.ZodOptional<z.ZodEnum<{
305
305
  off: "off";
306
- ack: "ack";
307
306
  minimal: "minimal";
307
+ ack: "ack";
308
308
  extensive: "extensive";
309
309
  }>>;
310
310
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -479,9 +479,9 @@ declare const DiscordConfigSchema: z.ZodObject<{
479
479
  sessionFilter: z.ZodOptional<z.ZodArray<z.ZodString>>;
480
480
  cleanupAfterResolve: z.ZodOptional<z.ZodBoolean>;
481
481
  target: z.ZodOptional<z.ZodEnum<{
482
- dm: "dm";
483
482
  channel: "channel";
484
483
  both: "both";
484
+ dm: "dm";
485
485
  }>>;
486
486
  }, z.core.$strict>>;
487
487
  ui: z.ZodOptional<z.ZodObject<{
@@ -524,8 +524,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
524
524
  final: "final";
525
525
  }>>;
526
526
  provider: z.ZodOptional<z.ZodEnum<{
527
- elevenlabs: "elevenlabs";
528
527
  openai: "openai";
528
+ elevenlabs: "elevenlabs";
529
529
  edge: "edge";
530
530
  }>>;
531
531
  summaryModel: z.ZodOptional<z.ZodString>;
@@ -547,8 +547,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
547
547
  seed: z.ZodOptional<z.ZodNumber>;
548
548
  applyTextNormalization: z.ZodOptional<z.ZodEnum<{
549
549
  off: "off";
550
- auto: "auto";
551
550
  on: "on";
551
+ auto: "auto";
552
552
  }>>;
553
553
  languageCode: z.ZodOptional<z.ZodString>;
554
554
  voiceSettings: z.ZodOptional<z.ZodObject<{
@@ -758,9 +758,9 @@ declare const DiscordConfigSchema: z.ZodObject<{
758
758
  sessionFilter: z.ZodOptional<z.ZodArray<z.ZodString>>;
759
759
  cleanupAfterResolve: z.ZodOptional<z.ZodBoolean>;
760
760
  target: z.ZodOptional<z.ZodEnum<{
761
- dm: "dm";
762
761
  channel: "channel";
763
762
  both: "both";
763
+ dm: "dm";
764
764
  }>>;
765
765
  }, z.core.$strict>>;
766
766
  ui: z.ZodOptional<z.ZodObject<{
@@ -803,8 +803,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
803
803
  final: "final";
804
804
  }>>;
805
805
  provider: z.ZodOptional<z.ZodEnum<{
806
- elevenlabs: "elevenlabs";
807
806
  openai: "openai";
807
+ elevenlabs: "elevenlabs";
808
808
  edge: "edge";
809
809
  }>>;
810
810
  summaryModel: z.ZodOptional<z.ZodString>;
@@ -826,8 +826,8 @@ declare const DiscordConfigSchema: z.ZodObject<{
826
826
  seed: z.ZodOptional<z.ZodNumber>;
827
827
  applyTextNormalization: z.ZodOptional<z.ZodEnum<{
828
828
  off: "off";
829
- auto: "auto";
830
829
  on: "on";
830
+ auto: "auto";
831
831
  }>>;
832
832
  languageCode: z.ZodOptional<z.ZodString>;
833
833
  voiceSettings: z.ZodOptional<z.ZodObject<{
@@ -952,8 +952,8 @@ declare const GoogleChatConfigSchema: z.ZodObject<{
952
952
  }, z.core.$strict>>;
953
953
  streamMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
954
954
  replace: "replace";
955
- status_final: "status_final";
956
955
  append: "append";
956
+ status_final: "status_final";
957
957
  }>>>;
958
958
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
959
959
  replyToMode: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"off">, z.ZodLiteral<"first">, z.ZodLiteral<"all">]>>;
@@ -1051,8 +1051,8 @@ declare const GoogleChatConfigSchema: z.ZodObject<{
1051
1051
  }, z.core.$strict>>;
1052
1052
  streamMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1053
1053
  replace: "replace";
1054
- status_final: "status_final";
1055
1054
  append: "append";
1055
+ status_final: "status_final";
1056
1056
  }>>>;
1057
1057
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
1058
1058
  replyToMode: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"off">, z.ZodLiteral<"first">, z.ZodLiteral<"all">]>>;
@@ -1126,8 +1126,8 @@ declare const SlackConfigSchema: z.ZodObject<{
1126
1126
  nativeStreaming: z.ZodOptional<z.ZodBoolean>;
1127
1127
  streamMode: z.ZodOptional<z.ZodEnum<{
1128
1128
  replace: "replace";
1129
- status_final: "status_final";
1130
1129
  append: "append";
1130
+ status_final: "status_final";
1131
1131
  }>>;
1132
1132
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
1133
1133
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
@@ -1284,8 +1284,8 @@ declare const SlackConfigSchema: z.ZodObject<{
1284
1284
  nativeStreaming: z.ZodOptional<z.ZodBoolean>;
1285
1285
  streamMode: z.ZodOptional<z.ZodEnum<{
1286
1286
  replace: "replace";
1287
- status_final: "status_final";
1288
1287
  append: "append";
1288
+ status_final: "status_final";
1289
1289
  }>>;
1290
1290
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
1291
1291
  reactionNotifications: z.ZodOptional<z.ZodEnum<{
@@ -1440,8 +1440,8 @@ declare const SignalConfigSchema: z.ZodObject<{
1440
1440
  }, z.core.$strict>>;
1441
1441
  reactionLevel: z.ZodOptional<z.ZodEnum<{
1442
1442
  off: "off";
1443
- ack: "ack";
1444
1443
  minimal: "minimal";
1444
+ ack: "ack";
1445
1445
  extensive: "extensive";
1446
1446
  }>>;
1447
1447
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -1516,8 +1516,8 @@ declare const SignalConfigSchema: z.ZodObject<{
1516
1516
  }, z.core.$strict>>;
1517
1517
  reactionLevel: z.ZodOptional<z.ZodEnum<{
1518
1518
  off: "off";
1519
- ack: "ack";
1520
1519
  minimal: "minimal";
1520
+ ack: "ack";
1521
1521
  extensive: "extensive";
1522
1522
  }>>;
1523
1523
  heartbeat: z.ZodOptional<z.ZodObject<{
@@ -505,7 +505,7 @@ const ANTHROPIC_MODEL_CAPABILITY_OVERRIDES = {
505
505
  thinkingLevels: ANTHROPIC_THINKING_LEVELS,
506
506
  defaultThinkingLevel: "low",
507
507
  thinkingMode: "anthropic-adaptive",
508
- reasoningBudgetSupported: true
508
+ reasoningBudgetSupported: false
509
509
  },
510
510
  "anthropic/claude-haiku-4-5": {
511
511
  thinkingLevels: ANTHROPIC_THINKING_LEVELS,
package/dist/version.js CHANGED
@@ -52,10 +52,20 @@ function readVersionFromBuildInfoForModuleUrl(moduleUrl) {
52
52
  function resolveVersionFromModuleUrl(moduleUrl) {
53
53
  return readVersionFromPackageJsonForModuleUrl(moduleUrl) || readVersionFromBuildInfoForModuleUrl(moduleUrl);
54
54
  }
55
+ function resolveRuntimeSource(env = process.env, moduleUrl = import.meta.url) {
56
+ const configured = env["FASED_RUNTIME_SOURCE"]?.trim();
57
+ if (configured === "source-checkout" || configured === "managed-package" || configured === "packaged-runtime") {
58
+ return configured;
59
+ }
60
+ if (moduleUrl.includes("/install-cache/npm-global/") || moduleUrl.includes("/node_modules/@fased/fased/")) {
61
+ return "managed-package";
62
+ }
63
+ return env["FASED_GATEWAY_MODE"] === "managed" ? "packaged-runtime" : "source-checkout";
64
+ }
55
65
  function resolveRuntimeServiceVersion(env = process.env, fallback = "dev") {
56
66
  return firstNonEmpty(env["FASED_VERSION"], env["FASED_SERVICE_VERSION"], env["npm_package_version"]) ?? fallback;
57
67
  }
58
68
  const VERSION = typeof __FASED_VERSION__ === "string" && __FASED_VERSION__ || process.env.FASED_BUNDLED_VERSION || resolveVersionFromModuleUrl(import.meta.url) || "0.0.0";
59
69
 
60
70
  //#endregion
61
- export { VERSION, resolveRuntimeServiceVersion };
71
+ export { VERSION, resolveRuntimeServiceVersion, resolveRuntimeSource };