agentvault 1.0.0 → 1.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 (293) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/approve.js +5 -5
  4. package/dist/cli/commands/archive.js +5 -5
  5. package/dist/cli/commands/backup.js +5 -5
  6. package/dist/cli/commands/cloud-backup.js +12 -12
  7. package/dist/cli/commands/decrypt.js +2 -2
  8. package/dist/cli/commands/deploy.js +1 -1
  9. package/dist/cli/commands/exec.js +2 -2
  10. package/dist/cli/commands/fetch.js +4 -4
  11. package/dist/cli/commands/inference.js +5 -5
  12. package/dist/cli/commands/init.d.ts +1 -1
  13. package/dist/cli/commands/init.js +16 -16
  14. package/dist/cli/commands/list.js +4 -4
  15. package/dist/cli/commands/package.js +2 -2
  16. package/dist/cli/commands/profile.js +1 -1
  17. package/dist/cli/commands/rebuild.js +2 -2
  18. package/dist/cli/commands/show.js +1 -1
  19. package/dist/cli/commands/status.d.ts +1 -1
  20. package/dist/cli/commands/status.js +8 -8
  21. package/dist/cli/commands/trace.js +1 -1
  22. package/dist/cli/commands/wallet-export.js +1 -1
  23. package/dist/cli/commands/wallet-sign.js +1 -1
  24. package/dist/cli/commands/wallet.d.ts +1 -1
  25. package/dist/cli/commands/wallet.js +1 -1
  26. package/dist/cli/index.d.ts +2 -2
  27. package/dist/cli/index.js +3 -3
  28. package/dist/src/archival/archive-manager.d.ts +85 -0
  29. package/dist/src/archival/archive-manager.js +294 -0
  30. package/dist/src/archival/arweave-client.d.ts +88 -0
  31. package/dist/src/archival/arweave-client.js +223 -0
  32. package/dist/src/archival/index.d.ts +8 -0
  33. package/{src/archival/index.ts → dist/src/archival/index.js} +1 -1
  34. package/dist/src/backup/backup.d.ts +67 -0
  35. package/dist/src/backup/backup.js +231 -0
  36. package/dist/src/backup/index.d.ts +7 -0
  37. package/{src/backup/index.ts → dist/src/backup/index.js} +1 -1
  38. package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
  39. package/dist/src/cloud-storage/cloud-sync.js +372 -0
  40. package/dist/src/cloud-storage/index.d.ts +11 -0
  41. package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
  42. package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
  43. package/dist/src/cloud-storage/provider-detector.js +158 -0
  44. package/{src/cloud-storage/types.ts → dist/src/cloud-storage/types.d.ts} +40 -53
  45. package/dist/src/cloud-storage/types.js +10 -0
  46. package/dist/src/debugging/index.d.ts +6 -0
  47. package/{src/debugging/index.ts → dist/src/debugging/index.js} +1 -1
  48. package/dist/src/debugging/logs.d.ts +32 -0
  49. package/dist/src/debugging/logs.js +158 -0
  50. package/dist/src/debugging/types.d.ts +91 -0
  51. package/dist/src/debugging/types.js +5 -0
  52. package/dist/src/deployment/deployer.d.ts +52 -0
  53. package/dist/src/deployment/deployer.js +211 -0
  54. package/dist/src/deployment/icpClient.d.ts +144 -0
  55. package/dist/src/deployment/icpClient.js +545 -0
  56. package/dist/src/deployment/index.d.ts +11 -0
  57. package/dist/src/deployment/index.js +14 -0
  58. package/dist/src/deployment/promotion.d.ts +32 -0
  59. package/dist/src/deployment/promotion.js +114 -0
  60. package/dist/src/deployment/types.d.ts +101 -0
  61. package/dist/src/deployment/types.js +5 -0
  62. package/dist/src/icp/batch.d.ts +112 -0
  63. package/dist/src/icp/batch.js +273 -0
  64. package/dist/src/icp/cycles.d.ts +29 -0
  65. package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
  66. package/dist/src/icp/environment.d.ts +60 -0
  67. package/dist/src/icp/environment.js +183 -0
  68. package/dist/src/icp/icpcli.d.ts +204 -0
  69. package/dist/src/icp/icpcli.js +374 -0
  70. package/dist/src/icp/icwasm.d.ts +94 -0
  71. package/dist/src/icp/icwasm.js +197 -0
  72. package/dist/src/icp/identity.d.ts +50 -0
  73. package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
  74. package/dist/src/icp/index.d.ts +16 -0
  75. package/dist/src/icp/index.js +20 -0
  76. package/dist/src/icp/optimization.d.ts +16 -0
  77. package/dist/src/icp/optimization.js +225 -0
  78. package/dist/src/icp/tokens.d.ts +24 -0
  79. package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
  80. package/dist/src/icp/tool-detector.d.ts +31 -0
  81. package/dist/src/icp/tool-detector.js +104 -0
  82. package/dist/src/icp/types.d.ts +493 -0
  83. package/dist/src/icp/types.js +7 -0
  84. package/dist/src/index.d.ts +12 -0
  85. package/dist/src/index.js +18 -0
  86. package/dist/src/inference/bittensor-client.d.ts +108 -0
  87. package/dist/src/inference/bittensor-client.js +224 -0
  88. package/dist/src/inference/index.d.ts +8 -0
  89. package/{src/inference/index.ts → dist/src/inference/index.js} +1 -1
  90. package/dist/src/inference/inference-manager.d.ts +76 -0
  91. package/dist/src/inference/inference-manager.js +228 -0
  92. package/dist/src/metrics/index.d.ts +7 -0
  93. package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
  94. package/dist/src/metrics/metrics.d.ts +39 -0
  95. package/dist/src/metrics/metrics.js +129 -0
  96. package/dist/src/monitoring/alerting.d.ts +51 -0
  97. package/dist/src/monitoring/alerting.js +169 -0
  98. package/dist/src/monitoring/health.d.ts +40 -0
  99. package/dist/src/monitoring/health.js +164 -0
  100. package/dist/src/monitoring/index.d.ts +10 -0
  101. package/dist/src/monitoring/index.js +12 -0
  102. package/dist/src/monitoring/info.d.ts +15 -0
  103. package/dist/src/monitoring/info.js +109 -0
  104. package/dist/src/monitoring/types.d.ts +93 -0
  105. package/dist/src/monitoring/types.js +7 -0
  106. package/dist/src/network/index.d.ts +5 -0
  107. package/{src/network/index.ts → dist/src/network/index.js} +1 -1
  108. package/dist/src/network/network-config.d.ts +31 -0
  109. package/dist/src/network/network-config.js +109 -0
  110. package/dist/src/packaging/compiler.d.ts +61 -0
  111. package/dist/src/packaging/compiler.js +562 -0
  112. package/dist/src/packaging/config-persistence.d.ts +46 -0
  113. package/dist/src/packaging/config-persistence.js +108 -0
  114. package/dist/src/packaging/config-schemas.d.ts +115 -0
  115. package/dist/src/packaging/config-schemas.js +43 -0
  116. package/dist/src/packaging/detector.d.ts +26 -0
  117. package/dist/src/packaging/detector.js +193 -0
  118. package/dist/src/packaging/index.d.ts +16 -0
  119. package/dist/src/packaging/index.js +22 -0
  120. package/dist/src/packaging/packager.d.ts +31 -0
  121. package/dist/src/packaging/packager.js +90 -0
  122. package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
  123. package/dist/src/packaging/parsers/clawdbot.js +231 -0
  124. package/dist/src/packaging/parsers/cline.d.ts +26 -0
  125. package/dist/src/packaging/parsers/cline.js +185 -0
  126. package/dist/src/packaging/parsers/generic.d.ts +27 -0
  127. package/dist/src/packaging/parsers/generic.js +228 -0
  128. package/dist/src/packaging/parsers/goose.d.ts +26 -0
  129. package/dist/src/packaging/parsers/goose.js +175 -0
  130. package/dist/src/packaging/parsers/index.d.ts +11 -0
  131. package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +1 -1
  132. package/dist/src/packaging/serializer.d.ts +108 -0
  133. package/dist/src/packaging/serializer.js +153 -0
  134. package/dist/src/packaging/types.d.ts +131 -0
  135. package/dist/src/packaging/types.js +5 -0
  136. package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
  137. package/dist/src/packaging/wasmedge-compiler.js +349 -0
  138. package/dist/src/security/index.d.ts +11 -0
  139. package/{src/security/index.ts → dist/src/security/index.js} +1 -4
  140. package/dist/src/security/multisig.d.ts +102 -0
  141. package/dist/src/security/multisig.js +283 -0
  142. package/dist/src/security/types.d.ts +207 -0
  143. package/dist/src/security/types.js +217 -0
  144. package/dist/src/security/vetkeys.d.ts +179 -0
  145. package/dist/src/security/vetkeys.js +499 -0
  146. package/dist/src/testing/index.d.ts +6 -0
  147. package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
  148. package/dist/src/testing/local-runner.d.ts +23 -0
  149. package/dist/src/testing/local-runner.js +226 -0
  150. package/dist/src/testing/types.d.ts +98 -0
  151. package/dist/src/testing/types.js +5 -0
  152. package/dist/src/wallet/cbor-serializer.d.ts +82 -0
  153. package/dist/src/wallet/cbor-serializer.js +282 -0
  154. package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
  155. package/dist/src/wallet/chain-dispatcher.js +241 -0
  156. package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
  157. package/dist/src/wallet/cross-chain-aggregator.js +235 -0
  158. package/dist/src/wallet/index.d.ts +16 -0
  159. package/dist/src/wallet/index.js +22 -0
  160. package/dist/src/wallet/key-derivation.d.ts +117 -0
  161. package/dist/src/wallet/key-derivation.js +325 -0
  162. package/dist/src/wallet/providers/base-provider.d.ts +111 -0
  163. package/dist/src/wallet/providers/base-provider.js +58 -0
  164. package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
  165. package/dist/src/wallet/providers/cketh-provider.js +343 -0
  166. package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
  167. package/dist/src/wallet/providers/polkadot-provider.js +407 -0
  168. package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
  169. package/dist/src/wallet/providers/solana-provider.js +393 -0
  170. package/dist/src/wallet/transaction-queue.d.ts +133 -0
  171. package/dist/src/wallet/transaction-queue.js +195 -0
  172. package/dist/src/wallet/types.d.ts +167 -0
  173. package/dist/src/wallet/types.js +5 -0
  174. package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
  175. package/dist/src/wallet/vetkeys-adapter.js +313 -0
  176. package/dist/src/wallet/wallet-manager.d.ts +202 -0
  177. package/dist/src/wallet/wallet-manager.js +451 -0
  178. package/dist/src/wallet/wallet-storage.d.ts +131 -0
  179. package/dist/src/wallet/wallet-storage.js +274 -0
  180. package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +54 -0
  181. package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +102 -0
  182. package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +121 -0
  183. package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +98 -0
  184. package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +27 -0
  185. package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +69 -0
  186. package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +270 -0
  187. package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +367 -0
  188. package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +157 -0
  189. package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +120 -0
  190. package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +219 -0
  191. package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +44 -0
  192. package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +115 -0
  193. package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +237 -0
  194. package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +137 -0
  195. package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +179 -0
  196. package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +286 -0
  197. package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +235 -0
  198. package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +316 -0
  199. package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +438 -0
  200. package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +399 -0
  201. package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +134 -0
  202. package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +276 -0
  203. package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +133 -0
  204. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +233 -0
  205. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +281 -0
  206. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +280 -0
  207. package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +176 -0
  208. package/macos-wallet-app/Makefile +47 -0
  209. package/macos-wallet-app/project.yml +40 -0
  210. package/macos-wallet-app/setup.sh +73 -0
  211. package/package.json +10 -2
  212. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-28-967Z.json +0 -28
  213. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-29-032Z.backup +0 -1
  214. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-373Z.json +0 -28
  215. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-428Z.backup +0 -1
  216. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-132Z.json +0 -28
  217. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-247Z.backup +0 -1
  218. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-216Z.json +0 -28
  219. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-283Z.backup +0 -1
  220. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-772Z.backup +0 -1
  221. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-793Z.json +0 -28
  222. package/backups/test-backup.json +0 -28
  223. package/scripts/dev-dashboard.mjs +0 -84
  224. package/site/README.md +0 -63
  225. package/site/docusaurus.config.ts +0 -148
  226. package/site/package-lock.json +0 -18383
  227. package/site/package.json +0 -47
  228. package/site/sidebars.ts +0 -86
  229. package/site/static/.gitkeep +0 -0
  230. package/site/static/img/logo.svg +0 -28
  231. package/site/static/img/og-image.svg +0 -35
  232. package/src/archival/archive-manager.ts +0 -372
  233. package/src/archival/arweave-client.ts +0 -289
  234. package/src/backup/backup.ts +0 -315
  235. package/src/cloud-storage/cloud-sync.ts +0 -461
  236. package/src/cloud-storage/provider-detector.ts +0 -198
  237. package/src/debugging/logs.ts +0 -193
  238. package/src/debugging/types.ts +0 -100
  239. package/src/deployment/deployer.ts +0 -274
  240. package/src/deployment/icpClient.ts +0 -620
  241. package/src/deployment/index.ts +0 -46
  242. package/src/deployment/promotion.ts +0 -161
  243. package/src/deployment/types.ts +0 -111
  244. package/src/icp/batch.ts +0 -374
  245. package/src/icp/environment.ts +0 -215
  246. package/src/icp/icpcli.ts +0 -438
  247. package/src/icp/icwasm.ts +0 -222
  248. package/src/icp/index.ts +0 -94
  249. package/src/icp/optimization.ts +0 -242
  250. package/src/icp/tool-detector.ts +0 -110
  251. package/src/icp/types.ts +0 -574
  252. package/src/index.ts +0 -25
  253. package/src/inference/bittensor-client.ts +0 -304
  254. package/src/inference/inference-manager.ts +0 -327
  255. package/src/metrics/metrics.ts +0 -186
  256. package/src/monitoring/alerting.ts +0 -190
  257. package/src/monitoring/health.ts +0 -197
  258. package/src/monitoring/index.ts +0 -38
  259. package/src/monitoring/info.ts +0 -114
  260. package/src/monitoring/types.ts +0 -99
  261. package/src/network/network-config.ts +0 -129
  262. package/src/packaging/compiler.ts +0 -647
  263. package/src/packaging/config-persistence.ts +0 -135
  264. package/src/packaging/config-schemas.ts +0 -156
  265. package/src/packaging/detector.ts +0 -220
  266. package/src/packaging/index.ts +0 -90
  267. package/src/packaging/packager.ts +0 -118
  268. package/src/packaging/parsers/clawdbot.ts +0 -278
  269. package/src/packaging/parsers/cline.ts +0 -223
  270. package/src/packaging/parsers/generic.ts +0 -266
  271. package/src/packaging/parsers/goose.ts +0 -214
  272. package/src/packaging/serializer.ts +0 -260
  273. package/src/packaging/types.ts +0 -144
  274. package/src/packaging/wasmedge-compiler.ts +0 -406
  275. package/src/security/multisig.ts +0 -415
  276. package/src/security/types.ts +0 -416
  277. package/src/security/vetkeys.ts +0 -655
  278. package/src/testing/local-runner.ts +0 -264
  279. package/src/testing/types.ts +0 -104
  280. package/src/wallet/cbor-serializer.ts +0 -323
  281. package/src/wallet/chain-dispatcher.ts +0 -313
  282. package/src/wallet/cross-chain-aggregator.ts +0 -346
  283. package/src/wallet/index.ts +0 -76
  284. package/src/wallet/key-derivation.ts +0 -425
  285. package/src/wallet/providers/base-provider.ts +0 -154
  286. package/src/wallet/providers/cketh-provider.ts +0 -434
  287. package/src/wallet/providers/polkadot-provider.ts +0 -503
  288. package/src/wallet/providers/solana-provider.ts +0 -490
  289. package/src/wallet/transaction-queue.ts +0 -284
  290. package/src/wallet/types.ts +0 -178
  291. package/src/wallet/vetkeys-adapter.ts +0 -431
  292. package/src/wallet/wallet-manager.ts +0 -597
  293. package/src/wallet/wallet-storage.ts +0 -380
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Clawdbot Configuration Parser
3
+ *
4
+ * Parses Clawdbot agent configuration from .clawdbot directory.
5
+ * Reads JSON files and constructs full configuration object.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { DEFAULT_CLAWDBOT_SETTINGS, } from '../config-schemas.js';
10
+ /**
11
+ * Find Clawdbot directory or configuration file
12
+ */
13
+ function findClawdbotConfig(sourcePath) {
14
+ const absolutePath = path.resolve(sourcePath);
15
+ // Check for .clawdbot directory
16
+ const clawdbotDir = path.join(absolutePath, '.clawdbot');
17
+ if (fs.existsSync(clawdbotDir)) {
18
+ return {
19
+ path: clawdbotDir,
20
+ type: 'directory',
21
+ };
22
+ }
23
+ // Check for clawdbot.json or clawdbot.config.json
24
+ const configFiles = ['clawdbot.json', 'clawdbot.config.json'];
25
+ for (const file of configFiles) {
26
+ const filePath = path.join(absolutePath, file);
27
+ if (fs.existsSync(filePath)) {
28
+ return {
29
+ path: filePath,
30
+ type: 'json',
31
+ };
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Read and parse .clawdbot directory structure
38
+ */
39
+ function readClawdbotDirectory(dirPath) {
40
+ try {
41
+ // Read projects
42
+ const projectsPath = path.join(dirPath, 'projects.json');
43
+ let projects = [];
44
+ if (fs.existsSync(projectsPath)) {
45
+ const projectsContent = fs.readFileSync(projectsPath, 'utf-8');
46
+ projects = JSON.parse(projectsContent);
47
+ }
48
+ // Read tasks
49
+ const tasksPath = path.join(dirPath, 'tasks.json');
50
+ let tasks = [];
51
+ if (fs.existsSync(tasksPath)) {
52
+ const tasksContent = fs.readFileSync(tasksPath, 'utf-8');
53
+ tasks = JSON.parse(tasksContent);
54
+ }
55
+ // Read context
56
+ const contextPath = path.join(dirPath, 'context.json');
57
+ let context = {};
58
+ if (fs.existsSync(contextPath)) {
59
+ const contextContent = fs.readFileSync(contextPath, 'utf-8');
60
+ context = JSON.parse(contextContent);
61
+ }
62
+ // Read settings
63
+ const settingsPath = path.join(dirPath, 'settings.json');
64
+ let settings = { ...DEFAULT_CLAWDBOT_SETTINGS };
65
+ if (fs.existsSync(settingsPath)) {
66
+ const settingsContent = fs.readFileSync(settingsPath, 'utf-8');
67
+ const parsedSettings = JSON.parse(settingsContent);
68
+ settings = { ...DEFAULT_CLAWDBOT_SETTINGS, ...parsedSettings };
69
+ }
70
+ // Read main config file if exists
71
+ let name = 'clawdbot-agent';
72
+ let version = '1.0.0';
73
+ let description = '';
74
+ const configPath = path.join(dirPath, 'config.json');
75
+ if (fs.existsSync(configPath)) {
76
+ const configContent = fs.readFileSync(configPath, 'utf-8');
77
+ const configFile = JSON.parse(configContent);
78
+ name = configFile.name || name;
79
+ version = configFile.version || version;
80
+ description = configFile.description || description;
81
+ }
82
+ const parsedConfig = {
83
+ type: 'clawdbot',
84
+ name,
85
+ version,
86
+ description,
87
+ projects,
88
+ tasks,
89
+ context,
90
+ settings,
91
+ };
92
+ return parsedConfig;
93
+ }
94
+ catch (error) {
95
+ const message = error instanceof Error ? error.message : 'Unknown error';
96
+ throw new Error(`Failed to parse Clawdbot config: ${message}`);
97
+ }
98
+ }
99
+ /**
100
+ * Validate Clawdbot configuration
101
+ */
102
+ function validateClawdbotConfig(config) {
103
+ const errors = [];
104
+ const warnings = [];
105
+ // Validate name
106
+ if (!config.name || config.name.trim() === '') {
107
+ errors.push('Agent name is required');
108
+ }
109
+ // Validate version format
110
+ if (config.version) {
111
+ const versionRegex = /^\d+\.\d+\.\d+$/;
112
+ if (!versionRegex.test(config.version)) {
113
+ errors.push(`Invalid version format: ${config.version}. Expected: X.Y.Z`);
114
+ }
115
+ }
116
+ // Validate settings
117
+ if (config.settings) {
118
+ // Validate temperature (must be between 0 and 2)
119
+ if (config.settings.temperature !== undefined) {
120
+ if (config.settings.temperature < 0 || config.settings.temperature > 2) {
121
+ errors.push(`Temperature must be between 0 and 2, got: ${config.settings.temperature}`);
122
+ }
123
+ }
124
+ // Validate maxTokens (must be positive)
125
+ if (config.settings.maxTokens !== undefined) {
126
+ if (config.settings.maxTokens <= 0) {
127
+ errors.push(`maxTokens must be positive, got: ${config.settings.maxTokens}`);
128
+ }
129
+ }
130
+ }
131
+ // Validate projects
132
+ if (config.projects && config.projects.length === 0) {
133
+ warnings.push('No projects defined in configuration');
134
+ }
135
+ // Validate tasks
136
+ if (config.tasks && config.tasks.length === 0) {
137
+ warnings.push('No tasks defined in configuration');
138
+ }
139
+ return {
140
+ valid: errors.length === 0,
141
+ errors,
142
+ warnings,
143
+ };
144
+ }
145
+ /**
146
+ * Parse Clawdbot agent configuration
147
+ *
148
+ * This function reads .clawdbot directory or clawdbot.json file
149
+ * and returns a fully validated configuration object.
150
+ */
151
+ export async function parseClawdbotConfig(sourcePath, verbose = false) {
152
+ if (verbose) {
153
+ console.log(`[Clawdbot] Parsing configuration from: ${sourcePath}`);
154
+ }
155
+ const configLocation = findClawdbotConfig(sourcePath);
156
+ if (configLocation === null) {
157
+ throw new Error('No Clawdbot configuration found. ' +
158
+ 'Expected .clawdbot directory or clawdbot.json file in the agent source path.');
159
+ }
160
+ let config;
161
+ if (configLocation.type === 'json') {
162
+ if (verbose) {
163
+ console.log(`[Clawdbot] Found JSON config: ${configLocation.path}`);
164
+ }
165
+ const content = fs.readFileSync(configLocation.path, 'utf-8');
166
+ const parsed = JSON.parse(content);
167
+ const settings = { ...DEFAULT_CLAWDBOT_SETTINGS, ...parsed.settings };
168
+ config = {
169
+ type: 'clawdbot',
170
+ name: parsed.name || 'clawdbot-agent',
171
+ version: parsed.version || '1.0.0',
172
+ description: parsed.description || '',
173
+ settings,
174
+ projects: parsed.projects || [],
175
+ tasks: parsed.tasks || [],
176
+ context: parsed.context || {},
177
+ };
178
+ }
179
+ else {
180
+ if (verbose) {
181
+ console.log(`[Clawdbot] Found directory: ${configLocation.path}`);
182
+ }
183
+ config = readClawdbotDirectory(configLocation.path);
184
+ if (verbose) {
185
+ console.log(`[Clawdbot] Parsed projects: ${config.projects?.length || 0}`);
186
+ console.log(`[Clawdbot] Parsed tasks: ${config.tasks?.length || 0}`);
187
+ console.log(`[Clawdbot] Parsed context keys: ${Object.keys(config.context || {}).length}`);
188
+ if (config.settings) {
189
+ console.log(`[Clawdbot] Model: ${config.settings.model}`);
190
+ console.log(`[Clawdbot] Temperature: ${config.settings.temperature}`);
191
+ console.log(`[Clawdbot] Max Tokens: ${config.settings.maxTokens}`);
192
+ }
193
+ }
194
+ }
195
+ const validation = validateClawdbotConfig(config);
196
+ if (verbose || !validation.valid) {
197
+ if (validation.errors.length > 0) {
198
+ console.error('[Clawdbot] Validation errors:');
199
+ validation.errors.forEach((error) => console.error(` - ${error}`));
200
+ }
201
+ if (validation.warnings.length > 0) {
202
+ console.warn('[Clawdbot] Warnings:');
203
+ validation.warnings.forEach((warning) => console.warn(` - ${warning}`));
204
+ }
205
+ }
206
+ if (!validation.valid) {
207
+ throw new Error(`Clawdbot configuration validation failed: ${validation.errors.join('; ')}`);
208
+ }
209
+ return config;
210
+ }
211
+ /**
212
+ * Find all Clawdbot configurations in a directory
213
+ */
214
+ export async function findClawdbotConfigs(dir) {
215
+ const results = [];
216
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
217
+ for (const entry of entries) {
218
+ const entryPath = path.join(dir, entry.name);
219
+ if (entry.isDirectory()) {
220
+ try {
221
+ await parseClawdbotConfig(entryPath);
222
+ results.push(entry.name);
223
+ }
224
+ catch {
225
+ // Skip directories that aren't valid Clawdbot configs
226
+ }
227
+ }
228
+ }
229
+ return results;
230
+ }
231
+ //# sourceMappingURL=clawdbot.js.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Cline Configuration Parser
3
+ *
4
+ * Parses Cline agent configuration from JSON files.
5
+ * Reads cline.json, cline.config.json, or .cline file and constructs configuration object.
6
+ */
7
+ import type { ClineConfig } from '../config-schemas.js';
8
+ /**
9
+ * Parse Cline agent configuration
10
+ *
11
+ * This function reads cline.json, cline.config.json, or .cline file
12
+ * and returns a fully validated configuration object.
13
+ *
14
+ * @param sourcePath - Path to agent source directory
15
+ * @param verbose - Enable verbose logging
16
+ * @returns Parsed and validated Cline configuration
17
+ */
18
+ export declare function parseClineConfig(sourcePath: string, verbose?: boolean): Promise<ClineConfig>;
19
+ /**
20
+ * Find all Cline configurations in a directory tree
21
+ *
22
+ * @param rootPath - Root directory to search
23
+ * @returns Array of paths to Cline configuration files
24
+ */
25
+ export declare function findClineConfigs(rootPath: string): string[];
26
+ //# sourceMappingURL=cline.d.ts.map
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Cline Configuration Parser
3
+ *
4
+ * Parses Cline agent configuration from JSON files.
5
+ * Reads cline.json, cline.config.json, or .cline file and constructs configuration object.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { DEFAULT_CLINE_CONFIG, } from '../config-schemas.js';
10
+ /**
11
+ * Find Cline configuration file
12
+ */
13
+ function findClineConfig(sourcePath) {
14
+ const absolutePath = path.resolve(sourcePath);
15
+ // Check for JSON config files
16
+ const configFiles = ['cline.json', 'cline.config.json', '.cline'];
17
+ for (const file of configFiles) {
18
+ const filePath = path.join(absolutePath, file);
19
+ if (fs.existsSync(filePath)) {
20
+ return {
21
+ path: filePath,
22
+ type: 'json',
23
+ };
24
+ }
25
+ }
26
+ return null;
27
+ }
28
+ /**
29
+ * Validate Cline configuration
30
+ */
31
+ function validateClineConfig(config) {
32
+ const errors = [];
33
+ const warnings = [];
34
+ // Validate name
35
+ if (!config.name || config.name.trim() === '') {
36
+ errors.push('Agent name is required');
37
+ }
38
+ // Validate mode
39
+ if (config.mode && !['auto', 'request'].includes(config.mode)) {
40
+ errors.push(`Invalid mode: ${config.mode}. Must be 'auto' or 'request'`);
41
+ }
42
+ // Validate claudeVersion format if specified
43
+ if (config.claudeVersion) {
44
+ // Basic version format validation
45
+ const versionRegex = /^\d+\.\d+/;
46
+ if (!versionRegex.test(config.claudeVersion)) {
47
+ warnings.push(`Unusual claudeVersion format: ${config.claudeVersion}`);
48
+ }
49
+ }
50
+ // Validate version format
51
+ if (config.version) {
52
+ const versionRegex = /^\d+\.\d+\.\d+$/;
53
+ if (!versionRegex.test(config.version)) {
54
+ errors.push(`Invalid version format: ${config.version}. Expected: X.Y.Z`);
55
+ }
56
+ }
57
+ // Validate working directory exists (if specified)
58
+ if (config.workingDirectory) {
59
+ const workingDirPath = path.resolve(process.cwd(), config.workingDirectory);
60
+ if (!fs.existsSync(workingDirPath)) {
61
+ warnings.push(`Working directory does not exist: ${config.workingDirectory}`);
62
+ }
63
+ }
64
+ // Validate allowedCommands format if specified
65
+ if (config.allowedCommands) {
66
+ if (!Array.isArray(config.allowedCommands)) {
67
+ errors.push('allowedCommands must be an array');
68
+ }
69
+ else {
70
+ for (const cmd of config.allowedCommands) {
71
+ if (typeof cmd !== 'string' || cmd.trim() === '') {
72
+ errors.push(`Invalid command in allowedCommands: ${cmd}`);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ // Warn if no allowedCommands defined in auto mode
78
+ if (config.mode === 'auto' && (!config.allowedCommands || config.allowedCommands.length === 0)) {
79
+ warnings.push('Auto mode without allowedCommands may execute dangerous commands');
80
+ }
81
+ return {
82
+ valid: errors.length === 0,
83
+ errors,
84
+ warnings,
85
+ };
86
+ }
87
+ /**
88
+ * Parse Cline agent configuration
89
+ *
90
+ * This function reads cline.json, cline.config.json, or .cline file
91
+ * and returns a fully validated configuration object.
92
+ *
93
+ * @param sourcePath - Path to agent source directory
94
+ * @param verbose - Enable verbose logging
95
+ * @returns Parsed and validated Cline configuration
96
+ */
97
+ export async function parseClineConfig(sourcePath, verbose = false) {
98
+ if (verbose) {
99
+ console.log(`[Cline] Parsing configuration from: ${sourcePath}`);
100
+ }
101
+ const configLocation = findClineConfig(sourcePath);
102
+ if (configLocation === null) {
103
+ throw new Error('No Cline configuration found. ' +
104
+ 'Expected cline.json, cline.config.json, or .cline file in the agent source path.');
105
+ }
106
+ if (verbose) {
107
+ console.log(`[Cline] Found JSON config: ${configLocation.path}`);
108
+ }
109
+ let config;
110
+ try {
111
+ const content = fs.readFileSync(configLocation.path, 'utf-8');
112
+ const parsed = JSON.parse(content);
113
+ // Merge with defaults
114
+ config = {
115
+ type: 'cline',
116
+ name: parsed.name || DEFAULT_CLINE_CONFIG.name,
117
+ version: parsed.version || DEFAULT_CLINE_CONFIG.version,
118
+ description: parsed.description || DEFAULT_CLINE_CONFIG.description,
119
+ mode: parsed.mode || DEFAULT_CLINE_CONFIG.mode,
120
+ claudeVersion: parsed.claudeVersion,
121
+ workingDirectory: parsed.workingDirectory || DEFAULT_CLINE_CONFIG.workingDirectory,
122
+ autoConfirm: parsed.autoConfirm !== undefined ? parsed.autoConfirm : DEFAULT_CLINE_CONFIG.autoConfirm,
123
+ useReadline: parsed.useReadline !== undefined ? parsed.useReadline : DEFAULT_CLINE_CONFIG.useReadline,
124
+ allowedCommands: parsed.allowedCommands || [],
125
+ };
126
+ if (verbose) {
127
+ console.log(`[Cline] Parsed name: ${config.name}`);
128
+ console.log(`[Cline] Parsed version: ${config.version}`);
129
+ console.log(`[Cline] Parsed mode: ${config.mode}`);
130
+ console.log(`[Cline] Parsed claudeVersion: ${config.claudeVersion || 'default'}`);
131
+ console.log(`[Cline] Parsed workingDirectory: ${config.workingDirectory}`);
132
+ console.log(`[Cline] Parsed autoConfirm: ${config.autoConfirm}`);
133
+ console.log(`[Cline] Parsed useReadline: ${config.useReadline}`);
134
+ console.log(`[Cline] Parsed allowedCommands: ${config.allowedCommands?.length || 0}`);
135
+ }
136
+ }
137
+ catch (error) {
138
+ const message = error instanceof Error ? error.message : 'Unknown error';
139
+ throw new Error(`Failed to parse Cline config: ${message}`);
140
+ }
141
+ // Validate configuration
142
+ const validation = validateClineConfig(config);
143
+ if (!validation.valid) {
144
+ const errorMessage = `Cline configuration validation failed:\n${validation.errors.map(e => ` - ${e}`).join('\n')}`;
145
+ throw new Error(errorMessage);
146
+ }
147
+ // Display warnings if verbose
148
+ if (verbose && validation.warnings.length > 0) {
149
+ console.log(`[Cline] Warnings:`);
150
+ for (const warning of validation.warnings) {
151
+ console.log(`[Cline] - ${warning}`);
152
+ }
153
+ }
154
+ return config;
155
+ }
156
+ /**
157
+ * Find all Cline configurations in a directory tree
158
+ *
159
+ * @param rootPath - Root directory to search
160
+ * @returns Array of paths to Cline configuration files
161
+ */
162
+ export function findClineConfigs(rootPath) {
163
+ const configs = [];
164
+ function searchDirectory(dirPath) {
165
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
166
+ for (const entry of entries) {
167
+ const fullPath = path.join(dirPath, entry.name);
168
+ if (entry.isDirectory()) {
169
+ // Skip node_modules and .git
170
+ if (entry.name !== 'node_modules' && entry.name !== '.git') {
171
+ searchDirectory(fullPath);
172
+ }
173
+ }
174
+ else if (entry.isFile()) {
175
+ // Check for Cline config files
176
+ if (entry.name === 'cline.json' || entry.name === 'cline.config.json' || entry.name === '.cline') {
177
+ configs.push(fullPath);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ searchDirectory(rootPath);
183
+ return configs;
184
+ }
185
+ //# sourceMappingURL=cline.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Generic Configuration Parser
3
+ *
4
+ * Parses generic agent configuration from JSON or YAML files.
5
+ * Reads agent.json, agent.yaml, agent.yml, or .agentvault.json file
6
+ * and constructs configuration object.
7
+ */
8
+ import type { GenericConfig } from '../config-schemas.js';
9
+ /**
10
+ * Parse Generic agent configuration
11
+ *
12
+ * This function reads agent.json, agent.yaml, agent.yml, or .agentvault.json file
13
+ * and returns a fully validated configuration object.
14
+ *
15
+ * @param sourcePath - Path to agent source directory
16
+ * @param verbose - Enable verbose logging
17
+ * @returns Parsed and validated Generic configuration
18
+ */
19
+ export declare function parseGenericConfig(sourcePath: string, verbose?: boolean): Promise<GenericConfig>;
20
+ /**
21
+ * Find all Generic configurations in a directory tree
22
+ *
23
+ * @param rootPath - Root directory to search
24
+ * @returns Array of paths to Generic configuration files
25
+ */
26
+ export declare function findGenericConfigs(rootPath: string): string[];
27
+ //# sourceMappingURL=generic.d.ts.map
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Generic Configuration Parser
3
+ *
4
+ * Parses generic agent configuration from JSON or YAML files.
5
+ * Reads agent.json, agent.yaml, agent.yml, or .agentvault.json file
6
+ * and constructs configuration object.
7
+ */
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import * as yaml from 'yaml';
11
+ /**
12
+ * Find Generic configuration file
13
+ */
14
+ function findGenericConfig(sourcePath) {
15
+ const absolutePath = path.resolve(sourcePath);
16
+ // Check for config files (priority order)
17
+ const configFiles = ['agent.json', 'agent.yaml', 'agent.yml', 'agentvault.json', '.agentvault.json'];
18
+ for (const file of configFiles) {
19
+ const filePath = path.join(absolutePath, file);
20
+ if (fs.existsSync(filePath)) {
21
+ // Determine type based on extension
22
+ const type = file.endsWith('.yaml') || file.endsWith('.yml') ? 'yaml' : 'json';
23
+ return {
24
+ path: filePath,
25
+ type,
26
+ };
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Validate Generic configuration
33
+ */
34
+ function validateGenericConfig(config) {
35
+ const errors = [];
36
+ const warnings = [];
37
+ // Validate name
38
+ if (!config.name || config.name.trim() === '') {
39
+ errors.push('Agent name is required');
40
+ }
41
+ // Validate version format
42
+ if (config.version) {
43
+ const versionRegex = /^\d+\.\d+\.\d+$/;
44
+ if (!versionRegex.test(config.version)) {
45
+ errors.push(`Invalid version format: ${config.version}. Expected: X.Y.Z`);
46
+ }
47
+ }
48
+ // Validate entry point exists (if specified)
49
+ if (config.entryPoint) {
50
+ const sourcePath = process.cwd();
51
+ const entryPath = path.join(sourcePath, config.entryPoint);
52
+ if (!fs.existsSync(entryPath)) {
53
+ warnings.push(`Entry point does not exist: ${config.entryPoint}`);
54
+ }
55
+ }
56
+ // Validate working directory exists (if specified)
57
+ if (config.workingDirectory) {
58
+ const workingDirPath = path.resolve(process.cwd(), config.workingDirectory);
59
+ if (!fs.existsSync(workingDirPath)) {
60
+ warnings.push(`Working directory does not exist: ${config.workingDirectory}`);
61
+ }
62
+ }
63
+ // Validate allowedFiles format if specified
64
+ if (config.allowedFiles) {
65
+ if (!Array.isArray(config.allowedFiles)) {
66
+ errors.push('allowedFiles must be an array');
67
+ }
68
+ else {
69
+ for (const pattern of config.allowedFiles) {
70
+ if (typeof pattern !== 'string' || pattern.trim() === '') {
71
+ errors.push(`Invalid file pattern in allowedFiles: ${pattern}`);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ // Validate maxFileSize if specified
77
+ if (config.maxFileSize !== undefined) {
78
+ if (typeof config.maxFileSize !== 'number' || config.maxFileSize <= 0) {
79
+ errors.push(`maxFileSize must be a positive number, got: ${config.maxFileSize}`);
80
+ }
81
+ else {
82
+ // Warn if maxFileSize is very large (> 100MB)
83
+ if (config.maxFileSize > 100 * 1024 * 1024) {
84
+ warnings.push(`maxFileSize is very large (${(config.maxFileSize / 1024 / 1024).toFixed(0)}MB)`);
85
+ }
86
+ }
87
+ }
88
+ // Validate environment variables if specified
89
+ if (config.environment) {
90
+ if (typeof config.environment !== 'object' || config.environment === null) {
91
+ errors.push('environment must be an object');
92
+ }
93
+ else {
94
+ for (const [key, value] of Object.entries(config.environment)) {
95
+ if (typeof value !== 'string') {
96
+ errors.push(`Environment variable ${key} must be a string`);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ // Warn if no entry point defined
102
+ if (!config.entryPoint) {
103
+ warnings.push('No entry point defined. Agent may not be executable.');
104
+ }
105
+ return {
106
+ valid: errors.length === 0,
107
+ errors,
108
+ warnings,
109
+ };
110
+ }
111
+ /**
112
+ * Parse Generic agent configuration
113
+ *
114
+ * This function reads agent.json, agent.yaml, agent.yml, or .agentvault.json file
115
+ * and returns a fully validated configuration object.
116
+ *
117
+ * @param sourcePath - Path to agent source directory
118
+ * @param verbose - Enable verbose logging
119
+ * @returns Parsed and validated Generic configuration
120
+ */
121
+ export async function parseGenericConfig(sourcePath, verbose = false) {
122
+ if (verbose) {
123
+ console.log(`[Generic] Parsing configuration from: ${sourcePath}`);
124
+ }
125
+ const configLocation = findGenericConfig(sourcePath);
126
+ if (configLocation === null) {
127
+ throw new Error('No Generic agent configuration found. ' +
128
+ 'Expected agent.json, agent.yaml, agent.yml, or .agentvault.json file in the agent source path.');
129
+ }
130
+ if (verbose) {
131
+ console.log(`[Generic] Found ${configLocation.type.toUpperCase()} config: ${configLocation.path}`);
132
+ }
133
+ let config;
134
+ try {
135
+ const content = fs.readFileSync(configLocation.path, 'utf-8');
136
+ // Parse based on file type
137
+ if (configLocation.type === 'json') {
138
+ const parsed = JSON.parse(content);
139
+ config = {
140
+ type: 'generic',
141
+ name: parsed.name || 'generic-agent',
142
+ version: parsed.version,
143
+ description: parsed.description,
144
+ entryPoint: parsed.entryPoint,
145
+ workingDirectory: parsed.workingDirectory,
146
+ environment: parsed.environment || {},
147
+ allowedFiles: parsed.allowedFiles,
148
+ maxFileSize: parsed.maxFileSize,
149
+ };
150
+ }
151
+ else {
152
+ // YAML
153
+ const parsed = yaml.parse(content);
154
+ config = {
155
+ type: 'generic',
156
+ name: parsed.name || 'generic-agent',
157
+ version: parsed.version,
158
+ description: parsed.description,
159
+ entryPoint: parsed.entryPoint,
160
+ workingDirectory: parsed.workingDirectory,
161
+ environment: parsed.environment || {},
162
+ allowedFiles: parsed.allowedFiles,
163
+ maxFileSize: parsed.maxFileSize,
164
+ };
165
+ }
166
+ if (verbose) {
167
+ console.log(`[Generic] Parsed name: ${config.name}`);
168
+ console.log(`[Generic] Parsed version: ${config.version}`);
169
+ console.log(`[Generic] Parsed entryPoint: ${config.entryPoint || 'none'}`);
170
+ console.log(`[Generic] Parsed workingDirectory: ${config.workingDirectory || 'none'}`);
171
+ console.log(`[Generic] Parsed environment keys: ${Object.keys(config.environment || {}).length}`);
172
+ console.log(`[Generic] Parsed allowedFiles: ${config.allowedFiles?.length || 0}`);
173
+ console.log(`[Generic] Parsed maxFileSize: ${config.maxFileSize || 'unlimited'}`);
174
+ }
175
+ }
176
+ catch (error) {
177
+ const message = error instanceof Error ? error.message : 'Unknown error';
178
+ throw new Error(`Failed to parse Generic config: ${message}`);
179
+ }
180
+ // Validate configuration
181
+ const validation = validateGenericConfig(config);
182
+ if (!validation.valid) {
183
+ const errorMessage = `Generic agent configuration validation failed:\n${validation.errors.map(e => ` - ${e}`).join('\n')}`;
184
+ throw new Error(errorMessage);
185
+ }
186
+ // Display warnings if verbose
187
+ if (verbose && validation.warnings.length > 0) {
188
+ console.log(`[Generic] Warnings:`);
189
+ for (const warning of validation.warnings) {
190
+ console.log(`[Generic] - ${warning}`);
191
+ }
192
+ }
193
+ return config;
194
+ }
195
+ /**
196
+ * Find all Generic configurations in a directory tree
197
+ *
198
+ * @param rootPath - Root directory to search
199
+ * @returns Array of paths to Generic configuration files
200
+ */
201
+ export function findGenericConfigs(rootPath) {
202
+ const configs = [];
203
+ function searchDirectory(dirPath) {
204
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
205
+ for (const entry of entries) {
206
+ const fullPath = path.join(dirPath, entry.name);
207
+ if (entry.isDirectory()) {
208
+ // Skip node_modules and .git
209
+ if (entry.name !== 'node_modules' && entry.name !== '.git') {
210
+ searchDirectory(fullPath);
211
+ }
212
+ }
213
+ else if (entry.isFile()) {
214
+ // Check for Generic config files
215
+ if (entry.name === 'agent.json' ||
216
+ entry.name === 'agent.yaml' ||
217
+ entry.name === 'agent.yml' ||
218
+ entry.name === 'agentvault.json' ||
219
+ entry.name === '.agentvault.json') {
220
+ configs.push(fullPath);
221
+ }
222
+ }
223
+ }
224
+ }
225
+ searchDirectory(rootPath);
226
+ return configs;
227
+ }
228
+ //# sourceMappingURL=generic.js.map