@quantiya/codevibe-claude-plugin 1.0.10 → 1.0.12

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 (80) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +75 -245
  3. package/dist/server.js +16 -1162
  4. package/node_modules/@quantiya/codevibe-core/README.md +15 -6
  5. package/node_modules/@quantiya/codevibe-core/bin/codevibe.js +1 -1
  6. package/node_modules/@quantiya/codevibe-core/dist/index.js +216 -67
  7. package/node_modules/@quantiya/codevibe-core/package.json +12 -9
  8. package/node_modules/node-abi/abi_registry.json +7 -0
  9. package/node_modules/node-abi/package.json +1 -1
  10. package/package.json +11 -21
  11. package/dist/appsync-client.d.ts +0 -67
  12. package/dist/appsync-client.d.ts.map +0 -1
  13. package/dist/appsync-client.js +0 -858
  14. package/dist/appsync-client.js.map +0 -1
  15. package/dist/auth-cli.d.ts +0 -18
  16. package/dist/auth-cli.d.ts.map +0 -1
  17. package/dist/auth-cli.js +0 -472
  18. package/dist/auth-cli.js.map +0 -1
  19. package/dist/command-executor.d.ts +0 -20
  20. package/dist/command-executor.d.ts.map +0 -1
  21. package/dist/command-executor.js +0 -127
  22. package/dist/command-executor.js.map +0 -1
  23. package/dist/config.d.ts +0 -25
  24. package/dist/config.d.ts.map +0 -1
  25. package/dist/config.js +0 -106
  26. package/dist/config.js.map +0 -1
  27. package/dist/crypto-service.d.ts +0 -115
  28. package/dist/crypto-service.d.ts.map +0 -1
  29. package/dist/crypto-service.js +0 -278
  30. package/dist/crypto-service.js.map +0 -1
  31. package/dist/http-api.d.ts +0 -35
  32. package/dist/http-api.d.ts.map +0 -1
  33. package/dist/http-api.js +0 -334
  34. package/dist/http-api.js.map +0 -1
  35. package/dist/key-manager.d.ts +0 -87
  36. package/dist/key-manager.d.ts.map +0 -1
  37. package/dist/key-manager.js +0 -287
  38. package/dist/key-manager.js.map +0 -1
  39. package/dist/logger.d.ts +0 -2
  40. package/dist/logger.d.ts.map +0 -1
  41. package/dist/logger.js +0 -18
  42. package/dist/logger.js.map +0 -1
  43. package/dist/prompt-responder.d.ts +0 -22
  44. package/dist/prompt-responder.d.ts.map +0 -1
  45. package/dist/prompt-responder.js +0 -132
  46. package/dist/prompt-responder.js.map +0 -1
  47. package/dist/server.d.ts +0 -9
  48. package/dist/server.d.ts.map +0 -1
  49. package/dist/server.js.map +0 -1
  50. package/dist/token-storage.d.ts +0 -39
  51. package/dist/token-storage.d.ts.map +0 -1
  52. package/dist/token-storage.js +0 -169
  53. package/dist/token-storage.js.map +0 -1
  54. package/dist/types.d.ts +0 -110
  55. package/dist/types.d.ts.map +0 -1
  56. package/dist/types.js +0 -17
  57. package/dist/types.js.map +0 -1
  58. package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.js +0 -576
  59. package/node_modules/@quantiya/codevibe-core/dist/appsync/index.js +0 -10
  60. package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.js +0 -189
  61. package/node_modules/@quantiya/codevibe-core/dist/auth/auth-cli.js +0 -217
  62. package/node_modules/@quantiya/codevibe-core/dist/auth/auth-service.js +0 -464
  63. package/node_modules/@quantiya/codevibe-core/dist/auth/fetch-helpers.js +0 -165
  64. package/node_modules/@quantiya/codevibe-core/dist/auth/index.js +0 -9
  65. package/node_modules/@quantiya/codevibe-core/dist/config/config.js +0 -123
  66. package/node_modules/@quantiya/codevibe-core/dist/config/index.js +0 -8
  67. package/node_modules/@quantiya/codevibe-core/dist/crypto/crypto-service.js +0 -284
  68. package/node_modules/@quantiya/codevibe-core/dist/crypto/index.js +0 -9
  69. package/node_modules/@quantiya/codevibe-core/dist/keychain/index.js +0 -8
  70. package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-manager.js +0 -375
  71. package/node_modules/@quantiya/codevibe-core/dist/logger/index.js +0 -8
  72. package/node_modules/@quantiya/codevibe-core/dist/logger/logger.js +0 -142
  73. package/node_modules/@quantiya/codevibe-core/dist/prompt-parser.js +0 -236
  74. package/node_modules/@quantiya/codevibe-core/dist/session/index.js +0 -7
  75. package/node_modules/@quantiya/codevibe-core/dist/session/session-resume.js +0 -151
  76. package/node_modules/@quantiya/codevibe-core/dist/types/auth.js +0 -3
  77. package/node_modules/@quantiya/codevibe-core/dist/types/encryption.js +0 -3
  78. package/node_modules/@quantiya/codevibe-core/dist/types/events.js +0 -28
  79. package/node_modules/@quantiya/codevibe-core/dist/types/index.js +0 -22
  80. package/node_modules/@quantiya/codevibe-core/dist/types/session.js +0 -22
@@ -1,10 +0,0 @@
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
@@ -1,189 +0,0 @@
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
@@ -1,217 +0,0 @@
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==