@symerian/symi 2.0.2 → 2.0.3

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 (75) hide show
  1. package/dist/{accounts-tNElYrCH.js → accounts-CI6zQTJj.js} +14 -14
  2. package/dist/{accounts-qtxJ-6em.js → accounts-CJR8j_Kq.js} +1 -1
  3. package/dist/{accounts-CWktKM8a.js → accounts-ChTFYj8Q.js} +1 -1
  4. package/dist/{active-listener-C9r8ZB9m.js → active-listener-D6sXIjAg.js} +1 -1
  5. package/dist/{agent-scope-BxoUQqgM.js → agent-scope-Bw1Ed8W9.js} +3 -3
  6. package/dist/{audio-preflight-DL5FZnXU.js → audio-preflight-C1uyo4vM.js} +29 -29
  7. package/dist/{bindings-B7Ke6LJi.js → bindings-BU2hsBd9.js} +2 -2
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +53 -53
  10. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  11. package/dist/bundled/command-logger/handler.js +1 -1
  12. package/dist/bundled/session-memory/handler.js +53 -53
  13. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  14. package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-C9-gaquj.js} +1 -1
  15. package/dist/{chrome-DuXtddnV.js → chrome-CTMkDHCZ.js} +20 -20
  16. package/dist/{chunk-BW5f05BR.js → chunk-ClbN9Pqy.js} +1 -1
  17. package/dist/{command-format-BaxDnULz.js → command-format-UKHV-j0K.js} +1 -1
  18. package/dist/{commands-registry-CurvwtTw.js → commands-registry-D1zSleL6.js} +4 -4
  19. package/dist/{config-CwDeZVre.js → config-B4Di8ISR.js} +12 -12
  20. package/dist/{deliver-D7lL85xc.js → deliver-CtTfl32o.js} +20 -20
  21. package/dist/{diagnostic-CI0kRQkt.js → diagnostic-C3nsWaw3.js} +1 -1
  22. package/dist/{frontmatter-C_bv_0P8.js → frontmatter-DPlG6yha.js} +2 -2
  23. package/dist/{gemini-auth-DDojfpIT.js → gemini-auth-BBWa_f-c.js} +1 -1
  24. package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-DJqsJ2-r.js} +7 -7
  25. package/dist/{image-Bw9ZjAgJ.js → image-WVlJkWYO.js} +4 -4
  26. package/dist/{image-ops-CvJzsyvE.js → image-ops-S8-8dAhx.js} +1 -1
  27. package/dist/{ir-DccrnjsE.js → ir-CbFUkv_T.js} +4 -4
  28. package/dist/llm-slug-generator.js +53 -53
  29. package/dist/{local-roots-DMwIh5cS.js → local-roots-C7OCYACU.js} +5 -5
  30. package/dist/{login-B6HY_3uV.js → login-CLnFYUir.js} +7 -7
  31. package/dist/{login-qr-cno8SVBt.js → login-qr-N6iHqtov.js} +12 -12
  32. package/dist/{manager-BmXaGyON.js → manager-BSlYwG4Q.js} +13 -13
  33. package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-CneMHk0N.js} +19 -19
  34. package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-DSHvnTLx.js} +1 -1
  35. package/dist/{message-channel-Dz5lr5b0.js → message-channel-DbsRltF2.js} +1 -1
  36. package/dist/{model-auth-Cbvnb5vf.js → model-auth-B55liYhg.js} +9 -9
  37. package/dist/{outbound-DnUbG06K.js → outbound-Bc4wVSZG.js} +7 -7
  38. package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-Co2diKdP.js} +2 -2
  39. package/dist/{paths-DLyHUt31.js → paths-Cb87-LzP.js} +1 -1
  40. package/dist/{paths-Cce4PUkG.js → paths-CySxpNhH.js} +5 -5
  41. package/dist/{pi-auth-json-C7Sd8IAl.js → pi-auth-json-b4xaJSBk.js} +8 -8
  42. package/dist/{pi-embedded-helpers-CMPwkzmk.js → pi-embedded-helpers-CCMgxLVl.js} +52 -52
  43. package/dist/{pi-embedded-4Uw7vlcF.js → pi-embedded-vSF1ziRD.js} +162 -162
  44. package/dist/{plugins-DQYI3Fr-.js → plugins-C4C9637U.js} +9 -9
  45. package/dist/{pw-ai-DQ6HUvz0.js → pw-ai-DMa09vvy.js} +11 -11
  46. package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-DdZh9PHs.js} +7 -7
  47. package/dist/{registry-CK4e9hn8.js → registry-DP24za6g.js} +17 -17
  48. package/dist/{replies-CdijMW_S.js → replies-CoV8InBa.js} +3 -3
  49. package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-CtL0omgM.js} +1 -1
  50. package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-BVikmvWO.js} +4 -4
  51. package/dist/{retry-Cly39XZB.js → retry-dGG-MbxL.js} +1 -1
  52. package/dist/{runner-Duym_W6W.js → runner-CseBozoP.js} +9 -9
  53. package/dist/{send-BtxXqho0.js → send-BK3EV4tO.js} +6 -6
  54. package/dist/{send-Iv1YQSmf.js → send-Bh5ssTkU.js} +18 -18
  55. package/dist/{send-CFMDO5ON.js → send-C00dpYCF.js} +6 -6
  56. package/dist/{send-OoNECFaf.js → send-DrUqe5-S.js} +7 -7
  57. package/dist/{send-D0qx7lbT.js → send-i0x7Ywhx.js} +10 -10
  58. package/dist/{session-wQ18mpJ_.js → session-BFFxC5wi.js} +8 -8
  59. package/dist/{skill-commands-CY3SUdWj.js → skill-commands-SDwv3aAY.js} +9 -9
  60. package/dist/{skills-BFekKL7i.js → skills-o5WVqM4V.js} +21 -21
  61. package/dist/{sqlite-DRbx2dhW.js → sqlite-6H6Zw1cs.js} +4 -4
  62. package/dist/{store-C0wvOkae.js → store-vVE6N2mH.js} +2 -2
  63. package/dist/{subsystem-Bs9YvKLa.js → subsystem-DgpxyDQ_.js} +1 -1
  64. package/dist/{tables-DuZspiBu.js → tables-BIWsCKXJ.js} +1 -1
  65. package/dist/{target-errors-Be1SwYlW.js → target-errors-DyItGyW9.js} +2 -2
  66. package/dist/{thinking-CdlENGRW.js → thinking-Ni0HF-w6.js} +5 -5
  67. package/dist/{tokens-H1H1LiSQ.js → tokens-c_SLAkVb.js} +1 -1
  68. package/dist/{tool-images-DXB7tqWi.js → tool-images-DBCfXdli.js} +2 -2
  69. package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-Bbc9OPFR.js} +3 -3
  70. package/dist/{web-B-ZZCPiM.js → web-95LpH1_H.js} +57 -57
  71. package/dist/{whatsapp-actions-Bc0X_rVM.js → whatsapp-actions-On9mu-j8.js} +23 -23
  72. package/dist/{workspace-wAaHI8-5.js → workspace-CbvamIU6.js} +6 -6
  73. package/docs/reference/templates/AGENTS.md +12 -0
  74. package/docs/reference/templates/SYMICORE.md +2 -0
  75. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
