@noxsoft/anima 3.0.0 → 3.0.2

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 (88) hide show
  1. package/dist/{accounts-4HFzweNO.js → accounts-ZMhj636e.js} +38 -38
  2. package/dist/{agent-events-BiKKV3wj.js → agent-events-iR_gRjZA.js} +2 -2
  3. package/dist/{agent-scope-BXuH9s05.js → agent-scope-DWKQJUUZ.js} +3 -3
  4. package/dist/{agents-GDJBET4Z.js → agents-DAg3VWr9.js} +1 -1
  5. package/dist/{auth-choice-BTMheCDo.js → auth-choice-CPDNhDPT.js} +17 -4
  6. package/dist/{auth-profiles-xk_1uopf.js → auth-profiles-BqrAPweI.js} +9 -9
  7. package/dist/{auth-store-Bis9WSLR.js → auth-store-eNVxoq_h.js} +13 -13
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +22 -22
  10. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  11. package/dist/bundled/command-logger/handler.js +1 -1
  12. package/dist/bundled/session-memory/handler.js +8 -8
  13. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  14. package/dist/{chrome-C1KpzLwu.js → chrome-s7nTgmbn.js} +12 -12
  15. package/dist/{chunk-Cguey_55.js → chunk-lDG_8LI5.js} +2 -2
  16. package/dist/{clack-prompter-S0pujJNH.js → clack-prompter-DXovYg0Q.js} +1 -1
  17. package/dist/{command-registry-D5y3Nn9i.js → command-registry-Cl3Z-qsS.js} +7 -7
  18. package/dist/{common-DgcMt-pi.js → common-DbouukNi.js} +2 -2
  19. package/dist/{completion-cli-CDsbJ-p2.js → completion-cli-D3yIDiMz.js} +1 -1
  20. package/dist/{completion-cli-CqZwlvs2.js → completion-cli-DcTEhrAe.js} +2 -2
  21. package/dist/{config-CrQw7iqE.js → config-H_VHtPeY.js} +27 -27
  22. package/dist/{config-cli-Brwjz25Y.js → config-cli-DgXOXMb_.js} +1 -1
  23. package/dist/{config-cli-CaUpfkTl.js → config-cli-VB37XAkf.js} +1 -1
  24. package/dist/{configure-B_PLPDkP.js → configure-8QclXvjE.js} +2 -2
  25. package/dist/{configure-QwZPOdBf.js → configure-Du07BFtQ.js} +1 -1
  26. package/dist/{deliver-Bri9Y1qG.js → deliver-DyQtnfXd.js} +14 -14
  27. package/dist/{doctor-qFADypWz.js → doctor-BxzkshQH.js} +1 -1
  28. package/dist/{doctor-BDWGCEMG.js → doctor-DR7CLoAy.js} +1 -1
  29. package/dist/{doctor-completion-DguJOZqA.js → doctor-completion-CZgNNZVd.js} +1 -1
  30. package/dist/{doctor-completion-BY4djQTY.js → doctor-completion-Dend-SU1.js} +1 -1
  31. package/dist/entry.js +1 -1
  32. package/dist/{exec-DJTRaYS6.js → exec-CK8CHr7j.js} +7 -7
  33. package/dist/{frontmatter-DDYuWuK5.js → frontmatter-BBFYH_d2.js} +2 -2
  34. package/dist/{gateway-cli-B091bAD6.js → gateway-cli-BMOKBWwi.js} +5 -5
  35. package/dist/{gateway-cli-CUmQFMSU.js → gateway-cli-D0mD_UV8.js} +6 -6
  36. package/dist/{image-ops-ZMEg1-kE.js → image-ops-DJjERl7d.js} +2 -2
  37. package/dist/index.js +1 -1
  38. package/dist/json-file-Dvrir7_o.js +25 -0
  39. package/dist/llm-slug-generator.js +5 -5
  40. package/dist/{login-DP5hIYxG.js → login-CdRss5_H.js} +5 -5
  41. package/dist/{login-qr-DOt_1aAq.js → login-qr-DoNanonP.js} +10 -10
  42. package/dist/{manager-CHN3-66K.js → manager-BlXVqzLP.js} +14 -14
  43. package/dist/{model-auth-C4Jglp-Y.js → model-auth-ChSwMwh7.js} +3 -3
  44. package/dist/{model-selection-BsVvfxCt.js → model-selection-DPoLkg_t.js} +1 -1
  45. package/dist/{onboard-BqpDno7i.js → onboard-D8Khq7CJ.js} +2 -2
  46. package/dist/{onboard-B006xiEP.js → onboard-DHlStqHP.js} +3 -3
  47. package/dist/{onboarding-DXQ0Qtq6.js → onboarding-BappVKxE.js} +3 -3
  48. package/dist/{onboarding-BLFJufto.js → onboarding-CGG6jZ0y.js} +3 -3
  49. package/dist/{outbound-DdFghG1N.js → outbound-DK71dddk.js} +6 -6
  50. package/dist/{paths-OaazGgrn.js → paths-CmZenvlb.js} +2 -2
  51. package/dist/{paths-B-AkG5FD.js → paths-D2eokayo.js} +3 -3
  52. package/dist/{pi-auth-json-CYnJfuU-.js → pi-auth-json-BYN-DI5a.js} +7 -7
  53. package/dist/{pi-embedded-helpers-CeMv9QXO.js → pi-embedded-helpers-CvYnWzAn.js} +44 -44
  54. package/dist/{program-CzWSwu9I.js → program-Dk1iylK1.js} +2 -2
  55. package/dist/{program-context-C8DYJdS-.js → program-context-DYdCPzyt.js} +9 -9
  56. package/dist/{prompts-Cm8eJ-i3.js → prompts-BT5ztuUd.js} +17 -4
  57. package/dist/{pw-ai-DVQKx_ca.js → pw-ai-q5Enhcu7.js} +4 -4
  58. package/dist/{qmd-manager-lcdr9Faq.js → qmd-manager-D_lZFetA.js} +7 -7
  59. package/dist/{register.agent-DY1YeTsP.js → register.agent-CzQfwzdi.js} +2 -2
  60. package/dist/{register.agent-B_gLj3iW.js → register.agent-sq78vQTz.js} +2 -2
  61. package/dist/{register.configure-BHsLGGdB.js → register.configure-ChWH2Kph.js} +3 -3
  62. package/dist/{register.configure-De5ZyOFg.js → register.configure-w6Ptx3C9.js} +2 -2
  63. package/dist/{register.maintenance-Bcb2lf7H.js → register.maintenance-Chm2rk_s.js} +5 -5
  64. package/dist/{register.maintenance-DSQmEYe7.js → register.maintenance-Da29S58I.js} +4 -4
  65. package/dist/{register.onboard-COEVeozO.js → register.onboard-B7Ozkx53.js} +7 -7
  66. package/dist/{register.onboard-DUWYMOX1.js → register.onboard-BBqM-ETs.js} +7 -7
  67. package/dist/{register.setup-D__YdHzY.js → register.setup-BId1QGzk.js} +7 -7
  68. package/dist/{register.setup-fJdxj_9G.js → register.setup-Bc3Xk--Q.js} +7 -7
  69. package/dist/{register.subclis-D2HE_7Rz.js → register.subclis-N7uAMRX_.js} +3 -3
  70. package/dist/{run-main-BTol0uPD.js → run-main-DA4rt9qc.js} +6 -6
  71. package/dist/{semantic-BTp-RtM8.js → semantic-BcioSN1d.js} +1 -1
  72. package/dist/{session-CzBccNiw.js → session-DTRcP2Sj.js} +1 -1
  73. package/dist/{shell-env-5vFwNQcz.js → shell-env-BBHdjHEl.js} +1 -1
  74. package/dist/{soul-D4rF0iXu.js → soul-CXGTzaKZ.js} +1 -1
  75. package/dist/{sqlite-B3u2TqVF.js → sqlite-B-dYyac7.js} +4 -4
  76. package/dist/{subagent-registry-xUCd2ZX9.js → subagent-registry-DjB3VS5s.js} +28 -28
  77. package/dist/{subsystem-BlEuMJjX.js → subsystem-CJTCKTwb.js} +13 -13
  78. package/dist/{tool-images-2qKyjXUj.js → tool-images-DBOSl4NL.js} +2 -2
  79. package/dist/{update-cli-CATjbP1k.js → update-cli-CGVsahIi.js} +5 -5
  80. package/dist/{update-cli-C6zUK6ap.js → update-cli-D-QvSeu0.js} +4 -4
  81. package/dist/{usage-kmpmqBES.js → usage-DSZ_juox.js} +20 -20
  82. package/dist/{web-CTS-vEIT.js → web-DY2TrPoD.js} +86 -86
  83. package/dist/{whatsapp-actions-qDftmVCc.js → whatsapp-actions-B_fglZZt.js} +13 -13
  84. package/dist/{workspace-CZlo4alz.js → workspace-xzxJwPTB.js} +5 -5
  85. package/package.json +2 -1
  86. package/dist/json-file-CZ3ssFR9.js +0 -25
  87. /package/dist/{config-Btt1rkoB.js → config-COtiNNtV.js} +0 -0
  88. /package/dist/{input-provenance-B0pwc6mp.js → input-provenance-MbkIKHHL.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { _t as getPrimaryCommand, bt as hasHelpOrVersion, pt as buildParseArgv } from "./entry.js";
3
3
  import { r as resolveActionArgs } from "./helpers-BJtPtu_2.js";
4
- import { r as registerSubCliCommands } from "./register.subclis-D2HE_7Rz.js";
4
+ import { r as registerSubCliCommands } from "./register.subclis-N7uAMRX_.js";
5
5
 
6
6
  //#region src/cli/program/command-registry.ts
7
7
  var command_registry_exports = /* @__PURE__ */ __exportAll({
@@ -21,7 +21,7 @@ const coreEntries = [
21
21
  description: "Initialize ANIMA config and the agent workspace"
22
22
  }],
23
23
  register: async ({ program }) => {
24
- (await import("./register.setup-D__YdHzY.js")).registerSetupCommand(program);
24
+ (await import("./register.setup-BId1QGzk.js")).registerSetupCommand(program);
25
25
  }
26
26
  },
27
27
  {
@@ -30,7 +30,7 @@ const coreEntries = [
30
30
  description: "Interactive wizard for Gateway, workspace, and skills setup"
31
31
  }],
32
32
  register: async ({ program }) => {
33
- (await import("./register.onboard-COEVeozO.js")).registerOnboardCommand(program);
33
+ (await import("./register.onboard-B7Ozkx53.js")).registerOnboardCommand(program);
34
34
  }
35
35
  },
