@fased/fased 0.1.38 → 0.1.39

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 (76) hide show
  1. package/dist/brand.js +1 -1
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/cli/daemon-cli/install.js +38 -14
  5. package/dist/cli/daemon-cli/register-service-commands.js +1 -1
  6. package/dist/cli/update-cli/service-target.js +13 -0
  7. package/dist/cli/update-cli/update-command.js +122 -44
  8. package/dist/commands/daemon-install-helpers.js +3 -0
  9. package/dist/daemon/service.js +5 -0
  10. package/dist/daemon/systemd-system.js +237 -0
  11. package/dist/daemon/systemd.js +2 -2
  12. package/dist/infra/update-runner.js +41 -5
  13. package/dist/plugin-sdk/{audio-preflight-kCa_KGRH.js → audio-preflight-DIJQAjNX.js} +2 -2
  14. package/dist/plugin-sdk/{audio-preflight-BPK8t0tI.js → audio-preflight-WolqDIx8.js} +1 -1
  15. package/dist/plugin-sdk/channel-plugin-common.js +2 -2
  16. package/dist/plugin-sdk/{chunk-items-DGHUeFuI.js → chunk-items-j6n1a2yQ.js} +1 -1
  17. package/dist/plugin-sdk/command-status.js +2 -2
  18. package/dist/plugin-sdk/{config-C0qggNKQ.js → config-BxVjLTIv.js} +7 -7
  19. package/dist/plugin-sdk/{config-z0k05dwe.js → config-CZaFbNZU.js} +1 -1
  20. package/dist/plugin-sdk/{config-B6SjJFp-.js → config-DLVjQxOu.js} +1 -1
  21. package/dist/plugin-sdk/index.js +12 -2
  22. package/dist/plugin-sdk/{monitor-rOs3mUol.js → monitor-C20pbAuB.js} +3 -3
  23. package/dist/plugin-sdk/{monitor-o20KTHIi.js → monitor-DyW8M8cP.js} +6 -6
  24. package/dist/plugin-sdk/{monitor-C6Ohw9BA.js → monitor-JQsKE-Nn.js} +4 -4
  25. package/dist/plugin-sdk/{monitor-6lkdOqhQ.js → monitor-jztLTK6V.js} +3 -3
  26. package/dist/plugin-sdk/{openresponses-http-DkWqYznu.js → openresponses-http-81UzNEsm.js} +2 -2
  27. package/dist/plugin-sdk/{openresponses-http-BJONnUdy.js → openresponses-http-DXTQURTj.js} +1 -1
  28. package/dist/plugin-sdk/{pi-embedded-runner-DqDy0MWN.js → pi-embedded-runner-BXCGeeps.js} +7 -7
  29. package/dist/plugin-sdk/{pi-model-discovery-runtime-DyOIGBor.js → pi-model-discovery-runtime-BvFEoUSk.js} +1 -1
  30. package/dist/plugin-sdk/{pi-model-discovery-runtime-CKKNoqwk.js → pi-model-discovery-runtime-DYfUuqPN.js} +1 -1
  31. package/dist/plugin-sdk/{pi-model-discovery-runtime-C5ssE6EW.js → pi-model-discovery-runtime-DxoFm4Vd.js} +1 -1
  32. package/dist/plugin-sdk/{pw-ai-Boor5vYw.js → pw-ai-SNCI9UXT.js} +1 -1
  33. package/dist/plugin-sdk/{resolve-utils-bixHYDBj.js → resolve-utils-4mG32lvJ.js} +1 -1
  34. package/dist/plugin-sdk/{runtime-dependency-Deg_sw2k.js → runtime-dependency-B-1u41Ph.js} +9 -9
  35. package/dist/plugin-sdk/{slack-CGTAN4UD.js → slack-DRSLzWUb.js} +3 -3
  36. package/dist/plugin-sdk/{slack-BErIh0uj.js → slack-qsR7PUPb.js} +4 -4
  37. package/dist/plugin-sdk/slack.js +2 -2
  38. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  39. package/dist/plugin-sdk/src/daemon/systemd-system.d.ts +28 -0
  40. package/dist/plugin-sdk/{status-CCGFb0f2.js → status-Cl4MeWSg.js} +15 -15
  41. package/dist/plugin-sdk/{sticker-cache-wxl1Me2i.js → sticker-cache-CcER-WWu.js} +2 -2
  42. package/dist/plugin-sdk/{sticker-cache-CKAkkCoU.js → sticker-cache-DjFhjSZc.js} +2 -2
  43. package/dist/plugin-sdk/{telegram-actions-r86ntIKR.js → telegram-actions-8Rjfgf8m.js} +2 -2
  44. package/dist/plugin-sdk/{telegram-actions-BRUNEXMr.js → telegram-actions-DfDEOBPg.js} +3 -3
  45. package/dist/plugin-sdk/telegram.js +2 -2
  46. package/dist/plugin-sdk/{web-CXz56wyu.js → web-BbgvbXQz.js} +1 -1
  47. package/dist/plugin-sdk/{web-02I0vmdu.js → web-KBdzfu6K.js} +2 -2
  48. package/extensions/acpx/package.json +1 -1
  49. package/extensions/bluebubbles/package.json +1 -1
  50. package/extensions/copilot-proxy/package.json +1 -1
  51. package/extensions/diagnostics-otel/package.json +1 -1
  52. package/extensions/fased-federation/package.json +1 -1
  53. package/extensions/google-gemini-cli-auth/package.json +1 -1
  54. package/extensions/imessage/package.json +1 -1
  55. package/extensions/irc/package.json +1 -1
  56. package/extensions/line/package.json +1 -1
  57. package/extensions/llm-task/package.json +1 -1
  58. package/extensions/lobster/package.json +1 -1
  59. package/extensions/matrix/package.json +1 -1
  60. package/extensions/mattermost/package.json +1 -1
  61. package/extensions/memory-core/package.json +2 -2
  62. package/extensions/memory-lancedb/package.json +1 -1
  63. package/extensions/minimax-portal-auth/package.json +1 -1
  64. package/extensions/msteams/package.json +1 -1
  65. package/extensions/nextcloud-talk/package.json +1 -1
  66. package/extensions/nostr/package.json +1 -1
  67. package/extensions/open-prose/package.json +1 -1
  68. package/extensions/sat-mining/package.json +1 -1
  69. package/extensions/signal/package.json +1 -1
  70. package/extensions/synology-chat/package.json +1 -1
  71. package/extensions/tlon/package.json +1 -1
  72. package/extensions/twitch/package.json +1 -1
  73. package/extensions/voice-call/package.json +1 -1
  74. package/extensions/zalo/package.json +1 -1
  75. package/extensions/zalouser/package.json +1 -1
  76. package/package.json +1 -1
