@quantiya/codevibe-core 1.0.0
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/README.md +178 -0
- package/bin/codevibe.js +7 -0
- package/dist/appsync/appsync-client.d.ts +132 -0
- package/dist/appsync/appsync-client.js +568 -0
- package/dist/appsync/index.d.ts +2 -0
- package/dist/appsync/index.js +10 -0
- package/dist/appsync/queries.d.ts +16 -0
- package/dist/appsync/queries.js +189 -0
- package/dist/auth/auth-cli.d.ts +5 -0
- package/dist/auth/auth-cli.js +217 -0
- package/dist/auth/auth-service.d.ts +53 -0
- package/dist/auth/auth-service.js +310 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +9 -0
- package/dist/config/config.d.ts +53 -0
- package/dist/config/config.js +123 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +8 -0
- package/dist/crypto/crypto-service.d.ts +118 -0
- package/dist/crypto/crypto-service.js +284 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.js +9 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +68 -0
- package/dist/keychain/index.d.ts +1 -0
- package/dist/keychain/index.js +8 -0
- package/dist/keychain/keychain-manager.d.ts +125 -0
- package/dist/keychain/keychain-manager.js +375 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.js +8 -0
- package/dist/logger/logger.d.ts +35 -0
- package/dist/logger/logger.js +142 -0
- package/dist/prompt-parser.d.ts +39 -0
- package/dist/prompt-parser.js +236 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.js +7 -0
- package/dist/session/session-resume.d.ts +55 -0
- package/dist/session/session-resume.js +151 -0
- package/dist/types/auth.d.ts +15 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/encryption.d.ts +54 -0
- package/dist/types/encryption.js +3 -0
- package/dist/types/events.d.ts +74 -0
- package/dist/types/events.js +28 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +22 -0
- package/dist/types/session.d.ts +59 -0
- package/dist/types/session.js +22 -0
- package/package.json +51 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Centralized session resume/create logic for all CodeVibe plugins.
|
|
4
|
+
*
|
|
5
|
+
* All three plugins (Claude, Codex, Gemini) need the same pattern:
|
|
6
|
+
* 1. Check if session exists in backend (getSession)
|
|
7
|
+
* 2. If exists: reactivate + restore E2E session key from encryptedKeys
|
|
8
|
+
* 3. If not exists: generate encryption keys + create session
|
|
9
|
+
*
|
|
10
|
+
* This module eliminates the duplication across plugins.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.prepareSessionEncryption = prepareSessionEncryption;
|
|
14
|
+
exports.resumeOrCreateSession = resumeOrCreateSession;
|
|
15
|
+
const crypto_1 = require("../crypto");
|
|
16
|
+
const keychain_1 = require("../keychain");
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
/**
|
|
19
|
+
* Prepare E2E encryption for a new session.
|
|
20
|
+
*
|
|
21
|
+
* Generates a random session key and encrypts it for all registered devices.
|
|
22
|
+
* Does NOT cache the session key — callers should cache only after the session
|
|
23
|
+
* is successfully created in the backend.
|
|
24
|
+
*
|
|
25
|
+
* @returns Encryption data or null if no device keys found / error
|
|
26
|
+
*/
|
|
27
|
+
async function prepareSessionEncryption(sessionId, appSyncClient, logger) {
|
|
28
|
+
try {
|
|
29
|
+
const deviceKeys = await appSyncClient.listUserDeviceKeys();
|
|
30
|
+
if (deviceKeys.length === 0) {
|
|
31
|
+
logger.info('No device keys found, session will not be encrypted');
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
logger.info('Preparing session encryption', {
|
|
35
|
+
sessionId,
|
|
36
|
+
deviceCount: deviceKeys.length,
|
|
37
|
+
});
|
|
38
|
+
const { sessionKey, encryptedKeys } = keychain_1.keychainManager.createSessionKey(deviceKeys);
|
|
39
|
+
logger.info('Session encryption prepared', {
|
|
40
|
+
sessionId,
|
|
41
|
+
deviceCount: encryptedKeys.length,
|
|
42
|
+
});
|
|
43
|
+
return { sessionKey, encryptedKeys };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
logger.warn('Failed to prepare session encryption:', error);
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resume an existing session or create a new one.
|
|
52
|
+
*
|
|
53
|
+
* Resume path (session exists in backend):
|
|
54
|
+
* - Reactivates session (status → ACTIVE)
|
|
55
|
+
* - Restores E2E session key from encryptedKeys
|
|
56
|
+
*
|
|
57
|
+
* Create path (session does not exist):
|
|
58
|
+
* - Prepares E2E encryption (generates key, encrypts for all devices)
|
|
59
|
+
* - Encrypts projectPath and metadata
|
|
60
|
+
* - Creates session in backend
|
|
61
|
+
* - Caches session key only after successful creation
|
|
62
|
+
*
|
|
63
|
+
* @throws Propagates createSession errors (e.g., SESSION_LIMIT_EXCEEDED)
|
|
64
|
+
*/
|
|
65
|
+
async function resumeOrCreateSession(input, appSyncClient, logger) {
|
|
66
|
+
const { sessionId, userId, agentType, projectPath, metadata } = input;
|
|
67
|
+
// Check if session already exists in backend
|
|
68
|
+
let existingSession = null;
|
|
69
|
+
try {
|
|
70
|
+
existingSession = await appSyncClient.getSession(sessionId);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
logger.warn('Failed to get session (will attempt to create new)', { sessionId, error });
|
|
74
|
+
}
|
|
75
|
+
if (existingSession) {
|
|
76
|
+
// RESUME PATH: reactivate existing session and restore session key
|
|
77
|
+
logger.info('Session exists in backend - reactivating', {
|
|
78
|
+
sessionId,
|
|
79
|
+
previousStatus: existingSession.status,
|
|
80
|
+
});
|
|
81
|
+
try {
|
|
82
|
+
await appSyncClient.updateSession({
|
|
83
|
+
sessionId,
|
|
84
|
+
status: types_1.SessionStatus.ACTIVE,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
logger.warn('Failed to reactivate existing session, will continue', { sessionId, error });
|
|
89
|
+
}
|
|
90
|
+
// Restore session key from encryptedKeys
|
|
91
|
+
let sessionKey = null;
|
|
92
|
+
const encryptedKeys = existingSession.encryptedKeys;
|
|
93
|
+
if (existingSession.isEncrypted && encryptedKeys?.length) {
|
|
94
|
+
try {
|
|
95
|
+
const cachedKey = await keychain_1.keychainManager.getSessionKey(sessionId, encryptedKeys);
|
|
96
|
+
if (cachedKey) {
|
|
97
|
+
sessionKey = cachedKey;
|
|
98
|
+
keychain_1.keychainManager.cacheSessionKey(sessionId, cachedKey);
|
|
99
|
+
logger.info('Session key retrieved for resumed session', { sessionId });
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
logger.warn('No encrypted key for this device; proceeding without decryption', { sessionId });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logger.warn('Failed to retrieve session key for resumed session', { sessionId, error });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { resumed: true, sessionKey };
|
|
110
|
+
}
|
|
111
|
+
// NEW SESSION PATH: prepare encryption and create
|
|
112
|
+
const encryptionData = await prepareSessionEncryption(sessionId, appSyncClient, logger);
|
|
113
|
+
let sessionProjectPath = projectPath;
|
|
114
|
+
let sessionMetadata = metadata;
|
|
115
|
+
if (encryptionData) {
|
|
116
|
+
sessionProjectPath = crypto_1.cryptoService.encryptContent(projectPath, encryptionData.sessionKey);
|
|
117
|
+
if (sessionMetadata && Object.keys(sessionMetadata).length > 0) {
|
|
118
|
+
const encryptedMeta = crypto_1.cryptoService.encryptMetadata(sessionMetadata, encryptionData.sessionKey);
|
|
119
|
+
sessionMetadata = { encrypted: encryptedMeta };
|
|
120
|
+
}
|
|
121
|
+
logger.info('Session data encrypted', { sessionId });
|
|
122
|
+
}
|
|
123
|
+
logger.info('Creating new session in backend', {
|
|
124
|
+
sessionId,
|
|
125
|
+
userId,
|
|
126
|
+
agentType,
|
|
127
|
+
isEncrypted: !!encryptionData,
|
|
128
|
+
});
|
|
129
|
+
// createSession errors propagate to caller (e.g., SESSION_LIMIT_EXCEEDED)
|
|
130
|
+
await appSyncClient.createSession({
|
|
131
|
+
sessionId,
|
|
132
|
+
userId,
|
|
133
|
+
agentType,
|
|
134
|
+
projectPath: sessionProjectPath,
|
|
135
|
+
status: types_1.SessionStatus.ACTIVE,
|
|
136
|
+
metadata: sessionMetadata,
|
|
137
|
+
// E2E encryption fields
|
|
138
|
+
isEncrypted: encryptionData ? true : undefined,
|
|
139
|
+
creatorDeviceId: encryptionData ? await keychain_1.keychainManager.getDeviceId() : undefined,
|
|
140
|
+
encryptionVersion: encryptionData ? 1 : undefined,
|
|
141
|
+
encryptedKeys: encryptionData?.encryptedKeys,
|
|
142
|
+
});
|
|
143
|
+
const sessionKey = encryptionData?.sessionKey || null;
|
|
144
|
+
// Cache session key AFTER successful creation (avoids premature caching bug)
|
|
145
|
+
if (encryptionData) {
|
|
146
|
+
keychain_1.keychainManager.cacheSessionKey(sessionId, encryptionData.sessionKey);
|
|
147
|
+
}
|
|
148
|
+
logger.info('Session created', { sessionId, userId, isEncrypted: !!encryptionData });
|
|
149
|
+
return { resumed: false, sessionKey };
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1yZXN1bWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Vzc2lvbi9zZXNzaW9uLXJlc3VtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOztBQW9DSCw0REE4QkM7QUFpQkQsc0RBbUdDO0FBbkxELHNDQUEwQztBQUMxQywwQ0FBOEM7QUFFOUMsb0NBSWtCO0FBaUJsQjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsU0FBaUIsRUFDakIsYUFBNEIsRUFDNUIsTUFBYztJQUVkLElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFNUQsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMscURBQXFELENBQUMsQ0FBQztZQUNuRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQzFDLFNBQVM7WUFDVCxXQUFXLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDL0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRywwQkFBZSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5GLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDekMsU0FBUztZQUNULFdBQVcsRUFBRSxhQUFhLENBQUMsTUFBTTtTQUNsQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENB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QUMsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUVyRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDZW50cmFsaXplZCBzZXNzaW9uIHJlc3VtZS9jcmVhdGUgbG9naWMgZm9yIGFsbCBDb2RlVmliZSBwbHVnaW5zLlxuICpcbiAqIEFsbCB0aHJlZSBwbHVnaW5zIChDbGF1ZGUsIENvZGV4LCBHZW1pbmkpIG5lZWQgdGhlIHNhbWUgcGF0dGVybjpcbiAqIDEuIENoZWNrIGlmIHNlc3Npb24gZXhpc3RzIGluIGJhY2tlbmQgKGdldFNlc3Npb24pXG4gKiAyLiBJZiBleGlzdHM6IHJlYWN0aXZhdGUgKyByZXN0b3JlIEUyRSBzZXNzaW9uIGtleSBmcm9tIGVuY3J5cHRlZEtleXNcbiAqIDMuIElmIG5vdCBleGlzdHM6IGdlbmVyYXRlIGVuY3J5cHRpb24ga2V5cyArIGNyZWF0ZSBzZXNzaW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZWxpbWluYXRlcyB0aGUgZHVwbGljYXRpb24gYWNyb3NzIHBsdWdpbnMuXG4gKi9cblxuaW1wb3J0IHsgQXBwU3luY0NsaWVudCB9IGZyb20gJy4uL2FwcHN5bmMnO1xuaW1wb3J0IHsgY3J5cHRvU2VydmljZSB9IGZyb20gJy4uL2NyeXB0byc7XG5pbXBvcnQgeyBrZXljaGFpbk1hbmFnZXIgfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQWdlbnRUeXBlLFxuICBTZXNzaW9uU3RhdHVzLFxuICBFbmNyeXB0ZWRTZXNzaW9uS2V5LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lT3JDcmVhdGVTZXNzaW9uSW5wdXQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFnZW50VHlwZTogQWdlbnRUeXBlO1xuICBwcm9qZWN0UGF0aDogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lT3JDcmVhdGVTZXNzaW9uUmVzdWx0IHtcbiAgLyoqIFdoZXRoZXIgYW4gZXhpc3Rpbmcgc2Vzc2lvbiB3YXMgZm91bmQgYW5kIHJlYWN0aXZhdGVkICovXG4gIHJlc3VtZWQ6IGJvb2xlYW47XG4gIC8qKiBUaGUgRTJFIHNlc3Npb24ga2V5IChmb3IgZW5jcnlwdGluZy9kZWNyeXB0aW5nIGV2ZW50cyksIG9yIG51bGwgaWYgbm8gZW5jcnlwdGlvbiAqL1xuICBzZXNzaW9uS2V5OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFByZXBhcmUgRTJFIGVuY3J5cHRpb24gZm9yIGEgbmV3IHNlc3Npb24uXG4gKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIHNlc3Npb24ga2V5IGFuZCBlbmNyeXB0cyBpdCBmb3IgYWxsIHJlZ2lzdGVyZWQgZGV2aWNlcy5cbiAqIERvZXMgTk9UIGNhY2hlIHRoZSBzZXNzaW9uIGtleSDigJQgY2FsbGVycyBzaG91bGQgY2FjaGUgb25seSBhZnRlciB0aGUgc2Vzc2lvblxuICogaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQuXG4gKlxuICogQHJldHVybnMgRW5jcnlwdGlvbiBkYXRhIG9yIG51bGwgaWYgbm8gZGV2aWNlIGtleXMgZm91bmQgLyBlcnJvclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVNlc3Npb25FbmNyeXB0aW9uKFxuICBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgYXBwU3luY0NsaWVudDogQXBwU3luY0NsaWVudCxcbiAgbG9nZ2VyOiBMb2dnZXIsXG4pOiBQcm9taXNlPHsgc2Vzc2lvbktleTogc3RyaW5nOyBlbmNyeXB0ZWRLZXlzOiBFbmNyeXB0ZWRTZXNzaW9uS2V5W10gfSB8IG51bGw+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZXZpY2VLZXlzID0gYXdhaXQgYXBwU3luY0NsaWVudC5saXN0VXNlckRldmljZUtleXMoKTtcblxuICAgIGlmIChkZXZpY2VLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ05vIGRldmljZSBrZXlzIGZvdW5kLCBzZXNzaW9uIHdpbGwgbm90IGJlIGVuY3J5cHRlZCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oJ1ByZXBhcmluZyBzZXNzaW9uIGVuY3J5cHRpb24nLCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBkZXZpY2VDb3VudDogZGV2aWNlS2V5cy5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHNlc3Npb25LZXksIGVuY3J5cHRlZEtleXMgfSA9IGtleWNoYWluTWFuYWdlci5jcmVhdGVTZXNzaW9uS2V5KGRldmljZUtleXMpO1xuXG4gICAgbG9nZ2VyLmluZm8oJ1Nlc3Npb24gZW5jcnlwdGlvbiBwcmVwYXJlZCcsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIGRldmljZUNvdW50OiBlbmNyeXB0ZWRLZXlzLmxlbmd0aCxcbiAgICB9KTtcblxuICAgIHJldHVybiB7IHNlc3Npb25LZXksIGVuY3J5cHRlZEtleXMgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIud2FybignRmFpbGVkIHRvIHByZXBhcmUgc2Vzc2lvbiBlbmNyeXB0aW9uOicsIGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFJlc3VtZSBhbiBleGlzdGluZyBzZXNzaW9uIG9yIGNyZWF0ZSBhIG5ldyBvbmUuXG4gKlxuICogUmVzdW1lIHBhdGggKHNlc3Npb24gZXhpc3RzIGluIGJhY2tlbmQpOlxuICogICAtIFJlYWN0aXZhdGVzIHNlc3Npb24gKHN0YXR1cyDihpIgQUNUSVZFKVxuICogICAtIFJlc3RvcmVzIEUyRSBzZXNzaW9uIGtleSBmcm9tIGVuY3J5cHRlZEtleXNcbiAqXG4gKiBDcmVhdGUgcGF0aCAoc2Vzc2lvbiBkb2VzIG5vdCBleGlzdCk6XG4gKiAgIC0gUHJlcGFyZXMgRTJFIGVuY3J5cHRpb24gKGdlbmVyYXRlcyBrZXksIGVuY3J5cHRzIGZvciBhbGwgZGV2aWNlcylcbiAqICAgLSBFbmNyeXB0cyBwcm9qZWN0UGF0aCBhbmQgbWV0YWRhdGFcbiAqICAgLSBDcmVhdGVzIHNlc3Npb24gaW4gYmFja2VuZFxuICogICAtIENhY2hlcyBzZXNzaW9uIGtleSBvbmx5IGFmdGVyIHN1Y2Nlc3NmdWwgY3JlYXRpb25cbiAqXG4gKiBAdGhyb3dzIFByb3BhZ2F0ZXMgY3JlYXRlU2Vzc2lvbiBlcnJvcnMgKGUuZy4sIFNFU1NJT05fTElNSVRfRVhDRUVERUQpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXN1bWVPckNyZWF0ZVNlc3Npb24oXG4gIGlucHV0OiBSZXN1bWVPckNyZWF0ZVNlc3Npb25JbnB1dCxcbiAgYXBwU3luY0NsaWVudDogQXBwU3luY0NsaWVudCxcbiAgbG9nZ2VyOiBMb2dnZXIsXG4pOiBQcm9taXNlPFJlc3VtZU9yQ3JlYXRlU2Vzc2lvblJlc3VsdD4ge1xuICBjb25zdCB7IHNlc3Npb25JZCwgdXNlcklkLCBhZ2VudFR5cGUsIHByb2plY3RQYXRoLCBtZXRhZGF0YSB9ID0gaW5wdXQ7XG5cbiAgLy8gQ2hlY2sgaWYgc2Vzc2lvbiBhbHJlYWR5IGV4aXN0cyBpbiBiYWNrZW5kXG4gIGxldCBleGlzdGluZ1Nlc3Npb24gPSBudWxsO1xuICB0cnkge1xuICAgIGV4aXN0aW5nU2Vzc2lvbiA9IGF3YWl0IGFwcFN5bmNDbGllbnQuZ2V0U2Vzc2lvbihzZXNzaW9uSWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gZ2V0IHNlc3Npb24gKHdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgbmV3KScsIHsgc2Vzc2lvbklkLCBlcnJvciB9KTtcbiAgfVxuXG4gIGlmIChleGlzdGluZ1Nlc3Npb24pIHtcbiAgICAvLyBSRVNVTUUgUEFUSDogcmVhY3RpdmF0ZSBleGlzdGluZyBzZXNzaW9uIGFuZCByZXN0b3JlIHNlc3Npb24ga2V5XG4gICAgbG9nZ2VyLmluZm8oJ1Nlc3Npb24gZXhpc3RzIGluIGJhY2tlbmQgLSByZWFjdGl2YXRpbmcnLCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwcmV2aW91c1N0YXR1czogZXhpc3RpbmdTZXNzaW9uLnN0YXR1cyxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhcHBTeW5jQ2xpZW50LnVwZGF0ZVNlc3Npb24oe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHN0YXR1czogU2Vzc2lvblN0YXR1cy5BQ1RJVkUsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byByZWFjdGl2YXRlIGV4aXN0aW5nIHNlc3Npb24sIHdpbGwgY29udGludWUnLCB7IHNlc3Npb25JZCwgZXJyb3IgfSk7XG4gICAgfVxuXG4gICAgLy8gUmVzdG9yZSBzZXNzaW9uIGtleSBmcm9tIGVuY3J5cHRlZEtleXNcbiAgICBsZXQgc2Vzc2lvbktleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgZW5jcnlwdGVkS2V5cyA9IGV4aXN0aW5nU2Vzc2lvbi5lbmNyeXB0ZWRLZXlzO1xuICAgIGlmIChleGlzdGluZ1Nlc3Npb24uaXNFbmNyeXB0ZWQgJiYgZW5jcnlwdGVkS2V5cz8ubGVuZ3RoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjYWNoZWRLZXkgPSBhd2FpdCBrZXljaGFpbk1hbmFnZXIuZ2V0U2Vzc2lvbktleShzZXNzaW9uSWQsIGVuY3J5cHRlZEtleXMpO1xuICAgICAgICBpZiAoY2FjaGVkS2V5KSB7XG4gICAgICAgICAgc2Vzc2lvbktleSA9IGNhY2hlZEtleTtcbiAgICAgICAgICBrZXljaGFpbk1hbmFnZXIuY2FjaGVTZXNzaW9uS2V5KHNlc3Npb25JZCwgY2FjaGVkS2V5KTtcbiAgICAgICAgICBsb2dnZXIuaW5mbygnU2Vzc2lvbiBrZXkgcmV0cmlldmVkIGZvciByZXN1bWVkIHNlc3Npb24nLCB7IHNlc3Npb25JZCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIud2FybignTm8gZW5jcnlwdGVkIGtleSBmb3IgdGhpcyBkZXZpY2U7IHByb2NlZWRpbmcgd2l0aG91dCBkZWNyeXB0aW9uJywgeyBzZXNzaW9uSWQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gcmV0cmlldmUgc2Vzc2lvbiBrZXkgZm9yIHJlc3VtZWQgc2Vzc2lvbicsIHsgc2Vzc2lvbklkLCBlcnJvciB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyByZXN1bWVkOiB0cnVlLCBzZXNzaW9uS2V5IH07XG4gIH1cblxuICAvLyBORVcgU0VTU0lPTiBQQVRIOiBwcmVwYXJlIGVuY3J5cHRpb24gYW5kIGNyZWF0ZVxuICBjb25zdCBlbmNyeXB0aW9uRGF0YSA9IGF3YWl0IHByZXBhcmVTZXNzaW9uRW5jcnlwdGlvbihzZXNzaW9uSWQsIGFwcFN5bmNDbGllbnQsIGxvZ2dlcik7XG5cbiAgbGV0IHNlc3Npb25Qcm9qZWN0UGF0aCA9IHByb2plY3RQYXRoO1xuICBsZXQgc2Vzc2lvbk1ldGFkYXRhID0gbWV0YWRhdGE7XG5cbiAgaWYgKGVuY3J5cHRpb25EYXRhKSB7XG4gICAgc2Vzc2lvblByb2plY3RQYXRoID0gY3J5cHRvU2VydmljZS5lbmNyeXB0Q29udGVudChwcm9qZWN0UGF0aCwgZW5jcnlwdGlvbkRhdGEuc2Vzc2lvbktleSk7XG4gICAgaWYgKHNlc3Npb25NZXRhZGF0YSAmJiBPYmplY3Qua2V5cyhzZXNzaW9uTWV0YWRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRlZE1ldGEgPSBjcnlwdG9TZXJ2aWNlLmVuY3J5cHRNZXRhZGF0YShzZXNzaW9uTWV0YWRhdGEsIGVuY3J5cHRpb25EYXRhLnNlc3Npb25LZXkpO1xuICAgICAgc2Vzc2lvbk1ldGFkYXRhID0geyBlbmNyeXB0ZWQ6IGVuY3J5cHRlZE1ldGEgfTtcbiAgICB9XG4gICAgbG9nZ2VyLmluZm8oJ1Nlc3Npb24gZGF0YSBlbmNyeXB0ZWQnLCB7IHNlc3Npb25JZCB9KTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdDcmVhdGluZyBuZXcgc2Vzc2lvbiBpbiBiYWNrZW5kJywge1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgYWdlbnRUeXBlLFxuICAgIGlzRW5jcnlwdGVkOiAhIWVuY3J5cHRpb25EYXRhLFxuICB9KTtcblxuICAvLyBjcmVhdGVTZXNzaW9uIGVycm9ycyBwcm9wYWdhdGUgdG8gY2FsbGVyIChlLmcuLCBTRVNTSU9OX0xJTUlUX0VYQ0VFREVEKVxuICBhd2FpdCBhcHBTeW5jQ2xpZW50LmNyZWF0ZVNlc3Npb24oe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgYWdlbnRUeXBlLFxuICAgIHByb2plY3RQYXRoOiBzZXNzaW9uUHJvamVjdFBhdGgsXG4gICAgc3RhdHVzOiBTZXNzaW9uU3RhdHVzLkFDVElWRSxcbiAgICBtZXRhZGF0YTogc2Vzc2lvbk1ldGFkYXRhLFxuICAgIC8vIEUyRSBlbmNyeXB0aW9uIGZpZWxkc1xuICAgIGlzRW5jcnlwdGVkOiBlbmNyeXB0aW9uRGF0YSA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgY3JlYXRvckRldmljZUlkOiBlbmNyeXB0aW9uRGF0YSA/IGF3YWl0IGtleWNoYWluTWFuYWdlci5nZXREZXZpY2VJZCgpIDogdW5kZWZpbmVkLFxuICAgIGVuY3J5cHRpb25WZXJzaW9uOiBlbmNyeXB0aW9uRGF0YSA/IDEgOiB1bmRlZmluZWQsXG4gICAgZW5jcnlwdGVkS2V5czogZW5jcnlwdGlvbkRhdGE/LmVuY3J5cHRlZEtleXMsXG4gIH0pO1xuXG4gIGNvbnN0IHNlc3Npb25LZXkgPSBlbmNyeXB0aW9uRGF0YT8uc2Vzc2lvbktleSB8fCBudWxsO1xuXG4gIC8vIENhY2hlIHNlc3Npb24ga2V5IEFGVEVSIHN1Y2Nlc3NmdWwgY3JlYXRpb24gKGF2b2lkcyBwcmVtYXR1cmUgY2FjaGluZyBidWcpXG4gIGlmIChlbmNyeXB0aW9uRGF0YSkge1xuICAgIGtleWNoYWluTWFuYWdlci5jYWNoZVNlc3Npb25LZXkoc2Vzc2lvbklkLCBlbmNyeXB0aW9uRGF0YS5zZXNzaW9uS2V5KTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdTZXNzaW9uIGNyZWF0ZWQnLCB7IHNlc3Npb25JZCwgdXNlcklkLCBpc0VuY3J5cHRlZDogISFlbmNyeXB0aW9uRGF0YSB9KTtcblxuICByZXR1cm4geyByZXN1bWVkOiBmYWxzZSwgc2Vzc2lvbktleSB9O1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stored OAuth tokens
|
|
3
|
+
*/
|
|
4
|
+
export interface TokenData {
|
|
5
|
+
accessToken: string;
|
|
6
|
+
idToken: string;
|
|
7
|
+
refreshToken: string;
|
|
8
|
+
expiresAt: number;
|
|
9
|
+
userId: string;
|
|
10
|
+
email: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Environment configuration
|
|
14
|
+
*/
|
|
15
|
+
export type Environment = 'development' | 'production';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0b3JlZCBPQXV0aCB0b2tlbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbkRhdGEge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbic7XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypted session key for E2E encryption
|
|
3
|
+
*/
|
|
4
|
+
export interface EncryptedSessionKey {
|
|
5
|
+
deviceId: string;
|
|
6
|
+
encryptedKey: string;
|
|
7
|
+
ephemeralPublicKey: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Device key stored with backend
|
|
11
|
+
*/
|
|
12
|
+
export interface DeviceKey {
|
|
13
|
+
userId: string;
|
|
14
|
+
deviceId: string;
|
|
15
|
+
publicKey: string;
|
|
16
|
+
platform: string;
|
|
17
|
+
deviceName?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
lastUsedAt?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Key pair for ECDH
|
|
23
|
+
*/
|
|
24
|
+
export interface KeyPair {
|
|
25
|
+
privateKey: string;
|
|
26
|
+
publicKey: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Device identity stored in keychain
|
|
30
|
+
*/
|
|
31
|
+
export interface DeviceIdentity {
|
|
32
|
+
deviceId: string;
|
|
33
|
+
privateKey: string;
|
|
34
|
+
publicKey: string;
|
|
35
|
+
createdAt: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* GraphQL input for registering device key
|
|
39
|
+
*/
|
|
40
|
+
export interface RegisterDeviceKeyInput {
|
|
41
|
+
deviceId: string;
|
|
42
|
+
publicKey: string;
|
|
43
|
+
platform: string;
|
|
44
|
+
deviceName?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* GraphQL input for granting session key
|
|
48
|
+
*/
|
|
49
|
+
export interface GrantSessionKeyInput {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
deviceId: string;
|
|
52
|
+
encryptedKey: string;
|
|
53
|
+
ephemeralPublicKey: string;
|
|
54
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lbmNyeXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVuY3J5cHRlZCBzZXNzaW9uIGtleSBmb3IgRTJFIGVuY3J5cHRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0ZWRTZXNzaW9uS2V5IHtcbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgZW5jcnlwdGVkS2V5OiBzdHJpbmc7XG4gIGVwaGVtZXJhbFB1YmxpY0tleTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldmljZSBrZXkgc3RvcmVkIHdpdGggYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUtleSB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcGxhdGZvcm06IHN0cmluZztcbiAgZGV2aWNlTmFtZT86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIGxhc3RVc2VkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogS2V5IHBhaXIgZm9yIEVDREhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQYWlyIHtcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICBwdWJsaWNLZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXZpY2UgaWRlbnRpdHkgc3RvcmVkIGluIGtleWNoYWluXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlSWRlbnRpdHkge1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHcmFwaFFMIGlucHV0IGZvciByZWdpc3RlcmluZyBkZXZpY2Uga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VLZXlJbnB1dCB7XG4gIGRldmljZUlkOiBzdHJpbmc7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwbGF0Zm9ybTogc3RyaW5nO1xuICBkZXZpY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdyYXBoUUwgaW5wdXQgZm9yIGdyYW50aW5nIHNlc3Npb24ga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhbnRTZXNzaW9uS2V5SW5wdXQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgZW5jcnlwdGVkS2V5OiBzdHJpbmc7XG4gIGVwaGVtZXJhbFB1YmxpY0tleTogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event types matching GraphQL schema
|
|
3
|
+
*/
|
|
4
|
+
export declare enum EventType {
|
|
5
|
+
USER_PROMPT = "USER_PROMPT",
|
|
6
|
+
ASSISTANT_RESPONSE = "ASSISTANT_RESPONSE",
|
|
7
|
+
TOOL_USE = "TOOL_USE",
|
|
8
|
+
NOTIFICATION = "NOTIFICATION",
|
|
9
|
+
INTERACTIVE_PROMPT = "INTERACTIVE_PROMPT",
|
|
10
|
+
PROMPT_RESPONSE = "PROMPT_RESPONSE",
|
|
11
|
+
REASONING = "REASONING"
|
|
12
|
+
}
|
|
13
|
+
export declare enum EventSource {
|
|
14
|
+
DESKTOP = "DESKTOP",
|
|
15
|
+
MOBILE = "MOBILE"
|
|
16
|
+
}
|
|
17
|
+
export declare enum DeliveryStatus {
|
|
18
|
+
SENT = "SENT",
|
|
19
|
+
DELIVERED = "DELIVERED",
|
|
20
|
+
EXECUTED = "EXECUTED"
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Attachment type (for images/files attached to messages)
|
|
24
|
+
*/
|
|
25
|
+
export interface Attachment {
|
|
26
|
+
id: string;
|
|
27
|
+
type: string;
|
|
28
|
+
filename?: string;
|
|
29
|
+
s3Key: string;
|
|
30
|
+
size?: number;
|
|
31
|
+
width?: number;
|
|
32
|
+
height?: number;
|
|
33
|
+
isEncrypted?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Event type
|
|
37
|
+
*/
|
|
38
|
+
export interface Event {
|
|
39
|
+
eventId: string;
|
|
40
|
+
sessionId: string;
|
|
41
|
+
type: EventType;
|
|
42
|
+
source: EventSource;
|
|
43
|
+
content: string;
|
|
44
|
+
timestamp: string;
|
|
45
|
+
metadata?: Record<string, any>;
|
|
46
|
+
promptId?: string;
|
|
47
|
+
attachments?: Attachment[];
|
|
48
|
+
deliveryStatus?: DeliveryStatus;
|
|
49
|
+
deliveredAt?: string;
|
|
50
|
+
executedAt?: string;
|
|
51
|
+
isEncrypted?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* GraphQL input for creating events
|
|
55
|
+
*/
|
|
56
|
+
export interface CreateEventInput {
|
|
57
|
+
sessionId: string;
|
|
58
|
+
type: EventType;
|
|
59
|
+
source: EventSource;
|
|
60
|
+
content: string;
|
|
61
|
+
metadata?: Record<string, any>;
|
|
62
|
+
promptId?: string;
|
|
63
|
+
timestamp?: string;
|
|
64
|
+
isEncrypted?: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* GraphQL input for updating event status
|
|
68
|
+
*/
|
|
69
|
+
export interface UpdateEventStatusInput {
|
|
70
|
+
eventId: string;
|
|
71
|
+
sessionId: string;
|
|
72
|
+
timestamp: string;
|
|
73
|
+
deliveryStatus: DeliveryStatus;
|
|
74
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeliveryStatus = exports.EventSource = exports.EventType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Event types matching GraphQL schema
|
|
6
|
+
*/
|
|
7
|
+
var EventType;
|
|
8
|
+
(function (EventType) {
|
|
9
|
+
EventType["USER_PROMPT"] = "USER_PROMPT";
|
|
10
|
+
EventType["ASSISTANT_RESPONSE"] = "ASSISTANT_RESPONSE";
|
|
11
|
+
EventType["TOOL_USE"] = "TOOL_USE";
|
|
12
|
+
EventType["NOTIFICATION"] = "NOTIFICATION";
|
|
13
|
+
EventType["INTERACTIVE_PROMPT"] = "INTERACTIVE_PROMPT";
|
|
14
|
+
EventType["PROMPT_RESPONSE"] = "PROMPT_RESPONSE";
|
|
15
|
+
EventType["REASONING"] = "REASONING";
|
|
16
|
+
})(EventType || (exports.EventType = EventType = {}));
|
|
17
|
+
var EventSource;
|
|
18
|
+
(function (EventSource) {
|
|
19
|
+
EventSource["DESKTOP"] = "DESKTOP";
|
|
20
|
+
EventSource["MOBILE"] = "MOBILE";
|
|
21
|
+
})(EventSource || (exports.EventSource = EventSource = {}));
|
|
22
|
+
var DeliveryStatus;
|
|
23
|
+
(function (DeliveryStatus) {
|
|
24
|
+
DeliveryStatus["SENT"] = "SENT";
|
|
25
|
+
DeliveryStatus["DELIVERED"] = "DELIVERED";
|
|
26
|
+
DeliveryStatus["EXECUTED"] = "EXECUTED";
|
|
27
|
+
})(DeliveryStatus || (exports.DeliveryStatus = DeliveryStatus = {}));
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILElBQVksU0FRWDtBQVJELFdBQVksU0FBUztJQUNuQix3Q0FBMkIsQ0FBQTtJQUMzQixzREFBeUMsQ0FBQTtJQUN6QyxrQ0FBcUIsQ0FBQTtJQUNyQiwwQ0FBNkIsQ0FBQTtJQUM3QixzREFBeUMsQ0FBQTtJQUN6QyxnREFBbUMsQ0FBQTtJQUNuQyxvQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBUlcsU0FBUyx5QkFBVCxTQUFTLFFBUXBCO0FBRUQsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLGdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFFRCxJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsK0JBQWEsQ0FBQTtJQUNiLHlDQUF1QixDQUFBO0lBQ3ZCLHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFKVyxjQUFjLDhCQUFkLGNBQWMsUUFJekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV2ZW50IHR5cGVzIG1hdGNoaW5nIEdyYXBoUUwgc2NoZW1hXG4gKi9cbmV4cG9ydCBlbnVtIEV2ZW50VHlwZSB7XG4gIFVTRVJfUFJPTVBUID0gJ1VTRVJfUFJPTVBUJyxcbiAgQVNTSVNUQU5UX1JFU1BPTlNFID0gJ0FTU0lTVEFOVF9SRVNQT05TRScsXG4gIFRPT0xfVVNFID0gJ1RPT0xfVVNFJyxcbiAgTk9USUZJQ0FUSU9OID0gJ05PVElGSUNBVElPTicsXG4gIElOVEVSQUNUSVZFX1BST01QVCA9ICdJTlRFUkFDVElWRV9QUk9NUFQnLFxuICBQUk9NUFRfUkVTUE9OU0UgPSAnUFJPTVBUX1JFU1BPTlNFJyxcbiAgUkVBU09OSU5HID0gJ1JFQVNPTklORycsXG59XG5cbmV4cG9ydCBlbnVtIEV2ZW50U291cmNlIHtcbiAgREVTS1RPUCA9ICdERVNLVE9QJyxcbiAgTU9CSUxFID0gJ01PQklMRScsXG59XG5cbmV4cG9ydCBlbnVtIERlbGl2ZXJ5U3RhdHVzIHtcbiAgU0VOVCA9ICdTRU5UJyxcbiAgREVMSVZFUkVEID0gJ0RFTElWRVJFRCcsXG4gIEVYRUNVVEVEID0gJ0VYRUNVVEVEJyxcbn1cblxuLyoqXG4gKiBBdHRhY2htZW50IHR5cGUgKGZvciBpbWFnZXMvZmlsZXMgYXR0YWNoZWQgdG8gbWVzc2FnZXMpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIHMzS2V5OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG4gIGlzRW5jcnlwdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudCB0eXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnQge1xuICBldmVudElkOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB0eXBlOiBFdmVudFR5cGU7XG4gIHNvdXJjZTogRXZlbnRTb3VyY2U7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcHJvbXB0SWQ/OiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICBkZWxpdmVyeVN0YXR1cz86IERlbGl2ZXJ5U3RhdHVzO1xuICBkZWxpdmVyZWRBdD86IHN0cmluZztcbiAgZXhlY3V0ZWRBdD86IHN0cmluZztcbiAgaXNFbmNyeXB0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdyYXBoUUwgaW5wdXQgZm9yIGNyZWF0aW5nIGV2ZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUV2ZW50SW5wdXQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdHlwZTogRXZlbnRUeXBlO1xuICBzb3VyY2U6IEV2ZW50U291cmNlO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcHJvbXB0SWQ/OiBzdHJpbmc7XG4gIHRpbWVzdGFtcD86IHN0cmluZzsgIC8vIE9wdGlvbmFsIGNsaWVudC1wcm92aWRlZCB0aW1lc3RhbXAgZm9yIG9yZGVyaW5nXG4gIGlzRW5jcnlwdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHcmFwaFFMIGlucHV0IGZvciB1cGRhdGluZyBldmVudCBzdGF0dXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVFdmVudFN0YXR1c0lucHV0IHtcbiAgZXZlbnRJZDogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGRlbGl2ZXJ5U3RhdHVzOiBEZWxpdmVyeVN0YXR1cztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Re-export all types
|
|
18
|
+
__exportStar(require("./events"), exports);
|
|
19
|
+
__exportStar(require("./session"), exports);
|
|
20
|
+
__exportStar(require("./encryption"), exports);
|
|
21
|
+
__exportStar(require("./auth"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNCQUFzQjtBQUN0QiwyQ0FBeUI7QUFDekIsNENBQTBCO0FBQzFCLCtDQUE2QjtBQUM3Qix5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZS1leHBvcnQgYWxsIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24nO1xuZXhwb3J0ICogZnJvbSAnLi9lbmNyeXB0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCc7XG4iXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EncryptedSessionKey } from './encryption';
|
|
2
|
+
/**
|
|
3
|
+
* Session status enum
|
|
4
|
+
*/
|
|
5
|
+
export declare enum SessionStatus {
|
|
6
|
+
ACTIVE = "ACTIVE",
|
|
7
|
+
INACTIVE = "INACTIVE",
|
|
8
|
+
PAUSED = "PAUSED"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Agent type for multi-agent support
|
|
12
|
+
*/
|
|
13
|
+
export declare enum AgentType {
|
|
14
|
+
CLAUDE = "CLAUDE",
|
|
15
|
+
GEMINI = "GEMINI",
|
|
16
|
+
CODEX = "CODEX"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Session type
|
|
20
|
+
*/
|
|
21
|
+
export interface Session {
|
|
22
|
+
sessionId: string;
|
|
23
|
+
userId: string;
|
|
24
|
+
agentType: AgentType;
|
|
25
|
+
projectPath: string;
|
|
26
|
+
status: SessionStatus;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
metadata?: Record<string, any>;
|
|
30
|
+
isEncrypted?: boolean;
|
|
31
|
+
encryptedKeys?: EncryptedSessionKey[];
|
|
32
|
+
creatorDeviceId?: string;
|
|
33
|
+
encryptionVersion?: number;
|
|
34
|
+
lastHeartbeatAt?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* GraphQL input for creating sessions
|
|
38
|
+
*/
|
|
39
|
+
export interface CreateSessionInput {
|
|
40
|
+
sessionId?: string;
|
|
41
|
+
userId: string;
|
|
42
|
+
agentType?: AgentType;
|
|
43
|
+
projectPath: string;
|
|
44
|
+
status?: SessionStatus;
|
|
45
|
+
metadata?: Record<string, any>;
|
|
46
|
+
encryptedKeys?: EncryptedSessionKey[];
|
|
47
|
+
creatorDeviceId?: string;
|
|
48
|
+
isEncrypted?: boolean;
|
|
49
|
+
encryptionVersion?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* GraphQL input for updating sessions
|
|
53
|
+
*/
|
|
54
|
+
export interface UpdateSessionInput {
|
|
55
|
+
sessionId: string;
|
|
56
|
+
status?: SessionStatus;
|
|
57
|
+
metadata?: Record<string, any>;
|
|
58
|
+
lastHeartbeatAt?: string;
|
|
59
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentType = exports.SessionStatus = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Session status enum
|
|
6
|
+
*/
|
|
7
|
+
var SessionStatus;
|
|
8
|
+
(function (SessionStatus) {
|
|
9
|
+
SessionStatus["ACTIVE"] = "ACTIVE";
|
|
10
|
+
SessionStatus["INACTIVE"] = "INACTIVE";
|
|
11
|
+
SessionStatus["PAUSED"] = "PAUSED";
|
|
12
|
+
})(SessionStatus || (exports.SessionStatus = SessionStatus = {}));
|
|
13
|
+
/**
|
|
14
|
+
* Agent type for multi-agent support
|
|
15
|
+
*/
|
|
16
|
+
var AgentType;
|
|
17
|
+
(function (AgentType) {
|
|
18
|
+
AgentType["CLAUDE"] = "CLAUDE";
|
|
19
|
+
AgentType["GEMINI"] = "GEMINI";
|
|
20
|
+
AgentType["CODEX"] = "CODEX";
|
|
21
|
+
})(AgentType || (exports.AgentType = AgentType = {}));
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLGtDQUFpQixDQUFBO0lBQ2pCLHNDQUFxQixDQUFBO0lBQ3JCLGtDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxhQUFhLDZCQUFiLGFBQWEsUUFJeEI7QUFFRDs7R0FFRztBQUNILElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmNyeXB0ZWRTZXNzaW9uS2V5IH0gZnJvbSAnLi9lbmNyeXB0aW9uJztcblxuLyoqXG4gKiBTZXNzaW9uIHN0YXR1cyBlbnVtXG4gKi9cbmV4cG9ydCBlbnVtIFNlc3Npb25TdGF0dXMge1xuICBBQ1RJVkUgPSAnQUNUSVZFJyxcbiAgSU5BQ1RJVkUgPSAnSU5BQ1RJVkUnLFxuICBQQVVTRUQgPSAnUEFVU0VEJyxcbn1cblxuLyoqXG4gKiBBZ2VudCB0eXBlIGZvciBtdWx0aS1hZ2VudCBzdXBwb3J0XG4gKi9cbmV4cG9ydCBlbnVtIEFnZW50VHlwZSB7XG4gIENMQVVERSA9ICdDTEFVREUnLFxuICBHRU1JTkkgPSAnR0VNSU5JJyxcbiAgQ09ERVggPSAnQ09ERVgnLFxufVxuXG4vKipcbiAqIFNlc3Npb24gdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb24ge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFnZW50VHlwZTogQWdlbnRUeXBlO1xuICBwcm9qZWN0UGF0aDogc3RyaW5nO1xuICBzdGF0dXM6IFNlc3Npb25TdGF0dXM7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBpc0VuY3J5cHRlZD86IGJvb2xlYW47XG4gIGVuY3J5cHRlZEtleXM/OiBFbmNyeXB0ZWRTZXNzaW9uS2V5W107XG4gIGNyZWF0b3JEZXZpY2VJZD86IHN0cmluZztcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBudW1iZXI7XG4gIGxhc3RIZWFydGJlYXRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHcmFwaFFMIGlucHV0IGZvciBjcmVhdGluZyBzZXNzaW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNlc3Npb25JbnB1dCB7XG4gIHNlc3Npb25JZD86IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFnZW50VHlwZT86IEFnZW50VHlwZTtcbiAgcHJvamVjdFBhdGg6IHN0cmluZztcbiAgc3RhdHVzPzogU2Vzc2lvblN0YXR1cztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlbmNyeXB0ZWRLZXlzPzogRW5jcnlwdGVkU2Vzc2lvbktleVtdO1xuICBjcmVhdG9yRGV2aWNlSWQ/OiBzdHJpbmc7XG4gIGlzRW5jcnlwdGVkPzogYm9vbGVhbjtcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBudW1iZXI7XG59XG5cbi8qKlxuICogR3JhcGhRTCBpbnB1dCBmb3IgdXBkYXRpbmcgc2Vzc2lvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTZXNzaW9uSW5wdXQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RhdHVzPzogU2Vzc2lvblN0YXR1cztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBsYXN0SGVhcnRiZWF0QXQ/OiBzdHJpbmc7XG59XG4iXX0=
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quantiya/codevibe-core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Core library for CodeVibe plugins - shared keychain, crypto, AppSync, and auth functionality",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"codevibe": "./bin/codevibe.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"watch": "tsc --watch",
|
|
17
|
+
"clean": "rm -rf dist",
|
|
18
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
19
|
+
"test": "echo \"No tests yet\" && exit 0"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"keytar": "^7.9.0",
|
|
23
|
+
"uuid": "^9.0.0",
|
|
24
|
+
"ws": "^8.14.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^20.0.0",
|
|
28
|
+
"@types/uuid": "^9.0.0",
|
|
29
|
+
"@types/ws": "^8.5.0",
|
|
30
|
+
"typescript": "^5.0.0"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
},
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/hendryyeh/quantiya-codevibe-core.git"
|
|
38
|
+
},
|
|
39
|
+
"author": "Quantiya",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"keywords": [
|
|
42
|
+
"codevibe",
|
|
43
|
+
"quantiya",
|
|
44
|
+
"claude",
|
|
45
|
+
"codex",
|
|
46
|
+
"gemini",
|
|
47
|
+
"ai",
|
|
48
|
+
"coding",
|
|
49
|
+
"encryption"
|
|
50
|
+
]
|
|
51
|
+
}
|