36
36
  {
@@ -39,7 +39,7 @@ const coreEntries = [
39
39
  description: "Interactive configuration for NoxSoft, memory, heartbeat, and identity"
40
40
  }],
41
41
  register: async ({ program }) => {
42
- (await import("./register.configure-De5ZyOFg.js")).registerConfigureCommand(program);
42
+ (await import("./register.configure-w6Ptx3C9.js")).registerConfigureCommand(program);
43
43
  }
44
44
  },
45
45
  {
@@ -48,7 +48,7 @@ const coreEntries = [
48
48
  description: "Read, write, and manage ANIMA configuration"
49
49
  }],
50
50
  register: async ({ program }) => {
51
- (await import("./config-cli-CaUpfkTl.js")).registerConfigCli(program);
51
+ (await import("./config-cli-VB37XAkf.js")).registerConfigCli(program);
52
52
  }
53
53
  },
54
54
  {
@@ -57,7 +57,7 @@ const coreEntries = [
57
57
  description: "Diagnose and repair Gateway and daemon issues"
58
58
  }],
59
59
  register: async ({ program }) => {
60
- (await import("./register.maintenance-Bcb2lf7H.js")).registerMaintenanceCommands(program);
60
+ (await import("./register.maintenance-Chm2rk_s.js")).registerMaintenanceCommands(program);
61
61
  }