@@ -13,7 +13,7 @@ import { execFileSync, spawn } from "node:child_process";
13
13
  import fs$1 from "node:fs/promises";
14
14
  import { createServer } from "node:http";
15
15
  import net from "node:net";
16
- import WebSocket, { WebSocketServer } from "ws";
16
+ import WebSocket$1, { WebSocketServer } from "ws";
17
17
  import { Buffer as Buffer$1 } from "node:buffer";
18
18
 
19
19
  //#region src/browser/constants.ts
@@ -274,7 +274,7 @@ async function ensureChromeExtensionRelayServer(opts) {
274
274
  let extensionWs = null;
275
275
  const cdpClients = /* @__PURE__ */ new Set();
276
276
  const connectedTargets = /* @__PURE__ */ new Map();
277
- const extensionConnected = () => extensionWs?.readyState === WebSocket.OPEN;
277
+ const extensionConnected = () => extensionWs?.readyState === WebSocket$1.OPEN;
278
278
  let extensionDisconnectCleanupTimer = null;
279
279
  const extensionReconnectWaiters = /* @__PURE__ */ new Set();
280
280
  const flushExtensionReconnectWaiters = (connected) => {
@@ -325,7 +325,7 @@ async function ensureChromeExtensionRelayServer(opts) {
325
325
  let nextExtensionId = 1;
326
326
  const sendToExtension = async (payload) => {
327
327
  const ws = extensionWs;
328
- if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
328
+ if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
329
329
  ws.send(JSON.stringify(payload));
330
330
  return await new Promise((resolve, reject) => {
331
331
  const timer = setTimeout(() => {
@@ -342,12 +342,12 @@ async function ensureChromeExtensionRelayServer(opts) {
342
342
  const broadcastToCdpClients = (evt) => {
343
343
  const msg = JSON.stringify(evt);
344
344
  for (const ws of cdpClients) {
345
- if (ws.readyState !== WebSocket.OPEN) continue;
345
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
346
346
  ws.send(msg);
347
347
  }
348
348
  };
349
349
  const sendResponseToCdp = (ws, res) => {
350
- if (ws.readyState !== WebSocket.OPEN) return;
350
+ if (ws.readyState !== WebSocket$1.OPEN) return;
351
351
  ws.send(JSON.stringify(res));
352
352
  };
353
353
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -557,7 +557,7 @@ async function ensureChromeExtensionRelayServer(opts) {
557
557
  rejectUpgrade(socket, 401, "Unauthorized");
558
558
  return;
559
559
  }
560
- if (extensionWs && extensionWs.readyState !== WebSocket.OPEN) {
560
+ if (extensionWs && extensionWs.readyState !== WebSocket$1.OPEN) {
561
561
  try {
562
562
  extensionWs.terminate();
563
563
  } catch {}
@@ -594,7 +594,7 @@ async function ensureChromeExtensionRelayServer(opts) {
594
594
  clearExtensionDisconnectCleanupTimer();
595
595
  flushExtensionReconnectWaiters(true);
596
596
  const ping = setInterval(() => {
597
- if (ws.readyState !== WebSocket.OPEN) return;
597
+ if (ws.readyState !== WebSocket$1.OPEN) return;
598
598
  ws.send(JSON.stringify({ method: "ping" }));
599
599
  }, 5e3);
600
600
  ws.on("message", (data) => {
@@ -936,7 +936,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
936
936
  }
937
937
  async function withCdpSocket(wsUrl, fn, opts) {
938
938
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
939
- const ws = new WebSocket(wsUrl, {
939
+ const ws = new WebSocket$1(wsUrl, {
940
940
  handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
941
941
  ...Object.keys(headers).length ? { headers } : {}
942
942
  });
@@ -1862,7 +1862,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1862
1862
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1863
1863
  return await new Promise((resolve) => {
1864
1864
  const headers = getHeadersWithAuth(wsUrl);
1865
- const ws = new WebSocket(wsUrl, {
1865
+ const ws = new WebSocket$1(wsUrl, {
1866
1866
  handshakeTimeout: timeoutMs,
1867
1867
  ...Object.keys(headers).length ? { headers } : {}
1868
1868
  });
@@ -1,4 +1,4 @@
1
- import { A as clearHistoryEntriesIfEnabled, Ct as enqueueSystemEvent, E as DEFAULT_GROUP_HISTORY_LIMIT, F as recordInboundSession, Gt as hasControlCommand, H as createInboundDebouncer, I as removeAckReactionAfterReply, J as createReplyDispatcherWithTyping, Jt as buildMentionRegexes, K as resolveEnvelopeFormatOptions, L as shouldAckReaction, N as recordPendingHistoryEntryIfEnabled, O as buildPendingHistoryContextFromMap, Sr as warnMissingProviderGroupPolicyFallbackOnce, Tt as resolveChannelConfigWrites, U as resolveInboundDebounceMs, W as formatInboundEnvelope, Yt as matchesMentionWithExplicit, _r as resolveControlCommandGate, b as logInboundDrop, bn as installRequestBodyLimitGuard, br as resolveDefaultGroupPolicy, cr as pruneMapToMaxSize, d as issuePairingChallenge, dt as normalizeAllowList, f as createTypingCallbacks, fr as readStoreAllowFromForDmPolicy, ft as normalizeAllowListLower, gr as resolveCommandAuthorizedFromAuthorizers, ht as resolveSlackUserAllowed, m as resolveMentionGatingWithBypass, mt as resolveSlackAllowListMatch, pt as normalizeSlackSlug, q as dispatchInboundMessage, sr as createDedupeCache, ut as allowListMatches, x as logTypingFailure, xr as resolveOpenProviderRuntimeGroupPolicy, y as logAckFailure } from "./pi-embedded-runner-DqDy0MWN.js";
1
+ import { A as clearHistoryEntriesIfEnabled, Ct as enqueueSystemEvent, E as DEFAULT_GROUP_HISTORY_LIMIT, F as recordInboundSession, Gt as hasControlCommand, H as createInboundDebouncer, I as removeAckReactionAfterReply, J as createReplyDispatcherWithTyping, Jt as buildMentionRegexes, K as resolveEnvelopeFormatOptions, L as shouldAckReaction, N as recordPendingHistoryEntryIfEnabled, O as buildPendingHistoryContextFromMap, Sr as warnMissingProviderGroupPolicyFallbackOnce, Tt as resolveChannelConfigWrites, U as resolveInboundDebounceMs, W as formatInboundEnvelope, Yt as matchesMentionWithExplicit, _r as resolveControlCommandGate, b as logInboundDrop, bn as installRequestBodyLimitGuard, br as resolveDefaultGroupPolicy, cr as pruneMapToMaxSize, d as issuePairingChallenge, dt as normalizeAllowList, f as createTypingCallbacks, fr as readStoreAllowFromForDmPolicy, ft as normalizeAllowListLower, gr as resolveCommandAuthorizedFromAuthorizers, ht as resolveSlackUserAllowed, m as resolveMentionGatingWithBypass, mt as resolveSlackAllowListMatch, pt as normalizeSlackSlug, q as dispatchInboundMessage, sr as createDedupeCache, ut as allowListMatches, x as logTypingFailure, xr as resolveOpenProviderRuntimeGroupPolicy, y as logAckFailure } from "./pi-embedded-runner-BXCGeeps.js";
2
2
  import { K as resolveSessionKey, S as readSessionUpdatedAt, w as updateLastRoute } from "./runtime-BPyuAmka.js";
3
3
  import { r as createNonExitingRuntime } from "./subsystem-DBPNbQDQ.js";
4
4
  import { i as logVerbose, l as warn, p as getChildLogger, s as shouldLogVerbose, t as danger } from "./globals-B_jjtAje.js";
@@ -53,7 +53,7 @@ import "./tables-CJE8kB35.js";
53
53
  import { t as sendMessageSlack } from "./send-DfkPKz_0.js";
54
54
  import { r as resolveSlackWebClientOptions } from "./client-DWTXscox.js";
55
55
  import { a as listSlackPins, c as reactSlackMessage, d as removeSlackReaction, f as sendSlackMessage, i as listSlackEmojis, l as readSlackMessages, n as editSlackMessage, o as listSlackReactions, p as unpinSlackMessage, r as getSlackMemberInfo, s as pinSlackMessage, t as deleteSlackMessage, u as removeOwnSlackReactions } from "./actions-BrU_JMqM.js";
56
- import { n as buildUntrustedChannelMetadata, t as chunkItems } from "./chunk-items-DGHUeFuI.js";
56
+ import { n as buildUntrustedChannelMetadata, t as chunkItems } from "./chunk-items-j6n1a2yQ.js";
57
57
  import { t as createDraftStreamLoop } from "./draft-stream-loop-2KC6-8CG.js";
58
58
  import { t as resolveSlackUserAllowlist } from "./resolve-users-sv9og6yh.js";
59
59
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-fvzN5wnU.js";
@@ -3232,7 +3232,7 @@ async function registerSlackMonitorSlashCommands(params) {
3232
3232
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
3233
3233
  import("./resolve-route-CNhTJG_2.js").then((n) => n.r),
3234
3234
  import("./inbound-context-Daf9i2Me.js").then((n) => n.n),
3235
- import("./pi-embedded-runner-DqDy0MWN.js").then((n) => n.V)
3235
+ import("./pi-embedded-runner-BXCGeeps.js").then((n) => n.V)
3236
3236
  ]);
3237
3237
  const [{ resolveConversationLabel }, { createReplyPrefixOptions }, { recordSessionMetaFromInbound, resolveStorePath }] = await Promise.all([
3238
3238
  import("./conversation-label-BoVqak2R.js").then((n) => n.t),
@@ -15,10 +15,10 @@ import { i as resolveSlackBotToken, r as resolveSlackAppToken, t as resolveSlack
15
15
  import "./accounts-BwkH5bTD.js";
16
16
  import "./tokens-BK5rrwBB.js";
17
17
  import { v as applyChannelMatchMeta, x as resolveChannelEntryMatchWithFallback, y as buildChannelKeyCandidates } from "./allow-list-CBtbuDI8.js";
18
- import { a as patchAllowlistUsersInConfigEntries, c as buildUntrustedChannelMetadata, i as mergeAllowlist, l as isDangerousNameMatchingEnabled, n as buildAllowlistResolutionSummary, o as summarizeMapping, s as chunkItems, t as addAllowlistUserEntriesFromConfigEntry, u as formatAllowlistMatchMeta } from "./resolve-utils-bixHYDBj.js";
18
+ import { a as patchAllowlistUsersInConfigEntries, c as buildUntrustedChannelMetadata, i as mergeAllowlist, l as isDangerousNameMatchingEnabled, n as buildAllowlistResolutionSummary, o as summarizeMapping, s as chunkItems, t as addAllowlistUserEntriesFromConfigEntry, u as formatAllowlistMatchMeta } from "./resolve-utils-4mG32lvJ.js";
19
19
  import { l as resolveStorePath } from "./paths-DTurNPnO.js";
20
- import { Bt as normalizeSlackSlug, D as resolveOpenProviderRuntimeGroupPolicy, Dt as buildMentionRegexes, E as resolveDefaultGroupPolicy, F as resolveCommandAuthorizedFromAuthorizers, G as formatInboundEnvelope, Ht as resolveSlackUserAllowed, I as resolveControlCommandGate, J as createReplyDispatcherWithTyping, K as resolveEnvelopeFormatOptions, L as removeAckReactionAfterReply, Lt as allowListMatches, M as clearHistoryEntriesIfEnabled, N as recordPendingHistoryEntryIfEnabled, O as warnMissingProviderGroupPolicyFallbackOnce, Ot as matchesMentionWithExplicit, P as recordInboundSession, R as shouldAckReaction, Rt as normalizeAllowList, U as createInboundDebouncer, Vt as resolveSlackAllowListMatch, W as resolveInboundDebounceMs, X as pruneMapToMaxSize, Xt as enqueueSystemEvent, Y as createDedupeCache, b as logInboundDrop, cn as installRequestBodyLimitGuard, d as issuePairingChallenge, f as createTypingCallbacks, g as readStoreAllowFromForDmPolicy, j as buildPendingHistoryContextFromMap, k as DEFAULT_GROUP_HISTORY_LIMIT, m as resolveMentionGatingWithBypass, q as dispatchInboundMessage, st as resolveChannelConfigWrites, wt as hasControlCommand, x as logTypingFailure, y as logAckFailure, zt as normalizeAllowListLower } from "./status-CCGFb0f2.js";
21
- import "./runtime-dependency-Deg_sw2k.js";
20
+ import { Bt as normalizeSlackSlug, D as resolveOpenProviderRuntimeGroupPolicy, Dt as buildMentionRegexes, E as resolveDefaultGroupPolicy, F as resolveCommandAuthorizedFromAuthorizers, G as formatInboundEnvelope, Ht as resolveSlackUserAllowed, I as resolveControlCommandGate, J as createReplyDispatcherWithTyping, K as resolveEnvelopeFormatOptions, L as removeAckReactionAfterReply, Lt as allowListMatches, M as clearHistoryEntriesIfEnabled, N as recordPendingHistoryEntryIfEnabled, O as warnMissingProviderGroupPolicyFallbackOnce, Ot as matchesMentionWithExplicit, P as recordInboundSession, R as shouldAckReaction, Rt as normalizeAllowList, U as createInboundDebouncer, Vt as resolveSlackAllowListMatch, W as resolveInboundDebounceMs, X as pruneMapToMaxSize, Xt as enqueueSystemEvent, Y as createDedupeCache, b as logInboundDrop, cn as installRequestBodyLimitGuard, d as issuePairingChallenge, f as createTypingCallbacks, g as readStoreAllowFromForDmPolicy, j as buildPendingHistoryContextFromMap, k as DEFAULT_GROUP_HISTORY_LIMIT, m as resolveMentionGatingWithBypass, q as dispatchInboundMessage, st as resolveChannelConfigWrites, wt as hasControlCommand, x as logTypingFailure, y as logAckFailure, zt as normalizeAllowListLower } from "./status-Cl4MeWSg.js";
21
+ import "./runtime-dependency-B-1u41Ph.js";
22
22
  import { o as normalizeHostname } from "./ssrf-Cce6LubA.js";
23
23
  import "./skill-commands-hyZA0LE3.js";
24
24
  import "./pi-model-discovery-DadlvsZW.js";
@@ -3231,7 +3231,7 @@ async function registerSlackMonitorSlashCommands(params) {
3231
3231
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
3232
3232
  import("./resolve-route-DO0WR4nB.js").then((n) => n.r),
3233
3233
  import("./inbound-context-CeJDjLk-.js").then((n) => n.n),
3234
- import("./status-CCGFb0f2.js").then((n) => n.H)
3234
+ import("./status-Cl4MeWSg.js").then((n) => n.H)
3235
3235
  ]);
3236
3236
  const [{ resolveConversationLabel }, { createReplyPrefixOptions }, { recordSessionMetaFromInbound, resolveStorePath }] = await Promise.all([
3237
3237
  import("./conversation-label-CDH4rKMG.js").then((n) => n.t),
@@ -1,4 +1,4 @@
1
- import { C as resolveRequiredHomeDir, S as expandHomePrefix, _ as isRecord, a as resolveImplicitCopilotProvider, b as createSubsystemLogger, c as resolveFasedAgentDir, d as resolveDefaultAgentId, f as isTruthyEnvValue, g as formatTerminalLink, h as normalizeAccountId, i as normalizeProviders, l as resolveProcessScopedMap, m as DEFAULT_ACCOUNT_ID, n as SlackConfigSchema, o as resolveImplicitProviders, p as normalizeAgentId, t as loadConfig, u as formatCliCommand, v as normalizeE164, w as normalizeChatChannelId, x as resolveOAuthDir, y as resolveUserPath } from "./config-z0k05dwe.js";
1
+ import { C as resolveRequiredHomeDir, S as expandHomePrefix, _ as isRecord, a as resolveImplicitCopilotProvider, b as createSubsystemLogger, c as resolveFasedAgentDir, d as resolveDefaultAgentId, f as isTruthyEnvValue, g as formatTerminalLink, h as normalizeAccountId, i as normalizeProviders, l as resolveProcessScopedMap, m as DEFAULT_ACCOUNT_ID, n as SlackConfigSchema, o as resolveImplicitProviders, p as normalizeAgentId, t as loadConfig, u as formatCliCommand, v as normalizeE164, w as normalizeChatChannelId, x as resolveOAuthDir, y as resolveUserPath } from "./config-DLVjQxOu.js";
2
2
  import { createRequire } from "node:module";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs";
@@ -1605,7 +1605,7 @@ async function loadContextCache() {
1605
1605
  await ensureFasedModelsJson(cfg);
1606
1606
  } catch {}
1607
1607
  try {
1608
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-CKKNoqwk.js");
1608
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-DYfUuqPN.js");
1609
1609
  const agentDir = resolveFasedAgentDir();
1610
1610
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
1611
1611
  applyDiscoveredContextWindows({
@@ -1,6 +1,6 @@
1
1
  export declare const FASED_BRAND_NAME = "Fased";
2
2
  export declare const FASED_AGENT_NAME = "Fased Agent";
3
3
  export declare const FASED_CONTROL_NAME = "Fased Control";
4
- export declare const FASED_PRODUCT_VERSION = "0.1.38";
5
- export declare const FASED_DISPLAY_VERSION = "v0.1.38";
4
+ export declare const FASED_PRODUCT_VERSION = "0.1.39";
5
+ export declare const FASED_DISPLAY_VERSION = "v0.1.39";
6
6
  export declare function formatFasedDisplayLine(): string;
@@ -0,0 +1,28 @@
1
+ import type { GatewayService } from "./service.js";
2
+ export declare function findHostedSystemdUnitPath(candidates?: readonly string[]): string | null;
3
+ declare function readHostedSystemdCommand(unitPath: string): Promise<{
4
+ sourcePath: string;
5
+ environment?: Record<string, string> | undefined;
6
+ workingDirectory?: string | undefined;
7
+ programArguments: string[];
8
+ } | null>;
9
+ export declare function resolveHostedSystemdService(): GatewayService | null;
10
+ declare function resolveRunAsUser(): string;
11
+ export declare function buildHostedSystemdUnit(params: {
12
+ runAsUser: string;
13
+ programArguments: string[];
14
+ workingDirectory?: string;
15
+ environment?: Record<string, string | undefined>;
16
+ }): string;
17
+ export declare function installHostedSystemdService(params: {
18
+ programArguments: string[];
19
+ workingDirectory?: string;
20
+ environment?: Record<string, string | undefined>;
21
+ }): Promise<{
22
+ unitPath: string;
23
+ }>;
24
+ export declare const __testing: {
25
+ readHostedSystemdCommand: typeof readHostedSystemdCommand;
26
+ resolveRunAsUser: typeof resolveRunAsUser;
27
+ };
28
+ export {};
@@ -20,7 +20,7 @@ import { a as parseSlackTarget, i as isSilentReplyText, n as SILENT_REPLY_TOKEN,
20
20
  import { b as normalizeChannelSlug, x as resolveChannelEntryMatchWithFallback, y as buildChannelKeyCandidates } from "./allow-list-CBtbuDI8.js";
21
21
  import { a as resolveSessionTranscriptPath, c as resolveSessionTranscriptsDirForAgent, i as resolveSessionFilePathOptions, l as resolveStorePath, n as resolveDefaultSessionStorePath, r as resolveSessionFilePath } from "./paths-DTurNPnO.js";
22
22
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BJQWUdmU.js";
23
- import { A as fetchJson$1, B as isTrustedProxyAddress, C as normalizeCdpWsUrl, D as assertBrowserNavigationResultAllowed, E as assertBrowserNavigationAllowed, F as stopChromeExtensionRelayServer, G as DEFAULT_AI_SNAPSHOT_MAX_CHARS, H as resolveForwardedClientIp, I as rawDataToString, J as DEFAULT_FASED_BROWSER_COLOR, K as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, L as isLoopbackAddress, O as withBrowserNavigationPolicy, P as ensureChromeExtensionRelayServer, R as isLoopbackHost, T as InvalidBrowserNavigationUrlError, U as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, V as resolveClientIp, W as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, X as DEFAULT_FASED_BROWSER_PROFILE_NAME, Y as DEFAULT_FASED_BROWSER_ENABLED, _ as stopFasedAgentChrome, a as DEFAULT_TRACE_DIR, b as captureScreenshot, d as normalizeBrowserFormField, g as resolveFasedAgentUserDataDir, h as launchFasedAgentChrome, i as DEFAULT_DOWNLOAD_DIR, j as fetchOk, k as appendCdpPath, l as resolveWritablePathWithinRoot, m as isChromeReachable, o as DEFAULT_UPLOAD_DIR, p as isChromeCdpReady, q as DEFAULT_BROWSER_EVALUATE_ENABLED, r as loadReadability, s as resolveExistingPathsWithinRoot, t as loadLinkedom, v as resolveBrowserExecutableForPlatform, w as snapshotAria, x as createTargetViaCdp, y as resolveLsofCommandSync, z as isSecureWebSocketUrl } from "./runtime-dependency-Deg_sw2k.js";
23
+ import { A as fetchJson$1, B as isTrustedProxyAddress, C as normalizeCdpWsUrl, D as assertBrowserNavigationResultAllowed, E as assertBrowserNavigationAllowed, F as stopChromeExtensionRelayServer, G as DEFAULT_AI_SNAPSHOT_MAX_CHARS, H as resolveForwardedClientIp, I as rawDataToString, J as DEFAULT_FASED_BROWSER_COLOR, K as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, L as isLoopbackAddress, O as withBrowserNavigationPolicy, P as ensureChromeExtensionRelayServer, R as isLoopbackHost, T as InvalidBrowserNavigationUrlError, U as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, V as resolveClientIp, W as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, X as DEFAULT_FASED_BROWSER_PROFILE_NAME, Y as DEFAULT_FASED_BROWSER_ENABLED, _ as stopFasedAgentChrome, a as DEFAULT_TRACE_DIR, b as captureScreenshot, d as normalizeBrowserFormField, g as resolveFasedAgentUserDataDir, h as launchFasedAgentChrome, i as DEFAULT_DOWNLOAD_DIR, j as fetchOk, k as appendCdpPath, l as resolveWritablePathWithinRoot, m as isChromeReachable, o as DEFAULT_UPLOAD_DIR, p as isChromeCdpReady, q as DEFAULT_BROWSER_EVALUATE_ENABLED, r as loadReadability, s as resolveExistingPathsWithinRoot, t as loadLinkedom, v as resolveBrowserExecutableForPlatform, w as snapshotAria, x as createTargetViaCdp, y as resolveLsofCommandSync, z as isSecureWebSocketUrl } from "./runtime-dependency-B-1u41Ph.js";
24
24
  import { i as isBlockedHostnameOrIp, s as importOptionalRuntimeDependency, t as SsrFBlockedError } from "./ssrf-Cce6LubA.js";
25
25
  import { _ as resolvePairingPaths, b as writeJsonAtomic, c as getSkillsSnapshotVersion, d as resolveSkillsPromptForRun, f as syncSkillsToWorkspace, g as pruneExpiredPending, h as sanitizeEnvVars, i as resolveSkillCommandInvocation, l as buildWorkspaceSkillSnapshot, m as applySkillEnvOverridesFromSnapshot, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as applySkillEnvOverrides, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as loadWorkspaceSkillEntries, v as createAsyncLock, y as readJsonFile$1 } from "./skill-commands-hyZA0LE3.js";
26
26
  import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-DadlvsZW.js";
@@ -79,7 +79,7 @@ import AjvPkg from "ajv";
79
79
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, createAgentSession, createCodingTools, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary } from "@mariozechner/pi-coding-agent";
80
80
  import net from "node:net";
81
81
  import { Type } from "@sinclair/typebox";
82
- import { WebSocket as WebSocket$1 } from "ws";
82
+ import { WebSocket } from "ws";
83
83
  import { Buffer as Buffer$1 } from "node:buffer";
84
84
  import { AddressLookupTableAccount, PublicKey, VersionedTransaction } from "@solana/web3.js";
85
85
  import { Value } from "@sinclair/typebox/value";
@@ -4311,7 +4311,7 @@ var GatewayClient = class {
4311
4311
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
4312
4312
  });
4313
4313
  }
4314
- this.ws = new WebSocket$1(url, wsOptions);
4314
+ this.ws = new WebSocket(url, wsOptions);
4315
4315
  this.ws.on("open", () => {
4316
4316
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
4317
4317
  const tlsError = this.validateTlsFingerprint();
@@ -4507,7 +4507,7 @@ var GatewayClient = class {
4507
4507
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
4508
4508
  if (this.connectTimer) clearTimeout(this.connectTimer);
4509
4509
  this.connectTimer = setTimeout(() => {
4510
- if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
4510
+ if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
4511
4511
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
4512
4512
  this.ws?.close(1008, "connect challenge timeout");
4513
4513
  }, connectChallengeTimeoutMs);
@@ -4549,7 +4549,7 @@ var GatewayClient = class {
4549
4549
  return null;
4550
4550
  }
4551
4551
  async request(method, params, opts) {
4552
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
4552
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
4553
4553
  const id = randomUUID();
4554
4554
  const frame = {
4555
4555
  type: "req",
@@ -17691,7 +17691,7 @@ function createOutboundSendDepsFromCliSource(deps) {
17691
17691
  function createDefaultDeps() {
17692
17692
  return {
17693
17693
  sendMessageWhatsApp: async (...args) => {
17694
- const { sendMessageWhatsApp } = await import("./web-02I0vmdu.js");
17694
+ const { sendMessageWhatsApp } = await import("./web-KBdzfu6K.js");
17695
17695
  return await sendMessageWhatsApp(...args);
17696
17696
  },
17697
17697
  sendMessageTelegram: async (...args) => {
@@ -32494,7 +32494,7 @@ function isModuleNotFoundError(err) {
32494
32494
  }
32495
32495
  async function loadPwAiModule(mode) {
32496
32496
  try {
32497
- return await import("./pw-ai-Boor5vYw.js");
32497
+ return await import("./pw-ai-SNCI9UXT.js");
32498
32498
  } catch (err) {
32499
32499
  if (mode === "soft") return null;
32500
32500
  if (isModuleNotFoundError(err)) return null;
@@ -32888,11 +32888,11 @@ function createProfileContext(opts, profile) {
32888
32888
  const userDataDir = resolveFasedAgentUserDataDir(profile.name);
32889
32889
  const profileState = getProfileState();
32890
32890
  if (await isHttpReachable(300) && !profileState.running) try {
32891
- await (await import("./pw-ai-Boor5vYw.js")).closePlaywrightBrowserConnection();
32891
+ await (await import("./pw-ai-SNCI9UXT.js")).closePlaywrightBrowserConnection();
32892
32892
  } catch {}
32893
32893
  if (profileState.running) await stopRunningBrowser();
32894
32894
  try {
32895
- await (await import("./pw-ai-Boor5vYw.js")).closePlaywrightBrowserConnection();
32895
+ await (await import("./pw-ai-SNCI9UXT.js")).closePlaywrightBrowserConnection();
32896
32896
  } catch {}
32897
32897
  if (!fs.existsSync(userDataDir)) return {
32898
32898
  moved: false,
@@ -93666,7 +93666,7 @@ function extractToolSend(args, expectedAction = "sendMessage") {
93666
93666
  //#region src/channels/plugins/actions/telegram.ts
93667
93667
  const providerId = "telegram";
93668
93668
  async function loadTelegramActionHandler() {
93669
- const { handleTelegramAction } = await import("./telegram-actions-BRUNEXMr.js");
93669
+ const { handleTelegramAction } = await import("./telegram-actions-DfDEOBPg.js");
93670
93670
  return handleTelegramAction;
93671
93671
  }
93672
93672
  function readTelegramSendParams(params) {
@@ -96182,7 +96182,7 @@ function buildPairingReply(params) {
96182
96182
 
96183
96183
  //#endregion
96184
96184
  //#region src/brand.ts
96185
- const FASED_PRODUCT_VERSION = "0.1.38";
96185
+ const FASED_PRODUCT_VERSION = "0.1.39";
96186
96186
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
96187
96187
 
96188
96188
  //#endregion
@@ -100289,7 +100289,7 @@ const sendPollDiscordLazy = async (...args) => {
100289
100289
  return sendPollDiscord(...args);
100290
100290
  };
100291
100291
  const monitorDiscordProviderLazy = async (...args) => {
100292
- const { monitorDiscordProvider } = await import("./monitor-o20KTHIi.js");
100292
+ const { monitorDiscordProvider } = await import("./monitor-DyW8M8cP.js");
100293
100293
  return monitorDiscordProvider(...args);
100294
100294
  };
100295
100295
  const listSlackDirectoryGroupsLiveLazy = async (...args) => {
@@ -100317,7 +100317,7 @@ const sendMessageSlackLazy = async (...args) => {
100317
100317
  return sendMessageSlack(...args);
100318
100318
  };
100319
100319
  const monitorSlackProviderLazy = async (...args) => {
100320
- const { monitorSlackProvider } = await import("./slack-BErIh0uj.js");
100320
+ const { monitorSlackProvider } = await import("./slack-qsR7PUPb.js");
100321
100321
  return monitorSlackProvider(...args);
100322
100322
  };
100323
100323
  const handleSlackActionLazy = async (...args) => {
@@ -100337,7 +100337,7 @@ const sendPollTelegramLazy = async (...args) => {
100337
100337
  return sendPollTelegram(...args);
100338
100338
  };
100339
100339
  const monitorTelegramProviderLazy = async (...args) => {
100340
- const { monitorTelegramProvider } = await import("./monitor-C6Ohw9BA.js");
100340
+ const { monitorTelegramProvider } = await import("./monitor-JQsKE-Nn.js");
100341
100341
  return monitorTelegramProvider(...args);
100342
100342
  };
100343
100343
  let webOutboundPromise = null;
@@ -100358,7 +100358,7 @@ function loadWebLoginQr() {
100358
100358
  return webLoginQrPromise;
100359
100359
  }
100360
100360
  function loadWebChannel() {
100361
- webChannelPromise ??= import("./web-02I0vmdu.js");
100361
+ webChannelPromise ??= import("./web-KBdzfu6K.js");
100362
100362
  return webChannelPromise;
100363
100363
  }
100364
100364
  function loadWhatsAppActions() {
@@ -1,4 +1,4 @@
1
- import { c as loadModelCatalog, kt as resolveAutoImageModel, l as modelSupportsVision, s as findModelInCatalog } from "./pi-embedded-runner-DqDy0MWN.js";
1
+ import { c as loadModelCatalog, kt as resolveAutoImageModel, l as modelSupportsVision, s as findModelInCatalog } from "./pi-embedded-runner-BXCGeeps.js";
2
2
  import { i as logVerbose } from "./globals-B_jjtAje.js";
3
3
  import { t as STATE_DIR } from "./paths-BEmvSyOV.js";
4
4
  import { Gt as resolveDefaultModelForAgent, in as resolveApiKeyForProvider } from "./config-DtqAN2L3.js";
@@ -147,7 +147,7 @@ async function describeStickerImage(params) {
147
147
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
148
148
  try {
149
149
  const buffer = await fs.readFile(imagePath);
150
- const { describeImageWithModel } = await import("./pi-embedded-runner-DqDy0MWN.js").then((n) => n.Ht);
150
+ const { describeImageWithModel } = await import("./pi-embedded-runner-BXCGeeps.js").then((n) => n.Ht);
151
151
  return (await describeImageWithModel({
152
152
  buffer,
153
153
  fileName: "sticker.webp",
@@ -2,7 +2,7 @@ import { Rt as resolveApiKeyForProvider, Tt as resolveDefaultModelForAgent } fro
2
2
  import { t as STATE_DIR } from "./paths-GdhK5mV_.js";
3
3
  import { i as logVerbose } from "./globals-BtKmaIS3.js";
4
4
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Djqpy66R.js";
5
- import { c as findModelInCatalog, dt as resolveAutoImageModel, l as loadModelCatalog, u as modelSupportsVision } from "./status-CCGFb0f2.js";
5
+ import { c as findModelInCatalog, dt as resolveAutoImageModel, l as loadModelCatalog, u as modelSupportsVision } from "./status-Cl4MeWSg.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
8
8
 
@@ -147,7 +147,7 @@ async function describeStickerImage(params) {
147
147
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
148
148
  try {
149
149
  const buffer = await fs.readFile(imagePath);
150
- const { describeImageWithModel } = await import("./status-CCGFb0f2.js").then((n) => n.Ct);
150
+ const { describeImageWithModel } = await import("./status-Cl4MeWSg.js").then((n) => n.Ct);
151
151
  return (await describeImageWithModel({
152
152
  buffer,
153
153
  fileName: "sticker.webp",
@@ -1,4 +1,4 @@
1
- import { $n as resolveTelegramInlineButtonsScope, Qn as resolveTelegramReactionLevel } from "./pi-embedded-runner-DqDy0MWN.js";
1
+ import { $n as resolveTelegramInlineButtonsScope, Qn as resolveTelegramReactionLevel } from "./pi-embedded-runner-BXCGeeps.js";
2
2
  import { Ot as resolveTelegramToken, wt as createTelegramActionGate } from "./runtime-BPyuAmka.js";
3
3
  import "./subsystem-DBPNbQDQ.js";
4
4
  import "./globals-B_jjtAje.js";
@@ -48,7 +48,7 @@ import "./tables-CJE8kB35.js";
48
48
  import { a as reactMessageTelegram, i as editMessageTelegram, n as createForumTopicTelegram, o as sendMessageTelegram, r as deleteMessageTelegram, s as sendStickerTelegram } from "./send-BzFdvD_i.js";
49
49
  import "./retry-policy-sM01QZT2.js";
50
50
  import "./proxy-CKQOQYAl.js";
51
- import { a as searchStickers, r as getCacheStats } from "./sticker-cache-wxl1Me2i.js";
51
+ import { a as searchStickers, r as getCacheStats } from "./sticker-cache-CcER-WWu.js";
52
52
 
53
53
  //#region src/agents/tools/telegram-actions.ts
54
54
  const TELEGRAM_BUTTON_STYLES = [
@@ -14,8 +14,8 @@ import "./accounts-BwkH5bTD.js";
14
14
  import "./tokens-BK5rrwBB.js";
15
15
  import "./allow-list-CBtbuDI8.js";
16
16
  import "./paths-DTurNPnO.js";
17
- import { en as resolveTelegramReactionLevel, tn as resolveTelegramInlineButtonsScope } from "./status-CCGFb0f2.js";
18
- import "./runtime-dependency-Deg_sw2k.js";
17
+ import { en as resolveTelegramReactionLevel, tn as resolveTelegramInlineButtonsScope } from "./status-Cl4MeWSg.js";
18
+ import "./runtime-dependency-B-1u41Ph.js";
19
19
  import "./ssrf-Cce6LubA.js";
20
20
  import "./skill-commands-hyZA0LE3.js";
21
21
  import "./pi-model-discovery-DadlvsZW.js";
@@ -48,7 +48,7 @@ import "./tables-BD7H5ug-.js";
48
48
  import { a as reactMessageTelegram, i as editMessageTelegram, n as createForumTopicTelegram, o as sendMessageTelegram, r as deleteMessageTelegram, s as sendStickerTelegram } from "./send-B09HRfHN.js";
49
49
  import "./retry-policy-BLYEgIwP.js";
50
50
  import "./proxy-CV9uL4Wi.js";
51
- import { a as searchStickers, r as getCacheStats } from "./sticker-cache-CKAkkCoU.js";
51
+ import { a as searchStickers, r as getCacheStats } from "./sticker-cache-DjFhjSZc.js";
52
52
 
53
53
  //#region src/agents/tools/telegram-actions.ts
54
54
  const TELEGRAM_BUTTON_STYLES = [
@@ -1,4 +1,4 @@
1
- import { C as resolveRequiredHomeDir, S as expandHomePrefix, _ as isRecord, a as resolveImplicitCopilotProvider, b as createSubsystemLogger, c as resolveFasedAgentDir, d as resolveDefaultAgentId, f as isTruthyEnvValue, g as formatTerminalLink, h as normalizeAccountId, i as normalizeProviders, l as resolveProcessScopedMap, m as DEFAULT_ACCOUNT_ID, n as TelegramConfigSchema, o as resolveImplicitProviders, p as normalizeAgentId, t as loadConfig, u as formatCliCommand, v as normalizeE164, w as normalizeChatChannelId, x as resolveOAuthDir, y as resolveUserPath } from "./config-B6SjJFp-.js";
1
+ import { C as resolveRequiredHomeDir, S as expandHomePrefix, _ as isRecord, a as resolveImplicitCopilotProvider, b as createSubsystemLogger, c as resolveFasedAgentDir, d as resolveDefaultAgentId, f as isTruthyEnvValue, g as formatTerminalLink, h as normalizeAccountId, i as normalizeProviders, l as resolveProcessScopedMap, m as DEFAULT_ACCOUNT_ID, n as TelegramConfigSchema, o as resolveImplicitProviders, p as normalizeAgentId, t as loadConfig, u as formatCliCommand, v as normalizeE164, w as normalizeChatChannelId, x as resolveOAuthDir, y as resolveUserPath } from "./config-CZaFbNZU.js";
2
2
  import { createRequire } from "node:module";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs";
@@ -1642,7 +1642,7 @@ async function loadContextCache() {
1642
1642
  await ensureFasedModelsJson(cfg);
1643
1643
  } catch {}
1644
1644
  try {
1645
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-DyOIGBor.js");
1645
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-BvFEoUSk.js");
1646
1646
  const agentDir = resolveFasedAgentDir();
1647
1647
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
1648
1648
  applyDiscoveredContextWindows({
@@ -1,4 +1,4 @@
1
- import { C as buildPairingReply, Ct as enqueueSystemEvent, D as buildHistoryContextFromEntries, E as DEFAULT_GROUP_HISTORY_LIMIT, Gt as hasControlCommand, H as createInboundDebouncer, Jt as buildMentionRegexes, K as resolveEnvelopeFormatOptions, Kt as shouldComputeCommandAuthorized, N as recordPendingHistoryEntryIfEnabled, Nt as registerUnhandledRejectionHandler, R as shouldAckReactionForWhatsApp, Sr as warnMissingProviderGroupPolicyFallbackOnce, T as sleepWithAbort, U as resolveInboundDebounceMs, W as formatInboundEnvelope, X as getReplyFromConfig, Xt as normalizeMentionText, br as resolveDefaultGroupPolicy, ct as normalizeGroupActivation, fr as readStoreAllowFromForDmPolicy, lt as parseActivationCommand, mr as resolveDmGroupAccessWithLists, p as resolveMentionGating, pr as resolveDmGroupAccessWithCommandGate, sr as createDedupeCache, w as computeBackoff, xr as resolveOpenProviderRuntimeGroupPolicy, xt as formatDurationPrecise, z as dispatchReplyWithBufferedBlockDispatcher } from "./pi-embedded-runner-DqDy0MWN.js";
1
+ import { C as buildPairingReply, Ct as enqueueSystemEvent, D as buildHistoryContextFromEntries, E as DEFAULT_GROUP_HISTORY_LIMIT, Gt as hasControlCommand, H as createInboundDebouncer, Jt as buildMentionRegexes, K as resolveEnvelopeFormatOptions, Kt as shouldComputeCommandAuthorized, N as recordPendingHistoryEntryIfEnabled, Nt as registerUnhandledRejectionHandler, R as shouldAckReactionForWhatsApp, Sr as warnMissingProviderGroupPolicyFallbackOnce, T as sleepWithAbort, U as resolveInboundDebounceMs, W as formatInboundEnvelope, X as getReplyFromConfig, Xt as normalizeMentionText, br as resolveDefaultGroupPolicy, ct as normalizeGroupActivation, fr as readStoreAllowFromForDmPolicy, lt as parseActivationCommand, mr as resolveDmGroupAccessWithLists, p as resolveMentionGating, pr as resolveDmGroupAccessWithCommandGate, sr as createDedupeCache, w as computeBackoff, xr as resolveOpenProviderRuntimeGroupPolicy, xt as formatDurationPrecise, z as dispatchReplyWithBufferedBlockDispatcher } from "./pi-embedded-runner-BXCGeeps.js";
2
2
  import { C as recordSessionMetaFromInbound, Ht as resolveGroupSessionKey, Rt as resolveChannelGroupPolicy, S as readSessionUpdatedAt, w as updateLastRoute, x as loadSessionStore, zt as resolveChannelGroupRequireMention } from "./runtime-BPyuAmka.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";
@@ -15,8 +15,8 @@ import { a as logWebSelfId, c as pickWebChannel, i as getWebAuthAgeMs, m as webA
15
15
  import "./tokens-BK5rrwBB.js";
16
16
  import "./allow-list-CBtbuDI8.js";
17
17
  import { l as resolveStorePath } from "./paths-DTurNPnO.js";
18
- import { A as buildHistoryContextFromEntries, B as dispatchReplyWithBufferedBlockDispatcher, C as computeBackoff, D as resolveOpenProviderRuntimeGroupPolicy, Dt as buildMentionRegexes, E as resolveDefaultGroupPolicy, Ft as normalizeGroupActivation, G as formatInboundEnvelope, It as parseActivationCommand, Jt as formatDurationPrecise, K as resolveEnvelopeFormatOptions, N as recordPendingHistoryEntryIfEnabled, O as warnMissingProviderGroupPolicyFallbackOnce, S as buildPairingReply, Tt as shouldComputeCommandAuthorized, U as createInboundDebouncer, W as resolveInboundDebounceMs, Xt as enqueueSystemEvent, Y as createDedupeCache, Z as getReplyFromConfig, _ as resolveDmGroupAccessWithCommandGate, g as readStoreAllowFromForDmPolicy, jt as registerUnhandledRejectionHandler, k as DEFAULT_GROUP_HISTORY_LIMIT, kt as normalizeMentionText, p as resolveMentionGating, v as resolveDmGroupAccessWithLists, w as sleepWithAbort, wt as hasControlCommand, z as shouldAckReactionForWhatsApp } from "./status-CCGFb0f2.js";
19
- import "./runtime-dependency-Deg_sw2k.js";
18
+ import { A as buildHistoryContextFromEntries, B as dispatchReplyWithBufferedBlockDispatcher, C as computeBackoff, D as resolveOpenProviderRuntimeGroupPolicy, Dt as buildMentionRegexes, E as resolveDefaultGroupPolicy, Ft as normalizeGroupActivation, G as formatInboundEnvelope, It as parseActivationCommand, Jt as formatDurationPrecise, K as resolveEnvelopeFormatOptions, N as recordPendingHistoryEntryIfEnabled, O as warnMissingProviderGroupPolicyFallbackOnce, S as buildPairingReply, Tt as shouldComputeCommandAuthorized, U as createInboundDebouncer, W as resolveInboundDebounceMs, Xt as enqueueSystemEvent, Y as createDedupeCache, Z as getReplyFromConfig, _ as resolveDmGroupAccessWithCommandGate, g as readStoreAllowFromForDmPolicy, jt as registerUnhandledRejectionHandler, k as DEFAULT_GROUP_HISTORY_LIMIT, kt as normalizeMentionText, p as resolveMentionGating, v as resolveDmGroupAccessWithLists, w as sleepWithAbort, wt as hasControlCommand, z as shouldAckReactionForWhatsApp } from "./status-Cl4MeWSg.js";
19
+ import "./runtime-dependency-B-1u41Ph.js";
20
20
  import "./ssrf-Cce6LubA.js";
21
21
  import "./skill-commands-hyZA0LE3.js";
22
22
  import "./pi-model-discovery-DadlvsZW.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/acpx",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent ACP runtime backend via acpx",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/bluebubbles",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent BlueBubbles channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/copilot-proxy",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent Copilot Proxy provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/diagnostics-otel",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent diagnostics OpenTelemetry exporter",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/fased-federation",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "Fased federation adapter package scaffold (A2A + admission helpers)",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/google-gemini-cli-auth",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent Gemini CLI OAuth provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/imessage",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent iMessage channel plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/irc",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent IRC channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/line",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent LINE channel plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/llm-task",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent JSON-only LLM task plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/lobster",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/matrix",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent Matrix channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/mattermost",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent Mattermost channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@fased/memory-core",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent core memory search plugin",
6
6
  "type": "module",
7
7
  "peerDependencies": {
8
- "@fased/fased": "^0.1.38"
8
+ "@fased/fased": "^0.1.39"
9
9
  },
10
10
  "fased": {
11
11
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/memory-lancedb",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent LanceDB-backed long-term memory plugin with auto-recall/capture",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/minimax-portal-auth",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "private": true,
5
5
  "description": "FasedAgent MiniMax Portal OAuth provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/msteams",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/nextcloud-talk",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent Nextcloud Talk channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/nostr",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "FasedAgent Nostr channel plugin for NIP-04 encrypted DMs",
5
5
  "type": "module",
6
6
  "dependencies": {