guidemode 0.2.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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/dist/cjs/auth.d.ts +4 -0
  4. package/dist/cjs/auth.d.ts.map +1 -0
  5. package/dist/cjs/auth.js +191 -0
  6. package/dist/cjs/auth.js.map +1 -0
  7. package/dist/cjs/config.d.ts +24 -0
  8. package/dist/cjs/config.d.ts.map +1 -0
  9. package/dist/cjs/config.js +55 -0
  10. package/dist/cjs/config.js.map +1 -0
  11. package/dist/cjs/deploy.d.ts +18 -0
  12. package/dist/cjs/deploy.d.ts.map +1 -0
  13. package/dist/cjs/deploy.js +89 -0
  14. package/dist/cjs/deploy.js.map +1 -0
  15. package/dist/cjs/issue.d.ts +18 -0
  16. package/dist/cjs/issue.d.ts.map +1 -0
  17. package/dist/cjs/issue.js +79 -0
  18. package/dist/cjs/issue.js.map +1 -0
  19. package/dist/cjs/logs.d.ts +7 -0
  20. package/dist/cjs/logs.d.ts.map +1 -0
  21. package/dist/cjs/logs.js +75 -0
  22. package/dist/cjs/logs.js.map +1 -0
  23. package/dist/cjs/package.json +1 -0
  24. package/dist/cjs/setup.d.ts +8 -0
  25. package/dist/cjs/setup.d.ts.map +1 -0
  26. package/dist/cjs/setup.js +110 -0
  27. package/dist/cjs/setup.js.map +1 -0
  28. package/dist/cjs/status.d.ts +6 -0
  29. package/dist/cjs/status.d.ts.map +1 -0
  30. package/dist/cjs/status.js +171 -0
  31. package/dist/cjs/status.js.map +1 -0
  32. package/dist/cjs/sync.d.ts +8 -0
  33. package/dist/cjs/sync.d.ts.map +1 -0
  34. package/dist/cjs/sync.js +201 -0
  35. package/dist/cjs/sync.js.map +1 -0
  36. package/dist/cjs/utils/brand.d.ts +5 -0
  37. package/dist/cjs/utils/brand.d.ts.map +1 -0
  38. package/dist/cjs/utils/brand.js +8 -0
  39. package/dist/cjs/utils/brand.js.map +1 -0
  40. package/dist/cjs/utils/git.d.ts +11 -0
  41. package/dist/cjs/utils/git.d.ts.map +1 -0
  42. package/dist/cjs/utils/git.js +92 -0
  43. package/dist/cjs/utils/git.js.map +1 -0
  44. package/dist/cjs/utils/logger.d.ts +2 -0
  45. package/dist/cjs/utils/logger.d.ts.map +1 -0
  46. package/dist/cjs/utils/logger.js +26 -0
  47. package/dist/cjs/utils/logger.js.map +1 -0
  48. package/dist/cjs/validate.d.ts +22 -0
  49. package/dist/cjs/validate.d.ts.map +1 -0
  50. package/dist/cjs/validate.js +169 -0
  51. package/dist/cjs/validate.js.map +1 -0
  52. package/dist/esm/auth.d.ts +4 -0
  53. package/dist/esm/auth.d.ts.map +1 -0
  54. package/dist/esm/auth.js +191 -0
  55. package/dist/esm/auth.js.map +1 -0
  56. package/dist/esm/cli.d.ts +3 -0
  57. package/dist/esm/cli.d.ts.map +1 -0
  58. package/dist/esm/cli.js +348 -0
  59. package/dist/esm/cli.js.map +1 -0
  60. package/dist/esm/config.d.ts +24 -0
  61. package/dist/esm/config.d.ts.map +1 -0
  62. package/dist/esm/config.js +55 -0
  63. package/dist/esm/config.js.map +1 -0
  64. package/dist/esm/deploy.d.ts +18 -0
  65. package/dist/esm/deploy.d.ts.map +1 -0
  66. package/dist/esm/deploy.js +89 -0
  67. package/dist/esm/deploy.js.map +1 -0
  68. package/dist/esm/issue.d.ts +18 -0
  69. package/dist/esm/issue.d.ts.map +1 -0
  70. package/dist/esm/issue.js +79 -0
  71. package/dist/esm/issue.js.map +1 -0
  72. package/dist/esm/logs.d.ts +7 -0
  73. package/dist/esm/logs.d.ts.map +1 -0
  74. package/dist/esm/logs.js +75 -0
  75. package/dist/esm/logs.js.map +1 -0
  76. package/dist/esm/setup.d.ts +8 -0
  77. package/dist/esm/setup.d.ts.map +1 -0
  78. package/dist/esm/setup.js +110 -0
  79. package/dist/esm/setup.js.map +1 -0
  80. package/dist/esm/status.d.ts +6 -0
  81. package/dist/esm/status.d.ts.map +1 -0
  82. package/dist/esm/status.js +171 -0
  83. package/dist/esm/status.js.map +1 -0
  84. package/dist/esm/sync.d.ts +8 -0
  85. package/dist/esm/sync.d.ts.map +1 -0
  86. package/dist/esm/sync.js +201 -0
  87. package/dist/esm/sync.js.map +1 -0
  88. package/dist/esm/utils/brand.d.ts +5 -0
  89. package/dist/esm/utils/brand.d.ts.map +1 -0
  90. package/dist/esm/utils/brand.js +8 -0
  91. package/dist/esm/utils/brand.js.map +1 -0
  92. package/dist/esm/utils/git.d.ts +11 -0
  93. package/dist/esm/utils/git.d.ts.map +1 -0
  94. package/dist/esm/utils/git.js +92 -0
  95. package/dist/esm/utils/git.js.map +1 -0
  96. package/dist/esm/utils/logger.d.ts +2 -0
  97. package/dist/esm/utils/logger.d.ts.map +1 -0
  98. package/dist/esm/utils/logger.js +26 -0
  99. package/dist/esm/utils/logger.js.map +1 -0
  100. package/dist/esm/validate.d.ts +22 -0
  101. package/dist/esm/validate.d.ts.map +1 -0
  102. package/dist/esm/validate.js +169 -0
  103. package/dist/esm/validate.js.map +1 -0
  104. package/dist/tsconfig.tsbuildinfo +1 -0
  105. package/package.json +54 -0
