proofscan 0.7.1 → 0.7.3
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/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +3 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/secrets.d.ts +19 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +387 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/config/add.d.ts +2 -0
- package/dist/config/add.d.ts.map +1 -1
- package/dist/config/add.js.map +1 -1
- package/dist/secrets/index.d.ts +2 -0
- package/dist/secrets/index.d.ts.map +1 -1
- package/dist/secrets/index.js +4 -0
- package/dist/secrets/index.js.map +1 -1
- package/dist/secrets/management.d.ts +112 -0
- package/dist/secrets/management.d.ts.map +1 -0
- package/dist/secrets/management.js +488 -0
- package/dist/secrets/management.js.map +1 -0
- package/dist/secrets/providers/dpapi.d.ts +16 -0
- package/dist/secrets/providers/dpapi.d.ts.map +1 -1
- package/dist/secrets/providers/dpapi.js +43 -12
- package/dist/secrets/providers/dpapi.js.map +1 -1
- package/dist/secrets/resolve.d.ts +51 -0
- package/dist/secrets/resolve.d.ts.map +1 -0
- package/dist/secrets/resolve.js +113 -0
- package/dist/secrets/resolve.js.map +1 -0
- package/dist/secrets/secretize.d.ts +12 -2
- package/dist/secrets/secretize.d.ts.map +1 -1
- package/dist/secrets/secretize.js +12 -4
- package/dist/secrets/secretize.js.map +1 -1
- package/dist/secrets/store.d.ts +4 -0
- package/dist/secrets/store.d.ts.map +1 -1
- package/dist/secrets/store.js +12 -0
- package/dist/secrets/store.js.map +1 -1
- package/dist/secrets/types.d.ts +1 -1
- package/dist/secrets/types.d.ts.map +1 -1
- package/dist/secrets/types.js +2 -2
- package/dist/secrets/types.js.map +1 -1
- package/dist/utils/clipboard.d.ts +4 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +6 -0
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/secret-input.d.ts +22 -0
- package/dist/utils/secret-input.d.ts.map +1 -0
- package/dist/utils/secret-input.js +84 -0
- package/dist/utils/secret-input.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret reference resolution (Phase 3.6)
|
|
3
|
+
*
|
|
4
|
+
* Resolves secret references (dpapi:<id>, keychain:<id>, plain:<id>) in env vars
|
|
5
|
+
* to their plaintext values at runtime.
|
|
6
|
+
*
|
|
7
|
+
* Security:
|
|
8
|
+
* - Plaintext is only held in memory during process spawn
|
|
9
|
+
* - Never written to disk, logs, or config files
|
|
10
|
+
* - Original env with refs is not modified
|
|
11
|
+
*/
|
|
12
|
+
/** Result of resolving env secrets */
|
|
13
|
+
export interface ResolveEnvSecretsResult {
|
|
14
|
+
/** Resolved env (with plaintext values) - SENSITIVE, in-memory only */
|
|
15
|
+
envResolved: Record<string, string>;
|
|
16
|
+
/** Secret refs that were successfully resolved */
|
|
17
|
+
resolvedRefs: string[];
|
|
18
|
+
/** Errors encountered during resolution */
|
|
19
|
+
errors: ResolveError[];
|
|
20
|
+
/** Whether resolution was fully successful */
|
|
21
|
+
success: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Error during secret resolution */
|
|
24
|
+
export interface ResolveError {
|
|
25
|
+
/** Environment key */
|
|
26
|
+
key: string;
|
|
27
|
+
/** Secret reference that failed */
|
|
28
|
+
ref: string;
|
|
29
|
+
/** Error message */
|
|
30
|
+
message: string;
|
|
31
|
+
/** Suggested fix command */
|
|
32
|
+
suggestion?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve secret references in env vars to plaintext values
|
|
36
|
+
*
|
|
37
|
+
* This function should be called just before spawning a child process.
|
|
38
|
+
* The returned envResolved should be passed to spawn() and then
|
|
39
|
+
* immediately discarded (not stored or logged).
|
|
40
|
+
*
|
|
41
|
+
* @param env - Environment variables potentially containing secret refs
|
|
42
|
+
* @param connectorId - Connector ID for error messages and suggestions
|
|
43
|
+
* @param configDir - Config directory (default: ~/.proofscan)
|
|
44
|
+
* @returns Resolved env and any errors
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveEnvSecrets(env: Record<string, string> | undefined, connectorId: string, configDir?: string): Promise<ResolveEnvSecretsResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Format resolution errors for user display
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatResolveErrors(errors: ResolveError[], connectorId: string): string[];
|
|
51
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/secrets/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,sCAAsC;AACtC,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kDAAkD;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2CAA2C;IAC3C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACvC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,CAAC,CAoElC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBzF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret reference resolution (Phase 3.6)
|
|
3
|
+
*
|
|
4
|
+
* Resolves secret references (dpapi:<id>, keychain:<id>, plain:<id>) in env vars
|
|
5
|
+
* to their plaintext values at runtime.
|
|
6
|
+
*
|
|
7
|
+
* Security:
|
|
8
|
+
* - Plaintext is only held in memory during process spawn
|
|
9
|
+
* - Never written to disk, logs, or config files
|
|
10
|
+
* - Original env with refs is not modified
|
|
11
|
+
*/
|
|
12
|
+
import { SqliteSecretStore } from './store.js';
|
|
13
|
+
import { parseSecretRef } from './types.js';
|
|
14
|
+
import { getDefaultConfigDir } from '../utils/config-path.js';
|
|
15
|
+
/**
|
|
16
|
+
* Resolve secret references in env vars to plaintext values
|
|
17
|
+
*
|
|
18
|
+
* This function should be called just before spawning a child process.
|
|
19
|
+
* The returned envResolved should be passed to spawn() and then
|
|
20
|
+
* immediately discarded (not stored or logged).
|
|
21
|
+
*
|
|
22
|
+
* @param env - Environment variables potentially containing secret refs
|
|
23
|
+
* @param connectorId - Connector ID for error messages and suggestions
|
|
24
|
+
* @param configDir - Config directory (default: ~/.proofscan)
|
|
25
|
+
* @returns Resolved env and any errors
|
|
26
|
+
*/
|
|
27
|
+
export async function resolveEnvSecrets(env, connectorId, configDir) {
|
|
28
|
+
if (!env || Object.keys(env).length === 0) {
|
|
29
|
+
return {
|
|
30
|
+
envResolved: {},
|
|
31
|
+
resolvedRefs: [],
|
|
32
|
+
errors: [],
|
|
33
|
+
success: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const dir = configDir || getDefaultConfigDir();
|
|
37
|
+
const store = new SqliteSecretStore(dir);
|
|
38
|
+
const envResolved = {};
|
|
39
|
+
const resolvedRefs = [];
|
|
40
|
+
const errors = [];
|
|
41
|
+
try {
|
|
42
|
+
for (const [key, value] of Object.entries(env)) {
|
|
43
|
+
// Check if value is a secret reference
|
|
44
|
+
const parsed = parseSecretRef(value);
|
|
45
|
+
if (parsed) {
|
|
46
|
+
// Resolve the secret
|
|
47
|
+
try {
|
|
48
|
+
const plaintext = await store.retrieve(parsed.id);
|
|
49
|
+
if (plaintext === null) {
|
|
50
|
+
// Secret not found
|
|
51
|
+
errors.push({
|
|
52
|
+
key,
|
|
53
|
+
ref: value,
|
|
54
|
+
message: `Secret not found: ${value}`,
|
|
55
|
+
suggestion: `pfscan secrets set ${connectorId} ${key}`,
|
|
56
|
+
});
|
|
57
|
+
// Keep the reference as-is (will cause spawn failure)
|
|
58
|
+
envResolved[key] = value;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Successfully resolved
|
|
62
|
+
envResolved[key] = plaintext;
|
|
63
|
+
resolvedRefs.push(value);
|
|
64
|
+
// TODO: Update last_used_at in store
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
// Decryption or other error
|
|
69
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
70
|
+
errors.push({
|
|
71
|
+
key,
|
|
72
|
+
ref: value,
|
|
73
|
+
message: `Failed to resolve secret: ${msg}`,
|
|
74
|
+
suggestion: `pfscan secrets set ${connectorId} ${key}`,
|
|
75
|
+
});
|
|
76
|
+
envResolved[key] = value;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Not a secret reference - pass through as-is
|
|
81
|
+
envResolved[key] = value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
envResolved,
|
|
86
|
+
resolvedRefs,
|
|
87
|
+
errors,
|
|
88
|
+
success: errors.length === 0,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
store.close();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format resolution errors for user display
|
|
97
|
+
*/
|
|
98
|
+
export function formatResolveErrors(errors, connectorId) {
|
|
99
|
+
if (errors.length === 0) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const lines = [
|
|
103
|
+
`Failed to resolve ${errors.length} secret(s) for connector '${connectorId}':`,
|
|
104
|
+
];
|
|
105
|
+
for (const err of errors) {
|
|
106
|
+
lines.push(` ${err.key}: ${err.message}`);
|
|
107
|
+
if (err.suggestion) {
|
|
108
|
+
lines.push(` Fix: ${err.suggestion}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return lines;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/secrets/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,18 @@ export interface SecretizeKeyResult {
|
|
|
20
20
|
originalValue: string;
|
|
21
21
|
/** New value (may be dpapi:xxx or original) */
|
|
22
22
|
newValue: string;
|
|
23
|
-
/**
|
|
24
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Action taken:
|
|
25
|
+
* - 'stored': Secret successfully encrypted and stored
|
|
26
|
+
* - 'placeholder': Placeholder value detected (e.g., "YOUR_API_KEY")
|
|
27
|
+
* - 'skipped': Not a secret key (e.g., NODE_ENV)
|
|
28
|
+
* - 'error': Failed to store secret (encryption error, etc.)
|
|
29
|
+
*/
|
|
30
|
+
action: 'stored' | 'placeholder' | 'skipped' | 'error';
|
|
25
31
|
/** Secret reference if stored */
|
|
26
32
|
secretRef?: string;
|
|
33
|
+
/** Error message if action is 'error' */
|
|
34
|
+
error?: string;
|
|
27
35
|
}
|
|
28
36
|
/**
|
|
29
37
|
* Result of secretizing an env object
|
|
@@ -37,6 +45,8 @@ export interface SecretizeResult {
|
|
|
37
45
|
storedCount: number;
|
|
38
46
|
/** Count of placeholders detected */
|
|
39
47
|
placeholderCount: number;
|
|
48
|
+
/** Count of storage errors (encryption failures, etc.) */
|
|
49
|
+
errorCount: number;
|
|
40
50
|
/** Provider type used for storage (dpapi, keychain, or plain) */
|
|
41
51
|
providerType?: ProviderType;
|
|
42
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretize.d.ts","sourceRoot":"","sources":["../../src/secrets/secretize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"secretize.d.ts","sourceRoot":"","sources":["../../src/secrets/secretize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IACvD,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,sCAAsC;IACtC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAoF1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,MAAM,EAAE,CA4BV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C"}
|
|
@@ -30,6 +30,7 @@ export async function secretizeEnv(env, options) {
|
|
|
30
30
|
const processedEnv = {};
|
|
31
31
|
let storedCount = 0;
|
|
32
32
|
let placeholderCount = 0;
|
|
33
|
+
let errorCount = 0;
|
|
33
34
|
// Use provided store or create new one
|
|
34
35
|
// When processing multiple connectors, caller should provide a shared store
|
|
35
36
|
// to avoid opening/closing the database repeatedly
|
|
@@ -57,17 +58,18 @@ export async function secretizeEnv(env, options) {
|
|
|
57
58
|
storedCount++;
|
|
58
59
|
}
|
|
59
60
|
catch (error) {
|
|
60
|
-
// If storing fails, keep original value and
|
|
61
|
+
// If storing fails, keep original value and report as error
|
|
61
62
|
// This prevents partial failures from breaking the entire operation
|
|
62
|
-
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
63
64
|
processedEnv[key] = value;
|
|
64
65
|
results.push({
|
|
65
66
|
key,
|
|
66
67
|
originalValue: value,
|
|
67
68
|
newValue: value,
|
|
68
|
-
action: '
|
|
69
|
+
action: 'error',
|
|
70
|
+
error: errorMessage,
|
|
69
71
|
});
|
|
70
|
-
|
|
72
|
+
errorCount++;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
else if (detection.action === 'warn') {
|
|
@@ -103,6 +105,7 @@ export async function secretizeEnv(env, options) {
|
|
|
103
105
|
results,
|
|
104
106
|
storedCount,
|
|
105
107
|
placeholderCount,
|
|
108
|
+
errorCount,
|
|
106
109
|
providerType,
|
|
107
110
|
};
|
|
108
111
|
}
|
|
@@ -134,6 +137,11 @@ export function formatSecretizeOutput(results, connectorId, options = {}) {
|
|
|
134
137
|
else if (result.action === 'placeholder') {
|
|
135
138
|
lines.push(` ⚠ placeholder detected: ${connectorId}.transport.env.${result.key}`);
|
|
136
139
|
}
|
|
140
|
+
else if (result.action === 'error') {
|
|
141
|
+
// Show encryption/storage errors clearly
|
|
142
|
+
const errorMsg = result.error ? `: ${result.error}` : '';
|
|
143
|
+
lines.push(` ✖ storage failed: ${connectorId}.transport.env.${result.key}${errorMsg}`);
|
|
144
|
+
}
|
|
137
145
|
}
|
|
138
146
|
return lines;
|
|
139
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretize.js","sourceRoot":"","sources":["../../src/secrets/secretize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,oEAAoE;AACpE,MAAM,sBAAsB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"secretize.js","sourceRoot":"","sources":["../../src/secrets/secretize.ts"],"names":[],"mappings":"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"}
|
package/dist/secrets/store.d.ts
CHANGED
|
@@ -21,6 +21,10 @@ export declare class SqliteSecretStore implements ISecretStore {
|
|
|
21
21
|
delete(id: string): Promise<boolean>;
|
|
22
22
|
list(): Promise<string[]>;
|
|
23
23
|
getMeta(id: string): Promise<SecretMeta | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Get creation timestamp for a secret
|
|
26
|
+
*/
|
|
27
|
+
getCreatedAt(id: string): Promise<Date | null>;
|
|
24
28
|
/**
|
|
25
29
|
* Get the provider type in use
|
|
26
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,UAAU,EAEV,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;AAsBpB;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,MAAM,CAAS;gBAEX,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB;IAiB9D,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,UAAU;IAMZ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0BvE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8B5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQzB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBrD;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,KAAK,IAAI,MAAM;IAQf,KAAK,IAAI,IAAI;CAMd;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAKpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,UAAU,EAEV,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;AAsBpB;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,MAAM,CAAS;gBAEX,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB;IAiB9D,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,UAAU;IAMZ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0BvE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8B5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQzB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBrD;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAapD;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,KAAK,IAAI,MAAM;IAQf,KAAK,IAAI,IAAI;CAMd;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAKpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
package/dist/secrets/store.js
CHANGED
|
@@ -129,6 +129,18 @@ export class SqliteSecretStore {
|
|
|
129
129
|
return null;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Get creation timestamp for a secret
|
|
134
|
+
*/
|
|
135
|
+
async getCreatedAt(id) {
|
|
136
|
+
this.ensureOpen();
|
|
137
|
+
const stmt = this.db.prepare(`SELECT created_at FROM secrets WHERE id = ?`);
|
|
138
|
+
const row = stmt.get(id);
|
|
139
|
+
if (!row) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
return new Date(row.created_at);
|
|
143
|
+
}
|
|
132
144
|
/**
|
|
133
145
|
* Get the provider type in use
|
|
134
146
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"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"}
|
package/dist/secrets/types.d.ts
CHANGED
|
@@ -110,7 +110,7 @@ export interface ISecretStore {
|
|
|
110
110
|
close(): void;
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
|
-
* Secret reference pattern: "dpapi:<id>" or "
|
|
113
|
+
* Secret reference pattern: "dpapi:<id>", "keychain:<id>", or "plain:<id>"
|
|
114
114
|
*/
|
|
115
115
|
export declare const SECRET_REF_PATTERN: RegExp;
|
|
116
116
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/secrets/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,kEAAkE;IAClE,WAAW,IAAI,OAAO,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAExE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/secrets/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,kEAAkE;IAClE,WAAW,IAAI,OAAO,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;;;OAIG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAExE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAA8C,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOzF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD"}
|
package/dist/secrets/types.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Uses platform-specific encryption (Windows DPAPI or keychain on macOS).
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Secret reference pattern: "dpapi:<id>" or "
|
|
8
|
+
* Secret reference pattern: "dpapi:<id>", "keychain:<id>", or "plain:<id>"
|
|
9
9
|
*/
|
|
10
|
-
export const SECRET_REF_PATTERN = /^(dpapi|keychain):([a-zA-Z0-9_-]+)$/;
|
|
10
|
+
export const SECRET_REF_PATTERN = /^(dpapi|keychain|plain):([a-zA-Z0-9_-]+)$/;
|
|
11
11
|
/**
|
|
12
12
|
* Parse a secret reference string
|
|
13
13
|
* @param ref - Reference string like "dpapi:abc123"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/secrets/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0HH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/secrets/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0HH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAiB;QAClC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAsB,EAAE,EAAU;IAC9D,OAAO,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
* - Linux: wl-paste (Wayland), fallback to xclip (X11)
|
|
11
11
|
*/
|
|
12
12
|
export declare function readClipboard(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Async wrapper for readClipboard
|
|
15
|
+
*/
|
|
16
|
+
export declare function getClipboardContent(): Promise<string>;
|
|
13
17
|
/**
|
|
14
18
|
* Check if clipboard tools are available
|
|
15
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CA+CtC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CA4B9C"}
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CA+CtC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CA4B9C"}
|
package/dist/utils/clipboard.js
CHANGED
|
@@ -52,6 +52,12 @@ export function readClipboard() {
|
|
|
52
52
|
'Hint: Use --file <path> or pipe JSON via stdin instead.');
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Async wrapper for readClipboard
|
|
57
|
+
*/
|
|
58
|
+
export async function getClipboardContent() {
|
|
59
|
+
return readClipboard();
|
|
60
|
+
}
|
|
55
61
|
/**
|
|
56
62
|
* Check if clipboard tools are available
|
|
57
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,IAAI,OAAe,CAAC;QAEpB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,OAAO;gBACV,oCAAoC;gBACpC,OAAO,GAAG,yDAAyD,CAAC;gBACpE,MAAM;YAER,KAAK,QAAQ;gBACX,iBAAiB;gBACjB,OAAO,GAAG,SAAS,CAAC;gBACpB,MAAM;YAER,KAAK,OAAO;gBACV,+DAA+D;gBAC/D,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,mCAAmC,EAAE;wBACnD,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;qBAChC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,oBAAoB;oBACpB,OAAO,GAAG,+BAA+B,CAAC;gBAC5C,CAAC;gBACD,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,IAAI;YACxC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,OAAO;gBACV,QAAQ,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YAEd,KAAK,QAAQ;gBACX,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAEd,KAAK,OAAO;gBACV,IAAI,CAAC;oBACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC9C,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC3C,OAAO,IAAI,CAAC;gBACd,CAAC;YAEH;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,IAAI,OAAe,CAAC;QAEpB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,OAAO;gBACV,oCAAoC;gBACpC,OAAO,GAAG,yDAAyD,CAAC;gBACpE,MAAM;YAER,KAAK,QAAQ;gBACX,iBAAiB;gBACjB,OAAO,GAAG,SAAS,CAAC;gBACpB,MAAM;YAER,KAAK,OAAO;gBACV,+DAA+D;gBAC/D,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,mCAAmC,EAAE;wBACnD,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;qBAChC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,oBAAoB;oBACpB,OAAO,GAAG,+BAA+B,CAAC;gBAC5C,CAAC;gBACD,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,IAAI;YACxC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,OAAO;gBACV,QAAQ,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YAEd,KAAK,QAAQ;gBACX,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAEd,KAAK,OAAO;gBACV,IAAI,CAAC;oBACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC9C,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC3C,OAAO,IAAI,CAAC;gBACd,CAAC;YAEH;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret input utilities (Phase 3.6)
|
|
3
|
+
*
|
|
4
|
+
* Provides secure methods for reading secrets from user input without echoing.
|
|
5
|
+
* Never logs, prints, or writes the secret value to disk.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Read a secret from stdin without echoing to the terminal.
|
|
9
|
+
* Uses raw mode to prevent any character display.
|
|
10
|
+
*
|
|
11
|
+
* @returns The entered secret (trimmed)
|
|
12
|
+
*/
|
|
13
|
+
export declare function readSecretHidden(): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Read a secret from the system clipboard.
|
|
16
|
+
* Trims whitespace from the result.
|
|
17
|
+
*
|
|
18
|
+
* @returns The clipboard content (trimmed)
|
|
19
|
+
* @throws Error if clipboard is empty or unavailable
|
|
20
|
+
*/
|
|
21
|
+
export declare function readSecretFromClipboard(): Promise<string>;
|
|
22
|
+
//# sourceMappingURL=secret-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-input.d.ts","sourceRoot":"","sources":["../../src/utils/secret-input.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CA8DxD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ/D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret input utilities (Phase 3.6)
|
|
3
|
+
*
|
|
4
|
+
* Provides secure methods for reading secrets from user input without echoing.
|
|
5
|
+
* Never logs, prints, or writes the secret value to disk.
|
|
6
|
+
*/
|
|
7
|
+
import * as readline from 'readline';
|
|
8
|
+
import { getClipboardContent } from './clipboard.js';
|
|
9
|
+
/**
|
|
10
|
+
* Read a secret from stdin without echoing to the terminal.
|
|
11
|
+
* Uses raw mode to prevent any character display.
|
|
12
|
+
*
|
|
13
|
+
* @returns The entered secret (trimmed)
|
|
14
|
+
*/
|
|
15
|
+
export async function readSecretHidden() {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const rl = readline.createInterface({
|
|
18
|
+
input: process.stdin,
|
|
19
|
+
output: process.stdout,
|
|
20
|
+
terminal: true,
|
|
21
|
+
});
|
|
22
|
+
// Disable echo if possible
|
|
23
|
+
if (process.stdin.isTTY) {
|
|
24
|
+
process.stdin.setRawMode(true);
|
|
25
|
+
}
|
|
26
|
+
let input = '';
|
|
27
|
+
const onData = (key) => {
|
|
28
|
+
const char = key.toString();
|
|
29
|
+
// Handle Enter (CR or LF)
|
|
30
|
+
if (char === '\r' || char === '\n') {
|
|
31
|
+
if (process.stdin.isTTY) {
|
|
32
|
+
process.stdin.setRawMode(false);
|
|
33
|
+
}
|
|
34
|
+
process.stdin.removeListener('data', onData);
|
|
35
|
+
rl.close();
|
|
36
|
+
process.stdout.write('\n');
|
|
37
|
+
resolve(input);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Handle Ctrl+C - clean up and let the process handle termination
|
|
41
|
+
if (char === '\x03') {
|
|
42
|
+
if (process.stdin.isTTY) {
|
|
43
|
+
process.stdin.setRawMode(false);
|
|
44
|
+
}
|
|
45
|
+
process.stdin.removeListener('data', onData);
|
|
46
|
+
rl.close();
|
|
47
|
+
process.stdout.write('\n');
|
|
48
|
+
// Send SIGINT to allow cleanup handlers to run
|
|
49
|
+
process.kill(process.pid, 'SIGINT');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Handle Backspace
|
|
53
|
+
if (char === '\x7f' || char === '\x08') {
|
|
54
|
+
if (input.length > 0) {
|
|
55
|
+
input = input.slice(0, -1);
|
|
56
|
+
// Don't echo anything
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Regular character
|
|
61
|
+
if (char.length === 1 && char.charCodeAt(0) >= 32) {
|
|
62
|
+
input += char;
|
|
63
|
+
// Don't echo anything
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
process.stdin.on('data', onData);
|
|
67
|
+
process.stdin.resume();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Read a secret from the system clipboard.
|
|
72
|
+
* Trims whitespace from the result.
|
|
73
|
+
*
|
|
74
|
+
* @returns The clipboard content (trimmed)
|
|
75
|
+
* @throws Error if clipboard is empty or unavailable
|
|
76
|
+
*/
|
|
77
|
+
export async function readSecretFromClipboard() {
|
|
78
|
+
const content = await getClipboardContent();
|
|
79
|
+
if (!content || content.trim().length === 0) {
|
|
80
|
+
throw new Error('Clipboard is empty');
|
|
81
|
+
}
|
|
82
|
+
return content.trim();
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=secret-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-input.js","sourceRoot":"","sources":["../../src/utils/secret-input.ts"],"names":[],"mappings":"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"}
|