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
@@ -1,266 +0,0 @@
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
-
9
- import * as fs from 'node:fs';
10
- import * as path from 'node:path';
11
- import * as yaml from 'yaml';
12
- import type {
13
- GenericConfig,
14
- ConfigLocation,
15
- ConfigValidationResult,
16
- } from '../config-schemas.js';
17
-
18
- /**
19
- * Find Generic configuration file
20
- */
21
- function findGenericConfig(sourcePath: string): ConfigLocation | null {
22
- const absolutePath = path.resolve(sourcePath);
23
-
24
- // Check for config files (priority order)
25
- const configFiles = ['agent.json', 'agent.yaml', 'agent.yml', 'agentvault.json', '.agentvault.json'];
26
- for (const file of configFiles) {
27
- const filePath = path.join(absolutePath, file);
28
- if (fs.existsSync(filePath)) {
29
- // Determine type based on extension
30
- const type = file.endsWith('.yaml') || file.endsWith('.yml') ? 'yaml' : 'json';
31
- return {
32
- path: filePath,
33
- type,
34
- };
35
- }
36
- }
37
-
38
- return null;
39
- }
40
-
41
- /**
42
- * Validate Generic configuration
43
- */
44
- function validateGenericConfig(config: GenericConfig): ConfigValidationResult {
45
- const errors: string[] = [];
46
- const warnings: string[] = [];
47
-
48
- // Validate name
49
- if (!config.name || config.name.trim() === '') {
50
- errors.push('Agent name is required');
51
- }
52
-
53
- // Validate version format
54
- if (config.version) {
55
- const versionRegex = /^\d+\.\d+\.\d+$/;
56
- if (!versionRegex.test(config.version)) {
57
- errors.push(`Invalid version format: ${config.version}. Expected: X.Y.Z`);
58
- }
59
- }
60
-
61
- // Validate entry point exists (if specified)
62
- if (config.entryPoint) {
63
- const sourcePath = process.cwd();
64
- const entryPath = path.join(sourcePath, config.entryPoint);
65
- if (!fs.existsSync(entryPath)) {
66
- warnings.push(`Entry point does not exist: ${config.entryPoint}`);
67
- }
68
- }
69
-
70
- // Validate working directory exists (if specified)
71
- if (config.workingDirectory) {
72
- const workingDirPath = path.resolve(process.cwd(), config.workingDirectory);
73
- if (!fs.existsSync(workingDirPath)) {
74
- warnings.push(`Working directory does not exist: ${config.workingDirectory}`);
75
- }
76
- }
77
-
78
- // Validate allowedFiles format if specified
79
- if (config.allowedFiles) {
80
- if (!Array.isArray(config.allowedFiles)) {
81
- errors.push('allowedFiles must be an array');
82
- } else {
83
- for (const pattern of config.allowedFiles) {
84
- if (typeof pattern !== 'string' || pattern.trim() === '') {
85
- errors.push(`Invalid file pattern in allowedFiles: ${pattern}`);
86
- }
87
- }
88
- }
89
- }
90
-
91
- // Validate maxFileSize if specified
92
- if (config.maxFileSize !== undefined) {
93
- if (typeof config.maxFileSize !== 'number' || config.maxFileSize <= 0) {
94
- errors.push(`maxFileSize must be a positive number, got: ${config.maxFileSize}`);
95
- } else {
96
- // Warn if maxFileSize is very large (> 100MB)
97
- if (config.maxFileSize > 100 * 1024 * 1024) {
98
- warnings.push(`maxFileSize is very large (${(config.maxFileSize / 1024 / 1024).toFixed(0)}MB)`);
99
- }
100
- }
101
- }
102
-
103
- // Validate environment variables if specified
104
- if (config.environment) {
105
- if (typeof config.environment !== 'object' || config.environment === null) {
106
- errors.push('environment must be an object');
107
- } else {
108
- for (const [key, value] of Object.entries(config.environment)) {
109
- if (typeof value !== 'string') {
110
- errors.push(`Environment variable ${key} must be a string`);
111
- }
112
- }
113
- }
114
- }
115
-
116
- // Warn if no entry point defined
117
- if (!config.entryPoint) {
118
- warnings.push('No entry point defined. Agent may not be executable.');
119
- }
120
-
121
- return {
122
- valid: errors.length === 0,
123
- errors,
124
- warnings,
125
- };
126
- }
127
-
128
- /**
129
- * Parse Generic agent configuration
130
- *
131
- * This function reads agent.json, agent.yaml, agent.yml, or .agentvault.json file
132
- * and returns a fully validated configuration object.
133
- *
134
- * @param sourcePath - Path to agent source directory
135
- * @param verbose - Enable verbose logging
136
- * @returns Parsed and validated Generic configuration
137
- */
138
- export async function parseGenericConfig(
139
- sourcePath: string,
140
- verbose: boolean = false
141
- ): Promise<GenericConfig> {
142
- if (verbose) {
143
- console.log(`[Generic] Parsing configuration from: ${sourcePath}`);
144
- }
145
-
146
- const configLocation = findGenericConfig(sourcePath);
147
-
148
- if (configLocation === null) {
149
- throw new Error(
150
- 'No Generic agent configuration found. ' +
151
- 'Expected agent.json, agent.yaml, agent.yml, or .agentvault.json file in the agent source path.'
152
- );
153
- }
154
-
155
- if (verbose) {
156
- console.log(`[Generic] Found ${configLocation.type.toUpperCase()} config: ${configLocation.path}`);
157
- }
158
-
159
- let config: GenericConfig;
160
-
161
- try {
162
- const content = fs.readFileSync(configLocation.path, 'utf-8');
163
-
164
- // Parse based on file type
165
- if (configLocation.type === 'json') {
166
- const parsed = JSON.parse(content);
167
-
168
- config = {
169
- type: 'generic',
170
- name: parsed.name || 'generic-agent',
171
- version: parsed.version,
172
- description: parsed.description,
173
- entryPoint: parsed.entryPoint,
174
- workingDirectory: parsed.workingDirectory,
175
- environment: parsed.environment || {},
176
- allowedFiles: parsed.allowedFiles,
177
- maxFileSize: parsed.maxFileSize,
178
- };
179
- } else {
180
- // YAML
181
- const parsed = yaml.parse(content);
182
-
183
- config = {
184
- type: 'generic',
185
- name: parsed.name || 'generic-agent',
186
- version: parsed.version,
187
- description: parsed.description,
188
- entryPoint: parsed.entryPoint,
189
- workingDirectory: parsed.workingDirectory,
190
- environment: parsed.environment || {},
191
- allowedFiles: parsed.allowedFiles,
192
- maxFileSize: parsed.maxFileSize,
193
- };
194
- }
195
-
196
- if (verbose) {
197
- console.log(`[Generic] Parsed name: ${config.name}`);
198
- console.log(`[Generic] Parsed version: ${config.version}`);
199
- console.log(`[Generic] Parsed entryPoint: ${config.entryPoint || 'none'}`);
200
- console.log(`[Generic] Parsed workingDirectory: ${config.workingDirectory || 'none'}`);
201
- console.log(`[Generic] Parsed environment keys: ${Object.keys(config.environment || {}).length}`);
202
- console.log(`[Generic] Parsed allowedFiles: ${config.allowedFiles?.length || 0}`);
203
- console.log(`[Generic] Parsed maxFileSize: ${config.maxFileSize || 'unlimited'}`);
204
- }
205
- } catch (error) {
206
- const message = error instanceof Error ? error.message : 'Unknown error';
207
- throw new Error(`Failed to parse Generic config: ${message}`);
208
- }
209
-
210
- // Validate configuration
211
- const validation = validateGenericConfig(config);
212
-
213
- if (!validation.valid) {
214
- const errorMessage = `Generic agent configuration validation failed:\n${validation.errors.map(e => ` - ${e}`).join('\n')}`;
215
- throw new Error(errorMessage);
216
- }
217
-
218
- // Display warnings if verbose
219
- if (verbose && validation.warnings.length > 0) {
220
- console.log(`[Generic] Warnings:`);
221
- for (const warning of validation.warnings) {
222
- console.log(`[Generic] - ${warning}`);
223
- }
224
- }
225
-
226
- return config;
227
- }
228
-
229
- /**
230
- * Find all Generic configurations in a directory tree
231
- *
232
- * @param rootPath - Root directory to search
233
- * @returns Array of paths to Generic configuration files
234
- */
235
- export function findGenericConfigs(rootPath: string): string[] {
236
- const configs: string[] = [];
237
-
238
- function searchDirectory(dirPath: string): void {
239
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
240
-
241
- for (const entry of entries) {
242
- const fullPath = path.join(dirPath, entry.name);
243
-
244
- if (entry.isDirectory()) {
245
- // Skip node_modules and .git
246
- if (entry.name !== 'node_modules' && entry.name !== '.git') {
247
- searchDirectory(fullPath);
248
- }
249
- } else if (entry.isFile()) {
250
- // Check for Generic config files
251
- if (
252
- entry.name === 'agent.json' ||
253
- entry.name === 'agent.yaml' ||
254
- entry.name === 'agent.yml' ||
255
- entry.name === 'agentvault.json' ||
256
- entry.name === '.agentvault.json'
257
- ) {
258
- configs.push(fullPath);
259
- }
260
- }
261
- }
262
- }
263
-
264
- searchDirectory(rootPath);
265
- return configs;
266
- }
@@ -1,214 +0,0 @@
1
- /**
2
- * Goose Configuration Parser
3
- *
4
- * Parses Goose agent configuration from YAML files.
5
- * Reads goose.yaml, goose.yml, or .gooserc files and constructs configuration object.
6
- */
7
-
8
- import * as fs from 'node:fs';
9
- import * as path from 'node:path';
10
- import * as yaml from 'yaml';
11
- import type {
12
- GooseConfig,
13
- ConfigLocation,
14
- ConfigValidationResult,
15
- } from '../config-schemas.js';
16
- import {
17
- DEFAULT_GOOSE_CONFIG,
18
- } from '../config-schemas.js';
19
-
20
- /**
21
- * Find Goose configuration file
22
- */
23
- function findGooseConfig(sourcePath: string): ConfigLocation | null {
24
- const absolutePath = path.resolve(sourcePath);
25
-
26
- const configFiles = ['goose.yaml', 'goose.yml', '.gooserc'];
27
- for (const file of configFiles) {
28
- const filePath = path.join(absolutePath, file);
29
- if (fs.existsSync(filePath)) {
30
- return {
31
- path: filePath,
32
- type: 'yaml',
33
- };
34
- }
35
- }
36
-
37
- return null;
38
- }
39
-
40
- /**
41
- * Validate Goose configuration
42
- */
43
- function validateGooseConfig(config: GooseConfig): ConfigValidationResult {
44
- const errors: string[] = [];
45
- const warnings: string[] = [];
46
-
47
- // Validate name
48
- if (!config.name || config.name.trim() === '') {
49
- errors.push('Agent name is required');
50
- }
51
-
52
- // Validate model (required for Goose)
53
- if (!config.model || config.model.trim() === '') {
54
- errors.push('Model is required for Goose agent');
55
- }
56
-
57
- // Validate version format
58
- if (config.version) {
59
- const versionRegex = /^\d+\.\d+\.\d+$/;
60
- if (!versionRegex.test(config.version)) {
61
- errors.push(`Invalid version format: ${config.version}. Expected: X.Y.Z`);
62
- }
63
- }
64
-
65
- // Validate temperature (must be between 0 and 2)
66
- if (config.temperature !== undefined) {
67
- if (config.temperature < 0 || config.temperature > 2) {
68
- errors.push(`Temperature must be between 0 and 2, got: ${config.temperature}`);
69
- }
70
- }
71
-
72
- // Validate maxTokens (must be positive)
73
- if (config.maxTokens !== undefined) {
74
- if (config.maxTokens <= 0) {
75
- errors.push(`maxTokens must be positive, got: ${config.maxTokens}`);
76
- }
77
- }
78
-
79
- // Validate working directory exists (if specified)
80
- if (config.workingDirectory) {
81
- const workingDirPath = path.resolve(process.cwd(), config.workingDirectory);
82
- if (!fs.existsSync(workingDirPath)) {
83
- warnings.push(`Working directory does not exist: ${config.workingDirectory}`);
84
- }
85
- }
86
-
87
- // Warn if no tools defined
88
- if (!config.tools || config.tools.length === 0) {
89
- warnings.push('No tools defined in configuration');
90
- }
91
-
92
- return {
93
- valid: errors.length === 0,
94
- errors,
95
- warnings,
96
- };
97
- }
98
-
99
- /**
100
- * Parse Goose agent configuration
101
- *
102
- * This function reads goose.yaml, goose.yml, or .gooserc file
103
- * and returns a fully validated configuration object.
104
- *
105
- * @param sourcePath - Path to agent source directory
106
- * @param verbose - Enable verbose logging
107
- * @returns Parsed and validated Goose configuration
108
- */
109
- export async function parseGooseConfig(
110
- sourcePath: string,
111
- verbose: boolean = false
112
- ): Promise<GooseConfig> {
113
- if (verbose) {
114
- console.log(`[Goose] Parsing configuration from: ${sourcePath}`);
115
- }
116
-
117
- const configLocation = findGooseConfig(sourcePath);
118
-
119
- if (configLocation === null) {
120
- throw new Error(
121
- 'No Goose configuration found. ' +
122
- 'Expected goose.yaml, goose.yml, or .gooserc file in the agent source path.'
123
- );
124
- }
125
-
126
- if (verbose) {
127
- console.log(`[Goose] Found YAML config: ${configLocation.path}`);
128
- }
129
-
130
- let config: GooseConfig;
131
-
132
- try {
133
- const content = fs.readFileSync(configLocation.path, 'utf-8');
134
- const parsed = yaml.parse(content);
135
-
136
- // Merge with defaults
137
- config = {
138
- type: 'goose',
139
- name: parsed.name || DEFAULT_GOOSE_CONFIG.name,
140
- version: parsed.version || DEFAULT_GOOSE_CONFIG.version,
141
- description: parsed.description || DEFAULT_GOOSE_CONFIG.description,
142
- model: parsed.model || DEFAULT_GOOSE_CONFIG.model,
143
- temperature: parsed.temperature !== undefined ? parsed.temperature : DEFAULT_GOOSE_CONFIG.temperature,
144
- maxTokens: parsed.maxTokens !== undefined ? parsed.maxTokens : DEFAULT_GOOSE_CONFIG.maxTokens,
145
- systemPrompt: parsed.systemPrompt || DEFAULT_GOOSE_CONFIG.systemPrompt,
146
- tools: parsed.tools || DEFAULT_GOOSE_CONFIG.tools,
147
- workingDirectory: parsed.workingDirectory || DEFAULT_GOOSE_CONFIG.workingDirectory,
148
- };
149
-
150
- if (verbose) {
151
- console.log(`[Goose] Parsed name: ${config.name}`);
152
- console.log(`[Goose] Parsed version: ${config.version}`);
153
- console.log(`[Goose] Parsed model: ${config.model}`);
154
- console.log(`[Goose] Parsed temperature: ${config.temperature}`);
155
- console.log(`[Goose] Parsed maxTokens: ${config.maxTokens}`);
156
- console.log(`[Goose] Parsed tools: ${config.tools?.length || 0}`);
157
- console.log(`[Goose] Parsed workingDirectory: ${config.workingDirectory}`);
158
- }
159
- } catch (error) {
160
- const message = error instanceof Error ? error.message : 'Unknown error';
161
- throw new Error(`Failed to parse Goose config: ${message}`);
162
- }
163
-
164
- // Validate configuration
165
- const validation = validateGooseConfig(config);
166
-
167
- if (!validation.valid) {
168
- const errorMessage = `Goose configuration validation failed:\n${validation.errors.map(e => ` - ${e}`).join('\n')}`;
169
- throw new Error(errorMessage);
170
- }
171
-
172
- // Display warnings if verbose
173
- if (verbose && validation.warnings.length > 0) {
174
- console.log(`[Goose] Warnings:`);
175
- for (const warning of validation.warnings) {
176
- console.log(`[Goose] - ${warning}`);
177
- }
178
- }
179
-
180
- return config;
181
- }
182
-
183
- /**
184
- * Find all Goose configurations in a directory tree
185
- *
186
- * @param rootPath - Root directory to search
187
- * @returns Array of paths to Goose configuration files
188
- */
189
- export function findGooseConfigs(rootPath: string): string[] {
190
- const configs: string[] = [];
191
-
192
- function searchDirectory(dirPath: string): void {
193
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
194
-
195
- for (const entry of entries) {
196
- const fullPath = path.join(dirPath, entry.name);
197
-
198
- if (entry.isDirectory()) {
199
- // Skip node_modules and .git
200
- if (entry.name !== 'node_modules' && entry.name !== '.git') {
201
- searchDirectory(fullPath);
202
- }
203
- } else if (entry.isFile()) {
204
- // Check for Goose config files
205
- if (entry.name === 'goose.yaml' || entry.name === 'goose.yml' || entry.name === '.gooserc') {
206
- configs.push(fullPath);
207
- }
208
- }
209
- }
210
- }
211
-
212
- searchDirectory(rootPath);
213
- return configs;
214
- }