creatorverse-cli 0.0.0-stage → 1.0.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.
@@ -0,0 +1,96 @@
1
+ /**
2
+ * CreatorVerse CLI Secure Credential Manager Abstraction
3
+ * Designed for Windows Credential Manager / DPAPI / encrypted storage integration.
4
+ * Prevents plaintext token storage and ensures credential redaction in logs.
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import crypto from 'crypto';
10
+ const CONFIG_DIR = path.join(os.homedir(), '.creatorverse');
11
+ const CRED_FILE = path.join(CONFIG_DIR, 'secure-vault.enc');
12
+ // Derive an encryption key based on machine context (simulating OS DPAPI / Credential Manager key protection)
13
+ function getVaultKey() {
14
+ const secret = `${os.hostname()}-${os.userInfo().username}-creatorverse-secure-vault`;
15
+ return crypto.scryptSync(secret, 'creatorverse-salt', 32);
16
+ }
17
+ export function encryptPayload(data) {
18
+ const key = getVaultKey();
19
+ const iv = crypto.randomBytes(12);
20
+ const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
21
+ const plaintext = JSON.stringify(data);
22
+ let encrypted = cipher.update(plaintext, 'utf8', 'hex');
23
+ encrypted += cipher.final('hex');
24
+ const authTag = cipher.getAuthTag().toString('hex');
25
+ return `${iv.toString('hex')}:${authTag}:${encrypted}`;
26
+ }
27
+ export function decryptPayload(vaultString) {
28
+ try {
29
+ const parts = vaultString.split(':');
30
+ if (parts.length !== 3)
31
+ return null;
32
+ const [ivHex, authTagHex, encryptedHex] = parts;
33
+ if (!ivHex || !authTagHex || !encryptedHex)
34
+ return null;
35
+ const key = getVaultKey();
36
+ const iv = Buffer.from(ivHex, 'hex');
37
+ const authTag = Buffer.from(authTagHex, 'hex');
38
+ const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
39
+ decipher.setAuthTag(authTag);
40
+ let decrypted = decipher.update(encryptedHex, 'hex', 'utf8');
41
+ decrypted += decipher.final('utf8');
42
+ return JSON.parse(decrypted);
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
48
+ export function saveSecureSession(filePath, session) {
49
+ try {
50
+ if (!fs.existsSync(CONFIG_DIR)) {
51
+ fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
52
+ }
53
+ const encrypted = encryptPayload(session);
54
+ fs.writeFileSync(filePath, encrypted, { mode: 0o600 });
55
+ }
56
+ catch (err) {
57
+ console.error(`Error saving secure session: ${err.message}`);
58
+ }
59
+ }
60
+ export function loadSecureSession(filePath) {
61
+ try {
62
+ if (fs.existsSync(filePath)) {
63
+ const encrypted = fs.readFileSync(filePath, 'utf-8');
64
+ return decryptPayload(encrypted);
65
+ }
66
+ }
67
+ catch {
68
+ // Fallback or error
69
+ }
70
+ return null;
71
+ }
72
+ export function clearSecureSession(filePath) {
73
+ try {
74
+ if (fs.existsSync(filePath)) {
75
+ fs.unlinkSync(filePath);
76
+ }
77
+ }
78
+ catch {
79
+ // Ignore
80
+ }
81
+ }
82
+ export function redactSensitiveData(obj) {
83
+ if (!obj || typeof obj !== 'object')
84
+ return obj;
85
+ const clone = Array.isArray(obj) ? [...obj] : { ...obj };
86
+ for (const key of Object.keys(clone)) {
87
+ if (clone[key] !== null && typeof clone[key] === 'object') {
88
+ clone[key] = redactSensitiveData(clone[key]);
89
+ }
90
+ else if (/token|password|secret|key|credential/i.test(key)) {
91
+ clone[key] = '[REDACTED]';
92
+ }
93
+ }
94
+ return clone;
95
+ }
96
+ //# sourceMappingURL=credentialManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentialManager.js","sourceRoot":"","sources":["../src/credentialManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CreatorVerse CLI Loopback Callback Listener
3
+ * Provides a secure, ephemeral localhost listener on 127.0.0.1:0 for browser-assisted authentication.
4
+ */
5
+ export interface PkcePair {
6
+ codeVerifier: string;
7
+ codeChallenge: string;
8
+ state: string;
9
+ }
10
+ export declare function generatePkcePair(): PkcePair;
11
+ export interface LoopbackListenerSession {
12
+ port: number;
13
+ waitForCallback: () => Promise<string>;
14
+ shutdown: () => void;
15
+ }
16
+ export declare function startLoopbackListener(expectedState: string, timeoutMs?: number): Promise<LoopbackListenerSession>;
17
+ //# sourceMappingURL=loopbackListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopbackListener.d.ts","sourceRoot":"","sources":["../src/loopbackListener.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,IAAI,QAAQ,CAS3C;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,SAAS,SAAS,GACjB,OAAO,CAAC,uBAAuB,CAAC,CAuJlC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * CreatorVerse CLI Loopback Callback Listener
3
+ * Provides a secure, ephemeral localhost listener on 127.0.0.1:0 for browser-assisted authentication.
4
+ */
5
+ import http from 'http';
6
+ import crypto from 'crypto';
7
+ export function generatePkcePair() {
8
+ // 32 bytes random verifier encoded as URL-safe base64url string
9
+ const codeVerifier = crypto.randomBytes(32).toString('base64url');
10
+ // SHA-256 hash encoded as base64url string
11
+ const codeChallenge = crypto.createHash('sha256').update(codeVerifier).digest('base64url');
12
+ // Cryptographically unpredictable 32-byte hex state
13
+ const state = crypto.randomBytes(32).toString('hex');
14
+ return { codeVerifier, codeChallenge, state };
15
+ }
16
+ export function startLoopbackListener(expectedState, timeoutMs = 120000) {
17
+ return new Promise((resolve, reject) => {
18
+ let server = null;
19
+ let timer = null;
20
+ let callbackResolve = null;
21
+ let callbackReject = null;
22
+ let pendingTicket = null;
23
+ let pendingError = null;
24
+ let closed = false;
25
+ const cleanup = () => {
26
+ if (closed)
27
+ return;
28
+ closed = true;
29
+ if (timer) {
30
+ clearTimeout(timer);
31
+ timer = null;
32
+ }
33
+ if (server) {
34
+ try {
35
+ server.close();
36
+ }
37
+ catch { }
38
+ server = null;
39
+ }
40
+ };
41
+ server = http.createServer((req, res) => {
42
+ const host = req.headers.host || '';
43
+ const [hostname] = host.split(':');
44
+ // Strict Host header validation: strictly 127.0.0.1 or localhost
45
+ if (hostname !== '127.0.0.1' && hostname !== 'localhost') {
46
+ res.writeHead(400, { 'Content-Type': 'text/plain' });
47
+ res.end('Invalid request host: loopback listener accepts connections only from 127.0.0.1 or localhost.');
48
+ return;
49
+ }
50
+ const reqUrl = new URL(req.url || '/', `http://${host}`);
51
+ if (reqUrl.pathname !== '/callback') {
52
+ res.writeHead(404, { 'Content-Type': 'text/plain' });
53
+ res.end('Not Found: CLI loopback endpoint is /callback');
54
+ return;
55
+ }
56
+ const receivedState = reqUrl.searchParams.get('state');
57
+ const ticket = reqUrl.searchParams.get('ticket');
58
+ const error = reqUrl.searchParams.get('error');
59
+ if (error) {
60
+ res.writeHead(400, { 'Content-Type': 'text/html' });
61
+ res.end(`<!DOCTYPE html><html><body style="font-family:sans-serif;text-align:center;padding:50px;background:#0f172a;color:#f8fafc;"><h1 style="color:#ef4444;">Authentication Failed</h1><p>${error}</p></body></html>`);
62
+ cleanup();
63
+ const err = new Error(`Authentication failed in browser: ${error}`);
64
+ err.code = 'BROWSER_AUTH_FAILED';
65
+ if (callbackReject) {
66
+ callbackReject(err);
67
+ }
68
+ else {
69
+ pendingError = err;
70
+ }
71
+ return;
72
+ }
73
+ if (!receivedState || receivedState !== expectedState) {
74
+ res.writeHead(403, { 'Content-Type': 'text/html' });
75
+ res.end('<!DOCTYPE html><html><body style="font-family:sans-serif;text-align:center;padding:50px;background:#0f172a;color:#f8fafc;"><h1 style="color:#ef4444;">Security Violation: State Mismatch</h1><p>State parameter verification failed. Transaction rejected.</p></body></html>');
76
+ cleanup();
77
+ const err = new Error('Security Violation: State parameter mismatch on callback.');
78
+ err.code = 'INVALID_STATE_MISMATCH';
79
+ if (callbackReject) {
80
+ callbackReject(err);
81
+ }
82
+ else {
83
+ pendingError = err;
84
+ }
85
+ return;
86
+ }
87
+ if (!ticket) {
88
+ res.writeHead(400, { 'Content-Type': 'text/html' });
89
+ res.end('<!DOCTYPE html><html><body style="font-family:sans-serif;text-align:center;padding:50px;background:#0f172a;color:#f8fafc;"><h1 style="color:#ef4444;">Missing Ticket</h1><p>No authorization ticket received.</p></body></html>');
90
+ cleanup();
91
+ const err = new Error('Missing authorization ticket on callback.');
92
+ err.code = 'MISSING_TICKET';
93
+ if (callbackReject) {
94
+ callbackReject(err);
95
+ }
96
+ else {
97
+ pendingError = err;
98
+ }
99
+ return;
100
+ }
101
+ // Successful receipt
102
+ res.writeHead(200, { 'Content-Type': 'text/html' });
103
+ res.end(`<!DOCTYPE html>
104
+ <html>
105
+ <head>
106
+ <title>CreatorVerse CLI Authentication</title>
107
+ </head>
108
+ <body style="font-family:system-ui,-apple-system,sans-serif;text-align:center;padding:50px;background:#0f172a;color:#f8fafc;">
109
+ <h1 style="color:#38bdf8;font-size:28px;">&#10003; Authentication Successful</h1>
110
+ <p style="color:#94a3b8;font-size:16px;">Authorization ticket received. You may now close this browser tab and return to your terminal.</p>
111
+ </body>
112
+ </html>`);
113
+ // Defer cleanup slightly so the HTTP response finishes sending to the browser
114
+ setTimeout(() => {
115
+ cleanup();
116
+ if (callbackResolve) {
117
+ callbackResolve(ticket);
118
+ }
119
+ else {
120
+ pendingTicket = ticket;
121
+ }
122
+ }, 50);
123
+ });
124
+ server.on('error', (err) => {
125
+ cleanup();
126
+ reject(err);
127
+ });
128
+ // Bound EXCLUSIVELY to 127.0.0.1 on OS-assigned ephemeral port (0)
129
+ server.listen(0, '127.0.0.1', () => {
130
+ const addr = server.address();
131
+ const port = addr.port;
132
+ timer = setTimeout(() => {
133
+ cleanup();
134
+ const timeoutErr = new Error(`Authentication timed out after ${timeoutMs}ms. No callback was received.`);
135
+ timeoutErr.code = 'AUTH_TIMEOUT';
136
+ if (callbackReject) {
137
+ callbackReject(timeoutErr);
138
+ }
139
+ else {
140
+ pendingError = timeoutErr;
141
+ }
142
+ }, timeoutMs);
143
+ const waitForCallback = () => {
144
+ if (pendingError)
145
+ return Promise.reject(pendingError);
146
+ if (pendingTicket)
147
+ return Promise.resolve(pendingTicket);
148
+ return new Promise((res, rej) => {
149
+ callbackResolve = res;
150
+ callbackReject = rej;
151
+ });
152
+ };
153
+ resolve({
154
+ port,
155
+ waitForCallback,
156
+ shutdown: cleanup,
157
+ });
158
+ });
159
+ });
160
+ }
161
+ //# sourceMappingURL=loopbackListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopbackListener.js","sourceRoot":"","sources":["../src/loopbackListener.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,31 @@
1
1
  {
2
2
  "name": "creatorverse-cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.3",
4
+ "description": "CreatorVerse Network User and Admin Command-Line Interface Tools",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "dist/creatorverse.js",
8
+ "types": "dist/creatorverse.d.ts",
9
+ "bin": {
10
+ "creatorverse": "./dist/creatorverse.js",
11
+ "creatorverse-admin": "./dist/creatorverse-admin.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "bin",
16
+ "README.md"
17
+ ],
18
+ "engines": {
19
+ "node": ">=18.0.0"
20
+ },
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.json",
23
+ "prepack": "npm run build",
24
+ "pack:local": "npm pack"
25
+ },
26
+ "dependencies": {},
27
+ "devDependencies": {
28
+ "@types/node": "^22.14.0",
29
+ "typescript": "~5.7.3"
30
+ }
31
+ }