@@ -0,0 +1,348 @@
1
+ #!/usr/bin/env node
2
+ import { execSync } from 'node:child_process';
3
+ import { createInterface } from 'node:readline';
4
+ import { readFileSync } from 'node:fs';
5
+ import { dirname, join } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import chalk from 'chalk';
8
+ import { Command } from 'commander';
9
+ import { loginFlow, logoutFlow, whoAmI } from './auth.js';
10
+ import { loadConfig } from './config.js';
11
+ import { PREFIX } from './utils/brand.js';
12
+ import { createDeployment } from './deploy.js';
13
+ import { createIssue } from './issue.js';
14
+ import { runLogs } from './logs.js';
15
+ import { detectHooksTarget, installHooks, runSetup } from './setup.js';
16
+ import { runStatus } from './status.js';
17
+ import { runSync } from './sync.js';
18
+ import { validateCommand, validateWatch } from './validate.js';
19
+ const program = new Command();
20
+ // Get package version
21
+ const __dirname = dirname(fileURLToPath(import.meta.url));
22
+ // Try both paths: ../package.json (when running from src) and ../../package.json (when running from dist)
23
+ let packageJson;
24
+ try {
25
+ packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
26
+ }
27
+ catch {
28
+ packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
29
+ }
30
+ program.name('guidemode').description(`${PREFIX} CLI for GuideMode`).version(packageJson.version);
31
+ // Authentication commands
32
+ program
33
+ .command('login')
34
+ .description('Authenticate with GuideMode server')
35
+ .option('--server <url>', 'Server URL', 'https://app.guidemode.dev')
36
+ .action(async (options) => {
37
+ try {
38
+ await loginFlow(options.server);
39
+ }
40
+ catch (error) {
41
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
42
+ process.exit(1);
43
+ }
44
+ });
45
+ program
46
+ .command('logout')
47
+ .description('Remove stored credentials')
48
+ .action(async () => {
49
+ try {
50
+ await logoutFlow();
51
+ }
52
+ catch (error) {
53
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
54
+ process.exit(1);
55
+ }
56
+ });
57
+ program
58
+ .command('whoami')
59
+ .description('Show current authenticated user')
60
+ .action(async () => {
61
+ try {
62
+ await whoAmI();
63
+ }
64
+ catch (error) {
65
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
66
+ process.exit(1);
67
+ }
68
+ });
69
+ // Validation command
70
+ program
71
+ .command('validate <path>')
72
+ .description('Validate canonical JSONL files')
73
+ .option('--strict', 'Treat warnings as errors')
74
+ .option('--json', 'Output JSON format')
75
+ .option('--verbose', 'Show detailed error information')
76
+ .option('--watch', 'Watch for file changes and re-validate')
77
+ .option('--provider <name>', 'Filter by provider name (e.g., "cursor", "claude", "gemini")')
78
+ .action(async (path, options) => {
79
+ try {
80
+ if (options.watch) {
81
+ await validateWatch(path, options);
82
+ }
83
+ else {
84
+ await validateCommand(path, options);
85
+ }
86
+ }
87
+ catch (error) {
88
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
89
+ process.exit(1);
90
+ }
91
+ });
92
+ // Issue command
93
+ program
94
+ .command('issue <title>')
95
+ .description('Create or update an issue in GuideMode')
96
+ .requiredOption('--type <type>', 'Issue type: feature, bug, chore, discovery, incident, other')
97
+ .requiredOption('--state <state>', 'Issue state: open, closed, in_progress')
98
+ .requiredOption('--repository <key>', 'Repository key (e.g., "owner/repo")')
99
+ .option('--external-id <id>', 'Unique external ID (auto-generated if omitted)')
100
+ .option('--body <text>', 'Issue description')
101
+ .option('--url <url>', 'Link to source issue')
102
+ .option('--labels <labels>', 'Comma-separated labels')
103
+ .option('--assignee <username>', 'Assignee username')
104
+ .option('--closed-at <timestamp>', 'ISO8601 timestamp when closed')
105
+ .option('--json', 'Output JSON response')
106
+ .action(async (title, options) => {
107
+ try {
108
+ // Validate type
109
+ const validTypes = ['feature', 'bug', 'chore', 'discovery', 'incident', 'other'];
110
+ if (!validTypes.includes(options.type)) {
111
+ console.error(chalk.red(`✗ Invalid type: ${options.type}`));
112
+ console.error(chalk.gray(` Valid types: ${validTypes.join(', ')}`));
113
+ process.exit(1);
114
+ }
115
+ // Validate state
116
+ const validStates = ['open', 'closed', 'in_progress'];
117
+ if (!validStates.includes(options.state)) {
118
+ console.error(chalk.red(`✗ Invalid state: ${options.state}`));
119
+ console.error(chalk.gray(` Valid states: ${validStates.join(', ')}`));
120
+ process.exit(1);
121
+ }
122
+ await createIssue({
123
+ title,
124
+ type: options.type,
125
+ state: options.state,
126
+ repository: options.repository,
127
+ externalId: options.externalId,
128
+ body: options.body,
129
+ url: options.url,
130
+ labels: options.labels,
131
+ assignee: options.assignee,
132
+ closedAt: options.closedAt,
133
+ json: options.json,
134
+ });
135
+ }
136
+ catch (error) {
137
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
138
+ process.exit(1);
139
+ }
140
+ });
141
+ // Deploy command
142
+ program
143
+ .command('deploy <ref> <sha>')
144
+ .description('Create or update a deployment in GuideMode')
145
+ .requiredOption('--env <environment>', 'Environment: production, staging, development, qa, preview, other')
146
+ .requiredOption('--status <status>', 'Deployment status: pending, queued, in_progress, success, failure, error')
147
+ .requiredOption('--repository <key>', 'Repository key (e.g., "owner/repo")')
148
+ .option('--external-id <id>', 'Unique external ID (auto-generated if omitted)')
149
+ .option('--description <text>', 'Deployment description')
150
+ .option('--url <url>', 'Deployment URL')
151
+ .option('--rollback', 'Flag this as a rollback deployment')
152
+ .option('--rollback-from <sha>', 'SHA being rolled back from')
153
+ .option('--json', 'Output JSON response')
154
+ .action(async (ref, sha, options) => {
155
+ try {
156
+ // Validate environment
157
+ const validEnvs = ['production', 'staging', 'development', 'qa', 'preview', 'other'];
158
+ if (!validEnvs.includes(options.env)) {
159
+ console.error(chalk.red(`✗ Invalid environment: ${options.env}`));
160
+ console.error(chalk.gray(` Valid environments: ${validEnvs.join(', ')}`));
161
+ process.exit(1);
162
+ }
163
+ // Validate status
164
+ const validStatuses = [
165
+ 'pending',
166
+ 'queued',
167
+ 'in_progress',
168
+ 'success',
169
+ 'failure',
170
+ 'error',
171
+ 'inactive',
172
+ ];
173
+ if (!validStatuses.includes(options.status)) {
174
+ console.error(chalk.red(`✗ Invalid status: ${options.status}`));
175
+ console.error(chalk.gray(` Valid statuses: ${validStatuses.join(', ')}`));
176
+ process.exit(1);
177
+ }
178
+ await createDeployment({
179
+ ref,
180
+ sha,
181
+ env: options.env,
182
+ status: options.status,
183
+ repository: options.repository,
184
+ externalId: options.externalId,
185
+ description: options.description,
186
+ url: options.url,
187
+ rollback: options.rollback,
188
+ rollbackFrom: options.rollbackFrom,
189
+ json: options.json,
190
+ });
191
+ }
192
+ catch (error) {
193
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
194
+ process.exit(1);
195
+ }
196
+ });
197
+ // Setup command
198
+ program
199
+ .command('setup')
200
+ .description('Configure GuideMode: login, install hooks, verify')
201
+ .option('--server <url>', 'Server URL', 'https://app.guidemode.dev')
202
+ .option('--force', 'Force re-authentication')
203
+ .action(async (options) => {
204
+ try {
205
+ await runSetup({ server: options.server, force: options.force });
206
+ }
207
+ catch (error) {
208
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
209
+ process.exit(1);
210
+ }
211
+ });
212
+ // Sync command (used by hooks - always exits 0, never writes to stdout)
213
+ program
214
+ .command('sync')
215
+ .description('Sync Claude Code session transcript to GuideMode')
216
+ .option('--session-id <id>', 'Session ID')
217
+ .option('--transcript-path <path>', 'Path to transcript file')
218
+ .option('--cwd <dir>', 'Working directory')
219
+ .option('--hook-event <event>', 'Hook event name')
220
+ .action(async (options) => {
221
+ try {
222
+ await runSync({
223
+ sessionId: options.sessionId,
224
+ transcriptPath: options.transcriptPath,
225
+ cwd: options.cwd,
226
+ hookEvent: options.hookEvent,
227
+ });
228
+ }
229
+ catch {
230
+ // Sync must never fail visibly - errors are logged to file
231
+ }
232
+ });
233
+ // Status command
234
+ program
235
+ .command('status')
236
+ .description('Check GuideMode health and configuration')
237
+ .option('--verbose', 'Show detailed status')
238
+ .option('--json', 'Output JSON format')
239
+ .action(async (options) => {
240
+ try {
241
+ await runStatus({ verbose: options.verbose, json: options.json });
242
+ }
243
+ catch (error) {
244
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
245
+ process.exit(1);
246
+ }
247
+ });
248
+ // Logs command
249
+ program
250
+ .command('logs')
251
+ .description('View sync log file')
252
+ .option('--lines <n>', 'Number of lines to show', '30')
253
+ .option('--errors', 'Show only errors and warnings')
254
+ .option('--follow', 'Follow log file for new entries')
255
+ .action(async (options) => {
256
+ try {
257
+ await runLogs({
258
+ lines: Number.parseInt(options.lines, 10),
259
+ errors: options.errors,
260
+ follow: options.follow,
261
+ });
262
+ }
263
+ catch (error) {
264
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
265
+ process.exit(1);
266
+ }
267
+ });
268
+ async function promptYesNo(question) {
269
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
270
+ return new Promise(resolve => {
271
+ rl.question(question, answer => {
272
+ rl.close();
273
+ resolve(answer.trim().toLowerCase() !== 'n');
274
+ });
275
+ });
276
+ }
277
+ async function firstRunFlow() {
278
+ const config = await loadConfig();
279
+ if (config.apiKey) {
280
+ // Already configured, show help
281
+ program.help();
282
+ return;
283
+ }
284
+ // First run — guide the user through setup
285
+ console.log(chalk.bold(`\n${PREFIX} Welcome to GuideMode!\n`));
286
+ console.log(chalk.gray('It looks like this is your first time running GuideMode.'));
287
+ console.log(chalk.gray('Let\'s get you set up.\n'));
288
+ // Step 1: Login
289
+ console.log(chalk.bold('Step 1: Authentication\n'));
290
+ try {
291
+ await loginFlow('https://app.guidemode.dev');
292
+ console.log();
293
+ }
294
+ catch (error) {
295
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
296
+ process.exit(1);
297
+ }
298
+ // Step 2: Ask about hooks
299
+ const wantsHooks = await promptYesNo(`${chalk.bold('Step 2:')} Install Claude Code sync hooks? (Y/n) `);
300
+ if (wantsHooks) {
301
+ const targetPath = await detectHooksTarget();
302
+ console.log(chalk.gray(` Target: ${targetPath}`));
303
+ try {
304
+ await installHooks(targetPath);
305
+ console.log(chalk.green(' Hooks installed for: Stop, PreCompact, SessionEnd\n'));
306
+ }
307
+ catch (err) {
308
+ console.error(chalk.red(' Failed to install hooks:'), err instanceof Error ? err.message : String(err));
309
+ console.log(chalk.gray(' You can run "guidemode setup" later to install hooks.\n'));
310
+ }
311
+ }
312
+ else {
313
+ console.log(chalk.gray('\n Skipped. You can run "guidemode setup" later to install hooks.\n'));
314
+ }
315
+ // Step 3: Offer global install if running via npx
316
+ const isNpx = process.env.npm_command === 'exec' || process.argv[1]?.includes('_npx');
317
+ if (isNpx) {
318
+ const wantsGlobal = await promptYesNo(`${chalk.bold('Step 3:')} Install guidemode globally (so you can use it without npx)? (Y/n) `);
319
+ if (wantsGlobal) {
320
+ try {
321
+ console.log(chalk.gray(' Running: npm install -g guidemode'));
322
+ execSync('npm install -g guidemode', { stdio: 'inherit' });
323
+ console.log(chalk.green(' Installed globally. You can now use "guidemode" directly.\n'));
324
+ }
325
+ catch {
326
+ console.log(chalk.yellow(' Global install failed. You can install manually later:'));
327
+ console.log(chalk.gray(' npm install -g guidemode\n'));
328
+ }
329
+ }
330
+ else {
331
+ console.log(chalk.gray('\n Skipped. You can install later: npm install -g guidemode\n'));
332
+ }
333
+ }
334
+ // Verify
335
+ console.log(chalk.bold('Verification\n'));
336
+ await runStatus({ verbose: true });
337
+ }
338
+ // If no subcommand provided, run first-run flow or show help
339
+ if (process.argv.length === 2) {
340
+ firstRunFlow().catch(err => {
341
+ console.error(chalk.red('Error:'), err instanceof Error ? err.message : 'Unknown error');
342
+ process.exit(1);
343
+ });
344
+ }
345
+ else {
346
+ program.parse();
347
+ }
348
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,sBAAsB;AACtB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,0GAA0G;AAC1G,IAAI,WAAgC,CAAA;AACpC,IAAI,CAAC;IACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AACrF,CAAC;AAAC,MAAM,CAAC;IACP,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AACxF,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,oBAAoB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAEjG,0BAA0B;AAC1B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,2BAA2B,CAAC;KACnE,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,EAAE,CAAA;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,EAAE,CAAA;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,qBAAqB;AACrB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACtC,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACtD,MAAM,CAAC,SAAS,EAAE,wCAAwC,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,8DAA8D,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,wCAAwC,CAAC;KACrD,cAAc,CAAC,eAAe,EAAE,6DAA6D,CAAC;KAC9F,cAAc,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KAC3E,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;KAC7C,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;KACpD,MAAM,CAAC,yBAAyB,EAAE,+BAA+B,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,gBAAgB;QAChB,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAChF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;QACrD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,WAAW,CAAC;YAChB,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,4CAA4C,CAAC;KACzD,cAAc,CACb,qBAAqB,EACrB,mEAAmE,CACpE;KACA,cAAc,CACb,mBAAmB,EACnB,0EAA0E,CAC3E;KACA,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC;KACvC,MAAM,CAAC,YAAY,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAClC,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACpF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,kBAAkB;QAClB,MAAM,aAAa,GAAG;YACpB,SAAS;YACT,QAAQ;YACR,aAAa;YACb,SAAS;YACT,SAAS;YACT,OAAO;YACP,UAAU;SACX,CAAA;QACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,gBAAgB,CAAC;YACrB,GAAG;YACH,GAAG;YACH,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,2BAA2B,CAAC;KACnE,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,wEAAwE;AACxE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;KACzC,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;KAC7D,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,IAAI,CAAC;KACtD,MAAM,CAAC,UAAU,EAAE,+BAA+B,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,iCAAiC,CAAC;KACrD,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IACjC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,gCAAgC;QAChC,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAM;IACR,CAAC;IAED,2CAA2C;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,0BAA0B,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAA;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAEnD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACnD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,MAAM,WAAW,CAClC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,yCAAyC,CAClE,CAAA;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC,CAAA;QAClD,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,UAAU,CAAC,CAAA;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAA;QACnF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EACvC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC,CAAA;IACjG,CAAC;IAED,kDAAkD;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,MAAM,WAAW,CACnC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,qEAAqE,CAC9F,CAAA;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAA;gBAC9D,QAAQ,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAA;YAC3F,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAA;gBACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACzC,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACpC,CAAC;AAED,6DAA6D;AAC7D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface GuideModeConfig {
2
+ apiKey?: string;
3
+ serverUrl?: string;
4
+ username?: string;
5
+ name?: string;
6
+ avatarUrl?: string;
7
+ tenantId?: string;
8
+ tenantName?: string;
9
+ syncHooks?: string[];
10
+ }
11
+ export declare const DEFAULT_SYNC_HOOKS: string[];
12
+ export declare const DEFAULT_SERVER_URL = "https://app.guidemode.dev";
13
+ export declare const CONFIG_DIR: string;
14
+ export declare const CONFIG_FILE: string;
15
+ export declare const LOG_DIR: string;
16
+ export declare const LOG_FILE: string;
17
+ export declare function ensureConfigDir(): Promise<void>;
18
+ export declare function loadConfig(): Promise<GuideModeConfig>;
19
+ export declare function saveConfig(config: GuideModeConfig): Promise<void>;
20
+ export declare function getApiKey(): Promise<string | undefined>;
21
+ export declare function getServerUrl(): Promise<string>;
22
+ export declare function clearConfig(): Promise<void>;
23
+ export declare function updateConfig(updates: Partial<GuideModeConfig>): Promise<void>;
24
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,eAAO,MAAM,kBAAkB,UAAuC,CAAA;AACtE,eAAO,MAAM,kBAAkB,8BAA8B,CAAA;AAC7D,eAAO,MAAM,UAAU,QAAgC,CAAA;AACvD,eAAO,MAAM,WAAW,QAAkC,CAAA;AAC1D,eAAO,MAAM,OAAO,QAA2B,CAAA;AAC/C,eAAO,MAAM,QAAQ,QAAqC,CAAA;AAE1D,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAQ3D;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAQpD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnF"}
@@ -0,0 +1,55 @@
1
+ import { access, mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ export const DEFAULT_SYNC_HOOKS = ['Stop', 'PreCompact', 'SessionEnd'];
5
+ export const DEFAULT_SERVER_URL = 'https://app.guidemode.dev';
6
+ export const CONFIG_DIR = join(homedir(), '.guidemode');
7
+ export const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
8
+ export const LOG_DIR = join(CONFIG_DIR, 'logs');
9
+ export const LOG_FILE = join(LOG_DIR, 'plugin-upload.log');
10
+ export async function ensureConfigDir() {
11
+ try {
12
+ await access(CONFIG_DIR);
13
+ }
14
+ catch {
15
+ await mkdir(CONFIG_DIR, { recursive: true, mode: 0o700 });
16
+ }
17
+ }
18
+ export async function loadConfig() {
19
+ try {
20
+ await ensureConfigDir();
21
+ const content = await readFile(CONFIG_FILE, 'utf-8');
22
+ return JSON.parse(content);
23
+ }
24
+ catch {
25
+ return {};
26
+ }
27
+ }
28
+ export async function saveConfig(config) {
29
+ await ensureConfigDir();
30
+ await writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
31
+ }
32
+ export async function getApiKey() {
33
+ // Check environment variable first (for CI/CD)
34
+ if (process.env.GUIDEMODE_API_KEY) {
35
+ return process.env.GUIDEMODE_API_KEY;
36
+ }
37
+ const config = await loadConfig();
38
+ return config.apiKey;
39
+ }
40
+ export async function getServerUrl() {
41
+ // Check environment variable first (for CI/CD)
42
+ if (process.env.GUIDEMODE_SERVICE_URL) {
43
+ return process.env.GUIDEMODE_SERVICE_URL;
44
+ }
45
+ const config = await loadConfig();
46
+ return config.serverUrl || 'https://app.guidemode.dev';
47
+ }
48
+ export async function clearConfig() {
49
+ await saveConfig({});
50
+ }
51
+ export async function updateConfig(updates) {
52
+ const config = await loadConfig();
53
+ await saveConfig({ ...config, ...updates });
54
+ }
55
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAuB;IACtD,MAAM,eAAe,EAAE,CAAA;IACvB,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,+CAA+C;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,+CAA+C;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAA;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,SAAS,IAAI,2BAA2B,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAiC;IAClE,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IACjC,MAAM,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface DeployOptions {
2
+ ref: string;
3
+ sha: string;
4
+ env: 'production' | 'staging' | 'development' | 'qa' | 'preview' | 'other';
5
+ status: 'pending' | 'queued' | 'in_progress' | 'success' | 'failure' | 'error' | 'inactive';
6
+ repository: string;
7
+ externalId?: string;
8
+ description?: string;
9
+ url?: string;
10
+ rollback?: boolean;
11
+ rollbackFrom?: string;
12
+ json?: boolean;
13
+ }
14
+ /**
15
+ * Create or update a deployment via the GuideMode API
16
+ */
17
+ export declare function createDeployment(options: DeployOptions): Promise<void>;
18
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/deploy.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1E,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;IAC3F,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAcD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5E"}
@@ -0,0 +1,89 @@
1
+ import chalk from 'chalk';
2
+ import { getApiKey, getServerUrl } from './config.js';
3
+ /**
4
+ * Create or update a deployment via the GuideMode API
5
+ */
6
+ export async function createDeployment(options) {
7
+ const apiKey = await getApiKey();
8
+ if (!apiKey) {
9
+ console.error(chalk.red('✗ Not authenticated'));
10
+ console.log(chalk.gray('Run "guidemode login" to authenticate first'));
11
+ process.exit(1);
12
+ }
13
+ const serverUrl = await getServerUrl();
14
+ // Validate SHA length (allow short SHAs of 7+ characters or full 40 character SHAs)
15
+ if (options.sha.length < 7 || options.sha.length > 40) {
16
+ console.error(chalk.red('✗ Invalid SHA: must be 7-40 characters'));
17
+ console.log(chalk.gray(` Received: ${options.sha} (${options.sha.length} characters)`));
18
+ process.exit(1);
19
+ }
20
+ // Generate external ID if not provided
21
+ const externalId = options.externalId || `manual-deploy-${crypto.randomUUID()}`;
22
+ const payload = {
23
+ projectKey: options.repository,
24
+ externalId,
25
+ ref: options.ref,
26
+ sha: options.sha,
27
+ environment: options.env,
28
+ status: options.status,
29
+ description: options.description,
30
+ url: options.url,
31
+ isRollback: options.rollback,
32
+ rollbackFromSha: options.rollbackFrom,
33
+ };
34
+ try {
35
+ const response = await fetch(`${serverUrl}/api/webhooks/v1/deployments`, {
36
+ method: 'POST',
37
+ headers: {
38
+ Authorization: `Bearer ${apiKey}`,
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(payload),
42
+ });
43
+ if (!response.ok) {
44
+ const errorData = (await response.json());
45
+ if (response.status === 401) {
46
+ console.error(chalk.red('✗ Authentication failed'));
47
+ console.log(chalk.gray('Your API key may have expired. Run "guidemode login" to re-authenticate'));
48
+ process.exit(1);
49
+ }
50
+ if (response.status === 400 && errorData.details) {
51
+ console.error(chalk.red('✗ Validation failed:'));
52
+ for (const detail of errorData.details) {
53
+ console.error(chalk.gray(` ${detail.path}: ${detail.message}`));
54
+ }
55
+ process.exit(1);
56
+ }
57
+ console.error(chalk.red(`✗ Error: ${errorData.error}`));
58
+ process.exit(1);
59
+ }
60
+ const result = (await response.json());
61
+ if (options.json) {
62
+ console.log(JSON.stringify(result, null, 2));
63
+ }
64
+ else {
65
+ const actionVerb = result.action === 'created' ? 'Created' : 'Updated';
66
+ const deployType = options.rollback ? 'rollback' : 'deployment';
67
+ console.log(chalk.green(`✓ ${actionVerb} ${deployType} successfully`));
68
+ console.log(chalk.gray(` ID: ${result.id}`));
69
+ console.log(chalk.gray(` External ID: ${result.externalId}`));
70
+ console.log(chalk.gray(` Repository: ${options.repository}`));
71
+ console.log(chalk.gray(` Ref: ${options.ref}`));
72
+ console.log(chalk.gray(` SHA: ${options.sha.substring(0, 7)}`));
73
+ console.log(chalk.gray(` Environment: ${options.env}`));
74
+ console.log(chalk.gray(` Status: ${options.status}`));
75
+ if (options.rollback && options.rollbackFrom) {
76
+ console.log(chalk.gray(` Rollback from: ${options.rollbackFrom.substring(0, 7)}`));
77
+ }
78
+ }
79
+ }
80
+ catch (error) {
81
+ if (error instanceof TypeError && error.message.includes('fetch')) {
82
+ console.error(chalk.red('✗ Network error: Could not connect to server'));
83
+ console.log(chalk.gray(`Server URL: ${serverUrl}`));
84
+ process.exit(1);
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface IssueOptions {
2
+ title: string;
3
+ type: 'feature' | 'bug' | 'chore' | 'discovery' | 'incident' | 'other';
4
+ state: 'open' | 'closed' | 'in_progress';
5
+ repository: string;
6
+ externalId?: string;
7
+ body?: string;
8
+ url?: string;
9
+ labels?: string;
10
+ assignee?: string;
11
+ closedAt?: string;
12
+ json?: boolean;
13
+ }
14
+ /**
15
+ * Create or update an issue via the GuideMode API
16
+ */
17
+ export declare function createIssue(options: IssueOptions): Promise<void>;
18
+ //# sourceMappingURL=issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/issue.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;IACtE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAcD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFtE"}