@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.
- package/LICENSE +64 -0
- package/README.md +223 -0
- package/bin/vess.js +2 -0
- package/dist/__mocks__/@napi-rs/keyring.d.ts +9 -0
- package/dist/__mocks__/@napi-rs/keyring.d.ts.map +1 -0
- package/dist/__mocks__/@napi-rs/keyring.js +33 -0
- package/dist/__mocks__/@napi-rs/keyring.js.map +1 -0
- package/dist/__mocks__/node-mac-auth.d.ts +8 -0
- package/dist/__mocks__/node-mac-auth.d.ts.map +1 -0
- package/dist/__mocks__/node-mac-auth.js +29 -0
- package/dist/__mocks__/node-mac-auth.js.map +1 -0
- package/dist/adapter/mcp/http-transport.d.ts +34 -0
- package/dist/adapter/mcp/http-transport.d.ts.map +1 -0
- package/dist/adapter/mcp/http-transport.js +158 -0
- package/dist/adapter/mcp/http-transport.js.map +1 -0
- package/dist/adapter/mcp/mcp-adapter.d.ts +37 -0
- package/dist/adapter/mcp/mcp-adapter.d.ts.map +1 -0
- package/dist/adapter/mcp/mcp-adapter.js +48 -0
- package/dist/adapter/mcp/mcp-adapter.js.map +1 -0
- package/dist/adapter/mcp/mcp-server.factory.d.ts +35 -0
- package/dist/adapter/mcp/mcp-server.factory.d.ts.map +1 -0
- package/dist/adapter/mcp/mcp-server.factory.js +114 -0
- package/dist/adapter/mcp/mcp-server.factory.js.map +1 -0
- package/dist/adapter/mcp/stdio-transport.d.ts +7 -0
- package/dist/adapter/mcp/stdio-transport.d.ts.map +1 -0
- package/dist/adapter/mcp/stdio-transport.js +13 -0
- package/dist/adapter/mcp/stdio-transport.js.map +1 -0
- package/dist/adapter/mcp/transport.d.ts +10 -0
- package/dist/adapter/mcp/transport.d.ts.map +1 -0
- package/dist/adapter/mcp/transport.js +14 -0
- package/dist/adapter/mcp/transport.js.map +1 -0
- package/dist/approval/approval-token.d.ts +23 -0
- package/dist/approval/approval-token.d.ts.map +1 -0
- package/dist/approval/approval-token.js +81 -0
- package/dist/approval/approval-token.js.map +1 -0
- package/dist/audit/audit-dto-mapper.d.ts +29 -0
- package/dist/audit/audit-dto-mapper.d.ts.map +1 -0
- package/dist/audit/audit-dto-mapper.js +61 -0
- package/dist/audit/audit-dto-mapper.js.map +1 -0
- package/dist/audit/audit-logger.d.ts +35 -0
- package/dist/audit/audit-logger.d.ts.map +1 -0
- package/dist/audit/audit-logger.js +67 -0
- package/dist/audit/audit-logger.js.map +1 -0
- package/dist/audit/audit-sync.d.ts +12 -0
- package/dist/audit/audit-sync.d.ts.map +1 -0
- package/dist/audit/audit-sync.js +65 -0
- package/dist/audit/audit-sync.js.map +1 -0
- package/dist/auth/user-authenticator.d.ts +51 -0
- package/dist/auth/user-authenticator.d.ts.map +1 -0
- package/dist/auth/user-authenticator.js +155 -0
- package/dist/auth/user-authenticator.js.map +1 -0
- package/dist/cli/cli-db.d.ts +12 -0
- package/dist/cli/cli-db.d.ts.map +1 -0
- package/dist/cli/cli-db.js +20 -0
- package/dist/cli/cli-db.js.map +1 -0
- package/dist/cli/cli-utils.d.ts +14 -0
- package/dist/cli/cli-utils.d.ts.map +1 -0
- package/dist/cli/cli-utils.js +57 -0
- package/dist/cli/cli-utils.js.map +1 -0
- package/dist/cli/daemon-utils.d.ts +30 -0
- package/dist/cli/daemon-utils.d.ts.map +1 -0
- package/dist/cli/daemon-utils.js +131 -0
- package/dist/cli/daemon-utils.js.map +1 -0
- package/dist/cli/daemon.d.ts +13 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +207 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +135 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/env-delete.d.ts +6 -0
- package/dist/cli/env-delete.d.ts.map +1 -0
- package/dist/cli/env-delete.js +80 -0
- package/dist/cli/env-delete.js.map +1 -0
- package/dist/cli/env-list.d.ts +5 -0
- package/dist/cli/env-list.d.ts.map +1 -0
- package/dist/cli/env-list.js +42 -0
- package/dist/cli/env-list.js.map +1 -0
- package/dist/cli/env-post-integration.d.ts +21 -0
- package/dist/cli/env-post-integration.d.ts.map +1 -0
- package/dist/cli/env-post-integration.js +300 -0
- package/dist/cli/env-post-integration.js.map +1 -0
- package/dist/cli/env-restore.d.ts +15 -0
- package/dist/cli/env-restore.d.ts.map +1 -0
- package/dist/cli/env-restore.js +130 -0
- package/dist/cli/env-restore.js.map +1 -0
- package/dist/cli/env.d.ts +14 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +182 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/error-handlers.d.ts +13 -0
- package/dist/cli/error-handlers.d.ts.map +1 -0
- package/dist/cli/error-handlers.js +32 -0
- package/dist/cli/error-handlers.js.map +1 -0
- package/dist/cli/hook-check-env.d.ts +12 -0
- package/dist/cli/hook-check-env.d.ts.map +1 -0
- package/dist/cli/hook-check-env.js +117 -0
- package/dist/cli/hook-check-env.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +294 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-guard.d.ts +13 -0
- package/dist/cli/init-guard.d.ts.map +1 -0
- package/dist/cli/init-guard.js +62 -0
- package/dist/cli/init-guard.js.map +1 -0
- package/dist/cli/init.d.ts +19 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +440 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/install.d.ts +14 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +186 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/login.d.ts +6 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +76 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logs.d.ts +32 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +147 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/project.d.ts +8 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +102 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/reset.d.ts +8 -0
- package/dist/cli/reset.d.ts.map +1 -0
- package/dist/cli/reset.js +137 -0
- package/dist/cli/reset.js.map +1 -0
- package/dist/cli/run.d.ts +22 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +103 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/start.d.ts +2 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +29 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/status.d.ts +12 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +131 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/uninstall.d.ts +8 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +111 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/config/config.d.ts +10 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +64 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/constants.d.ts +3 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +6 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +58 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/core/execution-engine.d.ts +119 -0
- package/dist/core/execution-engine.d.ts.map +1 -0
- package/dist/core/execution-engine.js +1291 -0
- package/dist/core/execution-engine.js.map +1 -0
- package/dist/core/runtime.d.ts +43 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +143 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/sync-scheduler.d.ts +42 -0
- package/dist/core/sync-scheduler.d.ts.map +1 -0
- package/dist/core/sync-scheduler.js +131 -0
- package/dist/core/sync-scheduler.js.map +1 -0
- package/dist/core/types.d.ts +77 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +7 -0
- package/dist/core/types.js.map +1 -0
- package/dist/daemon/service-manager.d.ts +68 -0
- package/dist/daemon/service-manager.d.ts.map +1 -0
- package/dist/daemon/service-manager.js +303 -0
- package/dist/daemon/service-manager.js.map +1 -0
- package/dist/env/env-classifier.d.ts +14 -0
- package/dist/env/env-classifier.d.ts.map +1 -0
- package/dist/env/env-classifier.js +94 -0
- package/dist/env/env-classifier.js.map +1 -0
- package/dist/env/env-parser.d.ts +13 -0
- package/dist/env/env-parser.d.ts.map +1 -0
- package/dist/env/env-parser.js +33 -0
- package/dist/env/env-parser.js.map +1 -0
- package/dist/env/env-profile-store.d.ts +15 -0
- package/dist/env/env-profile-store.d.ts.map +1 -0
- package/dist/env/env-profile-store.js +35 -0
- package/dist/env/env-profile-store.js.map +1 -0
- package/dist/env/env-reference.d.ts +10 -0
- package/dist/env/env-reference.d.ts.map +1 -0
- package/dist/env/env-reference.js +33 -0
- package/dist/env/env-reference.js.map +1 -0
- package/dist/env/env-resolver.d.ts +18 -0
- package/dist/env/env-resolver.d.ts.map +1 -0
- package/dist/env/env-resolver.js +48 -0
- package/dist/env/env-resolver.js.map +1 -0
- package/dist/env/fs-utils.d.ts +9 -0
- package/dist/env/fs-utils.d.ts.map +1 -0
- package/dist/env/fs-utils.js +59 -0
- package/dist/env/fs-utils.js.map +1 -0
- package/dist/env/secret-backend.d.ts +15 -0
- package/dist/env/secret-backend.d.ts.map +1 -0
- package/dist/env/secret-backend.js +24 -0
- package/dist/env/secret-backend.js.map +1 -0
- package/dist/executor/executor-registry.d.ts +22 -0
- package/dist/executor/executor-registry.d.ts.map +1 -0
- package/dist/executor/executor-registry.js +42 -0
- package/dist/executor/executor-registry.js.map +1 -0
- package/dist/executor/process-launcher.d.ts +26 -0
- package/dist/executor/process-launcher.d.ts.map +1 -0
- package/dist/executor/process-launcher.js +98 -0
- package/dist/executor/process-launcher.js.map +1 -0
- package/dist/executor/secret-file.d.ts +28 -0
- package/dist/executor/secret-file.d.ts.map +1 -0
- package/dist/executor/secret-file.js +127 -0
- package/dist/executor/secret-file.js.map +1 -0
- package/dist/gateway/auth.d.ts +26 -0
- package/dist/gateway/auth.d.ts.map +1 -0
- package/dist/gateway/auth.js +66 -0
- package/dist/gateway/auth.js.map +1 -0
- package/dist/gateway/gateway-client.d.ts +298 -0
- package/dist/gateway/gateway-client.d.ts.map +1 -0
- package/dist/gateway/gateway-client.js +501 -0
- package/dist/gateway/gateway-client.js.map +1 -0
- package/dist/identity/agent-identity.d.ts +29 -0
- package/dist/identity/agent-identity.d.ts.map +1 -0
- package/dist/identity/agent-identity.js +54 -0
- package/dist/identity/agent-identity.js.map +1 -0
- package/dist/identity/did-manager.d.ts +17 -0
- package/dist/identity/did-manager.d.ts.map +1 -0
- package/dist/identity/did-manager.js +29 -0
- package/dist/identity/did-manager.js.map +1 -0
- package/dist/identity/key-manager.d.ts +18 -0
- package/dist/identity/key-manager.d.ts.map +1 -0
- package/dist/identity/key-manager.js +101 -0
- package/dist/identity/key-manager.js.map +1 -0
- package/dist/identity/session-key.d.ts +13 -0
- package/dist/identity/session-key.d.ts.map +1 -0
- package/dist/identity/session-key.js +17 -0
- package/dist/identity/session-key.js.map +1 -0
- package/dist/policy/policy-evaluator.d.ts +63 -0
- package/dist/policy/policy-evaluator.d.ts.map +1 -0
- package/dist/policy/policy-evaluator.js +266 -0
- package/dist/policy/policy-evaluator.js.map +1 -0
- package/dist/policy/policy-loader.d.ts +10 -0
- package/dist/policy/policy-loader.d.ts.map +1 -0
- package/dist/policy/policy-loader.js +71 -0
- package/dist/policy/policy-loader.js.map +1 -0
- package/dist/policy/types.d.ts +21 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +3 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/utils/credential-errors.d.ts +3 -0
- package/dist/utils/credential-errors.d.ts.map +1 -0
- package/dist/utils/credential-errors.js +23 -0
- package/dist/utils/credential-errors.js.map +1 -0
- package/dist/utils/resource-canonicalizer.d.ts +19 -0
- package/dist/utils/resource-canonicalizer.d.ts.map +1 -0
- package/dist/utils/resource-canonicalizer.js +100 -0
- package/dist/utils/resource-canonicalizer.js.map +1 -0
- package/dist/utils/vc-utils.d.ts +23 -0
- package/dist/utils/vc-utils.d.ts.map +1 -0
- package/dist/utils/vc-utils.js +53 -0
- package/dist/utils/vc-utils.js.map +1 -0
- package/dist/wallet/sqlite.d.ts +4 -0
- package/dist/wallet/sqlite.d.ts.map +1 -0
- package/dist/wallet/sqlite.js +158 -0
- package/dist/wallet/sqlite.js.map +1 -0
- package/dist/wallet/vp-builder.d.ts +18 -0
- package/dist/wallet/vp-builder.d.ts.map +1 -0
- package/dist/wallet/vp-builder.js +46 -0
- package/dist/wallet/vp-builder.js.map +1 -0
- package/dist/wallet/wallet.d.ts +58 -0
- package/dist/wallet/wallet.d.ts.map +1 -0
- package/dist/wallet/wallet.js +170 -0
- package/dist/wallet/wallet.js.map +1 -0
- package/package.json +80 -0
package/dist/cli/env.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
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.runEnvImport = runEnvImport;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const readline = __importStar(require("node:readline/promises"));
|
|
40
|
+
const fs_utils_1 = require("../env/fs-utils");
|
|
41
|
+
const env_reference_1 = require("../env/env-reference");
|
|
42
|
+
const env_parser_1 = require("../env/env-parser");
|
|
43
|
+
const key_manager_1 = require("../identity/key-manager");
|
|
44
|
+
const cli_db_1 = require("./cli-db");
|
|
45
|
+
const cli_utils_1 = require("./cli-utils");
|
|
46
|
+
const env_classifier_1 = require("../env/env-classifier");
|
|
47
|
+
async function runEnvImport(options) {
|
|
48
|
+
const { envFile, profile, skipKeychain, dryRun } = options;
|
|
49
|
+
if (!fs.existsSync(envFile)) {
|
|
50
|
+
throw new Error(`File not found: ${envFile}`);
|
|
51
|
+
}
|
|
52
|
+
const content = fs.readFileSync(envFile, 'utf-8');
|
|
53
|
+
// Guard: prevent double-import
|
|
54
|
+
for (const parsed of (0, env_parser_1.parseEnvLines)(content)) {
|
|
55
|
+
if (!parsed.isEmpty && !parsed.isComment && parsed.value.startsWith('vess://env/')) {
|
|
56
|
+
throw new Error(`${envFile} already contains vess:// references. ` +
|
|
57
|
+
`Use the .backup file to re-import from original values.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const outputLines = [];
|
|
61
|
+
let secretCount = 0;
|
|
62
|
+
let plainCount = 0;
|
|
63
|
+
const keyManager = skipKeychain ? null : new key_manager_1.KeyManager();
|
|
64
|
+
let profileStore = null;
|
|
65
|
+
let db = null;
|
|
66
|
+
if (!skipKeychain) {
|
|
67
|
+
const ctx = (0, cli_db_1.openProfileStore)('env import');
|
|
68
|
+
if (!ctx)
|
|
69
|
+
return;
|
|
70
|
+
db = ctx.db;
|
|
71
|
+
profileStore = ctx.profileStore;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
// Derive ClassifyOptions from EnvImportOptions
|
|
75
|
+
const effectiveMode = options.interactive ? 'interactive' : (options.mode ?? 'default');
|
|
76
|
+
let rl = null;
|
|
77
|
+
let promptFn;
|
|
78
|
+
if (effectiveMode === 'interactive') {
|
|
79
|
+
rl = readline.createInterface({
|
|
80
|
+
input: process.stdin,
|
|
81
|
+
output: process.stderr,
|
|
82
|
+
});
|
|
83
|
+
promptFn = async (key, _value) => {
|
|
84
|
+
const answer = await rl.question(`Treat '${key}' as secret? (Y/n): `);
|
|
85
|
+
return answer.trim().toLowerCase() !== 'n';
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const classifyOptions = {
|
|
89
|
+
mode: effectiveMode,
|
|
90
|
+
secretKeys: options.secretKeys,
|
|
91
|
+
plaintextKeys: options.plaintextKeys,
|
|
92
|
+
promptFn,
|
|
93
|
+
};
|
|
94
|
+
(0, env_classifier_1.validateClassifyOptions)(classifyOptions);
|
|
95
|
+
// Collect all env keys for unmatched-key warnings
|
|
96
|
+
const allEnvKeys = new Set();
|
|
97
|
+
for (const parsed of (0, env_parser_1.parseEnvLines)(content)) {
|
|
98
|
+
if (!parsed.isEmpty && !parsed.isComment) {
|
|
99
|
+
allEnvKeys.add(parsed.key.toUpperCase());
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Warn about --keys entries that don't match any env key
|
|
103
|
+
if (effectiveMode === 'keys' && options.secretKeys) {
|
|
104
|
+
for (const sk of options.secretKeys) {
|
|
105
|
+
if (!allEnvKeys.has(sk.toUpperCase())) {
|
|
106
|
+
(0, cli_utils_1.log)(`[vess] Warning: secret key '${sk}' was not found in the env file`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
for (const parsed of (0, env_parser_1.parseEnvLines)(content)) {
|
|
112
|
+
if (parsed.isEmpty || parsed.isComment) {
|
|
113
|
+
outputLines.push(parsed.originalLine);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const result = await (0, env_classifier_1.classifyEnvEntry)(parsed.key, parsed.value, classifyOptions);
|
|
117
|
+
if (result.isSecret) {
|
|
118
|
+
if (!dryRun && keyManager) {
|
|
119
|
+
keyManager.storeEnvSecret(profile, parsed.key, parsed.value);
|
|
120
|
+
try {
|
|
121
|
+
profileStore?.addKey(profile, parsed.key);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
keyManager.deleteEnvSecret(profile, parsed.key);
|
|
125
|
+
throw new Error(`Failed to record metadata for ${parsed.key}: ${err instanceof Error ? err.message : String(err)}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
outputLines.push(`${parsed.key}=${(0, env_reference_1.formatEnvReference)(profile, parsed.key)}`);
|
|
129
|
+
secretCount++;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
outputLines.push(parsed.originalLine);
|
|
133
|
+
plainCount++;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
if (rl) {
|
|
139
|
+
rl.close();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (dryRun) {
|
|
143
|
+
(0, cli_utils_1.log)(`[vess] Dry run: ${secretCount} secrets, ${plainCount} plaintext`);
|
|
144
|
+
for (const line of outputLines) {
|
|
145
|
+
(0, cli_utils_1.log)(line);
|
|
146
|
+
}
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Backup original .env before overwriting
|
|
150
|
+
const backupPath = envFile + '.backup';
|
|
151
|
+
if (fs.existsSync(backupPath)) {
|
|
152
|
+
(0, cli_utils_1.log)(`[vess] Warning: overwriting existing ${backupPath}`);
|
|
153
|
+
}
|
|
154
|
+
fs.copyFileSync(envFile, backupPath);
|
|
155
|
+
fs.chmodSync(backupPath, 0o600);
|
|
156
|
+
// Preserve trailing newline if original had one
|
|
157
|
+
const trailingNewline = content.endsWith('\n');
|
|
158
|
+
let output = outputLines.join('\n');
|
|
159
|
+
if (trailingNewline && !output.endsWith('\n')) {
|
|
160
|
+
output += '\n';
|
|
161
|
+
}
|
|
162
|
+
(0, fs_utils_1.atomicWriteFile)(envFile, output);
|
|
163
|
+
(0, cli_utils_1.log)(`[vess] Imported ${secretCount} secrets to keychain profile "${profile}"`);
|
|
164
|
+
(0, cli_utils_1.log)(`[vess] ${plainCount} non-secret values left as plaintext`);
|
|
165
|
+
(0, cli_utils_1.log)(`[vess] Backup saved: ${backupPath}`);
|
|
166
|
+
(0, cli_utils_1.log)(`[vess] Updated: ${envFile}`);
|
|
167
|
+
(0, cli_utils_1.log)(`[vess] To use: vess run --profile ${profile} -- <command>`);
|
|
168
|
+
// Post-integration: offer to configure package.json, CLAUDE.md, Hook
|
|
169
|
+
if (!dryRun) {
|
|
170
|
+
const { runPostIntegration } = await Promise.resolve().then(() => __importStar(require('./env-post-integration')));
|
|
171
|
+
const envFileDir = path.dirname(path.resolve(envFile));
|
|
172
|
+
await runPostIntegration({
|
|
173
|
+
envFileDir,
|
|
174
|
+
skipIntegration: options.skipIntegration,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
db?.close();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global error handlers for the daemon process.
|
|
3
|
+
*
|
|
4
|
+
* - unhandledRejection: log and swallow (keep daemon alive)
|
|
5
|
+
* - uncaughtException: log and trigger graceful shutdown
|
|
6
|
+
*/
|
|
7
|
+
export interface ErrorHandlerOptions {
|
|
8
|
+
onFatalError: () => void;
|
|
9
|
+
}
|
|
10
|
+
/** @internal — exposed only for tests */
|
|
11
|
+
export declare function _resetForTesting(): void;
|
|
12
|
+
export declare function installGlobalErrorHandlers(options: ErrorHandlerOptions): void;
|
|
13
|
+
//# sourceMappingURL=error-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handlers.d.ts","sourceRoot":"","sources":["../../src/cli/error-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAID,yCAAyC;AACzC,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAmB7E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Global error handlers for the daemon process.
|
|
4
|
+
*
|
|
5
|
+
* - unhandledRejection: log and swallow (keep daemon alive)
|
|
6
|
+
* - uncaughtException: log and trigger graceful shutdown
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports._resetForTesting = _resetForTesting;
|
|
10
|
+
exports.installGlobalErrorHandlers = installGlobalErrorHandlers;
|
|
11
|
+
let installed = false;
|
|
12
|
+
/** @internal — exposed only for tests */
|
|
13
|
+
function _resetForTesting() {
|
|
14
|
+
installed = false;
|
|
15
|
+
}
|
|
16
|
+
function installGlobalErrorHandlers(options) {
|
|
17
|
+
if (installed)
|
|
18
|
+
return;
|
|
19
|
+
installed = true;
|
|
20
|
+
const { onFatalError } = options;
|
|
21
|
+
process.on('unhandledRejection', (reason, _promise) => {
|
|
22
|
+
const message = reason instanceof Error
|
|
23
|
+
? `${reason.message}\n${reason.stack ?? ''}`
|
|
24
|
+
: String(reason);
|
|
25
|
+
console.error(`${new Date().toISOString()} [ERROR] Unhandled rejection: ${message}`);
|
|
26
|
+
});
|
|
27
|
+
process.on('uncaughtException', (error) => {
|
|
28
|
+
console.error(`${new Date().toISOString()} [ERROR] Uncaught exception: ${error.message}\n${error.stack ?? ''}`);
|
|
29
|
+
onFatalError();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=error-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handlers.js","sourceRoot":"","sources":["../../src/cli/error-handlers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AASH,4CAEC;AAED,gEAmBC;AA1BD,IAAI,SAAS,GAAG,KAAK,CAAA;AAErB,yCAAyC;AACzC,SAAgB,gBAAgB;IAC9B,SAAS,GAAG,KAAK,CAAA;AACnB,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAA4B;IACrE,IAAI,SAAS;QAAE,OAAM;IACrB,SAAS,GAAG,IAAI,CAAA;IAEhB,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;IAEhC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,QAA0B,EAAE,EAAE;QAC/E,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK;YACrC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;YAC5C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAClB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,iCAAiC,OAAO,EAAE,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CACX,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,gCAAgC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CACjG,CAAA;QACD,YAAY,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the current directory's .env contains vess:// references.
|
|
3
|
+
* If so and the command is not a safe wrapper, output an additionalContext
|
|
4
|
+
* JSON to stdout for Claude Code's PreToolUse hook contract.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runHookCheckEnv(command?: string): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* CLI entry point: reads stdin for the tool input JSON from Claude Code,
|
|
9
|
+
* extracts the command, and runs the check.
|
|
10
|
+
*/
|
|
11
|
+
export declare function runHookCheckEnvFromStdin(): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=hook-check-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-check-env.d.ts","sourceRoot":"","sources":["../../src/cli/hook-check-env.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB9D"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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.runHookCheckEnv = runHookCheckEnv;
|
|
37
|
+
exports.runHookCheckEnvFromStdin = runHookCheckEnvFromStdin;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
/**
|
|
41
|
+
* Safe command prefixes that already handle env resolution.
|
|
42
|
+
* If a Bash command starts with any of these, skip the warning.
|
|
43
|
+
*/
|
|
44
|
+
const SAFE_PREFIXES = [
|
|
45
|
+
'vess run',
|
|
46
|
+
'npm run',
|
|
47
|
+
'npm start',
|
|
48
|
+
'npx ',
|
|
49
|
+
'yarn ',
|
|
50
|
+
'pnpm run',
|
|
51
|
+
'pnpm start',
|
|
52
|
+
'pnpm exec',
|
|
53
|
+
'make ',
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Check if the current directory's .env contains vess:// references.
|
|
57
|
+
* If so and the command is not a safe wrapper, output an additionalContext
|
|
58
|
+
* JSON to stdout for Claude Code's PreToolUse hook contract.
|
|
59
|
+
*/
|
|
60
|
+
async function runHookCheckEnv(command) {
|
|
61
|
+
// If the command is a safe wrapper, skip entirely
|
|
62
|
+
if (command) {
|
|
63
|
+
const trimmed = command.trimStart();
|
|
64
|
+
for (const prefix of SAFE_PREFIXES) {
|
|
65
|
+
if (trimmed.startsWith(prefix)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Read .env from cwd
|
|
71
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
72
|
+
let content;
|
|
73
|
+
try {
|
|
74
|
+
content = fs.readFileSync(envPath, 'utf-8');
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!content.includes('vess://env/')) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Output additionalContext JSON to stdout
|
|
83
|
+
const output = {
|
|
84
|
+
hookSpecificOutput: {
|
|
85
|
+
hookEventName: 'PreToolUse',
|
|
86
|
+
permissionDecision: 'allow',
|
|
87
|
+
additionalContext: '[vess] This project\'s .env contains vess:// references. ' +
|
|
88
|
+
'Environment variables will NOT be resolved by direct commands. ' +
|
|
89
|
+
'Use project task runner scripts (e.g., npm run dev) or ' +
|
|
90
|
+
'vess run -- <command> instead.',
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
process.stdout.write(JSON.stringify(output));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* CLI entry point: reads stdin for the tool input JSON from Claude Code,
|
|
97
|
+
* extracts the command, and runs the check.
|
|
98
|
+
*/
|
|
99
|
+
async function runHookCheckEnvFromStdin() {
|
|
100
|
+
let command;
|
|
101
|
+
// If stdin is a TTY (no piped input), skip command extraction
|
|
102
|
+
if (!process.stdin.isTTY) {
|
|
103
|
+
try {
|
|
104
|
+
const chunks = [];
|
|
105
|
+
for await (const chunk of process.stdin) {
|
|
106
|
+
chunks.push(chunk);
|
|
107
|
+
}
|
|
108
|
+
const input = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
|
|
109
|
+
command = input?.tool_input?.command ?? input?.command;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// If stdin is empty or not JSON, proceed without command filtering
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
await runHookCheckEnv(command);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=hook-check-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-check-env.js","sourceRoot":"","sources":["../../src/cli/hook-check-env.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,0CAqCC;AAMD,4DAkBC;AArFD,uCAAwB;AACxB,2CAA4B;AAE5B;;;GAGG;AACH,MAAM,aAAa,GAAG;IACpB,UAAU;IACV,SAAS;IACT,WAAW;IACX,MAAM;IACN,OAAO;IACP,UAAU;IACV,YAAY;IACZ,WAAW;IACX,OAAO;CACR,CAAA;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,kDAAkD;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;QACnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;IAChD,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAM;IACR,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,OAAM;IACR,CAAC;IAED,0CAA0C;IAC1C,MAAM,MAAM,GAAG;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,OAAO;YAC3B,iBAAiB,EACf,2DAA2D;gBAC3D,iEAAiE;gBACjE,yDAAyD;gBACzD,gCAAgC;SACnC;KACF,CAAA;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,wBAAwB;IAC5C,IAAI,OAA2B,CAAA;IAE/B,8DAA8D;IAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YACjE,OAAO,GAAG,KAAK,EAAE,UAAU,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IAED,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|