2
- import { M as normalizeE164, a as normalizeAnyChannelId, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-CK4e9hn8.js";
3
- import { m as createAccountListHelpers } from "./accounts-tNElYrCH.js";
2
+ import { M as normalizeE164, a as normalizeAnyChannelId, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-DP24za6g.js";
3
+ import { m as createAccountListHelpers } from "./accounts-CI6zQTJj.js";
4
4
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
5
- import { r as isTruthyEnvValue } from "./command-format-BaxDnULz.js";
6
- import { n as listBoundAccountIds, r as resolveDefaultAgentBoundAccountId } from "./bindings-B7Ke6LJi.js";
7
- import fs from "node:fs";
5
+ import { r as isTruthyEnvValue } from "./command-format-UKHV-j0K.js";
6
+ import { n as listBoundAccountIds, r as resolveDefaultAgentBoundAccountId } from "./bindings-BU2hsBd9.js";
7
+ import fsSync from "node:fs";
8
8
 
9
9
  //#region src/channels/plugins/account-action-gate.ts
10
10
  function createAccountActionGate(params) {
@@ -186,7 +186,7 @@ function resolveTelegramToken(cfg, opts = {}) {
186
186
  const accountCfg = resolveAccountCfg(accountId !== DEFAULT_ACCOUNT_ID ? accountId : DEFAULT_ACCOUNT_ID);
187
187
  const accountTokenFile = accountCfg?.tokenFile?.trim();
188
188
  if (accountTokenFile) {
189
- if (!fs.existsSync(accountTokenFile)) {
189
+ if (!fsSync.existsSync(accountTokenFile)) {
190
190
  opts.logMissingFile?.(`channels.telegram.accounts.${accountId}.tokenFile not found: ${accountTokenFile}`);
191
191
  return {
192
192
  token: "",
@@ -194,7 +194,7 @@ function resolveTelegramToken(cfg, opts = {}) {
194
194
  };
195
195
  }
196
196
  try {
197
- const token = fs.readFileSync(accountTokenFile, "utf-8").trim();
197
+ const token = fsSync.readFileSync(accountTokenFile, "utf-8").trim();
198
198
  if (token) return {
199
199
  token,
200
200
  source: "tokenFile"
@@ -219,7 +219,7 @@ function resolveTelegramToken(cfg, opts = {}) {
219
219
  const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
220
220
  const tokenFile = telegramCfg?.tokenFile?.trim();
221
221
  if (tokenFile && allowEnv) {
222
- if (!fs.existsSync(tokenFile)) {
222
+ if (!fsSync.existsSync(tokenFile)) {
223
223
  opts.logMissingFile?.(`channels.telegram.tokenFile not found: ${tokenFile}`);
224
224
  return {
225
225
  token: "",
@@ -227,7 +227,7 @@ function resolveTelegramToken(cfg, opts = {}) {
227
227
  };
228
228
  }
229
229
  try {
230
- const token = fs.readFileSync(tokenFile, "utf-8").trim();
230
+ const token = fsSync.readFileSync(tokenFile, "utf-8").trim();
231
231
  if (token) return {
232
232
  token,
233
233
  source: "tokenFile"
@@ -1,15 +1,15 @@
1
- import "./paths-Cce4PUkG.js";
2
- import { dt as resolvePreferredSymiTmpDir } from "./registry-CK4e9hn8.js";
3
- import "./agent-scope-BxoUQqgM.js";
4
- import "./subsystem-Bs9YvKLa.js";
5
- import "./workspace-wAaHI8-5.js";
1
+ import "./paths-CySxpNhH.js";
2
+ import { dt as resolvePreferredSymiTmpDir } from "./registry-DP24za6g.js";
3
+ import "./agent-scope-Bw1Ed8W9.js";
4
+ import "./subsystem-DgpxyDQ_.js";
5
+ import "./workspace-CbvamIU6.js";
6
6
  import "./boolean-B8-BqKGQ.js";
7
- import { t as formatCliCommand } from "./command-format-BaxDnULz.js";
8
- import "./model-auth-Cbvnb5vf.js";
9
- import "./github-copilot-token-C_qUP7p5.js";
10
- import "./config-CwDeZVre.js";
11
- import "./manifest-registry-D0IQ3WuX.js";
12
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-DuXtddnV.js";
7
+ import { t as formatCliCommand } from "./command-format-UKHV-j0K.js";
8
+ import "./model-auth-B55liYhg.js";
9
+ import "./github-copilot-token-DJqsJ2-r.js";
10
+ import "./config-B4Di8ISR.js";
11
+ import "./manifest-registry-CneMHk0N.js";
12
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-CTMkDHCZ.js";
13
13
  import "./redact-jSxx6Ep2.js";
14
14
  import { n as formatErrorMessage } from "./errors-BoQgnc8X.js";
15
15
  import "./ssrf-BTMDZjHT.js";
@@ -1,12 +1,12 @@
1
- import { s as resolveStateDir } from "./paths-Cce4PUkG.js";
1
+ import { s as resolveStateDir } from "./paths-CySxpNhH.js";
2
2
  import { y as parseAgentSessionKey } from "./session-key-BCzIW1Y2.js";
3
- import "./registry-CK4e9hn8.js";
4
- import { s as resolveAgentWorkspaceDir } from "./agent-scope-BxoUQqgM.js";
5
- import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
6
- import "./workspace-wAaHI8-5.js";
3
+ import "./registry-DP24za6g.js";
4
+ import { s as resolveAgentWorkspaceDir } from "./agent-scope-Bw1Ed8W9.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-DgpxyDQ_.js";
6
+ import "./workspace-CbvamIU6.js";
7
7
  import "./redact-jSxx6Ep2.js";
8
- import "./paths-DLyHUt31.js";
9
- import { _ as isFileMissingError, n as buildSessionEntry, r as listSessionFilesForAgent, t as requireNodeSqlite, v as statRegularFile } from "./sqlite-DRbx2dhW.js";
8
+ import "./paths-Cb87-LzP.js";
9
+ import { _ as isFileMissingError, n as buildSessionEntry, r as listSessionFilesForAgent, t as requireNodeSqlite, v as statRegularFile } from "./sqlite-6H6Zw1cs.js";
10
10
  import fs from "node:fs/promises";
11
11
  import os from "node:os";
12
12
  import path from "node:path";
@@ -1,7 +1,7 @@
1
- import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-Cce4PUkG.js";
1
+ import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-CySxpNhH.js";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
- import fs from "node:fs";
4
+ import fsSync from "node:fs";
5
5
  import { Logger } from "tslog";
6
6
  import JSON5 from "json5";
7
7
  import chalk, { Chalk } from "chalk";
@@ -12,9 +12,9 @@ function isNodeErrorWithCode(err, code) {
12
12
  return typeof err === "object" && err !== null && "code" in err && err.code === code;
13
13
  }
14
14
  function resolvePreferredSymiTmpDir(options = {}) {
15
- const accessSync = options.accessSync ?? fs.accessSync;
16
- const lstatSync = options.lstatSync ?? fs.lstatSync;
17
- const mkdirSync = options.mkdirSync ?? fs.mkdirSync;
15
+ const accessSync = options.accessSync ?? fsSync.accessSync;
16
+ const lstatSync = options.lstatSync ?? fsSync.lstatSync;
17
+ const mkdirSync = options.mkdirSync ?? fsSync.mkdirSync;
18
18
  const getuid = options.getuid ?? (() => {
19
19
  try {
20
20
  return typeof process.getuid === "function" ? process.getuid() : void 0;
@@ -38,14 +38,14 @@ function resolvePreferredSymiTmpDir(options = {}) {
38
38
  try {
39
39
  const preferred = lstatSync(POSIX_SYMI_TMP_DIR);
40
40
  if (!preferred.isDirectory() || preferred.isSymbolicLink()) return fallback();
41
- accessSync(POSIX_SYMI_TMP_DIR, fs.constants.W_OK | fs.constants.X_OK);
41
+ accessSync(POSIX_SYMI_TMP_DIR, fsSync.constants.W_OK | fsSync.constants.X_OK);
42
42
  if (!isSecureDirForUser(preferred)) return fallback();
43
43
  return POSIX_SYMI_TMP_DIR;
44
44
  } catch (err) {
45
45
  if (!isNodeErrorWithCode(err, "ENOENT")) return fallback();
46
46
  }
47
47
  try {
48
- accessSync("/tmp", fs.constants.W_OK | fs.constants.X_OK);
48
+ accessSync("/tmp", fsSync.constants.W_OK | fsSync.constants.X_OK);
49
49
  mkdirSync(POSIX_SYMI_TMP_DIR, {
50
50
  recursive: true,
51
51
  mode: 448
@@ -68,8 +68,8 @@ function resolvePreferredSymiTmpDir(options = {}) {
68
68
  function readLoggingConfig() {
69
69
  const configPath = resolveConfigPath();
70
70
  try {
71
- if (!fs.existsSync(configPath)) return;
72
- const raw = fs.readFileSync(configPath, "utf-8");
71
+ if (!fsSync.existsSync(configPath)) return;
72
+ const raw = fsSync.readFileSync(configPath, "utf-8");
73
73
  const logging = JSON5.parse(raw)?.logging;
74
74
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
75
75
  return logging;
@@ -172,7 +172,7 @@ function isFileLogLevelEnabled(level) {
172
172
  return levelToMinLevel(level) <= levelToMinLevel(settings.level);
173
173
  }
174
174
  function buildLogger(settings) {
175
- fs.mkdirSync(path.dirname(settings.file), { recursive: true });
175
+ fsSync.mkdirSync(path.dirname(settings.file), { recursive: true });
176
176
  if (isRollingPath(settings.file)) pruneOldRollingLogs(path.dirname(settings.file));
177
177
  const logger = new Logger({
178
178
  name: "symi",
@@ -186,7 +186,7 @@ function buildLogger(settings) {
186
186
  ...logObj,
187
187
  time
188
188
  });
189
- fs.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
189
+ fsSync.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
190
190
  } catch {}
191
191
  });
192
192
  for (const transport of externalTransports) attachExternalTransport(logger, transport);
@@ -238,14 +238,14 @@ function isRollingPath(file) {
238
238
  }
239
239
  function pruneOldRollingLogs(dir) {
240
240
  try {
241
- const entries = fs.readdirSync(dir, { withFileTypes: true });
241
+ const entries = fsSync.readdirSync(dir, { withFileTypes: true });
242
242
  const cutoff = Date.now() - MAX_LOG_AGE_MS;
243
243
  for (const entry of entries) {
244
244
  if (!entry.isFile()) continue;
245
245
  if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX)) continue;
246
246
  const fullPath = path.join(dir, entry.name);
247
247
  try {
248
- if (fs.statSync(fullPath).mtimeMs < cutoff) fs.rmSync(fullPath, { force: true });
248
+ if (fsSync.statSync(fullPath).mtimeMs < cutoff) fsSync.rmSync(fullPath, { force: true });
249
249
  } catch {}
250
250
  }
251
251
  } catch {}
@@ -326,14 +326,14 @@ function isPlainObject(value) {
326
326
  //#endregion
327
327
  //#region src/utils.ts
328
328
  async function ensureDir(dir) {
329
- await fs.promises.mkdir(dir, { recursive: true });
329
+ await fsSync.promises.mkdir(dir, { recursive: true });
330
330
  }
331
331
  /**
332
332
  * Check if a file or directory exists at the given path.
333
333
  */
334
334
  async function pathExists(targetPath) {
335
335
  try {
336
- await fs.promises.access(targetPath);
336
+ await fsSync.promises.access(targetPath);
337
337
  return true;
338
338
  } catch {
339
339
  return false;
@@ -416,7 +416,7 @@ function readLidReverseMapping(lid, opts) {
416
416
  for (const dir of mappingDirs) {
417
417
  const mappingPath = path.join(dir, mappingFilename);
418
418
  try {
419
- const data = fs.readFileSync(mappingPath, "utf8");
419
+ const data = fsSync.readFileSync(mappingPath, "utf8");
420
420
  const phone = JSON.parse(data);
421
421
  if (phone === null || phone === void 0) continue;
422
422
  return normalizeE164(String(phone));
@@ -500,7 +500,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
500
500
  if (override) return resolveUserPath(override);
501
501
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".symi");
502
502
  try {
503
- if (fs.existsSync(newDir)) return newDir;
503
+ if (fsSync.existsSync(newDir)) return newDir;
504
504
  } catch {}
505
505
  return newDir;
506
506
  }
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-H1H1LiSQ.js";
3
- import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-BtxXqho0.js";
4
- import { i as chunkMarkdownTextWithMode } from "./chunk-BW5f05BR.js";
2
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-c_SLAkVb.js";
3
+ import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-BK3EV4tO.js";
4
+ import { i as chunkMarkdownTextWithMode } from "./chunk-ClbN9Pqy.js";
5
5
 
6
6
  //#region src/auto-reply/reply/reply-reference.ts
7
7
  function createReplyReferencePlanner(options) {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as resolveAgentConfig } from "./agent-scope-BxoUQqgM.js";
2
+ import { n as resolveAgentConfig } from "./agent-scope-Bw1Ed8W9.js";
3
3
 
4
4
  //#region src/agents/identity.ts
5
5
  const DEFAULT_ACK_REACTION = "👀";
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, i as buildAgentPeerSessionKey, n as DEFAULT_MAIN_KEY, p as normalizeAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { Z as shouldLogVerbose } from "./registry-CK4e9hn8.js";
4
- import { c as resolveDefaultAgentId } from "./agent-scope-BxoUQqgM.js";
5
- import { y as logDebug } from "./workspace-wAaHI8-5.js";
3
+ import { Z as shouldLogVerbose } from "./registry-DP24za6g.js";
4
+ import { c as resolveDefaultAgentId } from "./agent-scope-Bw1Ed8W9.js";
5
+ import { y as logDebug } from "./workspace-CbvamIU6.js";
6
6
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
7
- import { t as listBindings } from "./bindings-B7Ke6LJi.js";
7
+ import { t as listBindings } from "./bindings-BU2hsBd9.js";
8
8
 
9
9
  //#region src/routing/resolve-route.ts
10
10
  var resolve_route_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,4 @@
1
- import { B as sleep } from "./registry-CK4e9hn8.js";
1
+ import { B as sleep } from "./registry-DP24za6g.js";
2
2
 
3
3
  //#region src/infra/retry.ts
4
4
  const DEFAULT_RETRY_CONFIG = {
@@ -1,13 +1,13 @@
1
- import { J as logVerbose, Z as shouldLogVerbose } from "./registry-CK4e9hn8.js";
2
- import { _ as runExec } from "./workspace-wAaHI8-5.js";
1
+ import { J as logVerbose, Z as shouldLogVerbose } from "./registry-DP24za6g.js";
2
+ import { _ as runExec } from "./workspace-CbvamIU6.js";
3
3
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
4
- import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-CvJzsyvE.js";
5
- import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveSymiAgentDir } from "./model-auth-Cbvnb5vf.js";
6
- import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-CwDeZVre.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-Bw9ZjAgJ.js";
8
- import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-DDojfpIT.js";
4
+ import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-S8-8dAhx.js";
5
+ import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveSymiAgentDir } from "./model-auth-B55liYhg.js";
6
+ import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-B4Di8ISR.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-WVlJkWYO.js";
8
+ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-BBWa_f-c.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DMwIh5cS.js";
10
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-C7OCYACU.js";
11
11
  import fs from "node:fs/promises";
12
12
  import os from "node:os";
13
13
  import path from "node:path";
@@ -882,7 +882,7 @@ async function loadModelCatalog(params) {
882
882
  });
883
883
  try {
884
884
  await ensureSymiModelsJson(params?.config ?? loadConfig());
885
- await (await import("./pi-auth-json-C7Sd8IAl.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
885
+ await (await import("./pi-auth-json-b4xaJSBk.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
886
886
  const piSdk = await importPiSdk();
887
887
  const agentDir = resolveSymiAgentDir();
888
888
  const { join } = await import("node:path");
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { J as logVerbose } from "./registry-CK4e9hn8.js";
3
- import { d as resolveSlackAccount, m as resolveSlackBotToken } from "./plugins-DQYI3Fr-.js";
2
+ import { J as logVerbose } from "./registry-DP24za6g.js";
3
+ import { d as resolveSlackAccount, m as resolveSlackBotToken } from "./plugins-C4C9637U.js";
4
4
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-CFovdgJI.js";
5
- import { n as loadConfig } from "./config-CwDeZVre.js";
6
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-BW5f05BR.js";
7
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
8
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
5
+ import { n as loadConfig } from "./config-B4Di8ISR.js";
6
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-ClbN9Pqy.js";
7
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
8
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
9
9
  import { t as renderMarkdownWithMarkers } from "./render-CDCvpfhh.js";
10
10
  import { WebClient } from "@slack/web-api";
11
11
 
@@ -1,24 +1,24 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as resolveOAuthDir, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-Cce4PUkG.js";
3
- import { G as danger, J as logVerbose, L as safeParseJson } from "./registry-CK4e9hn8.js";
4
- import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
5
- import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-DQYI3Fr-.js";
6
- import { r as isTruthyEnvValue } from "./command-format-BaxDnULz.js";
7
- import { g as isGifMedia, p as getFileExtension, v as normalizeMimeType, x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
8
- import { b as withFileLock$1 } from "./model-auth-Cbvnb5vf.js";
9
- import { n as loadConfig } from "./config-CwDeZVre.js";
2
+ import { a as resolveOAuthDir, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CySxpNhH.js";
3
+ import { G as danger, J as logVerbose, L as safeParseJson } from "./registry-DP24za6g.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-DgpxyDQ_.js";
5
+ import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-C4C9637U.js";
6
+ import { r as isTruthyEnvValue } from "./command-format-UKHV-j0K.js";
7
+ import { g as isGifMedia, p as getFileExtension, v as normalizeMimeType, x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
8
+ import { b as withFileLock$1 } from "./model-auth-B55liYhg.js";
9
+ import { n as loadConfig } from "./config-B4Di8ISR.js";
10
10
  import { t as redactSensitiveText } from "./redact-jSxx6Ep2.js";
11
11
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-BoQgnc8X.js";
12
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
13
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
12
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
13
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
14
14
  import { t as renderMarkdownWithMarkers } from "./render-CDCvpfhh.js";
15
15
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
16
- import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-CsM_hJ_s.js";
16
+ import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-C9-gaquj.js";
17
17
  import { n as normalizePollInput } from "./polls-CCuCaqgv.js";
18
18
  import { t as makeProxyFetch } from "./proxy-CBJ1upuz.js";
19
19
  import os from "node:os";
20
20
  import path from "node:path";
21
- import fs from "node:fs";
21
+ import fsSync from "node:fs";
22
22
  import crypto from "node:crypto";
23
23
  import process$1 from "node:process";
24
24
  import * as net$1 from "node:net";
@@ -131,7 +131,7 @@ function getPairingAdapter(channelId) {
131
131
  //#region src/plugin-sdk/json-store.ts
132
132
  async function readJsonFileWithFallback(filePath, fallback) {
133
133
  try {
134
- const parsed = safeParseJson(await fs.promises.readFile(filePath, "utf-8"));
134
+ const parsed = safeParseJson(await fsSync.promises.readFile(filePath, "utf-8"));
135
135
  if (parsed == null) return {
136
136
  value: fallback,
137
137
  exists: true
@@ -153,14 +153,14 @@ async function readJsonFileWithFallback(filePath, fallback) {
153
153
  }
154
154
  async function writeJsonFileAtomically(filePath, value) {
155
155
  const dir = path.dirname(filePath);
156
- await fs.promises.mkdir(dir, {
156
+ await fsSync.promises.mkdir(dir, {
157
157
  recursive: true,
158
158
  mode: 448
159
159
  });
160
160
  const tmp = path.join(dir, `${path.basename(filePath)}.${crypto.randomUUID()}.tmp`);
161
- await fs.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf-8" });
162
- await fs.promises.chmod(tmp, 384);
163
- await fs.promises.rename(tmp, filePath);
161
+ await fsSync.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf-8" });
162
+ await fsSync.promises.chmod(tmp, 384);
163
+ await fsSync.promises.rename(tmp, filePath);
164
164
  }
165
165
 
166
166
  //#endregion
@@ -221,7 +221,7 @@ async function readPairingRequests(filePath) {
221
221
  }
222
222
  async function ensureJsonFile(filePath, fallback) {
223
223
  try {
224
- await fs.promises.access(filePath);
224
+ await fsSync.promises.access(filePath);
225
225
  } catch {
226
226
  await writeJsonFile(filePath, fallback);
227
227
  }
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as resolveSignalAccount } from "./accounts-CWktKM8a.js";
3
- import { x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
4
- import { n as loadConfig } from "./config-CwDeZVre.js";
5
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
2
+ import { n as resolveSignalAccount } from "./accounts-ChTFYj8Q.js";
3
+ import { x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
4
+ import { n as loadConfig } from "./config-B4Di8ISR.js";
5
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
6
6
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
7
- import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
7
+ import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
8
8
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
9
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DjNDa3zn.js";
9
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Co2diKdP.js";
10
10
  import { randomUUID } from "node:crypto";
11
11
 
12
12
  //#region src/signal/format.ts
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { I as resolveUserPath, M as normalizeE164 } from "./registry-CK4e9hn8.js";
3
- import { x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
4
- import { n as loadConfig } from "./config-CwDeZVre.js";
5
- import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
6
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
7
- import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
8
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DjNDa3zn.js";
2
+ import { I as resolveUserPath, M as normalizeE164 } from "./registry-DP24za6g.js";
3
+ import { x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
4
+ import { n as loadConfig } from "./config-B4Di8ISR.js";
5
+ import { t as resolveIMessageAccount } from "./accounts-CJR8j_Kq.js";
6
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
7
+ import { t as convertMarkdownTables } from "./tables-BIWsCKXJ.js";
8
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Co2diKdP.js";
9
9
  import { spawn } from "node:child_process";
10
10
  import { createInterface } from "node:readline";
11
11
 
@@ -1,17 +1,17 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as resolvePreferredSymiTmpDir } from "./registry-CK4e9hn8.js";
3
- import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-DQYI3Fr-.js";
2
+ import { dt as resolvePreferredSymiTmpDir } from "./registry-DP24za6g.js";
3
+ import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-C4C9637U.js";
4
4
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-CFovdgJI.js";
5
- import { b as maxBytesForKind, f as extensionForMime } from "./image-ops-CvJzsyvE.js";
6
- import { n as loadConfig } from "./config-CwDeZVre.js";
7
- import { n as retryAsync, t as resolveRetryConfig } from "./retry-Cly39XZB.js";
8
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-BW5f05BR.js";
9
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
10
- import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-DccrnjsE.js";
5
+ import { b as maxBytesForKind, f as extensionForMime } from "./image-ops-S8-8dAhx.js";
6
+ import { n as loadConfig } from "./config-B4Di8ISR.js";
7
+ import { n as retryAsync, t as resolveRetryConfig } from "./retry-dGG-MbxL.js";
8
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-ClbN9Pqy.js";
9
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
10
+ import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-CbFUkv_T.js";
11
11
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
12
- import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-CsM_hJ_s.js";
12
+ import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-C9-gaquj.js";
13
13
  import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-CCuCaqgv.js";
14
- import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
14
+ import { t as convertMarkdownTables } from "./tables-BIWsCKXJ.js";
15
15
  import fs from "node:fs/promises";
16
16
  import path from "node:path";
17
17
  import { execFile } from "node:child_process";
@@ -1,8 +1,8 @@
1
- import { E as ensureDir, G as danger, I as resolveUserPath, Q as success, ot as toPinoLikeLogger, rt as getChildLogger } from "./registry-CK4e9hn8.js";
2
- import { c as readCredsJsonRaw, d as resolveWebCredsBackupPath, f as resolveWebCredsPath, o as maybeRestoreCredsFromBackup, u as resolveDefaultWebAuthDir } from "./accounts-tNElYrCH.js";
3
- import { t as formatCliCommand } from "./command-format-BaxDnULz.js";
4
- import { A as VERSION } from "./config-CwDeZVre.js";
5
- import fs from "node:fs";
1
+ import { E as ensureDir, G as danger, I as resolveUserPath, Q as success, ot as toPinoLikeLogger, rt as getChildLogger } from "./registry-DP24za6g.js";
2
+ import { c as readCredsJsonRaw, d as resolveWebCredsBackupPath, f as resolveWebCredsPath, o as maybeRestoreCredsFromBackup, u as resolveDefaultWebAuthDir } from "./accounts-CI6zQTJj.js";
3
+ import { t as formatCliCommand } from "./command-format-UKHV-j0K.js";
4
+ import { A as VERSION } from "./config-B4Di8ISR.js";
5
+ import fsSync from "node:fs";
6
6
  import { randomUUID } from "node:crypto";
7
7
  import { DisconnectReason, fetchLatestBaileysVersion, makeCacheableSignalKeyStore, makeWASocket, useMultiFileAuthState } from "@whiskeysockets/baileys";
8
8
  import qrcode from "qrcode-terminal";
@@ -21,16 +21,16 @@ async function safeSaveCreds(authDir, saveCreds, logger) {
21
21
  const raw = readCredsJsonRaw(credsPath);
22
22
  if (raw) try {
23
23
  JSON.parse(raw);
24
- fs.copyFileSync(credsPath, backupPath);
24
+ fsSync.copyFileSync(credsPath, backupPath);
25
25
  try {
26
- fs.chmodSync(backupPath, 384);
26
+ fsSync.chmodSync(backupPath, 384);
27
27
  } catch {}
28
28
  } catch {}
29
29
  } catch {}
30
30
  try {
31
31
  await Promise.resolve(saveCreds());
32
32
  try {
33
- fs.chmodSync(resolveWebCredsPath(authDir), 384);
33
+ fsSync.chmodSync(resolveWebCredsPath(authDir), 384);
34
34
  } catch {}
35
35
  } catch (err) {
36
36
  logger.warn({ error: String(err) }, "failed saving WhatsApp creds");
@@ -1,14 +1,14 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as resolveStateDir } from "./paths-Cce4PUkG.js";
3
- import { I as resolveUserPath, S as CONFIG_DIR } from "./registry-CK4e9hn8.js";
4
- import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "./agent-scope-BxoUQqgM.js";
5
- import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
6
- import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-BFekKL7i.js";
7
- import { i as listChatCommands } from "./commands-registry-CurvwtTw.js";
2
+ import { s as resolveStateDir } from "./paths-CySxpNhH.js";
3
+ import { I as resolveUserPath, S as CONFIG_DIR } from "./registry-DP24za6g.js";
4
+ import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "./agent-scope-Bw1Ed8W9.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-DgpxyDQ_.js";
6
+ import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-o5WVqM4V.js";
7
+ import { i as listChatCommands } from "./commands-registry-D1zSleL6.js";
8
8
  import fs from "node:fs/promises";
9
9
  import os from "node:os";
10
10
  import path from "node:path";
11
- import fs$1 from "node:fs";
11
+ import fsSync from "node:fs";
12
12
  import { randomUUID } from "node:crypto";
13
13
  import chokidar from "chokidar";
14
14
 
@@ -283,8 +283,8 @@ function listSkillCommandsForAgents(params) {
283
283
  const visitedDirs = /* @__PURE__ */ new Set();
284
284
  for (const agentId of agentIds) {
285
285
  const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId);
286
- if (!fs$1.existsSync(workspaceDir)) continue;
287
- const canonicalDir = fs$1.realpathSync(workspaceDir);
286
+ if (!fsSync.existsSync(workspaceDir)) continue;
287
+ const canonicalDir = fsSync.realpathSync(workspaceDir);
288
288
  if (visitedDirs.has(canonicalDir)) continue;
289
289
  visitedDirs.add(canonicalDir);
290
290
  const commands = buildWorkspaceSkillCommandSpecs(workspaceDir, {