agentvault 1.0.1 → 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 (292) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/dist/cli/commands/approve.js +5 -5
  3. package/dist/cli/commands/archive.js +5 -5
  4. package/dist/cli/commands/backup.js +5 -5
  5. package/dist/cli/commands/cloud-backup.js +12 -12
  6. package/dist/cli/commands/decrypt.js +2 -2
  7. package/dist/cli/commands/deploy.js +1 -1
  8. package/dist/cli/commands/exec.js +2 -2
  9. package/dist/cli/commands/fetch.js +4 -4
  10. package/dist/cli/commands/inference.js +5 -5
  11. package/dist/cli/commands/init.d.ts +1 -1
  12. package/dist/cli/commands/init.js +16 -16
  13. package/dist/cli/commands/list.js +4 -4
  14. package/dist/cli/commands/package.js +2 -2
  15. package/dist/cli/commands/profile.js +1 -1
  16. package/dist/cli/commands/rebuild.js +2 -2
  17. package/dist/cli/commands/show.js +1 -1
  18. package/dist/cli/commands/status.d.ts +1 -1
  19. package/dist/cli/commands/status.js +8 -8
  20. package/dist/cli/commands/trace.js +1 -1
  21. package/dist/cli/commands/wallet-export.js +1 -1
  22. package/dist/cli/commands/wallet-sign.js +1 -1
  23. package/dist/cli/commands/wallet.d.ts +1 -1
  24. package/dist/cli/commands/wallet.js +1 -1
  25. package/dist/cli/index.d.ts +2 -2
  26. package/dist/cli/index.js +3 -3
  27. package/dist/src/archival/archive-manager.d.ts +85 -0
  28. package/dist/src/archival/archive-manager.js +294 -0
  29. package/dist/src/archival/arweave-client.d.ts +88 -0
  30. package/dist/src/archival/arweave-client.js +223 -0
  31. package/dist/src/archival/index.d.ts +8 -0
  32. package/{src/archival/index.ts → dist/src/archival/index.js} +1 -1
  33. package/dist/src/backup/backup.d.ts +67 -0
  34. package/dist/src/backup/backup.js +231 -0
  35. package/dist/src/backup/index.d.ts +7 -0
  36. package/{src/backup/index.ts → dist/src/backup/index.js} +1 -1
  37. package/dist/src/cloud-storage/cloud-sync.d.ts +49 -0
  38. package/dist/src/cloud-storage/cloud-sync.js +372 -0
  39. package/dist/src/cloud-storage/index.d.ts +11 -0
  40. package/{src/cloud-storage/index.ts → dist/src/cloud-storage/index.js} +1 -1
  41. package/dist/src/cloud-storage/provider-detector.d.ts +34 -0
  42. package/dist/src/cloud-storage/provider-detector.js +158 -0
  43. package/{src/cloud-storage/types.ts → dist/src/cloud-storage/types.d.ts} +40 -53
  44. package/dist/src/cloud-storage/types.js +10 -0
  45. package/dist/src/debugging/index.d.ts +6 -0
  46. package/{src/debugging/index.ts → dist/src/debugging/index.js} +1 -1
  47. package/dist/src/debugging/logs.d.ts +32 -0
  48. package/dist/src/debugging/logs.js +158 -0
  49. package/dist/src/debugging/types.d.ts +91 -0
  50. package/dist/src/debugging/types.js +5 -0
  51. package/dist/src/deployment/deployer.d.ts +52 -0
  52. package/dist/src/deployment/deployer.js +211 -0
  53. package/dist/src/deployment/icpClient.d.ts +144 -0
  54. package/dist/src/deployment/icpClient.js +545 -0
  55. package/dist/src/deployment/index.d.ts +11 -0
  56. package/dist/src/deployment/index.js +14 -0
  57. package/dist/src/deployment/promotion.d.ts +32 -0
  58. package/dist/src/deployment/promotion.js +114 -0
  59. package/dist/src/deployment/types.d.ts +101 -0
  60. package/dist/src/deployment/types.js +5 -0
  61. package/dist/src/icp/batch.d.ts +112 -0
  62. package/dist/src/icp/batch.js +273 -0
  63. package/dist/src/icp/cycles.d.ts +29 -0
  64. package/{src/icp/cycles.ts → dist/src/icp/cycles.js} +8 -22
  65. package/dist/src/icp/environment.d.ts +60 -0
  66. package/dist/src/icp/environment.js +183 -0
  67. package/dist/src/icp/icpcli.d.ts +204 -0
  68. package/dist/src/icp/icpcli.js +374 -0
  69. package/dist/src/icp/icwasm.d.ts +94 -0
  70. package/dist/src/icp/icwasm.js +197 -0
  71. package/dist/src/icp/identity.d.ts +50 -0
  72. package/{src/icp/identity.ts → dist/src/icp/identity.js} +15 -28
  73. package/dist/src/icp/index.d.ts +16 -0
  74. package/dist/src/icp/index.js +20 -0
  75. package/dist/src/icp/optimization.d.ts +16 -0
  76. package/dist/src/icp/optimization.js +225 -0
  77. package/dist/src/icp/tokens.d.ts +24 -0
  78. package/{src/icp/tokens.ts → dist/src/icp/tokens.js} +5 -12
  79. package/dist/src/icp/tool-detector.d.ts +31 -0
  80. package/dist/src/icp/tool-detector.js +104 -0
  81. package/dist/src/icp/types.d.ts +493 -0
  82. package/dist/src/icp/types.js +7 -0
  83. package/dist/src/index.d.ts +12 -0
  84. package/dist/src/index.js +18 -0
  85. package/dist/src/inference/bittensor-client.d.ts +108 -0
  86. package/dist/src/inference/bittensor-client.js +224 -0
  87. package/dist/src/inference/index.d.ts +8 -0
  88. package/{src/inference/index.ts → dist/src/inference/index.js} +1 -1
  89. package/dist/src/inference/inference-manager.d.ts +76 -0
  90. package/dist/src/inference/inference-manager.js +228 -0
  91. package/dist/src/metrics/index.d.ts +7 -0
  92. package/{src/metrics/index.ts → dist/src/metrics/index.js} +1 -1
  93. package/dist/src/metrics/metrics.d.ts +39 -0
  94. package/dist/src/metrics/metrics.js +129 -0
  95. package/dist/src/monitoring/alerting.d.ts +51 -0
  96. package/dist/src/monitoring/alerting.js +169 -0
  97. package/dist/src/monitoring/health.d.ts +40 -0
  98. package/dist/src/monitoring/health.js +164 -0
  99. package/dist/src/monitoring/index.d.ts +10 -0
  100. package/dist/src/monitoring/index.js +12 -0
  101. package/dist/src/monitoring/info.d.ts +15 -0
  102. package/dist/src/monitoring/info.js +109 -0
  103. package/dist/src/monitoring/types.d.ts +93 -0
  104. package/dist/src/monitoring/types.js +7 -0
  105. package/dist/src/network/index.d.ts +5 -0
  106. package/{src/network/index.ts → dist/src/network/index.js} +1 -1
  107. package/dist/src/network/network-config.d.ts +31 -0
  108. package/dist/src/network/network-config.js +109 -0
  109. package/dist/src/packaging/compiler.d.ts +61 -0
  110. package/dist/src/packaging/compiler.js +562 -0
  111. package/dist/src/packaging/config-persistence.d.ts +46 -0
  112. package/dist/src/packaging/config-persistence.js +108 -0
  113. package/dist/src/packaging/config-schemas.d.ts +115 -0
  114. package/dist/src/packaging/config-schemas.js +43 -0
  115. package/dist/src/packaging/detector.d.ts +26 -0
  116. package/dist/src/packaging/detector.js +193 -0
  117. package/dist/src/packaging/index.d.ts +16 -0
  118. package/dist/src/packaging/index.js +22 -0
  119. package/dist/src/packaging/packager.d.ts +31 -0
  120. package/dist/src/packaging/packager.js +90 -0
  121. package/dist/src/packaging/parsers/clawdbot.d.ts +19 -0
  122. package/dist/src/packaging/parsers/clawdbot.js +231 -0
  123. package/dist/src/packaging/parsers/cline.d.ts +26 -0
  124. package/dist/src/packaging/parsers/cline.js +185 -0
  125. package/dist/src/packaging/parsers/generic.d.ts +27 -0
  126. package/dist/src/packaging/parsers/generic.js +228 -0
  127. package/dist/src/packaging/parsers/goose.d.ts +26 -0
  128. package/dist/src/packaging/parsers/goose.js +175 -0
  129. package/dist/src/packaging/parsers/index.d.ts +11 -0
  130. package/{src/packaging/parsers/index.ts → dist/src/packaging/parsers/index.js} +1 -1
  131. package/dist/src/packaging/serializer.d.ts +108 -0
  132. package/dist/src/packaging/serializer.js +153 -0
  133. package/dist/src/packaging/types.d.ts +131 -0
  134. package/dist/src/packaging/types.js +5 -0
  135. package/dist/src/packaging/wasmedge-compiler.d.ts +76 -0
  136. package/dist/src/packaging/wasmedge-compiler.js +349 -0
  137. package/dist/src/security/index.d.ts +11 -0
  138. package/{src/security/index.ts → dist/src/security/index.js} +1 -4
  139. package/dist/src/security/multisig.d.ts +102 -0
  140. package/dist/src/security/multisig.js +283 -0
  141. package/dist/src/security/types.d.ts +207 -0
  142. package/dist/src/security/types.js +217 -0
  143. package/dist/src/security/vetkeys.d.ts +179 -0
  144. package/dist/src/security/vetkeys.js +499 -0
  145. package/dist/src/testing/index.d.ts +6 -0
  146. package/{src/testing/index.ts → dist/src/testing/index.js} +1 -1
  147. package/dist/src/testing/local-runner.d.ts +23 -0
  148. package/dist/src/testing/local-runner.js +226 -0
  149. package/dist/src/testing/types.d.ts +98 -0
  150. package/dist/src/testing/types.js +5 -0
  151. package/dist/src/wallet/cbor-serializer.d.ts +82 -0
  152. package/dist/src/wallet/cbor-serializer.js +282 -0
  153. package/dist/src/wallet/chain-dispatcher.d.ts +112 -0
  154. package/dist/src/wallet/chain-dispatcher.js +241 -0
  155. package/dist/src/wallet/cross-chain-aggregator.d.ts +119 -0
  156. package/dist/src/wallet/cross-chain-aggregator.js +235 -0
  157. package/dist/src/wallet/index.d.ts +16 -0
  158. package/dist/src/wallet/index.js +22 -0
  159. package/dist/src/wallet/key-derivation.d.ts +117 -0
  160. package/dist/src/wallet/key-derivation.js +325 -0
  161. package/dist/src/wallet/providers/base-provider.d.ts +111 -0
  162. package/dist/src/wallet/providers/base-provider.js +58 -0
  163. package/dist/src/wallet/providers/cketh-provider.d.ts +104 -0
  164. package/dist/src/wallet/providers/cketh-provider.js +343 -0
  165. package/dist/src/wallet/providers/polkadot-provider.d.ts +115 -0
  166. package/dist/src/wallet/providers/polkadot-provider.js +407 -0
  167. package/dist/src/wallet/providers/solana-provider.d.ts +102 -0
  168. package/dist/src/wallet/providers/solana-provider.js +393 -0
  169. package/dist/src/wallet/transaction-queue.d.ts +133 -0
  170. package/dist/src/wallet/transaction-queue.js +195 -0
  171. package/dist/src/wallet/types.d.ts +167 -0
  172. package/dist/src/wallet/types.js +5 -0
  173. package/dist/src/wallet/vetkeys-adapter.d.ts +134 -0
  174. package/dist/src/wallet/vetkeys-adapter.js +313 -0
  175. package/dist/src/wallet/wallet-manager.d.ts +202 -0
  176. package/dist/src/wallet/wallet-manager.js +451 -0
  177. package/dist/src/wallet/wallet-storage.d.ts +131 -0
  178. package/dist/src/wallet/wallet-storage.js +274 -0
  179. package/macos-wallet-app/AgentVaultWallet/App/AgentVaultWalletApp.swift +54 -0
  180. package/macos-wallet-app/AgentVaultWallet/Models/AppState.swift +102 -0
  181. package/macos-wallet-app/AgentVaultWallet/Models/Chain.swift +121 -0
  182. package/macos-wallet-app/AgentVaultWallet/Models/Wallet.swift +98 -0
  183. package/macos-wallet-app/AgentVaultWallet/Resources/AgentVaultWallet.entitlements +27 -0
  184. package/macos-wallet-app/AgentVaultWallet/Resources/Info.plist +69 -0
  185. package/macos-wallet-app/AgentVaultWallet/Services/BackupService.swift +270 -0
  186. package/macos-wallet-app/AgentVaultWallet/Services/CLIBridge.swift +367 -0
  187. package/macos-wallet-app/AgentVaultWallet/Services/CryptoService.swift +157 -0
  188. package/macos-wallet-app/AgentVaultWallet/Services/FileService.swift +120 -0
  189. package/macos-wallet-app/AgentVaultWallet/Services/KeychainService.swift +219 -0
  190. package/macos-wallet-app/AgentVaultWallet/Utilities/Constants.swift +44 -0
  191. package/macos-wallet-app/AgentVaultWallet/Utilities/Extensions.swift +115 -0
  192. package/macos-wallet-app/AgentVaultWallet/ViewModels/BackupViewModel.swift +237 -0
  193. package/macos-wallet-app/AgentVaultWallet/ViewModels/CreateWalletViewModel.swift +137 -0
  194. package/macos-wallet-app/AgentVaultWallet/ViewModels/ImportWalletViewModel.swift +179 -0
  195. package/macos-wallet-app/AgentVaultWallet/ViewModels/WalletStore.swift +286 -0
  196. package/macos-wallet-app/AgentVaultWallet/Views/Backup/BackupView.swift +235 -0
  197. package/macos-wallet-app/AgentVaultWallet/Views/Backup/RestoreView.swift +316 -0
  198. package/macos-wallet-app/AgentVaultWallet/Views/Create/CreateWalletFlow.swift +438 -0
  199. package/macos-wallet-app/AgentVaultWallet/Views/Import/ImportWalletFlow.swift +399 -0
  200. package/macos-wallet-app/AgentVaultWallet/Views/MainView.swift +134 -0
  201. package/macos-wallet-app/AgentVaultWallet/Views/Settings/SettingsView.swift +276 -0
  202. package/macos-wallet-app/AgentVaultWallet/Views/Sidebar/SidebarView.swift +133 -0
  203. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/DashboardView.swift +233 -0
  204. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletDetailView.swift +281 -0
  205. package/macos-wallet-app/AgentVaultWallet/Views/Wallet/WalletListView.swift +280 -0
  206. package/macos-wallet-app/AgentVaultWallet/Views/Welcome/WelcomeView.swift +176 -0
  207. package/macos-wallet-app/Makefile +47 -0
  208. package/macos-wallet-app/project.yml +40 -0
  209. package/macos-wallet-app/setup.sh +73 -0
  210. package/package.json +10 -2
  211. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-28-967Z.json +0 -28
  212. package/backups/agentvault-backup-test-agent-2026-02-12T17-54-29-032Z.backup +0 -1
  213. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-373Z.json +0 -28
  214. package/backups/agentvault-backup-test-agent-2026-02-12T17-57-42-428Z.backup +0 -1
  215. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-132Z.json +0 -28
  216. package/backups/agentvault-backup-test-agent-2026-02-12T18-52-25-247Z.backup +0 -1
  217. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-216Z.json +0 -28
  218. package/backups/agentvault-backup-test-agent-2026-02-12T18-54-09-283Z.backup +0 -1
  219. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-772Z.backup +0 -1
  220. package/backups/agentvault-backup-test-agent-2026-02-12T22-18-22-793Z.json +0 -28
  221. package/backups/test-backup.json +0 -28
  222. package/scripts/dev-dashboard.mjs +0 -84
  223. package/site/README.md +0 -63
  224. package/site/docusaurus.config.ts +0 -148
  225. package/site/package-lock.json +0 -18383
  226. package/site/package.json +0 -47
  227. package/site/sidebars.ts +0 -86
  228. package/site/static/.gitkeep +0 -0
  229. package/site/static/img/logo.svg +0 -28
  230. package/site/static/img/og-image.svg +0 -35
  231. package/src/archival/archive-manager.ts +0 -372
  232. package/src/archival/arweave-client.ts +0 -289
  233. package/src/backup/backup.ts +0 -315
  234. package/src/cloud-storage/cloud-sync.ts +0 -461
  235. package/src/cloud-storage/provider-detector.ts +0 -198
  236. package/src/debugging/logs.ts +0 -193
  237. package/src/debugging/types.ts +0 -100
  238. package/src/deployment/deployer.ts +0 -274
  239. package/src/deployment/icpClient.ts +0 -620
  240. package/src/deployment/index.ts +0 -46
  241. package/src/deployment/promotion.ts +0 -161
  242. package/src/deployment/types.ts +0 -111
  243. package/src/icp/batch.ts +0 -374
  244. package/src/icp/environment.ts +0 -215
  245. package/src/icp/icpcli.ts +0 -438
  246. package/src/icp/icwasm.ts +0 -222
  247. package/src/icp/index.ts +0 -94
  248. package/src/icp/optimization.ts +0 -242
  249. package/src/icp/tool-detector.ts +0 -110
  250. package/src/icp/types.ts +0 -574
  251. package/src/index.ts +0 -25
  252. package/src/inference/bittensor-client.ts +0 -304
  253. package/src/inference/inference-manager.ts +0 -327
  254. package/src/metrics/metrics.ts +0 -186
  255. package/src/monitoring/alerting.ts +0 -190
  256. package/src/monitoring/health.ts +0 -197
  257. package/src/monitoring/index.ts +0 -38
  258. package/src/monitoring/info.ts +0 -114
  259. package/src/monitoring/types.ts +0 -99
  260. package/src/network/network-config.ts +0 -129
  261. package/src/packaging/compiler.ts +0 -647
  262. package/src/packaging/config-persistence.ts +0 -135
  263. package/src/packaging/config-schemas.ts +0 -156
  264. package/src/packaging/detector.ts +0 -220
  265. package/src/packaging/index.ts +0 -90
  266. package/src/packaging/packager.ts +0 -118
  267. package/src/packaging/parsers/clawdbot.ts +0 -278
  268. package/src/packaging/parsers/cline.ts +0 -223
  269. package/src/packaging/parsers/generic.ts +0 -266
  270. package/src/packaging/parsers/goose.ts +0 -214
  271. package/src/packaging/serializer.ts +0 -260
  272. package/src/packaging/types.ts +0 -144
  273. package/src/packaging/wasmedge-compiler.ts +0 -406
  274. package/src/security/multisig.ts +0 -415
  275. package/src/security/types.ts +0 -416
  276. package/src/security/vetkeys.ts +0 -655
  277. package/src/testing/local-runner.ts +0 -264
  278. package/src/testing/types.ts +0 -104
  279. package/src/wallet/cbor-serializer.ts +0 -323
  280. package/src/wallet/chain-dispatcher.ts +0 -313
  281. package/src/wallet/cross-chain-aggregator.ts +0 -346
  282. package/src/wallet/index.ts +0 -76
  283. package/src/wallet/key-derivation.ts +0 -425
  284. package/src/wallet/providers/base-provider.ts +0 -154
  285. package/src/wallet/providers/cketh-provider.ts +0 -434
  286. package/src/wallet/providers/polkadot-provider.ts +0 -503
  287. package/src/wallet/providers/solana-provider.ts +0 -490
  288. package/src/wallet/transaction-queue.ts +0 -284
  289. package/src/wallet/types.ts +0 -178
  290. package/src/wallet/vetkeys-adapter.ts +0 -431
  291. package/src/wallet/wallet-manager.ts +0 -597
  292. 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