@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.
Files changed (49) hide show
  1. package/README.md +178 -0
  2. package/bin/codevibe.js +7 -0
  3. package/dist/appsync/appsync-client.d.ts +132 -0
  4. package/dist/appsync/appsync-client.js +568 -0
  5. package/dist/appsync/index.d.ts +2 -0
  6. package/dist/appsync/index.js +10 -0
  7. package/dist/appsync/queries.d.ts +16 -0
  8. package/dist/appsync/queries.js +189 -0
  9. package/dist/auth/auth-cli.d.ts +5 -0
  10. package/dist/auth/auth-cli.js +217 -0
  11. package/dist/auth/auth-service.d.ts +53 -0
  12. package/dist/auth/auth-service.js +310 -0
  13. package/dist/auth/index.d.ts +2 -0
  14. package/dist/auth/index.js +9 -0
  15. package/dist/config/config.d.ts +53 -0
  16. package/dist/config/config.js +123 -0
  17. package/dist/config/index.d.ts +2 -0
  18. package/dist/config/index.js +8 -0
  19. package/dist/crypto/crypto-service.d.ts +118 -0
  20. package/dist/crypto/crypto-service.js +284 -0
  21. package/dist/crypto/index.d.ts +1 -0
  22. package/dist/crypto/index.js +9 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.js +68 -0
  25. package/dist/keychain/index.d.ts +1 -0
  26. package/dist/keychain/index.js +8 -0
  27. package/dist/keychain/keychain-manager.d.ts +125 -0
  28. package/dist/keychain/keychain-manager.js +375 -0
  29. package/dist/logger/index.d.ts +1 -0
  30. package/dist/logger/index.js +8 -0
  31. package/dist/logger/logger.d.ts +35 -0
  32. package/dist/logger/logger.js +142 -0
  33. package/dist/prompt-parser.d.ts +39 -0
  34. package/dist/prompt-parser.js +236 -0
  35. package/dist/session/index.d.ts +2 -0
  36. package/dist/session/index.js +7 -0
  37. package/dist/session/session-resume.d.ts +55 -0
  38. package/dist/session/session-resume.js +151 -0
  39. package/dist/types/auth.d.ts +15 -0
  40. package/dist/types/auth.js +3 -0
  41. package/dist/types/encryption.d.ts +54 -0
  42. package/dist/types/encryption.js +3 -0
  43. package/dist/types/events.d.ts +74 -0
  44. package/dist/types/events.js +28 -0
  45. package/dist/types/index.d.ts +4 -0
  46. package/dist/types/index.js +22 -0
  47. package/dist/types/session.d.ts +59 -0
  48. package/dist/types/session.js +22 -0
  49. package/package.json +51 -0
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subscriptions = exports.mutations = exports.queries = exports.AppSyncClient = void 0;
4
+ var appsync_client_1 = require("./appsync-client");
5
+ Object.defineProperty(exports, "AppSyncClient", { enumerable: true, get: function () { return appsync_client_1.AppSyncClient; } });
6
+ var queries_1 = require("./queries");
7
+ Object.defineProperty(exports, "queries", { enumerable: true, get: function () { return queries_1.queries; } });
8
+ Object.defineProperty(exports, "mutations", { enumerable: true, get: function () { return queries_1.mutations; } });
9
+ Object.defineProperty(exports, "subscriptions", { enumerable: true, get: function () { return queries_1.subscriptions; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwc3luYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBc0U7QUFBN0QsK0dBQUEsYUFBYSxPQUFBO0FBQ3RCLHFDQUE4RDtBQUFyRCxrR0FBQSxPQUFPLE9BQUE7QUFBRSxvR0FBQSxTQUFTLE9BQUE7QUFBRSx3R0FBQSxhQUFhLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcHBTeW5jQ2xpZW50LCBEb3dubG9hZFVybFJlc3BvbnNlIH0gZnJvbSAnLi9hcHBzeW5jLWNsaWVudCc7XG5leHBvcnQgeyBxdWVyaWVzLCBtdXRhdGlvbnMsIHN1YnNjcmlwdGlvbnMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuIl19
@@ -0,0 +1,16 @@
1
+ export declare const queries: {
2
+ getSession: string;
3
+ listEvents: string;
4
+ listUserDeviceKeys: string;
5
+ };
6
+ export declare const mutations: {
7
+ createSession: string;
8
+ updateSession: string;
9
+ createEvent: string;
10
+ updateEventStatus: string;
11
+ registerDeviceKey: string;
12
+ getAttachmentDownloadUrl: string;
13
+ };
14
+ export declare const subscriptions: {
15
+ onEventCreated: string;
16
+ };
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ //
3
+ // queries.ts
4
+ // CodeVibe Core
5
+ //
6
+ // Shared GraphQL queries, mutations, and subscriptions
7
+ //
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.subscriptions = exports.mutations = exports.queries = void 0;
10
+ exports.queries = {
11
+ getSession: /* GraphQL */ `
12
+ query GetSession($sessionId: ID!) {
13
+ getSession(sessionId: $sessionId) {
14
+ sessionId
15
+ userId
16
+ agentType
17
+ projectPath
18
+ status
19
+ createdAt
20
+ updatedAt
21
+ metadata
22
+ isEncrypted
23
+ encryptedKeys {
24
+ deviceId
25
+ encryptedKey
26
+ ephemeralPublicKey
27
+ }
28
+ creatorDeviceId
29
+ encryptionVersion
30
+ }
31
+ }
32
+ `,
33
+ listEvents: /* GraphQL */ `
34
+ query ListEvents($sessionId: ID!, $source: EventSource, $limit: Int) {
35
+ listEvents(sessionId: $sessionId, source: $source, limit: $limit) {
36
+ items {
37
+ eventId
38
+ sessionId
39
+ type
40
+ source
41
+ content
42
+ timestamp
43
+ metadata
44
+ promptId
45
+ attachments {
46
+ id
47
+ type
48
+ filename
49
+ s3Key
50
+ size
51
+ width
52
+ height
53
+ isEncrypted
54
+ }
55
+ deliveryStatus
56
+ deliveredAt
57
+ executedAt
58
+ isEncrypted
59
+ }
60
+ nextToken
61
+ }
62
+ }
63
+ `,
64
+ listUserDeviceKeys: /* GraphQL */ `
65
+ query ListUserDeviceKeys {
66
+ listUserDeviceKeys {
67
+ userId
68
+ deviceId
69
+ publicKey
70
+ platform
71
+ deviceName
72
+ createdAt
73
+ lastUsedAt
74
+ }
75
+ }
76
+ `,
77
+ };
78
+ exports.mutations = {
79
+ createSession: /* GraphQL */ `
80
+ mutation CreateSession($input: CreateSessionInput!) {
81
+ createSession(input: $input) {
82
+ sessionId
83
+ userId
84
+ agentType
85
+ projectPath
86
+ status
87
+ createdAt
88
+ updatedAt
89
+ }
90
+ }
91
+ `,
92
+ updateSession: /* GraphQL */ `
93
+ mutation UpdateSession($input: UpdateSessionInput!) {
94
+ updateSession(input: $input) {
95
+ sessionId
96
+ status
97
+ updatedAt
98
+ lastHeartbeatAt
99
+ }
100
+ }
101
+ `,
102
+ createEvent: /* GraphQL */ `
103
+ mutation CreateEvent($input: CreateEventInput!) {
104
+ createEvent(input: $input) {
105
+ eventId
106
+ sessionId
107
+ type
108
+ source
109
+ content
110
+ timestamp
111
+ metadata
112
+ promptId
113
+ deliveryStatus
114
+ deliveredAt
115
+ executedAt
116
+ isEncrypted
117
+ }
118
+ }
119
+ `,
120
+ updateEventStatus: /* GraphQL */ `
121
+ mutation UpdateEventStatus($input: UpdateEventStatusInput!) {
122
+ updateEventStatus(input: $input) {
123
+ eventId
124
+ sessionId
125
+ type
126
+ source
127
+ content
128
+ timestamp
129
+ metadata
130
+ promptId
131
+ deliveryStatus
132
+ deliveredAt
133
+ executedAt
134
+ }
135
+ }
136
+ `,
137
+ registerDeviceKey: /* GraphQL */ `
138
+ mutation RegisterDeviceKey($input: RegisterDeviceKeyInput!) {
139
+ registerDeviceKey(input: $input) {
140
+ userId
141
+ deviceId
142
+ publicKey
143
+ platform
144
+ deviceName
145
+ createdAt
146
+ lastUsedAt
147
+ }
148
+ }
149
+ `,
150
+ getAttachmentDownloadUrl: /* GraphQL */ `
151
+ mutation GetAttachmentDownloadUrl($s3Key: String!) {
152
+ getAttachmentDownloadUrl(s3Key: $s3Key) {
153
+ downloadUrl
154
+ expiresAt
155
+ }
156
+ }
157
+ `,
158
+ };
159
+ exports.subscriptions = {
160
+ onEventCreated: /* GraphQL */ `
161
+ subscription OnEventCreated($sessionId: ID!) {
162
+ onEventCreated(sessionId: $sessionId) {
163
+ eventId
164
+ sessionId
165
+ type
166
+ source
167
+ content
168
+ timestamp
169
+ metadata
170
+ promptId
171
+ attachments {
172
+ id
173
+ type
174
+ filename
175
+ s3Key
176
+ size
177
+ width
178
+ height
179
+ isEncrypted
180
+ }
181
+ deliveryStatus
182
+ deliveredAt
183
+ executedAt
184
+ isEncrypted
185
+ }
186
+ }
187
+ `,
188
+ };
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBzeW5jL3F1ZXJpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLEVBQUU7QUFDRixhQUFhO0FBQ2IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRix1REFBdUQ7QUFDdkQsRUFBRTs7O0FBRVcsUUFBQSxPQUFPLEdBQUc7SUFDckIsVUFBVSxFQUFFLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJ6QjtJQUVELFVBQVUsRUFBRSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCekI7SUFFRCxrQkFBa0IsRUFBRSxhQUFhLENBQUM7Ozs7Ozs7Ozs7OztHQVlqQztDQUNGLENBQUM7QUFFVyxRQUFBLFNBQVMsR0FBRztJQUN2QixhQUFhLEVBQUUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7R0FZNUI7SUFFRCxhQUFhLEVBQUUsYUFBYSxDQUFDOzs7Ozs7Ozs7R0FTNUI7SUFFRCxXQUFXLEVBQUUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCMUI7SUFFRCxpQkFBaUIsRUFBRSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQmhDO0lBRUQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7R0FZaEM7SUFFRCx3QkFBd0IsRUFBRSxhQUFhLENBQUM7Ozs7Ozs7R0FPdkM7Q0FDRixDQUFDO0FBRVcsUUFBQSxhQUFhLEdBQUc7SUFDM0IsY0FBYyxFQUFFLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkI3QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gcXVlcmllcy50c1xuLy8gQ29kZVZpYmUgQ29yZVxuLy9cbi8vIFNoYXJlZCBHcmFwaFFMIHF1ZXJpZXMsIG11dGF0aW9ucywgYW5kIHN1YnNjcmlwdGlvbnNcbi8vXG5cbmV4cG9ydCBjb25zdCBxdWVyaWVzID0ge1xuICBnZXRTZXNzaW9uOiAvKiBHcmFwaFFMICovIGBcbiAgICBxdWVyeSBHZXRTZXNzaW9uKCRzZXNzaW9uSWQ6IElEISkge1xuICAgICAgZ2V0U2Vzc2lvbihzZXNzaW9uSWQ6ICRzZXNzaW9uSWQpIHtcbiAgICAgICAgc2Vzc2lvbklkXG4gICAgICAgIHVzZXJJZFxuICAgICAgICBhZ2VudFR5cGVcbiAgICAgICAgcHJvamVjdFBhdGhcbiAgICAgICAgc3RhdHVzXG4gICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgaXNFbmNyeXB0ZWRcbiAgICAgICAgZW5jcnlwdGVkS2V5cyB7XG4gICAgICAgICAgZGV2aWNlSWRcbiAgICAgICAgICBlbmNyeXB0ZWRLZXlcbiAgICAgICAgICBlcGhlbWVyYWxQdWJsaWNLZXlcbiAgICAgICAgfVxuICAgICAgICBjcmVhdG9yRGV2aWNlSWRcbiAgICAgICAgZW5jcnlwdGlvblZlcnNpb25cbiAgICAgIH1cbiAgICB9XG4gIGAsXG5cbiAgbGlzdEV2ZW50czogLyogR3JhcGhRTCAqLyBgXG4gICAgcXVlcnkgTGlzdEV2ZW50cygkc2Vzc2lvbklkOiBJRCEsICRzb3VyY2U6IEV2ZW50U291cmNlLCAkbGltaXQ6IEludCkge1xuICAgICAgbGlzdEV2ZW50cyhzZXNzaW9uSWQ6ICRzZXNzaW9uSWQsIHNvdXJjZTogJHNvdXJjZSwgbGltaXQ6ICRsaW1pdCkge1xuICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgZXZlbnRJZFxuICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICAgIHR5cGVcbiAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgdGltZXN0YW1wXG4gICAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgICBwcm9tcHRJZFxuICAgICAgICAgIGF0dGFjaG1lbnRzIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICBmaWxlbmFtZVxuICAgICAgICAgICAgczNLZXlcbiAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgIHdpZHRoXG4gICAgICAgICAgICBoZWlnaHRcbiAgICAgICAgICAgIGlzRW5jcnlwdGVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGl2ZXJ5U3RhdHVzXG4gICAgICAgICAgZGVsaXZlcmVkQXRcbiAgICAgICAgICBleGVjdXRlZEF0XG4gICAgICAgICAgaXNFbmNyeXB0ZWRcbiAgICAgICAgfVxuICAgICAgICBuZXh0VG9rZW5cbiAgICAgIH1cbiAgICB9XG4gIGAsXG5cbiAgbGlzdFVzZXJEZXZpY2VLZXlzOiAvKiBHcmFwaFFMICovIGBcbiAgICBxdWVyeSBMaXN0VXNlckRldmljZUtleXMge1xuICAgICAgbGlzdFVzZXJEZXZpY2VLZXlzIHtcbiAgICAgICAgdXNlcklkXG4gICAgICAgIGRldmljZUlkXG4gICAgICAgIHB1YmxpY0tleVxuICAgICAgICBwbGF0Zm9ybVxuICAgICAgICBkZXZpY2VOYW1lXG4gICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICBsYXN0VXNlZEF0XG4gICAgICB9XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IG11dGF0aW9ucyA9IHtcbiAgY3JlYXRlU2Vzc2lvbjogLyogR3JhcGhRTCAqLyBgXG4gICAgbXV0YXRpb24gQ3JlYXRlU2Vzc2lvbigkaW5wdXQ6IENyZWF0ZVNlc3Npb25JbnB1dCEpIHtcbiAgICAgIGNyZWF0ZVNlc3Npb24oaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICBzZXNzaW9uSWRcbiAgICAgICAgdXNlcklkXG4gICAgICAgIGFnZW50VHlwZVxuICAgICAgICBwcm9qZWN0UGF0aFxuICAgICAgICBzdGF0dXNcbiAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgIHVwZGF0ZWRBdFxuICAgICAgfVxuICAgIH1cbiAgYCxcblxuICB1cGRhdGVTZXNzaW9uOiAvKiBHcmFwaFFMICovIGBcbiAgICBtdXRhdGlvbiBVcGRhdGVTZXNzaW9uKCRpbnB1dDogVXBkYXRlU2Vzc2lvbklucHV0ISkge1xuICAgICAgdXBkYXRlU2Vzc2lvbihpbnB1dDogJGlucHV0KSB7XG4gICAgICAgIHNlc3Npb25JZFxuICAgICAgICBzdGF0dXNcbiAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgIGxhc3RIZWFydGJlYXRBdFxuICAgICAgfVxuICAgIH1cbiAgYCxcblxuICBjcmVhdGVFdmVudDogLyogR3JhcGhRTCAqLyBgXG4gICAgbXV0YXRpb24gQ3JlYXRlRXZlbnQoJGlucHV0OiBDcmVhdGVFdmVudElucHV0ISkge1xuICAgICAgY3JlYXRlRXZlbnQoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICBldmVudElkXG4gICAgICAgIHNlc3Npb25JZFxuICAgICAgICB0eXBlXG4gICAgICAgIHNvdXJjZVxuICAgICAgICBjb250ZW50XG4gICAgICAgIHRpbWVzdGFtcFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgICBwcm9tcHRJZFxuICAgICAgICBkZWxpdmVyeVN0YXR1c1xuICAgICAgICBkZWxpdmVyZWRBdFxuICAgICAgICBleGVjdXRlZEF0XG4gICAgICAgIGlzRW5jcnlwdGVkXG4gICAgICB9XG4gICAgfVxuICBgLFxuXG4gIHVwZGF0ZUV2ZW50U3RhdHVzOiAvKiBHcmFwaFFMICovIGBcbiAgICBtdXRhdGlvbiBVcGRhdGVFdmVudFN0YXR1cygkaW5wdXQ6IFVwZGF0ZUV2ZW50U3RhdHVzSW5wdXQhKSB7XG4gICAgICB1cGRhdGVFdmVudFN0YXR1cyhpbnB1dDogJGlucHV0KSB7XG4gICAgICAgIGV2ZW50SWRcbiAgICAgICAgc2Vzc2lvbklkXG4gICAgICAgIHR5cGVcbiAgICAgICAgc291cmNlXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICAgdGltZXN0YW1wXG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIHByb21wdElkXG4gICAgICAgIGRlbGl2ZXJ5U3RhdHVzXG4gICAgICAgIGRlbGl2ZXJlZEF0XG4gICAgICAgIGV4ZWN1dGVkQXRcbiAgICAgIH1cbiAgICB9XG4gIGAsXG5cbiAgcmVnaXN0ZXJEZXZpY2VLZXk6IC8qIEdyYXBoUUwgKi8gYFxuICAgIG11dGF0aW9uIFJlZ2lzdGVyRGV2aWNlS2V5KCRpbnB1dDogUmVnaXN0ZXJEZXZpY2VLZXlJbnB1dCEpIHtcbiAgICAgIHJlZ2lzdGVyRGV2aWNlS2V5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgdXNlcklkXG4gICAgICAgIGRldmljZUlkXG4gICAgICAgIHB1YmxpY0tleVxuICAgICAgICBwbGF0Zm9ybVxuICAgICAgICBkZXZpY2VOYW1lXG4gICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICBsYXN0VXNlZEF0XG4gICAgICB9XG4gICAgfVxuICBgLFxuXG4gIGdldEF0dGFjaG1lbnREb3dubG9hZFVybDogLyogR3JhcGhRTCAqLyBgXG4gICAgbXV0YXRpb24gR2V0QXR0YWNobWVudERvd25sb2FkVXJsKCRzM0tleTogU3RyaW5nISkge1xuICAgICAgZ2V0QXR0YWNobWVudERvd25sb2FkVXJsKHMzS2V5OiAkczNLZXkpIHtcbiAgICAgICAgZG93bmxvYWRVcmxcbiAgICAgICAgZXhwaXJlc0F0XG4gICAgICB9XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IHN1YnNjcmlwdGlvbnMgPSB7XG4gIG9uRXZlbnRDcmVhdGVkOiAvKiBHcmFwaFFMICovIGBcbiAgICBzdWJzY3JpcHRpb24gT25FdmVudENyZWF0ZWQoJHNlc3Npb25JZDogSUQhKSB7XG4gICAgICBvbkV2ZW50Q3JlYXRlZChzZXNzaW9uSWQ6ICRzZXNzaW9uSWQpIHtcbiAgICAgICAgZXZlbnRJZFxuICAgICAgICBzZXNzaW9uSWRcbiAgICAgICAgdHlwZVxuICAgICAgICBzb3VyY2VcbiAgICAgICAgY29udGVudFxuICAgICAgICB0aW1lc3RhbXBcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgcHJvbXB0SWRcbiAgICAgICAgYXR0YWNobWVudHMge1xuICAgICAgICAgIGlkXG4gICAgICAgICAgdHlwZVxuICAgICAgICAgIGZpbGVuYW1lXG4gICAgICAgICAgczNLZXlcbiAgICAgICAgICBzaXplXG4gICAgICAgICAgd2lkdGhcbiAgICAgICAgICBoZWlnaHRcbiAgICAgICAgICBpc0VuY3J5cHRlZFxuICAgICAgICB9XG4gICAgICAgIGRlbGl2ZXJ5U3RhdHVzXG4gICAgICAgIGRlbGl2ZXJlZEF0XG4gICAgICAgIGV4ZWN1dGVkQXRcbiAgICAgICAgaXNFbmNyeXB0ZWRcbiAgICAgIH1cbiAgICB9XG4gIGAsXG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main CLI entry point
4
+ */
5
+ export declare function runAuthCli(argv: string[]): Promise<void>;
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ //
4
+ // auth-cli.ts
5
+ // CodeVibe Core
6
+ //
7
+ // CLI commands for authentication
8
+ //
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.runAuthCli = runAuthCli;
44
+ const auth_service_1 = require("./auth-service");
45
+ const config_1 = require("../config");
46
+ // Terminal colors
47
+ const colors = {
48
+ reset: '\x1b[0m',
49
+ green: '\x1b[32m',
50
+ red: '\x1b[31m',
51
+ yellow: '\x1b[33m',
52
+ cyan: '\x1b[36m',
53
+ dim: '\x1b[2m',
54
+ };
55
+ /**
56
+ * Login command
57
+ */
58
+ async function login() {
59
+ console.log(`${colors.cyan}CodeVibe Login${colors.reset}\n`);
60
+ try {
61
+ const status = await auth_service_1.authService.getStatus();
62
+ if (status.authenticated && status.tokens) {
63
+ console.log(`${colors.yellow}Already logged in as: ${status.tokens.email}${colors.reset}`);
64
+ console.log(`Token expires: ${new Date(status.tokens.expiresAt).toLocaleString()}`);
65
+ console.log(`\nRun '${colors.dim}codevibe logout${colors.reset}' to sign out first.`);
66
+ process.exit(0);
67
+ return;
68
+ }
69
+ console.log('Opening browser for authentication...');
70
+ console.log(`${colors.dim}Waiting for callback...${colors.reset}\n`);
71
+ const tokens = await auth_service_1.authService.login();
72
+ if (tokens) {
73
+ console.log(`\n${colors.green}✓ Authentication successful!${colors.reset}`);
74
+ console.log(` User: ${tokens.email}`);
75
+ console.log(` User ID: ${tokens.userId}`);
76
+ console.log(` Expires: ${new Date(tokens.expiresAt).toLocaleString()}`);
77
+ }
78
+ process.exit(0);
79
+ }
80
+ catch (error) {
81
+ console.log(`\n${colors.red}✗ Authentication failed${colors.reset}`);
82
+ console.log(` Error: ${error.message}`);
83
+ process.exit(1);
84
+ }
85
+ }
86
+ /**
87
+ * Logout command
88
+ */
89
+ async function logout() {
90
+ console.log(`${colors.cyan}CodeVibe Logout${colors.reset}\n`);
91
+ try {
92
+ const status = await auth_service_1.authService.getStatus();
93
+ if (!status.authenticated) {
94
+ console.log(`${colors.yellow}Not logged in.${colors.reset}`);
95
+ process.exit(0);
96
+ return;
97
+ }
98
+ const email = status.tokens?.email;
99
+ const deleted = await auth_service_1.authService.logout();
100
+ if (deleted) {
101
+ console.log(`${colors.green}✓ Logged out successfully.${colors.reset}`);
102
+ console.log(` Previous user: ${email}`);
103
+ console.log(`\n${colors.dim}Clearing browser session...${colors.reset}`);
104
+ }
105
+ else {
106
+ console.log(`${colors.red}✗ Failed to log out.${colors.reset}`);
107
+ }
108
+ process.exit(0);
109
+ }
110
+ catch (error) {
111
+ console.log(`${colors.red}✗ Logout failed: ${error.message}${colors.reset}`);
112
+ process.exit(1);
113
+ }
114
+ }
115
+ /**
116
+ * Status command
117
+ */
118
+ async function status() {
119
+ console.log(`${colors.cyan}CodeVibe Auth Status${colors.reset}\n`);
120
+ try {
121
+ const result = await auth_service_1.authService.getStatus();
122
+ if (!result.tokens) {
123
+ console.log(`${colors.yellow}Not authenticated.${colors.reset}`);
124
+ console.log(`\nRun '${colors.dim}codevibe login${colors.reset}' to sign in.`);
125
+ process.exit(0);
126
+ return;
127
+ }
128
+ const expired = !result.authenticated;
129
+ if (expired) {
130
+ console.log(`${colors.yellow}⚠ Token expired${colors.reset}`);
131
+ }
132
+ else {
133
+ console.log(`${colors.green}✓ Authenticated${colors.reset}`);
134
+ }
135
+ console.log(` User: ${result.tokens.email}`);
136
+ console.log(` User ID: ${result.tokens.userId}`);
137
+ console.log(` Expires: ${new Date(result.tokens.expiresAt).toLocaleString()}`);
138
+ if (expired) {
139
+ console.log(`\n${colors.dim}Token will be refreshed automatically.${colors.reset}`);
140
+ }
141
+ process.exit(0);
142
+ }
143
+ catch (error) {
144
+ console.log(`${colors.red}✗ Status check failed: ${error.message}${colors.reset}`);
145
+ process.exit(1);
146
+ }
147
+ }
148
+ /**
149
+ * Reset device command
150
+ */
151
+ async function resetDevice() {
152
+ console.log(`${colors.cyan}CodeVibe Reset Device${colors.reset}\n`);
153
+ console.log(`${colors.red}⚠ WARNING: This will delete your device identity.${colors.reset}`);
154
+ console.log(`${colors.red} Old encrypted sessions will become inaccessible.${colors.reset}\n`);
155
+ // Import keychain manager here to avoid circular deps
156
+ const { keychainManager } = await Promise.resolve().then(() => __importStar(require('../keychain')));
157
+ try {
158
+ await keychainManager.clearAllData();
159
+ console.log(`${colors.green}✓ Device reset complete.${colors.reset}`);
160
+ console.log(` Run '${colors.dim}codevibe login${colors.reset}' to set up again.`);
161
+ process.exit(0);
162
+ }
163
+ catch (error) {
164
+ console.log(`${colors.red}✗ Reset failed: ${error.message}${colors.reset}`);
165
+ process.exit(1);
166
+ }
167
+ }
168
+ /**
169
+ * Show help
170
+ */
171
+ function showHelp() {
172
+ console.log('CodeVibe Authentication\n');
173
+ console.log('Usage:');
174
+ console.log(' codevibe login - Sign in via browser');
175
+ console.log(' codevibe logout - Sign out');
176
+ console.log(' codevibe status - Show auth status');
177
+ console.log(' codevibe reset-device - Reset device identity (destructive)');
178
+ console.log('\nEnvironment:');
179
+ console.log(' Set ENVIRONMENT env var to "development" or "production" (default)');
180
+ console.log(' Example: ENVIRONMENT=development codevibe login');
181
+ }
182
+ /**
183
+ * Main CLI entry point
184
+ */
185
+ async function runAuthCli(argv) {
186
+ // Environment is automatically detected from process.env.ENVIRONMENT
187
+ const environment = (0, config_1.getEnvironment)();
188
+ console.log(`${colors.dim}Environment: ${environment}${colors.reset}\n`);
189
+ // Find command (skip node, script path, and flags)
190
+ const args = argv.slice(2).filter(a => !a.startsWith('--'));
191
+ const command = args[0];
192
+ switch (command) {
193
+ case 'login':
194
+ await login();
195
+ break;
196
+ case 'logout':
197
+ await logout();
198
+ break;
199
+ case 'status':
200
+ await status();
201
+ break;
202
+ case 'reset-device':
203
+ await resetDevice();
204
+ break;
205
+ default:
206
+ showHelp();
207
+ process.exit(command ? 1 : 0);
208
+ }
209
+ }
210
+ // Run if executed directly
211
+ if (require.main === module) {
212
+ runAuthCli(process.argv).catch((error) => {
213
+ console.error('Error:', error);
214
+ process.exit(1);
215
+ });
216
+ }
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jbGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9hdXRoLWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLEVBQUU7QUFDRixjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixrQ0FBa0M7QUFDbEMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErSkYsZ0NBMEJDO0FBdkxELGlEQUE2QztBQUM3QyxzQ0FBMkM7QUFFM0Msa0JBQWtCO0FBQ2xCLE1BQU0sTUFBTSxHQUFHO0lBQ2IsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFVBQVU7SUFDakIsR0FBRyxFQUFFLFVBQVU7SUFDZixNQUFNLEVBQUUsVUFBVTtJQUNsQixJQUFJLEVBQUUsVUFBVTtJQUNoQixHQUFHLEVBQUUsU0FBUztDQUNmLENBQUM7QUFFRjs7R0FFRztBQUNILEtBQUssVUFBVSxLQUFLO0lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxpQkFBaUIsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFFN0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSwwQkFBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMzRixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRixPQUFPLENBQUMsR0FB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LEVBQUU7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vL1xuLy8gYXV0aC1jbGkudHNcbi8vIENvZGVWaWJlIENvcmVcbi8vXG4vLyBDTEkgY29tbWFuZHMgZm9yIGF1dGhlbnRpY2F0aW9uXG4vL1xuXG5pbXBvcnQgeyBhdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC1zZXJ2aWNlJztcbmltcG9ydCB7IGdldEVudmlyb25tZW50IH0gZnJvbSAnLi4vY29uZmlnJztcblxuLy8gVGVybWluYWwgY29sb3JzXG5jb25zdCBjb2xvcnMgPSB7XG4gIHJlc2V0OiAnXFx4MWJbMG0nLFxuICBncmVlbjogJ1xceDFiWzMybScsXG4gIHJlZDogJ1xceDFiWzMxbScsXG4gIHllbGxvdzogJ1xceDFiWzMzbScsXG4gIGN5YW46ICdcXHgxYlszNm0nLFxuICBkaW06ICdcXHgxYlsybScsXG59O1xuXG4vKipcbiAqIExvZ2luIGNvbW1hbmRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9naW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5jeWFufUNvZGVWaWJlIExvZ2luJHtjb2xvcnMucmVzZXR9XFxuYCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBhdXRoU2VydmljZS5nZXRTdGF0dXMoKTtcbiAgICBpZiAoc3RhdHVzLmF1dGhlbnRpY2F0ZWQgJiYgc3RhdHVzLnRva2Vucykge1xuICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLnllbGxvd31BbHJlYWR5IGxvZ2dlZCBpbiBhczogJHtzdGF0dXMudG9rZW5zLmVtYWlsfSR7Y29sb3JzLnJlc2V0fWApO1xuICAgICAgY29uc29sZS5sb2coYFRva2VuIGV4cGlyZXM6ICR7bmV3IERhdGUoc3RhdHVzLnRva2Vucy5leHBpcmVzQXQpLnRvTG9jYWxlU3RyaW5nKCl9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgXFxuUnVuICcke2NvbG9ycy5kaW19Y29kZXZpYmUgbG9nb3V0JHtjb2xvcnMucmVzZXR9JyB0byBzaWduIG91dCBmaXJzdC5gKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnT3BlbmluZyBicm93c2VyIGZvciBhdXRoZW50aWNhdGlvbi4uLicpO1xuICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy5kaW19V2FpdGluZyBmb3IgY2FsbGJhY2suLi4ke2NvbG9ycy5yZXNldH1cXG5gKTtcblxuICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IGF1dGhTZXJ2aWNlLmxvZ2luKCk7XG5cbiAgICBpZiAodG9rZW5zKSB7XG4gICAgICBjb25zb2xlLmxvZyhgXFxuJHtjb2xvcnMuZ3JlZW594pyTIEF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3NmdWwhJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgICBVc2VyOiAke3Rva2Vucy5lbWFpbH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgIFVzZXIgSUQ6ICR7dG9rZW5zLnVzZXJJZH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgIEV4cGlyZXM6ICR7bmV3IERhdGUodG9rZW5zLmV4cGlyZXNBdCkudG9Mb2NhbGVTdHJpbmcoKX1gKTtcbiAgICB9XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5sb2coYFxcbiR7Y29sb3JzLnJlZH3inJcgQXV0aGVudGljYXRpb24gZmFpbGVkJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgY29uc29sZS5sb2coYCAgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2dvdXQgY29tbWFuZFxuICovXG5hc3luYyBmdW5jdGlvbiBsb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5jeWFufUNvZGVWaWJlIExvZ291dCR7Y29sb3JzLnJlc2V0fVxcbmApO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgYXV0aFNlcnZpY2UuZ2V0U3RhdHVzKCk7XG4gICAgaWYgKCFzdGF0dXMuYXV0aGVudGljYXRlZCkge1xuICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLnllbGxvd31Ob3QgbG9nZ2VkIGluLiR7Y29sb3JzLnJlc2V0fWApO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVtYWlsID0gc3RhdHVzLnRva2Vucz8uZW1haWw7XG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IGF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuXG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy5ncmVlbn3inJMgTG9nZ2VkIG91dCBzdWNjZXNzZnVsbHkuJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgICBjb25zb2xlLmxvZyhgICBQcmV2aW91cyB1c2VyOiAke2VtYWlsfWApO1xuICAgICAgY29uc29sZS5sb2coYFxcbiR7Y29sb3JzLmRpbX1DbGVhcmluZyBicm93c2VyIHNlc3Npb24uLi4ke2NvbG9ycy5yZXNldH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLnJlZH3inJcgRmFpbGVkIHRvIGxvZyBvdXQuJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgfVxuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy5yZWR94pyXIExvZ291dCBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX0ke2NvbG9ycy5yZXNldH1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuLyoqXG4gKiBTdGF0dXMgY29tbWFuZFxuICovXG5hc3luYyBmdW5jdGlvbiBzdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5jeWFufUNvZGVWaWJlIEF1dGggU3RhdHVzJHtjb2xvcnMucmVzZXR9XFxuYCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRoU2VydmljZS5nZXRTdGF0dXMoKTtcblxuICAgIGlmICghcmVzdWx0LnRva2Vucykge1xuICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLnllbGxvd31Ob3QgYXV0aGVudGljYXRlZC4ke2NvbG9ycy5yZXNldH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBcXG5SdW4gJyR7Y29sb3JzLmRpbX1jb2RldmliZSBsb2dpbiR7Y29sb3JzLnJlc2V0fScgdG8gc2lnbiBpbi5gKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmVkID0gIXJlc3VsdC5hdXRoZW50aWNhdGVkO1xuXG4gICAgaWYgKGV4cGlyZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy55ZWxsb3d94pqgIFRva2VuIGV4cGlyZWQke2NvbG9ycy5yZXNldH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCR7Y29sb3JzLmdyZWVufeKckyBBdXRoZW50aWNhdGVkJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYCAgVXNlcjogJHtyZXN1bHQudG9rZW5zLmVtYWlsfWApO1xuICAgIGNvbnNvbGUubG9nKGAgIFVzZXIgSUQ6ICR7cmVzdWx0LnRva2Vucy51c2VySWR9YCk7XG4gICAgY29uc29sZS5sb2coYCAgRXhwaXJlczogJHtuZXcgRGF0ZShyZXN1bHQudG9rZW5zLmV4cGlyZXNBdCkudG9Mb2NhbGVTdHJpbmcoKX1gKTtcblxuICAgIGlmIChleHBpcmVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhgXFxuJHtjb2xvcnMuZGltfVRva2VuIHdpbGwgYmUgcmVmcmVzaGVkIGF1dG9tYXRpY2FsbHkuJHtjb2xvcnMucmVzZXR9YCk7XG4gICAgfVxuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy5yZWR94pyXIFN0YXR1cyBjaGVjayBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX0ke2NvbG9ycy5yZXNldH1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNldCBkZXZpY2UgY29tbWFuZFxuICovXG5hc3luYyBmdW5jdGlvbiByZXNldERldmljZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coYCR7Y29sb3JzLmN5YW59Q29kZVZpYmUgUmVzZXQgRGV2aWNlJHtjb2xvcnMucmVzZXR9XFxuYCk7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5yZWR94pqgIFdBUk5JTkc6IFRoaXMgd2lsbCBkZWxldGUgeW91ciBkZXZpY2UgaWRlbnRpdHkuJHtjb2xvcnMucmVzZXR9YCk7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5yZWR9ICBPbGQgZW5jcnlwdGVkIHNlc3Npb25zIHdpbGwgYmVjb21lIGluYWNjZXNzaWJsZS4ke2NvbG9ycy5yZXNldH1cXG5gKTtcblxuICAvLyBJbXBvcnQga2V5Y2hhaW4gbWFuYWdlciBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcHNcbiAgY29uc3QgeyBrZXljaGFpbk1hbmFnZXIgfSA9IGF3YWl0IGltcG9ydCgnLi4va2V5Y2hhaW4nKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGtleWNoYWluTWFuYWdlci5jbGVhckFsbERhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhgJHtjb2xvcnMuZ3JlZW594pyTIERldmljZSByZXNldCBjb21wbGV0ZS4ke2NvbG9ycy5yZXNldH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBSdW4gJyR7Y29sb3JzLmRpbX1jb2RldmliZSBsb2dpbiR7Y29sb3JzLnJlc2V0fScgdG8gc2V0IHVwIGFnYWluLmApO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGAke2NvbG9ycy5yZWR94pyXIFJlc2V0IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfSR7Y29sb3JzLnJlc2V0fWApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIFNob3cgaGVscFxuICovXG5mdW5jdGlvbiBzaG93SGVscCgpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJ0NvZGVWaWJlIEF1dGhlbnRpY2F0aW9uXFxuJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTonKTtcbiAgY29uc29sZS5sb2coJyAgY29kZXZpYmUgbG9naW4gICAgICAgIC0gU2lnbiBpbiB2aWEgYnJvd3NlcicpO1xuICBjb25zb2xlLmxvZygnICBjb2RldmliZSBsb2dvdXQgICAgICAgLSBTaWduIG91dCcpO1xuICBjb25zb2xlLmxvZygnICBjb2RldmliZSBzdGF0dXMgICAgICAgLSBTaG93IGF1dGggc3RhdHVzJyk7XG4gIGNvbnNvbGUubG9nKCcgIGNvZGV2aWJlIHJlc2V0LWRldmljZSAtIFJlc2V0IGRldmljZSBpZGVudGl0eSAoZGVzdHJ1Y3RpdmUpJyk7XG4gIGNvbnNvbGUubG9nKCdcXG5FbnZpcm9ubWVudDonKTtcbiAgY29uc29sZS5sb2coJyAgU2V0IEVOVklST05NRU5UIGVudiB2YXIgdG8gXCJkZXZlbG9wbWVudFwiIG9yIFwicHJvZHVjdGlvblwiIChkZWZhdWx0KScpO1xuICBjb25zb2xlLmxvZygnICBFeGFtcGxlOiBFTlZJUk9OTUVOVD1kZXZlbG9wbWVudCBjb2RldmliZSBsb2dpbicpO1xufVxuXG4vKipcbiAqIE1haW4gQ0xJIGVudHJ5IHBvaW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5BdXRoQ2xpKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIEVudmlyb25tZW50IGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgZnJvbSBwcm9jZXNzLmVudi5FTlZJUk9OTUVOVFxuICBjb25zdCBlbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50KCk7XG4gIGNvbnNvbGUubG9nKGAke2NvbG9ycy5kaW19RW52aXJvbm1lbnQ6ICR7ZW52aXJvbm1lbnR9JHtjb2xvcnMucmVzZXR9XFxuYCk7XG5cbiAgLy8gRmluZCBjb21tYW5kIChza2lwIG5vZGUsIHNjcmlwdCBwYXRoLCBhbmQgZmxhZ3MpXG4gIGNvbnN0IGFyZ3MgPSBhcmd2LnNsaWNlKDIpLmZpbHRlcihhID0+ICFhLnN0YXJ0c1dpdGgoJy0tJykpO1xuICBjb25zdCBjb21tYW5kID0gYXJnc1swXTtcblxuICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICBjYXNlICdsb2dpbic6XG4gICAgICBhd2FpdCBsb2dpbigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbG9nb3V0JzpcbiAgICAgIGF3YWl0IGxvZ291dCgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgIGF3YWl0IHN0YXR1cygpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmVzZXQtZGV2aWNlJzpcbiAgICAgIGF3YWl0IHJlc2V0RGV2aWNlKCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2hvd0hlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdChjb21tYW5kID8gMSA6IDApO1xuICB9XG59XG5cbi8vIFJ1biBpZiBleGVjdXRlZCBkaXJlY3RseVxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIHJ1bkF1dGhDbGkocHJvY2Vzcy5hcmd2KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { TokenData } from '../types';
2
+ /**
3
+ * Authentication service for OAuth flows
4
+ */
5
+ export declare class AuthService {
6
+ private static instance;
7
+ private constructor();
8
+ static getInstance(): AuthService;
9
+ /**
10
+ * Open URL in default browser
11
+ */
12
+ private openBrowser;
13
+ /**
14
+ * Generate state for CSRF protection
15
+ */
16
+ private generateState;
17
+ /**
18
+ * Build authorization URL
19
+ */
20
+ private buildAuthUrl;
21
+ /**
22
+ * Exchange authorization code for tokens
23
+ */
24
+ private exchangeCodeForTokens;
25
+ /**
26
+ * Decode JWT payload
27
+ */
28
+ private decodeJwt;
29
+ /**
30
+ * Refresh tokens
31
+ */
32
+ refreshTokens(refreshToken: string): Promise<{
33
+ accessToken: string;
34
+ idToken: string;
35
+ expiresIn: number;
36
+ }>;
37
+ /**
38
+ * Login via OAuth browser flow
39
+ */
40
+ login(): Promise<TokenData | null>;
41
+ /**
42
+ * Logout
43
+ */
44
+ logout(): Promise<boolean>;
45
+ /**
46
+ * Get current auth status
47
+ */
48
+ getStatus(): Promise<{
49
+ authenticated: boolean;
50
+ tokens?: TokenData;
51
+ }>;
52
+ }
53
+ export declare const authService: AuthService;