@vess-id/vess 0.2.0-alpha.1

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 (280) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +223 -0
  3. package/bin/vess.js +2 -0
  4. package/dist/__mocks__/@napi-rs/keyring.d.ts +9 -0
  5. package/dist/__mocks__/@napi-rs/keyring.d.ts.map +1 -0
  6. package/dist/__mocks__/@napi-rs/keyring.js +33 -0
  7. package/dist/__mocks__/@napi-rs/keyring.js.map +1 -0
  8. package/dist/__mocks__/node-mac-auth.d.ts +8 -0
  9. package/dist/__mocks__/node-mac-auth.d.ts.map +1 -0
  10. package/dist/__mocks__/node-mac-auth.js +29 -0
  11. package/dist/__mocks__/node-mac-auth.js.map +1 -0
  12. package/dist/adapter/mcp/http-transport.d.ts +34 -0
  13. package/dist/adapter/mcp/http-transport.d.ts.map +1 -0
  14. package/dist/adapter/mcp/http-transport.js +158 -0
  15. package/dist/adapter/mcp/http-transport.js.map +1 -0
  16. package/dist/adapter/mcp/mcp-adapter.d.ts +37 -0
  17. package/dist/adapter/mcp/mcp-adapter.d.ts.map +1 -0
  18. package/dist/adapter/mcp/mcp-adapter.js +48 -0
  19. package/dist/adapter/mcp/mcp-adapter.js.map +1 -0
  20. package/dist/adapter/mcp/mcp-server.factory.d.ts +35 -0
  21. package/dist/adapter/mcp/mcp-server.factory.d.ts.map +1 -0
  22. package/dist/adapter/mcp/mcp-server.factory.js +114 -0
  23. package/dist/adapter/mcp/mcp-server.factory.js.map +1 -0
  24. package/dist/adapter/mcp/stdio-transport.d.ts +7 -0
  25. package/dist/adapter/mcp/stdio-transport.d.ts.map +1 -0
  26. package/dist/adapter/mcp/stdio-transport.js +13 -0
  27. package/dist/adapter/mcp/stdio-transport.js.map +1 -0
  28. package/dist/adapter/mcp/transport.d.ts +10 -0
  29. package/dist/adapter/mcp/transport.d.ts.map +1 -0
  30. package/dist/adapter/mcp/transport.js +14 -0
  31. package/dist/adapter/mcp/transport.js.map +1 -0
  32. package/dist/approval/approval-token.d.ts +23 -0
  33. package/dist/approval/approval-token.d.ts.map +1 -0
  34. package/dist/approval/approval-token.js +81 -0
  35. package/dist/approval/approval-token.js.map +1 -0
  36. package/dist/audit/audit-dto-mapper.d.ts +29 -0
  37. package/dist/audit/audit-dto-mapper.d.ts.map +1 -0
  38. package/dist/audit/audit-dto-mapper.js +61 -0
  39. package/dist/audit/audit-dto-mapper.js.map +1 -0
  40. package/dist/audit/audit-logger.d.ts +35 -0
  41. package/dist/audit/audit-logger.d.ts.map +1 -0
  42. package/dist/audit/audit-logger.js +67 -0
  43. package/dist/audit/audit-logger.js.map +1 -0
  44. package/dist/audit/audit-sync.d.ts +12 -0
  45. package/dist/audit/audit-sync.d.ts.map +1 -0
  46. package/dist/audit/audit-sync.js +65 -0
  47. package/dist/audit/audit-sync.js.map +1 -0
  48. package/dist/auth/user-authenticator.d.ts +51 -0
  49. package/dist/auth/user-authenticator.d.ts.map +1 -0
  50. package/dist/auth/user-authenticator.js +155 -0
  51. package/dist/auth/user-authenticator.js.map +1 -0
  52. package/dist/cli/cli-db.d.ts +12 -0
  53. package/dist/cli/cli-db.d.ts.map +1 -0
  54. package/dist/cli/cli-db.js +20 -0
  55. package/dist/cli/cli-db.js.map +1 -0
  56. package/dist/cli/cli-utils.d.ts +14 -0
  57. package/dist/cli/cli-utils.d.ts.map +1 -0
  58. package/dist/cli/cli-utils.js +57 -0
  59. package/dist/cli/cli-utils.js.map +1 -0
  60. package/dist/cli/daemon-utils.d.ts +30 -0
  61. package/dist/cli/daemon-utils.d.ts.map +1 -0
  62. package/dist/cli/daemon-utils.js +131 -0
  63. package/dist/cli/daemon-utils.js.map +1 -0
  64. package/dist/cli/daemon.d.ts +13 -0
  65. package/dist/cli/daemon.d.ts.map +1 -0
  66. package/dist/cli/daemon.js +207 -0
  67. package/dist/cli/daemon.js.map +1 -0
  68. package/dist/cli/doctor.d.ts +2 -0
  69. package/dist/cli/doctor.d.ts.map +1 -0
  70. package/dist/cli/doctor.js +135 -0
  71. package/dist/cli/doctor.js.map +1 -0
  72. package/dist/cli/env-delete.d.ts +6 -0
  73. package/dist/cli/env-delete.d.ts.map +1 -0
  74. package/dist/cli/env-delete.js +80 -0
  75. package/dist/cli/env-delete.js.map +1 -0
  76. package/dist/cli/env-list.d.ts +5 -0
  77. package/dist/cli/env-list.d.ts.map +1 -0
  78. package/dist/cli/env-list.js +42 -0
  79. package/dist/cli/env-list.js.map +1 -0
  80. package/dist/cli/env-post-integration.d.ts +21 -0
  81. package/dist/cli/env-post-integration.d.ts.map +1 -0
  82. package/dist/cli/env-post-integration.js +300 -0
  83. package/dist/cli/env-post-integration.js.map +1 -0
  84. package/dist/cli/env-restore.d.ts +15 -0
  85. package/dist/cli/env-restore.d.ts.map +1 -0
  86. package/dist/cli/env-restore.js +130 -0
  87. package/dist/cli/env-restore.js.map +1 -0
  88. package/dist/cli/env.d.ts +14 -0
  89. package/dist/cli/env.d.ts.map +1 -0
  90. package/dist/cli/env.js +182 -0
  91. package/dist/cli/env.js.map +1 -0
  92. package/dist/cli/error-handlers.d.ts +13 -0
  93. package/dist/cli/error-handlers.d.ts.map +1 -0
  94. package/dist/cli/error-handlers.js +32 -0
  95. package/dist/cli/error-handlers.js.map +1 -0
  96. package/dist/cli/hook-check-env.d.ts +12 -0
  97. package/dist/cli/hook-check-env.d.ts.map +1 -0
  98. package/dist/cli/hook-check-env.js +117 -0
  99. package/dist/cli/hook-check-env.js.map +1 -0
  100. package/dist/cli/index.d.ts +2 -0
  101. package/dist/cli/index.d.ts.map +1 -0
  102. package/dist/cli/index.js +294 -0
  103. package/dist/cli/index.js.map +1 -0
  104. package/dist/cli/init-guard.d.ts +13 -0
  105. package/dist/cli/init-guard.d.ts.map +1 -0
  106. package/dist/cli/init-guard.js +62 -0
  107. package/dist/cli/init-guard.js.map +1 -0
  108. package/dist/cli/init.d.ts +19 -0
  109. package/dist/cli/init.d.ts.map +1 -0
  110. package/dist/cli/init.js +440 -0
  111. package/dist/cli/init.js.map +1 -0
  112. package/dist/cli/install.d.ts +14 -0
  113. package/dist/cli/install.d.ts.map +1 -0
  114. package/dist/cli/install.js +186 -0
  115. package/dist/cli/install.js.map +1 -0
  116. package/dist/cli/login.d.ts +6 -0
  117. package/dist/cli/login.d.ts.map +1 -0
  118. package/dist/cli/login.js +76 -0
  119. package/dist/cli/login.js.map +1 -0
  120. package/dist/cli/logs.d.ts +32 -0
  121. package/dist/cli/logs.d.ts.map +1 -0
  122. package/dist/cli/logs.js +147 -0
  123. package/dist/cli/logs.js.map +1 -0
  124. package/dist/cli/project.d.ts +8 -0
  125. package/dist/cli/project.d.ts.map +1 -0
  126. package/dist/cli/project.js +102 -0
  127. package/dist/cli/project.js.map +1 -0
  128. package/dist/cli/reset.d.ts +8 -0
  129. package/dist/cli/reset.d.ts.map +1 -0
  130. package/dist/cli/reset.js +137 -0
  131. package/dist/cli/reset.js.map +1 -0
  132. package/dist/cli/run.d.ts +22 -0
  133. package/dist/cli/run.d.ts.map +1 -0
  134. package/dist/cli/run.js +103 -0
  135. package/dist/cli/run.js.map +1 -0
  136. package/dist/cli/start.d.ts +2 -0
  137. package/dist/cli/start.d.ts.map +1 -0
  138. package/dist/cli/start.js +29 -0
  139. package/dist/cli/start.js.map +1 -0
  140. package/dist/cli/status.d.ts +12 -0
  141. package/dist/cli/status.d.ts.map +1 -0
  142. package/dist/cli/status.js +131 -0
  143. package/dist/cli/status.js.map +1 -0
  144. package/dist/cli/uninstall.d.ts +8 -0
  145. package/dist/cli/uninstall.d.ts.map +1 -0
  146. package/dist/cli/uninstall.js +111 -0
  147. package/dist/cli/uninstall.js.map +1 -0
  148. package/dist/config/config.d.ts +10 -0
  149. package/dist/config/config.d.ts.map +1 -0
  150. package/dist/config/config.js +64 -0
  151. package/dist/config/config.js.map +1 -0
  152. package/dist/config/constants.d.ts +3 -0
  153. package/dist/config/constants.d.ts.map +1 -0
  154. package/dist/config/constants.js +6 -0
  155. package/dist/config/constants.js.map +1 -0
  156. package/dist/config/paths.d.ts +9 -0
  157. package/dist/config/paths.d.ts.map +1 -0
  158. package/dist/config/paths.js +58 -0
  159. package/dist/config/paths.js.map +1 -0
  160. package/dist/core/execution-engine.d.ts +119 -0
  161. package/dist/core/execution-engine.d.ts.map +1 -0
  162. package/dist/core/execution-engine.js +1291 -0
  163. package/dist/core/execution-engine.js.map +1 -0
  164. package/dist/core/runtime.d.ts +43 -0
  165. package/dist/core/runtime.d.ts.map +1 -0
  166. package/dist/core/runtime.js +143 -0
  167. package/dist/core/runtime.js.map +1 -0
  168. package/dist/core/sync-scheduler.d.ts +42 -0
  169. package/dist/core/sync-scheduler.d.ts.map +1 -0
  170. package/dist/core/sync-scheduler.js +131 -0
  171. package/dist/core/sync-scheduler.js.map +1 -0
  172. package/dist/core/types.d.ts +77 -0
  173. package/dist/core/types.d.ts.map +1 -0
  174. package/dist/core/types.js +7 -0
  175. package/dist/core/types.js.map +1 -0
  176. package/dist/daemon/service-manager.d.ts +68 -0
  177. package/dist/daemon/service-manager.d.ts.map +1 -0
  178. package/dist/daemon/service-manager.js +303 -0
  179. package/dist/daemon/service-manager.js.map +1 -0
  180. package/dist/env/env-classifier.d.ts +14 -0
  181. package/dist/env/env-classifier.d.ts.map +1 -0
  182. package/dist/env/env-classifier.js +94 -0
  183. package/dist/env/env-classifier.js.map +1 -0
  184. package/dist/env/env-parser.d.ts +13 -0
  185. package/dist/env/env-parser.d.ts.map +1 -0
  186. package/dist/env/env-parser.js +33 -0
  187. package/dist/env/env-parser.js.map +1 -0
  188. package/dist/env/env-profile-store.d.ts +15 -0
  189. package/dist/env/env-profile-store.d.ts.map +1 -0
  190. package/dist/env/env-profile-store.js +35 -0
  191. package/dist/env/env-profile-store.js.map +1 -0
  192. package/dist/env/env-reference.d.ts +10 -0
  193. package/dist/env/env-reference.d.ts.map +1 -0
  194. package/dist/env/env-reference.js +33 -0
  195. package/dist/env/env-reference.js.map +1 -0
  196. package/dist/env/env-resolver.d.ts +18 -0
  197. package/dist/env/env-resolver.d.ts.map +1 -0
  198. package/dist/env/env-resolver.js +48 -0
  199. package/dist/env/env-resolver.js.map +1 -0
  200. package/dist/env/fs-utils.d.ts +9 -0
  201. package/dist/env/fs-utils.d.ts.map +1 -0
  202. package/dist/env/fs-utils.js +59 -0
  203. package/dist/env/fs-utils.js.map +1 -0
  204. package/dist/env/secret-backend.d.ts +15 -0
  205. package/dist/env/secret-backend.d.ts.map +1 -0
  206. package/dist/env/secret-backend.js +24 -0
  207. package/dist/env/secret-backend.js.map +1 -0
  208. package/dist/executor/executor-registry.d.ts +22 -0
  209. package/dist/executor/executor-registry.d.ts.map +1 -0
  210. package/dist/executor/executor-registry.js +42 -0
  211. package/dist/executor/executor-registry.js.map +1 -0
  212. package/dist/executor/process-launcher.d.ts +26 -0
  213. package/dist/executor/process-launcher.d.ts.map +1 -0
  214. package/dist/executor/process-launcher.js +98 -0
  215. package/dist/executor/process-launcher.js.map +1 -0
  216. package/dist/executor/secret-file.d.ts +28 -0
  217. package/dist/executor/secret-file.d.ts.map +1 -0
  218. package/dist/executor/secret-file.js +127 -0
  219. package/dist/executor/secret-file.js.map +1 -0
  220. package/dist/gateway/auth.d.ts +26 -0
  221. package/dist/gateway/auth.d.ts.map +1 -0
  222. package/dist/gateway/auth.js +66 -0
  223. package/dist/gateway/auth.js.map +1 -0
  224. package/dist/gateway/gateway-client.d.ts +298 -0
  225. package/dist/gateway/gateway-client.d.ts.map +1 -0
  226. package/dist/gateway/gateway-client.js +501 -0
  227. package/dist/gateway/gateway-client.js.map +1 -0
  228. package/dist/identity/agent-identity.d.ts +29 -0
  229. package/dist/identity/agent-identity.d.ts.map +1 -0
  230. package/dist/identity/agent-identity.js +54 -0
  231. package/dist/identity/agent-identity.js.map +1 -0
  232. package/dist/identity/did-manager.d.ts +17 -0
  233. package/dist/identity/did-manager.d.ts.map +1 -0
  234. package/dist/identity/did-manager.js +29 -0
  235. package/dist/identity/did-manager.js.map +1 -0
  236. package/dist/identity/key-manager.d.ts +18 -0
  237. package/dist/identity/key-manager.d.ts.map +1 -0
  238. package/dist/identity/key-manager.js +101 -0
  239. package/dist/identity/key-manager.js.map +1 -0
  240. package/dist/identity/session-key.d.ts +13 -0
  241. package/dist/identity/session-key.d.ts.map +1 -0
  242. package/dist/identity/session-key.js +17 -0
  243. package/dist/identity/session-key.js.map +1 -0
  244. package/dist/policy/policy-evaluator.d.ts +63 -0
  245. package/dist/policy/policy-evaluator.d.ts.map +1 -0
  246. package/dist/policy/policy-evaluator.js +266 -0
  247. package/dist/policy/policy-evaluator.js.map +1 -0
  248. package/dist/policy/policy-loader.d.ts +10 -0
  249. package/dist/policy/policy-loader.d.ts.map +1 -0
  250. package/dist/policy/policy-loader.js +71 -0
  251. package/dist/policy/policy-loader.js.map +1 -0
  252. package/dist/policy/types.d.ts +21 -0
  253. package/dist/policy/types.d.ts.map +1 -0
  254. package/dist/policy/types.js +3 -0
  255. package/dist/policy/types.js.map +1 -0
  256. package/dist/utils/credential-errors.d.ts +3 -0
  257. package/dist/utils/credential-errors.d.ts.map +1 -0
  258. package/dist/utils/credential-errors.js +23 -0
  259. package/dist/utils/credential-errors.js.map +1 -0
  260. package/dist/utils/resource-canonicalizer.d.ts +19 -0
  261. package/dist/utils/resource-canonicalizer.d.ts.map +1 -0
  262. package/dist/utils/resource-canonicalizer.js +100 -0
  263. package/dist/utils/resource-canonicalizer.js.map +1 -0
  264. package/dist/utils/vc-utils.d.ts +23 -0
  265. package/dist/utils/vc-utils.d.ts.map +1 -0
  266. package/dist/utils/vc-utils.js +53 -0
  267. package/dist/utils/vc-utils.js.map +1 -0
  268. package/dist/wallet/sqlite.d.ts +4 -0
  269. package/dist/wallet/sqlite.d.ts.map +1 -0
  270. package/dist/wallet/sqlite.js +158 -0
  271. package/dist/wallet/sqlite.js.map +1 -0
  272. package/dist/wallet/vp-builder.d.ts +18 -0
  273. package/dist/wallet/vp-builder.d.ts.map +1 -0
  274. package/dist/wallet/vp-builder.js +46 -0
  275. package/dist/wallet/vp-builder.js.map +1 -0
  276. package/dist/wallet/wallet.d.ts +58 -0
  277. package/dist/wallet/wallet.d.ts.map +1 -0
  278. package/dist/wallet/wallet.js +170 -0
  279. package/dist/wallet/wallet.js.map +1 -0
  280. package/package.json +80 -0
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runProcessCommand = runProcessCommand;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ const env_resolver_1 = require("../env/env-resolver");
41
+ const secret_backend_1 = require("../env/secret-backend");
42
+ const key_manager_1 = require("../identity/key-manager");
43
+ const cli_utils_1 = require("./cli-utils");
44
+ /**
45
+ * Execute a command with VESS env profile injection.
46
+ *
47
+ * This is the CLI-direct path: the user explicitly runs `vess run` in their terminal.
48
+ * Policy/grant/VC checks are NOT applied here because:
49
+ * - The user has direct shell access and could run any command anyway
50
+ * - Policy enforcement is for the MCP path where AI requests execution
51
+ * - The value of `vess run` is env injection, not access control
52
+ *
53
+ * Note: The profile parameter is logged for clarity. The actual profile used
54
+ * for resolution is determined by the vess://env/<profile>/<key> references
55
+ * in .env. The .env file is expected to contain references to a single
56
+ * profile (created by `vess env import --profile <name>`).
57
+ */
58
+ async function runProcessCommand(options) {
59
+ const { command, profile = 'default', workingDirectory, timeout } = options;
60
+ if (!command || command.length === 0) {
61
+ throw new Error('No command specified');
62
+ }
63
+ const cwd = workingDirectory || process.cwd();
64
+ // Resolve env from .env.
65
+ // NOTE: --profile is cosmetic (used for logging only). It does NOT filter
66
+ // which profile's vess://env references get resolved. All references in
67
+ // the .env file are resolved regardless of the --profile value.
68
+ let resolvedEnv = {};
69
+ const envPath = path.join(cwd, '.env');
70
+ if (fs.existsSync(envPath)) {
71
+ const keyManager = new key_manager_1.KeyManager();
72
+ const backend = new secret_backend_1.KeychainBackend(keyManager);
73
+ const resolver = new env_resolver_1.EnvResolver(backend);
74
+ const content = fs.readFileSync(envPath, 'utf-8');
75
+ const { env: resolved, warnings } = await resolver.resolveEnvContentWithWarnings(content);
76
+ resolvedEnv = resolved;
77
+ for (const w of warnings) {
78
+ (0, cli_utils_1.log)(`[vess] Warning: ${w}`);
79
+ }
80
+ (0, cli_utils_1.log)(`[vess] Resolved ${Object.keys(resolvedEnv).length} env vars from .env (profile: ${profile})`);
81
+ }
82
+ else {
83
+ (0, cli_utils_1.log)(`[vess] No .env found in ${cwd}, running without env injection`);
84
+ }
85
+ const env = { ...process.env, ...resolvedEnv };
86
+ const [cmd, ...args] = command;
87
+ const timeoutMs = (timeout ?? 0) * 1000 || undefined;
88
+ (0, cli_utils_1.log)(`[vess] Running: ${command.join(' ')}`);
89
+ const result = (0, child_process_1.spawnSync)(cmd, args, {
90
+ cwd,
91
+ env,
92
+ timeout: timeoutMs,
93
+ stdio: 'inherit',
94
+ });
95
+ if (result.error) {
96
+ (0, cli_utils_1.log)(`[vess] Process error: ${result.error.message}`);
97
+ process.exit(1);
98
+ }
99
+ if (result.status !== null && result.status !== 0) {
100
+ process.exit(result.status);
101
+ }
102
+ }
103
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,8CAqDC;AAlFD,uCAAwB;AACxB,2CAA4B;AAC5B,iDAAyC;AACzC,sDAAiD;AACjD,0DAAuD;AACvD,yDAAoD;AACpD,2CAAiC;AASjC;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,iBAAiB,CAAC,OAAmB;IACzD,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE3E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAE7C,yBAAyB;IACzB,0EAA0E;IAC1E,wEAAwE;IACxE,gEAAgE;IAChE,IAAI,WAAW,GAA2B,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,IAAI,gCAAe,CAAC,UAAU,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,IAAI,0BAAW,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACjD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAA;QACzF,WAAW,GAAG,QAAQ,CAAA;QACtB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAA,eAAG,EAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;QAC7B,CAAC;QACD,IAAA,eAAG,EAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,iCAAiC,OAAO,GAAG,CAAC,CAAA;IACpG,CAAC;SAAM,CAAC;QACN,IAAA,eAAG,EAAC,2BAA2B,GAAG,iCAAiC,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE,CAAA;IAE9C,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAA;IAC9B,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,CAAA;IAEpD,IAAA,eAAG,EAAC,mBAAmB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,GAAG,EAAE,IAAI,EAAE;QAClC,GAAG;QACH,GAAG;QACH,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAA,eAAG,EAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runStart(): Promise<void>;
2
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B9C"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runStart = runStart;
4
+ const runtime_1 = require("../core/runtime");
5
+ const transport_1 = require("../adapter/mcp/transport");
6
+ async function runStart() {
7
+ const runtime = await (0, runtime_1.initializeRuntime)();
8
+ // Create MCP server for Claude Code (single client in stdio mode)
9
+ const { server, setClientInfo } = await runtime.createMcpServer('claude-code');
10
+ // Capture clientInfo from MCP initialize handshake (before connect)
11
+ server.server.oninitialized = () => {
12
+ const clientVersion = server.server.getClientVersion();
13
+ if (clientVersion) {
14
+ setClientInfo({ name: clientVersion.name, version: clientVersion.version });
15
+ }
16
+ };
17
+ // Graceful shutdown
18
+ const cleanup = async () => {
19
+ // Give in-flight requests a moment to complete
20
+ await new Promise(resolve => setTimeout(resolve, 500));
21
+ runtime.cleanup();
22
+ process.exit(0);
23
+ };
24
+ process.on('SIGINT', () => { cleanup(); });
25
+ process.on('SIGTERM', () => { cleanup(); });
26
+ // Connect MCP transport (stdio for single-client mode)
27
+ await (0, transport_1.connectStdioTransport)(server);
28
+ }
29
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":";;AAGA,4BA0BC;AA7BD,6CAAmD;AACnD,wDAAgE;AAEzD,KAAK,UAAU,QAAQ;IAC5B,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,GAAE,CAAA;IAEzC,kEAAkE;IAClE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;IAE9E,oEAAoE;IACpE,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAA;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC,CAAA;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,+CAA+C;QAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,OAAO,EAAE,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;IAE1C,uDAAuD;IACvD,MAAM,IAAA,iCAAqB,EAAC,MAAM,CAAC,CAAA;AACrC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface DaemonInfo {
2
+ running: boolean;
3
+ pid: number | null;
4
+ port: number | null;
5
+ }
6
+ /**
7
+ * Detect whether the daemon is running by checking PID/port files.
8
+ * @param baseDir Override base directory (for testing)
9
+ */
10
+ export declare function detectDaemonInfo(baseDir?: string): DaemonInfo;
11
+ export declare function runStatus(): Promise<void>;
12
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAc7D;AAgBD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAoE/C"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.detectDaemonInfo = detectDaemonInfo;
37
+ exports.runStatus = runStatus;
38
+ const path = __importStar(require("node:path"));
39
+ const paths_1 = require("../config/paths");
40
+ const config_1 = require("../config/config");
41
+ const sqlite_1 = require("../wallet/sqlite");
42
+ const daemon_utils_1 = require("./daemon-utils");
43
+ const key_manager_1 = require("../identity/key-manager");
44
+ const logs_1 = require("./logs");
45
+ /**
46
+ * Detect whether the daemon is running by checking PID/port files.
47
+ * @param baseDir Override base directory (for testing)
48
+ */
49
+ function detectDaemonInfo(baseDir) {
50
+ const dir = baseDir ?? new paths_1.VessPaths().baseDir;
51
+ const pidFile = path.join(dir, 'daemon.pid');
52
+ const portFile = path.join(dir, 'daemon.port');
53
+ const pid = (0, daemon_utils_1.readPidFile)(pidFile);
54
+ const port = (0, daemon_utils_1.readPortFile)(portFile);
55
+ if (pid === null) {
56
+ return { running: false, pid: null, port: null };
57
+ }
58
+ const running = (0, daemon_utils_1.isDaemonRunning)(pid);
59
+ return { running, pid: running ? pid : null, port: running ? port : null };
60
+ }
61
+ /**
62
+ * Fetch session count from daemon health endpoint.
63
+ */
64
+ async function fetchSessionCount(port) {
65
+ try {
66
+ const response = await fetch(`http://127.0.0.1:${port}/health`);
67
+ if (!response.ok)
68
+ return null;
69
+ const data = (await response.json());
70
+ return data.sessions ?? null;
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ }
76
+ async function runStatus() {
77
+ const paths = new paths_1.VessPaths();
78
+ const config = (0, config_1.loadConfig)(paths.configFile);
79
+ console.log('\nVESS Status');
80
+ console.log('-----------');
81
+ console.log(`Gateway URL: ${config.gatewayUrl}`);
82
+ console.log(`Root DID: ${config.rootDid || '(not set)'}`);
83
+ console.log(`Project: ${config.defaultProjectId || '(not set)'}`);
84
+ const keyManager = new key_manager_1.KeyManager();
85
+ const hasToken = keyManager.getSessionToken() !== null || !!config.deviceSessionToken;
86
+ console.log(`Authenticated: ${hasToken ? 'yes' : 'no'}`);
87
+ // Daemon status
88
+ const daemonInfo = detectDaemonInfo(paths.baseDir);
89
+ if (daemonInfo.running) {
90
+ console.log(`\nDaemon: running`);
91
+ console.log(` Mode: HTTP (daemon)`);
92
+ console.log(` PID: ${daemonInfo.pid}`);
93
+ if (daemonInfo.port) {
94
+ console.log(` Port: ${daemonInfo.port}`);
95
+ console.log(` URL: http://127.0.0.1:${daemonInfo.port}/mcp`);
96
+ const sessions = await fetchSessionCount(daemonInfo.port);
97
+ if (sessions !== null) {
98
+ console.log(` Sessions: ${sessions}`);
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ console.log(`\nDaemon: not running`);
104
+ console.log(` Mode: stdio`);
105
+ console.log(` Hint: Run "vess daemon start" to start manually, or "vess daemon enable" for auto-start`);
106
+ }
107
+ // Recent errors from daemon stderr log
108
+ const errLogPath = path.join(paths.baseDir, 'logs', 'daemon.err');
109
+ const recentErrors = (0, logs_1.readRecentErrors)(errLogPath, 5);
110
+ if (recentErrors.length > 0) {
111
+ console.log('\nRecent errors:');
112
+ for (const errLine of recentErrors) {
113
+ console.log(` ${errLine}`);
114
+ }
115
+ }
116
+ try {
117
+ const db = (0, sqlite_1.openDatabase)(paths.walletDb);
118
+ (0, sqlite_1.initSchema)(db);
119
+ const vcCount = db.prepare("SELECT COUNT(*) as count FROM credentials WHERE status = 'active'").get().count;
120
+ const pendingAudit = db.prepare('SELECT COUNT(*) as count FROM audit_log WHERE synced_at IS NULL').get().count;
121
+ const lastSync = db.prepare('SELECT MAX(synced_at) as last FROM synced_policies').get().last;
122
+ console.log(`\nCached VCs: ${vcCount}`);
123
+ console.log(`Pending audit: ${pendingAudit}`);
124
+ console.log(`Last policy sync: ${lastSync ? new Date(lastSync).toISOString() : '(never)'}`);
125
+ db.close();
126
+ }
127
+ catch {
128
+ console.log('\nWallet: (not initialized)');
129
+ }
130
+ }
131
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface UninstallOptions {
2
+ /** Override Claude Code config path (for testing) */
3
+ claudeConfigPath?: string;
4
+ /** Skip interactive confirmation (for testing) */
5
+ skipConfirm?: boolean;
6
+ }
7
+ export declare function runUninstall(options?: UninstallOptions): Promise<void>;
8
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAuBD,wBAAsB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhF"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runUninstall = runUninstall;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const readline = __importStar(require("readline"));
41
+ function log(msg) {
42
+ process.stderr.write(msg + '\n');
43
+ }
44
+ function getDefaultClaudeConfigPath() {
45
+ return path.join(os.homedir(), '.claude.json');
46
+ }
47
+ function askConfirmation(question) {
48
+ return new Promise((resolve) => {
49
+ const rl = readline.createInterface({
50
+ input: process.stdin,
51
+ output: process.stderr,
52
+ });
53
+ rl.question(question, (answer) => {
54
+ rl.close();
55
+ resolve(answer.trim().toLowerCase() === 'y' || answer.trim().toLowerCase() === 'yes');
56
+ });
57
+ });
58
+ }
59
+ async function runUninstall(options = {}) {
60
+ const claudeConfigPath = options.claudeConfigPath ?? getDefaultClaudeConfigPath();
61
+ // 1. Check if Claude Code config exists
62
+ if (!fs.existsSync(claudeConfigPath)) {
63
+ log('');
64
+ log('Claude Code config not found at: ' + claudeConfigPath);
65
+ log('Nothing to uninstall.');
66
+ log('');
67
+ return;
68
+ }
69
+ // 2. Read existing config
70
+ const rawConfig = fs.readFileSync(claudeConfigPath, 'utf-8');
71
+ let claudeConfig;
72
+ try {
73
+ claudeConfig = JSON.parse(rawConfig);
74
+ }
75
+ catch {
76
+ throw new Error('Claude Code config is not valid JSON: ' + claudeConfigPath);
77
+ }
78
+ // 3. Check if vess MCP server is registered
79
+ const mcpServers = (claudeConfig.mcpServers ?? {});
80
+ if (!mcpServers.vess) {
81
+ log('VESS MCP server is not registered in Claude Code config.');
82
+ return;
83
+ }
84
+ // 4. Show what will be removed
85
+ log('');
86
+ log('The following entry will be removed from ' + claudeConfigPath + ':');
87
+ log('');
88
+ log(' "vess": ' + JSON.stringify(mcpServers.vess, null, 2).replace(/\n/g, '\n '));
89
+ log('');
90
+ // 5. Create backup
91
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
92
+ const backupPath = claudeConfigPath + '.backup-' + timestamp;
93
+ fs.writeFileSync(backupPath, rawConfig, 'utf-8');
94
+ log('Backup created: ' + backupPath);
95
+ // 6. Ask for confirmation (unless skipConfirm)
96
+ if (!options.skipConfirm) {
97
+ const confirmed = await askConfirmation('Remove VESS MCP server? [y/N] ');
98
+ if (!confirmed) {
99
+ log('Uninstall cancelled.');
100
+ return;
101
+ }
102
+ }
103
+ // 7. Remove vess entry
104
+ const { vess: _, ...remainingServers } = mcpServers;
105
+ const updatedConfig = { ...claudeConfig, mcpServers: remainingServers };
106
+ // 8. Write updated config
107
+ fs.writeFileSync(claudeConfigPath, JSON.stringify(updatedConfig, null, 2), 'utf-8');
108
+ // 9. Success message
109
+ log('VESS MCP server entry removed from Claude Code config.');
110
+ }
111
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface VessConfig {
2
+ gatewayUrl: string;
3
+ /** @deprecated Use KeyManager for session token storage. Kept for migration. */
4
+ deviceSessionToken?: string;
5
+ defaultProjectId?: string;
6
+ rootDid?: string;
7
+ }
8
+ export declare function loadConfig(configPath: string): VessConfig;
9
+ export declare function saveConfig(configPath: string, config: VessConfig): void;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAWzD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAOvE"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ exports.saveConfig = saveConfig;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const DEFAULT_CONFIG = {
41
+ gatewayUrl: 'https://staging.app.vesslabs.ai',
42
+ };
43
+ function loadConfig(configPath) {
44
+ try {
45
+ if (!fs.existsSync(configPath)) {
46
+ return { ...DEFAULT_CONFIG };
47
+ }
48
+ const raw = fs.readFileSync(configPath, 'utf-8');
49
+ const parsed = JSON.parse(raw);
50
+ return { ...DEFAULT_CONFIG, ...parsed };
51
+ }
52
+ catch {
53
+ return { ...DEFAULT_CONFIG };
54
+ }
55
+ }
56
+ function saveConfig(configPath, config) {
57
+ const dir = path.dirname(configPath);
58
+ if (!fs.existsSync(dir)) {
59
+ fs.mkdirSync(dir, { recursive: true });
60
+ }
61
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
62
+ fs.chmodSync(configPath, 0o600);
63
+ }
64
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,gCAWC;AAED,gCAOC;AAnCD,uCAAwB;AACxB,2CAA4B;AAU5B,MAAM,cAAc,GAAe;IACjC,UAAU,EAAE,iCAAiC;CAC9C,CAAA;AAED,SAAgB,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAA;QAC9B,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAA;QACrD,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,UAAkB,EAAE,MAAkB;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACtE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Default port for the VESS daemon HTTP transport. */
2
+ export declare const DEFAULT_DAEMON_PORT = 3100;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,OAAO,CAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_DAEMON_PORT = void 0;
4
+ /** Default port for the VESS daemon HTTP transport. */
5
+ exports.DEFAULT_DAEMON_PORT = 3100;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AAC1C,QAAA,mBAAmB,GAAG,IAAI,CAAA"}
@@ -0,0 +1,9 @@
1
+ export declare class VessPaths {
2
+ readonly baseDir: string;
3
+ constructor(baseDir?: string);
4
+ get configFile(): string;
5
+ get policyFile(): string;
6
+ get walletDb(): string;
7
+ get auditLogDir(): string;
8
+ }
9
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAGA,qBAAa,SAAS;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAI5B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.VessPaths = void 0;
37
+ const path = __importStar(require("path"));
38
+ const os = __importStar(require("os"));
39
+ class VessPaths {
40
+ baseDir;
41
+ constructor(baseDir) {
42
+ this.baseDir = baseDir ?? path.join(os.homedir(), '.vess');
43
+ }
44
+ get configFile() {
45
+ return path.join(this.baseDir, 'config.json');
46
+ }
47
+ get policyFile() {
48
+ return path.join(this.baseDir, 'policy.json');
49
+ }
50
+ get walletDb() {
51
+ return path.join(this.baseDir, 'wallet.db');
52
+ }
53
+ get auditLogDir() {
54
+ return path.join(this.baseDir, 'logs');
55
+ }
56
+ }
57
+ exports.VessPaths = VessPaths;
58
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,uCAAwB;AAExB,MAAa,SAAS;IACX,OAAO,CAAQ;IAExB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACxC,CAAC;CACF;AAtBD,8BAsBC"}