62
62
  },
63
63
  {
@@ -78,7 +78,7 @@ const coreEntries = [
78
78
  description: "Manage isolated agent workspaces, auth, and routing"
79
79
  }],
80
80
  register: async ({ program, ctx }) => {
81
- (await import("./register.agent-B_gLj3iW.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
81
+ (await import("./register.agent-sq78vQTz.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
82
82
  }
83
83
  },
84
84
  {
@@ -1,5 +1,5 @@
1
- import { o as detectMime } from "./image-ops-ZMEg1-kE.js";
2
- import { t as sanitizeToolResultImages } from "./tool-images-2qKyjXUj.js";
1
+ import { o as detectMime } from "./image-ops-DJjERl7d.js";
2
+ import { t as sanitizeToolResultImages } from "./tool-images-DBOSl4NL.js";
3
3
  import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/agents/tools/common.ts
@@ -2,7 +2,7 @@ import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { m as resolveStateDir } from "./paths-zhVksOvm.js";
3
3
  import { i as routeLogsToStderr } from "./subsystem-BaJ-PqmA.js";
4
4
  import { g as pathExists } from "./utils-RdHkpqQp.js";
5
- import { i as registerCoreCliByName, o as getSubCliEntries, r as getCoreCliCommandNames, s as registerSubCliByName, t as getProgramContext } from "./program-context-C8DYJdS-.js";
5
+ import { i as registerCoreCliByName, o as getSubCliEntries, r as getCoreCliCommandNames, s as registerSubCliByName, t as getProgramContext } from "./program-context-DYdCPzyt.js";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,8 +1,8 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { Z as resolveStateDir, l as routeLogsToStderr } from "./entry.js";
3
3
  import { h as pathExists } from "./utils-DwcweD55.js";
4
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-D2HE_7Rz.js";
5
- import { n as getCoreCliCommandNames, r as registerCoreCliByName } from "./command-registry-D5y3Nn9i.js";
4
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-N7uAMRX_.js";
5
+ import { n as getCoreCliCommandNames, r as registerCoreCliByName } from "./command-registry-Cl3Z-qsS.js";
6
6
  import { t as getProgramContext } from "./program-context-DItEQSzX.js";
7
7
  import os from "node:os";
8
8
  import path from "node:path";
@@ -1,15 +1,15 @@
1
- import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-B-AkG5FD.js";
2
- import { _ as DEFAULT_AGENT_ID, w as normalizeAgentId } from "./workspace-CZlo4alz.js";
3
- import { f as normalizeChatChannelId, o as CHANNEL_IDS } from "./subsystem-BlEuMJjX.js";
4
- import { S as resolveConfigDir, _ as isRecord, g as isPlainObject$2, w as resolveUserPath } from "./exec-DJTRaYS6.js";
5
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-BXuH9s05.js";
6
- import { c as parseModelRef, p as DEFAULT_CONTEXT_TOKENS } from "./model-selection-BsVvfxCt.js";
7
- import { a as shouldDeferShellEnvFallback, i as resolveShellEnvFallbackTimeoutMs, o as shouldEnableShellEnvFallback, r as loadShellEnvFallback } from "./shell-env-5vFwNQcz.js";
1
+ import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-D2eokayo.js";
2
+ import { _ as DEFAULT_AGENT_ID, w as normalizeAgentId } from "./workspace-xzxJwPTB.js";
3
+ import { f as normalizeChatChannelId, o as CHANNEL_IDS } from "./subsystem-CJTCKTwb.js";
4
+ import { S as resolveConfigDir, _ as isRecord, g as isPlainObject$2, w as resolveUserPath } from "./exec-CK8CHr7j.js";
5
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-DWKQJUUZ.js";
6
+ import { c as parseModelRef, p as DEFAULT_CONTEXT_TOKENS } from "./model-selection-DPoLkg_t.js";
7
+ import { a as shouldDeferShellEnvFallback, i as resolveShellEnvFallbackTimeoutMs, o as shouldEnableShellEnvFallback, r as loadShellEnvFallback } from "./shell-env-BBHdjHEl.js";
8
8
  import { n as MANIFEST_KEY } from "./legacy-names-lFRgrQ9g.js";
9
9
  import { createRequire } from "node:module";
10
10
  import os from "node:os";
11
11
  import path from "node:path";
12
- import fs from "node:fs";
12
+ import fsSync from "node:fs";
13
13
  import JSON5 from "json5";
14
14
  import { isDeepStrictEqual } from "node:util";
15
15
  import { fileURLToPath } from "node:url";
@@ -23,7 +23,7 @@ function loadDotEnv(opts) {
23
23
  const quiet = opts?.quiet ?? true;
24
24
  dotenv.config({ quiet });
25
25
  const globalEnvPath = path.join(resolveConfigDir(process.env), ".env");
26
- if (!fs.existsSync(globalEnvPath)) return;
26
+ if (!fsSync.existsSync(globalEnvPath)) return;
27
27
  dotenv.config({
28
28
  quiet,
29
29
  path: globalEnvPath,
@@ -153,7 +153,7 @@ const DEFAULT_SUBAGENT_MAX_CONCURRENT = 8;
153
153
  //#endregion
154
154
  //#region src/config/talk.ts
155
155
  function readTalkApiKeyFromProfile(deps = {}) {
156
- const fsImpl = deps.fs ?? fs;
156
+ const fsImpl = deps.fs ?? fsSync;
157
157
  const osImpl = deps.os ?? os;
158
158
  const pathImpl = deps.path ?? path;
159
159
  const home = osImpl.homedir();
@@ -847,7 +847,7 @@ var IncludeProcessor = class IncludeProcessor {
847
847
  }
848
848
  };
849
849
  const defaultResolver = {
850
- readFile: (p) => fs.readFileSync(p, "utf-8"),
850
+ readFile: (p) => fsSync.readFileSync(p, "utf-8"),
851
851
  parseJson: (raw) => JSON5.parse(raw)
852
852
  };
853
853
  /**
@@ -1933,13 +1933,13 @@ function resolveBundledPluginsDir() {
1933
1933
  try {
1934
1934
  const execDir = path.dirname(process.execPath);
1935
1935
  const sibling = path.join(execDir, "extensions");
1936
- if (fs.existsSync(sibling)) return sibling;
1936
+ if (fsSync.existsSync(sibling)) return sibling;
1937
1937
  } catch {}
1938
1938
  try {
1939
1939
  let cursor = path.dirname(fileURLToPath(import.meta.url));
1940
1940
  for (let i = 0; i < 6; i += 1) {
1941
1941
  const candidate = path.join(cursor, "extensions");
1942
- if (fs.existsSync(candidate)) return candidate;
1942
+ if (fsSync.existsSync(candidate)) return candidate;
1943
1943
  const parent = path.dirname(cursor);
1944
1944
  if (parent === cursor) break;
1945
1945
  cursor = parent;
@@ -1958,20 +1958,20 @@ function normalizeStringList(value) {
1958
1958
  function resolvePluginManifestPath(rootDir) {
1959
1959
  for (const filename of PLUGIN_MANIFEST_FILENAMES) {
1960
1960
  const candidate = path.join(rootDir, filename);
1961
- if (fs.existsSync(candidate)) return candidate;
1961
+ if (fsSync.existsSync(candidate)) return candidate;
1962
1962
  }
1963
1963
  return path.join(rootDir, PLUGIN_MANIFEST_FILENAME);
1964
1964
  }
1965
1965
  function loadPluginManifest(rootDir) {
1966
1966
  const manifestPath = resolvePluginManifestPath(rootDir);
1967
- if (!fs.existsSync(manifestPath)) return {
1967
+ if (!fsSync.existsSync(manifestPath)) return {
1968
1968
  ok: false,
1969
1969
  error: `plugin manifest not found: ${manifestPath}`,
1970
1970
  manifestPath
1971
1971
  };
1972
1972
  let raw;
1973
1973
  try {
1974
- raw = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
1974
+ raw = JSON.parse(fsSync.readFileSync(manifestPath, "utf-8"));
1975
1975
  } catch (err) {
1976
1976
  return {
1977
1977
  ok: false,
@@ -2044,9 +2044,9 @@ function isExtensionFile(filePath) {
2044
2044
  }
2045
2045
  function readPackageManifest(dir) {
2046
2046
  const manifestPath = path.join(dir, "package.json");
2047
- if (!fs.existsSync(manifestPath)) return null;
2047
+ if (!fsSync.existsSync(manifestPath)) return null;
2048
2048
  try {
2049
- const raw = fs.readFileSync(manifestPath, "utf-8");
2049
+ const raw = fsSync.readFileSync(manifestPath, "utf-8");
2050
2050
  return JSON.parse(raw);
2051
2051
  } catch {
2052
2052
  return null;
@@ -2084,10 +2084,10 @@ function addCandidate(params) {
2084
2084
  });
2085
2085
  }
2086
2086
  function discoverInDirectory(params) {
2087
- if (!fs.existsSync(params.dir)) return;
2087
+ if (!fsSync.existsSync(params.dir)) return;
2088
2088
  let entries = [];
2089
2089
  try {
2090
- entries = fs.readdirSync(params.dir, { withFileTypes: true });
2090
+ entries = fsSync.readdirSync(params.dir, { withFileTypes: true });
2091
2091
  } catch (err) {
2092
2092
  params.diagnostics.push({
2093
2093
  level: "warn",
@@ -2139,7 +2139,7 @@ function discoverInDirectory(params) {
2139
2139
  "index.js",
2140
2140
  "index.mjs",
2141
2141
  "index.cjs"
2142
- ].map((candidate) => path.join(fullPath, candidate)).find((candidate) => fs.existsSync(candidate));
2142
+ ].map((candidate) => path.join(fullPath, candidate)).find((candidate) => fsSync.existsSync(candidate));
2143
2143
  if (indexFile && isExtensionFile(indexFile)) addCandidate({
2144
2144
  candidates: params.candidates,
2145
2145
  seen: params.seen,
@@ -2155,7 +2155,7 @@ function discoverInDirectory(params) {
2155
2155
  }
2156
2156
  function discoverFromPath(params) {
2157
2157
  const resolved = resolveUserPath(params.rawPath);
2158
- if (!fs.existsSync(resolved)) {
2158
+ if (!fsSync.existsSync(resolved)) {
2159
2159
  params.diagnostics.push({
2160
2160
  level: "error",
2161
2161
  message: `plugin path not found: ${resolved}`,
@@ -2163,7 +2163,7 @@ function discoverFromPath(params) {
2163
2163
  });
2164
2164
  return;
2165
2165
  }
2166
- const stat = fs.statSync(resolved);
2166
+ const stat = fsSync.statSync(resolved);
2167
2167
  if (stat.isFile()) {
2168
2168
  if (!isExtensionFile(resolved)) {
2169
2169
  params.diagnostics.push({
@@ -2213,7 +2213,7 @@ function discoverFromPath(params) {
2213
2213
  "index.js",
2214
2214
  "index.mjs",
2215
2215
  "index.cjs"
2216
- ].map((candidate) => path.join(resolved, candidate)).find((candidate) => fs.existsSync(candidate));
2216
+ ].map((candidate) => path.join(resolved, candidate)).find((candidate) => fsSync.existsSync(candidate));
2217
2217
  if (indexFile && isExtensionFile(indexFile)) {
2218
2218
  addCandidate({
2219
2219
  candidates: params.candidates,
@@ -2303,7 +2303,7 @@ function safeRealpathSync(rootDir, cache) {
2303
2303
  const cached = cache.get(rootDir);
2304
2304
  if (cached) return cached;
2305
2305
  try {
2306
- const resolved = fs.realpathSync(rootDir);
2306
+ const resolved = fsSync.realpathSync(rootDir);
2307
2307
  cache.set(rootDir, resolved);
2308
2308
  return resolved;
2309
2309
  } catch {
@@ -2329,7 +2329,7 @@ function buildCacheKey(params) {
2329
2329
  }
2330
2330
  function safeStatMtimeMs(filePath) {
2331
2331
  try {
2332
- return fs.statSync(filePath).mtimeMs;
2332
+ return fsSync.statSync(filePath).mtimeMs;
2333
2333
  } catch {
2334
2334
  return null;
2335
2335
  }
@@ -4674,7 +4674,7 @@ function resolveConfigPathForDeps(deps) {
4674
4674
  }
4675
4675
  function normalizeDeps(overrides = {}) {
4676
4676
  return {
4677
- fs: overrides.fs ?? fs,
4677
+ fs: overrides.fs ?? fsSync,
4678
4678
  json5: overrides.json5 ?? JSON5,
4679
4679
  env: overrides.env ?? process.env,
4680
4680
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
@@ -205,7 +205,7 @@ async function runConfigUnset(opts) {
205
205
  }
206
206
  function registerConfigCli(program) {
207
207
  const cmd = program.command("config").description("Read, write, and manage ANIMA configuration").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.noxsoft.net/anima/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
208
- const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections, parseConfigureWizardSections } = await import("./configure-B_PLPDkP.js").then((n) => n.t);
208
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections, parseConfigureWizardSections } = await import("./configure-8QclXvjE.js").then((n) => n.t);
209
209
  const { sections, invalid } = parseConfigureWizardSections(opts.section);
210
210
  if (sections.length === 0) {
211
211
  await configureCommand(defaultRuntime);
@@ -202,7 +202,7 @@ async function runConfigUnset(opts) {
202
202
  }
203
203
  function registerConfigCli(program) {
204
204
  const cmd = program.command("config").description("Read, write, and manage ANIMA configuration").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.noxsoft.net/anima/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
205
- const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections, parseConfigureWizardSections } = await import("./configure-QwZPOdBf.js").then((n) => n.t);
205
+ const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections, parseConfigureWizardSections } = await import("./configure-Du07BFtQ.js").then((n) => n.t);
206
206
  const { sections, invalid } = parseConfigureWizardSections(opts.section);
207
207
  if (sections.length === 0) {
208
208
  await configureCommand(defaultRuntime);
@@ -17,11 +17,11 @@ import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-Cr39lZhK.js"
17
17
  import { n as discoverGatewayBeacons, t as installSkill } from "./skills-install-BVlnMRDh.js";
18
18
  import { r as healthCommand } from "./health-CH8yZB2L.js";
19
19
  import { n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-BMwPAU53.js";
20
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice, s as promptAuthChoiceGrouped, t as WizardCancelledError } from "./prompts-Cm8eJ-i3.js";
20
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice, s as promptAuthChoiceGrouped, t as WizardCancelledError } from "./prompts-BT5ztuUd.js";
21
21
  import { a as promptDefaultModel, i as applyPrimaryModel, n as applyModelAllowlist, o as promptModelAllowlist, r as applyModelFallbacksFromSelection, t as validateIPv4AddressInput } from "./ipv4-sll41DXC.js";
22
22
  import { n as logConfigUpdated } from "./logging-ClHj0gnP.js";
23
23
  import { t as note$1 } from "./note-CLRVmCnr.js";
24
- import { t as createClackPrompter } from "./clack-prompter-S0pujJNH.js";
24
+ import { t as createClackPrompter } from "./clack-prompter-DXovYg0Q.js";
25
25
  import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-BQ5lwRDU.js";
26
26
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-q1hyIpoI.js";
27
27
  import { confirm, intro, outro, select, text } from "@clack/prompts";
@@ -16,7 +16,7 @@ import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-pkKJoCyY.js"
16
16
  import { n as discoverGatewayBeacons, t as installSkill } from "./skills-install-wgdmTfsf.js";
17
17
  import { r as healthCommand } from "./health-27WiwNrh.js";
18
18
  import { n as ensureControlUiAssetsBuilt, t as formatHealthCheckFailure } from "./health-format-Dug5Rbjg.js";
19
- import { i as promptAuthChoiceGrouped, r as applyAuthChoice, t as resolvePreferredProviderForAuthChoice } from "./auth-choice-BTMheCDo.js";
19
+ import { i as promptAuthChoiceGrouped, r as applyAuthChoice, t as resolvePreferredProviderForAuthChoice } from "./auth-choice-CPDNhDPT.js";
20
20
  import { t as WizardCancelledError } from "./prompts-vr_Njtil.js";
21
21
  import { a as promptDefaultModel, i as applyPrimaryModel, n as applyModelAllowlist, o as promptModelAllowlist, r as applyModelFallbacksFromSelection, t as validateIPv4AddressInput } from "./ipv4-yUiIU5CD.js";
22
22
  import { n as logConfigUpdated } from "./logging-B05aEFEO.js";
@@ -1,11 +1,11 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
- import { s as resolveStateDir } from "./paths-B-AkG5FD.js";
3
- import { p as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-BlEuMJjX.js";
4
- import { $ as appendAssistantMessageToSessionTranscript, Mt as isSilentReplyText, Tt as getChannelDock, d as isMessagingToolDuplicate, et as resolveMirroredTranscriptText, jt as SILENT_REPLY_TOKEN } from "./pi-embedded-helpers-CeMv9QXO.js";
5
- import { C as normalizeChannelId, x as getChannelPlugin } from "./image-ops-ZMEg1-kE.js";
6
- import { c as resolveTextChunkLimit, i as chunkMarkdownTextWithMode, l as parseFenceSpans, n as chunkByParagraph, s as resolveChunkMode } from "./chunk-Cguey_55.js";
2
+ import { s as resolveStateDir } from "./paths-D2eokayo.js";
3
+ import { p as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-CJTCKTwb.js";
4
+ import { $ as appendAssistantMessageToSessionTranscript, Mt as isSilentReplyText, Tt as getChannelDock, d as isMessagingToolDuplicate, et as resolveMirroredTranscriptText, jt as SILENT_REPLY_TOKEN } from "./pi-embedded-helpers-CvYnWzAn.js";
5
+ import { C as normalizeChannelId, x as getChannelPlugin } from "./image-ops-DJjERl7d.js";
6
+ import { c as resolveTextChunkLimit, i as chunkMarkdownTextWithMode, l as parseFenceSpans, n as chunkByParagraph, s as resolveChunkMode } from "./chunk-lDG_8LI5.js";
7
7
  import path from "node:path";
8
- import fs from "node:fs";
8
+ import fsSync from "node:fs";
9
9
  import crypto from "node:crypto";
10
10
 
11
11
  //#region src/channels/plugins/outbound/load.ts
@@ -322,11 +322,11 @@ function resolveFailedDir(stateDir) {
322
322
  /** Ensure the queue directory (and failed/ subdirectory) exist. */
323
323
  async function ensureQueueDir(stateDir) {
324
324
  const queueDir = resolveQueueDir(stateDir);
325
- await fs.promises.mkdir(queueDir, {
325
+ await fsSync.promises.mkdir(queueDir, {
326
326
  recursive: true,
327
327
  mode: 448
328
328
  });
329
- await fs.promises.mkdir(resolveFailedDir(stateDir), {
329
+ await fsSync.promises.mkdir(resolveFailedDir(stateDir), {
330
330
  recursive: true,
331
331
  mode: 448
332
332
  });
@@ -354,18 +354,18 @@ async function enqueueDelivery(params, stateDir) {
354
354
  const filePath = path.join(queueDir, `${id}.json`);
355
355
  const tmp = `${filePath}.${process.pid}.tmp`;
356
356
  const json = JSON.stringify(entry, null, 2);
357
- await fs.promises.writeFile(tmp, json, {
357
+ await fsSync.promises.writeFile(tmp, json, {
358
358
  encoding: "utf-8",
359
359
  mode: 384
360
360
  });
361
- await fs.promises.rename(tmp, filePath);
361
+ await fsSync.promises.rename(tmp, filePath);
362
362
  return id;
363
363
  }
364
364
  /** Remove a successfully delivered entry from the queue. */
365
365
  async function ackDelivery(id, stateDir) {
366
366
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
367
367
  try {
368
- await fs.promises.unlink(filePath);
368
+ await fsSync.promises.unlink(filePath);
369
369
  } catch (err) {
370
370
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
371
371
  }
@@ -373,16 +373,16 @@ async function ackDelivery(id, stateDir) {
373
373
  /** Update a queue entry after a failed delivery attempt. */
374
374
  async function failDelivery(id, error, stateDir) {
375
375
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
376
- const raw = await fs.promises.readFile(filePath, "utf-8");
376
+ const raw = await fsSync.promises.readFile(filePath, "utf-8");
377
377
  const entry = JSON.parse(raw);
378
378
  entry.retryCount += 1;
379
379
  entry.lastError = error;
380
380
  const tmp = `${filePath}.${process.pid}.tmp`;
381
- await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
381
+ await fsSync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
382
382
  encoding: "utf-8",
383
383
  mode: 384
384
384
  });
385
- await fs.promises.rename(tmp, filePath);
385
+ await fsSync.promises.rename(tmp, filePath);
386
386
  }
387
387
 
388
388
  //#endregion
@@ -37,7 +37,7 @@ import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistInd
37
37
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BSWv108Y.js";
38
38
  import { n as logConfigUpdated } from "./logging-B05aEFEO.js";
39
39
  import { t as note$1 } from "./note-Cdu0wcse.js";
40
- import { n as doctorShellCompletion } from "./doctor-completion-DguJOZqA.js";
40
+ import { n as doctorShellCompletion } from "./doctor-completion-CZgNNZVd.js";
41
41
  import { t as runGatewayUpdate } from "./update-runner-O0kK_BAP.js";
42
42
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-BAntaUow.js";
43
43
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BXOkxYnH.js";
@@ -39,7 +39,7 @@ import { i as resolveControlUiDistIndexPathForRoot, r as resolveControlUiDistInd
39
39
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BCuAG8zm.js";
40
40
  import { n as logConfigUpdated } from "./logging-ClHj0gnP.js";
41
41
  import { t as note$1 } from "./note-CLRVmCnr.js";
42
- import { n as doctorShellCompletion } from "./doctor-completion-BY4djQTY.js";
42
+ import { n as doctorShellCompletion } from "./doctor-completion-Dend-SU1.js";
43
43
  import { t as runGatewayUpdate } from "./update-runner-B-JShOyr.js";
44
44
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-d6ocIX0r.js";
45
45
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-q1hyIpoI.js";
@@ -1,6 +1,6 @@
1
1
  import { r as resolveCliName } from "./command-format-B9HGdNTg.js";
2
2
  import { t as resolveAnimaPackageRoot } from "./anima-root-DBcJL1ZM.js";
3
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CqZwlvs2.js";
3
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DcTEhrAe.js";
4
4
  import { t as note } from "./note-Cdu0wcse.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { t as resolveAnimaPackageRoot } from "./anima-root-C5zoPibI.js";
2
2
  import { r as resolveCliName } from "./command-format-B1WxXbeU.js";
3
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CDsbJ-p2.js";
3
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-D3yIDiMz.js";
4
4
  import { t as note } from "./note-CLRVmCnr.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
package/dist/entry.js CHANGED
@@ -1509,7 +1509,7 @@ if (!ensureExperimentalWarningSuppressed()) {
1509
1509
  applyCliProfileEnv({ profile: parsed.profile });
1510
1510
  process$1.argv = parsed.argv;
1511
1511
  }
1512
- import("./run-main-BTol0uPD.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1512
+ import("./run-main-DA4rt9qc.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1513
1513
  console.error("[anima] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
1514
1514
  process$1.exitCode = 1;
1515
1515
  });
@@ -1,21 +1,21 @@
1
- import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, u as resolveRequiredHomeDir } from "./paths-B-AkG5FD.js";
2
- import { C as warn, O as getLogger, _ as info, g as danger, n as defaultRuntime, t as createSubsystemLogger, v as logVerbose, x as shouldLogVerbose, y as logVerboseConsole } from "./subsystem-BlEuMJjX.js";
1
+ import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, u as resolveRequiredHomeDir } from "./paths-D2eokayo.js";
2
+ import { C as warn, O as getLogger, _ as info, g as danger, n as defaultRuntime, t as createSubsystemLogger, v as logVerbose, x as shouldLogVerbose, y as logVerboseConsole } from "./subsystem-CJTCKTwb.js";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
- import fs from "node:fs";
5
+ import fsSync from "node:fs";
6
6
  import { execFile, spawn } from "node:child_process";
7
7
  import { promisify } from "node:util";
8
8
 
9
9
  //#region src/utils.ts
10
10
  async function ensureDir(dir) {
11
- await fs.promises.mkdir(dir, { recursive: true });
11
+ await fsSync.promises.mkdir(dir, { recursive: true });
12
12
  }
13
13
  /**
14
14
  * Check if a file or directory exists at the given path.
15
15
  */
16
16
  async function pathExists(targetPath) {
17
17
  try {
18
- await fs.promises.access(targetPath);
18
+ await fsSync.promises.access(targetPath);
19
19
  return true;
20
20
  } catch {
21
21
  return false;
@@ -105,7 +105,7 @@ function readLidReverseMapping(lid, opts) {
105
105
  for (const dir of mappingDirs) {
106
106
  const mappingPath = path.join(dir, mappingFilename);
107
107
  try {
108
- const data = fs.readFileSync(mappingPath, "utf8");
108
+ const data = fsSync.readFileSync(mappingPath, "utf8");
109
109
  const phone = JSON.parse(data);
110
110
  if (phone === null || phone === void 0) continue;
111
111
  return normalizeE164(String(phone));
@@ -189,7 +189,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
189
189
  if (override) return resolveUserPath(override);
190
190
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".anima");
191
191
  try {
192
- if (fs.existsSync(newDir)) return newDir;
192
+ if (fsSync.existsSync(newDir)) return newDir;
193
193
  } catch {}
194
194
  return newDir;
195
195
  }
@@ -1,7 +1,7 @@
1
1
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
2
2
  import { n as MANIFEST_KEY, t as LEGACY_MANIFEST_KEYS } from "./legacy-names-lFRgrQ9g.js";
3
3
  import path from "node:path";
4
- import fs from "node:fs";
4
+ import fsSync from "node:fs";
5
5
  import JSON5 from "json5";
6
6
  import YAML from "yaml";
7
7
 
@@ -56,7 +56,7 @@ function hasBinary(bin) {
56
56
  for (const part of parts) for (const ext of extensions) {
57
57
  const candidate = path.join(part, bin + ext);
58
58
  try {
59
- fs.accessSync(candidate, fs.constants.X_OK);
59
+ fsSync.accessSync(candidate, fsSync.constants.X_OK);
60
60
  hasBinaryCache.set(bin, true);
61
61
  return true;
62
62
  } catch {}
@@ -74,11 +74,11 @@ import "./accounts-C9dcy8Gp.js";
74
74
  import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DcinYE4_.js";
75
75
  import { t as ensureAnimaCliOnPath } from "./path-env-BO3_pVlb.js";
76
76
  import { t as forceFreePortAndWait } from "./ports-DIRb7aJE.js";
77
- import "./program-context-C8DYJdS-.js";
77
+ import "./program-context-DYdCPzyt.js";
78
78
  import { t as buildChannelUiCatalog } from "./catalog-VwQGLU6M.js";
79
79
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DeW3dXom.js";
80
80
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-C7Q_csTW.js";
81
- import "./completion-cli-CDsbJ-p2.js";
81
+ import "./completion-cli-D3yIDiMz.js";
82
82
  import "./daemon-runtime-DOk9qM0y.js";
83
83
  import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-K7wUCSoE.js";
84
84
  import "./prompt-style-CXrnxWQG.js";
@@ -101,14 +101,14 @@ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-BlyqT33k.js";
101
101
  import { a as resolveControlUiRootOverrideSync, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync } from "./health-format-BMwPAU53.js";
102
102
  import { n as validateSystemRunCommandConsistency, r as getMachineDisplayName, t as formatExecCommand } from "./system-run-command-CBYonA1r.js";
103
103
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channels-status-issues-BCuAG8zm.js";
104
- import { t as WizardCancelledError } from "./prompts-Cm8eJ-i3.js";
104
+ import { t as WizardCancelledError } from "./prompts-BT5ztuUd.js";
105
105
  import "./ipv4-sll41DXC.js";
106
106
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-BTVvcXJx.js";
107
- import { t as runOnboardingWizard } from "./onboarding-DXQ0Qtq6.js";
107
+ import { t as runOnboardingWizard } from "./onboarding-BappVKxE.js";
108
108
  import "./logging-ClHj0gnP.js";
109
109
  import "./tui-DBbVe-hW.js";
110
110
  import "./note-CLRVmCnr.js";
111
- import "./doctor-completion-BY4djQTY.js";
111
+ import "./doctor-completion-Dend-SU1.js";
112
112
  import { a as setGatewayWsLogStyle, i as summarizeAgentEventForWsLog, n as logWs, r as shouldLogWs, t as formatForLog } from "./ws-log-D4JiZwbk.js";
113
113
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-B4YpqI4r.js";
114
114
  import { a as createOutboundSendDeps$1, i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-rY3gCqJE.js";
@@ -73,10 +73,10 @@ import { r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } fr
73
73
  import "./accounts-BmC37n9k.js";
74
74
  import { t as ensureAnimaCliOnPath } from "./path-env-B0inI2pE.js";
75
75
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-17GpE8Yz.js";
76
- import "./register.subclis-D2HE_7Rz.js";
77
- import "./command-registry-D5y3Nn9i.js";
76
+ import "./register.subclis-N7uAMRX_.js";
77
+ import "./command-registry-Cl3Z-qsS.js";
78
78
  import "./program-context-DItEQSzX.js";
79
- import "./completion-cli-CqZwlvs2.js";
79
+ import "./completion-cli-DcTEhrAe.js";
80
80
  import "./daemon-runtime-Cbi2Ox6g.js";
81
81
  import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-DKu_2enh.js";
82
82
  import "./prompt-style-DZq_uOc1.js";
@@ -101,16 +101,16 @@ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-Df0BKZyz.js";
101
101
  import { a as resolveControlUiRootOverrideSync, n as ensureControlUiAssetsBuilt, o as resolveControlUiRootSync } from "./health-format-Dug5Rbjg.js";
102
102
  import { n as validateSystemRunCommandConsistency, r as getMachineDisplayName, t as formatExecCommand } from "./system-run-command-CJJVgJ-t.js";
103
103
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channels-status-issues-BSWv108Y.js";
104
- import "./auth-choice-BTMheCDo.js";
104
+ import "./auth-choice-CPDNhDPT.js";
105
105
  import { t as WizardCancelledError } from "./prompts-vr_Njtil.js";
106
106
  import "./shared-B9kttsme.js";
107
107
  import "./ipv4-yUiIU5CD.js";
108
108
  import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-B53TbyZm.js";
109
- import { t as runOnboardingWizard } from "./onboarding-BLFJufto.js";
109
+ import { t as runOnboardingWizard } from "./onboarding-CGG6jZ0y.js";
110
110
  import "./logging-B05aEFEO.js";
111
111
  import "./tui--uEeSnES.js";
112
112
  import "./note-Cdu0wcse.js";
113
- import "./doctor-completion-DguJOZqA.js";
113
+ import "./doctor-completion-CZgNNZVd.js";
114
114
  import { a as setGatewayWsLogStyle, i as summarizeAgentEventForWsLog, n as logWs, r as shouldLogWs, t as formatForLog } from "./ws-log-BZ31rwb4.js";
115
115
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BRieiYe_.js";
116
116
  import { a as loadAgentIdentity, c as loadAgentIdentityFromWorkspace, i as listAgentEntries, o as pruneAgentConfig, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Dqcq7hEy.js";
@@ -1,5 +1,5 @@
1
- import { f as normalizeChatChannelId, m as requireActivePluginRegistry, o as CHANNEL_IDS, p as getActivePluginRegistry, s as CHAT_CHANNEL_ORDER, u as normalizeAnyChannelId } from "./subsystem-BlEuMJjX.js";
2
- import { n as runExec } from "./exec-DJTRaYS6.js";
1
+ import { f as normalizeChatChannelId, m as requireActivePluginRegistry, o as CHANNEL_IDS, p as getActivePluginRegistry, s as CHAT_CHANNEL_ORDER, u as normalizeAnyChannelId } from "./subsystem-CJTCKTwb.js";
2
+ import { n as runExec } from "./exec-CK8CHr7j.js";
3
3
  import fs from "node:fs/promises";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
package/dist/index.js CHANGED
@@ -71,7 +71,7 @@ import { t as ensureAnimaCliOnPath } from "./path-env-BO3_pVlb.js";
71
71
  import { t as assertSupportedRuntime } from "./runtime-guard-PndcQBdO.js";
72
72
  import "./ports-DIRb7aJE.js";
73
73
  import { a as hasHelpOrVersion, i as getVerboseFlag, n as getCommandPath } from "./argv-rPFINZ5Y.js";
74
- import { a as registerProgramCommands, n as setProgramContext } from "./program-context-C8DYJdS-.js";
74
+ import { a as registerProgramCommands, n as setProgramContext } from "./program-context-DYdCPzyt.js";
75
75
  import { r as listChannelPluginCatalogEntries } from "./catalog-VwQGLU6M.js";
76
76
  import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BsdLXCVX.js";
77
77
  import process$1 from "node:process";
@@ -0,0 +1,25 @@
1
+ import path from "node:path";
2
+ import fsSync from "node:fs";
3
+
4
+ //#region src/infra/json-file.ts
5
+ function loadJsonFile(pathname) {
6
+ try {
7
+ if (!fsSync.existsSync(pathname)) return;
8
+ const raw = fsSync.readFileSync(pathname, "utf8");
9
+ return JSON.parse(raw);
10
+ } catch {
11
+ return;
12
+ }
13
+ }
14
+ function saveJsonFile(pathname, data) {
15
+ const dir = path.dirname(pathname);
16
+ if (!fsSync.existsSync(dir)) fsSync.mkdirSync(dir, {
17
+ recursive: true,
18
+ mode: 448
19
+ });
20
+ fsSync.writeFileSync(pathname, `${JSON.stringify(data, null, 2)}\n`, "utf8");
21
+ fsSync.chmodSync(pathname, 384);
22
+ }
23
+
24
+ //#endregion
25
+ export { saveJsonFile as n, loadJsonFile as t };