sylas-ai 0.2.21 → 0.2.22

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app.js +2 -2
  3. package/dist/app.js.map +1 -1
  4. package/dist/commands/RefreshTokenCommand.js +2 -2
  5. package/dist/commands/RefreshTokenCommand.js.map +1 -1
  6. package/dist/commands/SelfAuthCommand.js +2 -2
  7. package/dist/commands/SelfAuthCommand.js.map +1 -1
  8. package/dist/utils/openUrl.d.ts +7 -0
  9. package/dist/utils/openUrl.d.ts.map +1 -0
  10. package/dist/utils/openUrl.js +33 -0
  11. package/dist/utils/openUrl.js.map +1 -0
  12. package/package.json +12 -11
  13. package/dist/src/Application.d.ts +0 -75
  14. package/dist/src/Application.d.ts.map +0 -1
  15. package/dist/src/Application.js +0 -289
  16. package/dist/src/Application.js.map +0 -1
  17. package/dist/src/app.d.ts +0 -3
  18. package/dist/src/app.d.ts.map +0 -1
  19. package/dist/src/app.js +0 -93
  20. package/dist/src/app.js.map +0 -1
  21. package/dist/src/commands/AuthCommand.d.ts +0 -8
  22. package/dist/src/commands/AuthCommand.d.ts.map +0 -1
  23. package/dist/src/commands/AuthCommand.js +0 -70
  24. package/dist/src/commands/AuthCommand.js.map +0 -1
  25. package/dist/src/commands/CheckTokensCommand.d.ts +0 -8
  26. package/dist/src/commands/CheckTokensCommand.d.ts.map +0 -1
  27. package/dist/src/commands/CheckTokensCommand.js +0 -53
  28. package/dist/src/commands/CheckTokensCommand.js.map +0 -1
  29. package/dist/src/commands/ICommand.d.ts +0 -38
  30. package/dist/src/commands/ICommand.d.ts.map +0 -1
  31. package/dist/src/commands/ICommand.js +0 -37
  32. package/dist/src/commands/ICommand.js.map +0 -1
  33. package/dist/src/commands/RefreshTokenCommand.d.ts +0 -8
  34. package/dist/src/commands/RefreshTokenCommand.d.ts.map +0 -1
  35. package/dist/src/commands/RefreshTokenCommand.js +0 -152
  36. package/dist/src/commands/RefreshTokenCommand.js.map +0 -1
  37. package/dist/src/commands/SelfAddRepoCommand.d.ts +0 -17
  38. package/dist/src/commands/SelfAddRepoCommand.d.ts.map +0 -1
  39. package/dist/src/commands/SelfAddRepoCommand.js +0 -164
  40. package/dist/src/commands/SelfAddRepoCommand.js.map +0 -1
  41. package/dist/src/commands/SelfAuthCommand.d.ts +0 -16
  42. package/dist/src/commands/SelfAuthCommand.d.ts.map +0 -1
  43. package/dist/src/commands/SelfAuthCommand.js +0 -213
  44. package/dist/src/commands/SelfAuthCommand.js.map +0 -1
  45. package/dist/src/commands/StartCommand.d.ts +0 -8
  46. package/dist/src/commands/StartCommand.d.ts.map +0 -1
  47. package/dist/src/commands/StartCommand.js +0 -76
  48. package/dist/src/commands/StartCommand.js.map +0 -1
  49. package/dist/src/config/constants.d.ts +0 -12
  50. package/dist/src/config/constants.d.ts.map +0 -1
  51. package/dist/src/config/constants.js +0 -19
  52. package/dist/src/config/constants.js.map +0 -1
  53. package/dist/src/config/types.d.ts +0 -21
  54. package/dist/src/config/types.d.ts.map +0 -1
  55. package/dist/src/config/types.js +0 -2
  56. package/dist/src/config/types.js.map +0 -1
  57. package/dist/src/services/ConfigService.d.ts +0 -37
  58. package/dist/src/services/ConfigService.d.ts.map +0 -1
  59. package/dist/src/services/ConfigService.js +0 -121
  60. package/dist/src/services/ConfigService.js.map +0 -1
  61. package/dist/src/services/Logger.d.ts +0 -77
  62. package/dist/src/services/Logger.d.ts.map +0 -1
  63. package/dist/src/services/Logger.js +0 -100
  64. package/dist/src/services/Logger.js.map +0 -1
  65. package/dist/src/services/WorkerService.d.ts +0 -59
  66. package/dist/src/services/WorkerService.d.ts.map +0 -1
  67. package/dist/src/services/WorkerService.js +0 -220
  68. package/dist/src/services/WorkerService.js.map +0 -1
  69. package/dist/src/ui/CLIPrompts.d.ts +0 -18
  70. package/dist/src/ui/CLIPrompts.d.ts.map +0 -1
  71. package/dist/src/ui/CLIPrompts.js +0 -53
  72. package/dist/src/ui/CLIPrompts.js.map +0 -1
  73. package/dist/vitest.config.d.ts +0 -3
  74. package/dist/vitest.config.d.ts.map +0 -1
  75. package/dist/vitest.config.js +0 -13
  76. package/dist/vitest.config.js.map +0 -1
package/dist/src/app.js DELETED
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env node
2
- import { readFileSync } from "node:fs";
3
- import { homedir } from "node:os";
4
- import { dirname, resolve } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { Command } from "commander";
7
- import { Application } from "./Application.js";
8
- import { AuthCommand } from "./commands/AuthCommand.js";
9
- import { CheckTokensCommand } from "./commands/CheckTokensCommand.js";
10
- import { RefreshTokenCommand } from "./commands/RefreshTokenCommand.js";
11
- import { SelfAddRepoCommand } from "./commands/SelfAddRepoCommand.js";
12
- import { SelfAuthCommand } from "./commands/SelfAuthCommand.js";
13
- import { StartCommand } from "./commands/StartCommand.js";
14
- // Get the directory of the current module for reading package.json
15
- const __filename = fileURLToPath(import.meta.url);
16
- const __dirname = dirname(__filename);
17
- // Read package.json to get the actual version
18
- // When compiled, this is in dist/src/, so we need to go up two levels
19
- const packageJsonPath = resolve(__dirname, "..", "..", "package.json");
20
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
21
- // Setup Commander program
22
- const program = new Command();
23
- program
24
- .name("sylas")
25
- .description("AI-powered Linear issue automation using Claude")
26
- .version(packageJson.version)
27
- .option("--sylas-home <path>", "Specify custom Sylas config directory", resolve(homedir(), ".sylas"))
28
- .option("--env-file <path>", "Path to environment variables file");
29
- // Start command (default)
30
- program
31
- .command("start", { isDefault: true })
32
- .description("Start the edge worker")
33
- .action(async () => {
34
- const opts = program.opts();
35
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
36
- await new StartCommand(app).execute([]);
37
- });
38
- // Auth command
39
- program
40
- .command("auth <auth-key>")
41
- .description("Authenticate with Sylas using auth key")
42
- .action(async (authKey) => {
43
- const opts = program.opts();
44
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
45
- await new AuthCommand(app).execute([authKey]);
46
- });
47
- // Check tokens command
48
- program
49
- .command("check-tokens")
50
- .description("Check the status of all Linear tokens")
51
- .action(async () => {
52
- const opts = program.opts();
53
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
54
- await new CheckTokensCommand(app).execute([]);
55
- });
56
- // Refresh token command
57
- program
58
- .command("refresh-token")
59
- .description("Refresh a specific Linear token")
60
- .action(async () => {
61
- const opts = program.opts();
62
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
63
- await new RefreshTokenCommand(app).execute([]);
64
- });
65
- // Self-auth command - Linear OAuth directly from CLI
66
- program
67
- .command("self-auth")
68
- .description("Authenticate with Linear OAuth directly")
69
- .action(async () => {
70
- const opts = program.opts();
71
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
72
- await new SelfAuthCommand(app).execute([]);
73
- });
74
- // Self-add-repo command - Clone and add repository
75
- program
76
- .command("self-add-repo [url] [workspace]")
77
- .description('Clone a repo and add it to config. URL accepts any valid git clone address (e.g., "https://github.com/org/repo.git"). Workspace is the display name of the Linear workspace (e.g., "My Workspace") - not a UUID.')
78
- .action(async (url, workspace) => {
79
- const opts = program.opts();
80
- const app = new Application(opts.sylasHome, opts.envFile, packageJson.version);
81
- await new SelfAddRepoCommand(app).execute([url, workspace].filter(Boolean));
82
- });
83
- // Parse and execute
84
- (async () => {
85
- try {
86
- await program.parseAsync(process.argv);
87
- }
88
- catch (error) {
89
- console.error("Fatal error:", error);
90
- process.exit(1);
91
- }
92
- })();
93
- //# sourceMappingURL=app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,mEAAmE;AACnE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,8CAA8C;AAC9C,sEAAsE;AACtE,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvE,0BAA0B;AAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CACN,qBAAqB,EACrB,uCAAuC,EACvC,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAC5B;KACA,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC,CAAC;AAEpE,0BAA0B;AAC1B,OAAO;KACL,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACrC,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEJ,eAAe;AACf,OAAO;KACL,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEJ,uBAAuB;AACvB,OAAO;KACL,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEJ,wBAAwB;AACxB,OAAO;KACL,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEJ,qDAAqD;AACrD,OAAO;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEJ,mDAAmD;AACnD,OAAO;KACL,OAAO,CAAC,iCAAiC,CAAC;KAC1C,WAAW,CACX,kNAAkN,CAClN;KACA,MAAM,CAAC,KAAK,EAAE,GAAY,EAAE,SAAkB,EAAE,EAAE;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,WAAW,CAAC,OAAO,CACnB,CAAC;IACF,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CACxC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAC5C,CAAC;AACH,CAAC,CAAC,CAAC;AAEJ,oBAAoB;AACpB,CAAC,KAAK,IAAI,EAAE;IACX,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC,EAAE,CAAC"}
@@ -1,8 +0,0 @@
1
- import { BaseCommand } from "./ICommand.js";
2
- /**
3
- * Auth command - authenticate with Sylas Pro plan using auth key
4
- */
5
- export declare class AuthCommand extends BaseCommand {
6
- execute(args: string[]): Promise<void>;
7
- }
8
- //# sourceMappingURL=AuthCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/AuthCommand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAiF5C"}
@@ -1,70 +0,0 @@
1
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- import { getSylasAppUrl } from "sylas-cloudflare-tunnel-client";
4
- import { BaseCommand } from "./ICommand.js";
5
- /**
6
- * Auth command - authenticate with Sylas Pro plan using auth key
7
- */
8
- export class AuthCommand extends BaseCommand {
9
- async execute(args) {
10
- // Get auth key from command line arguments
11
- const authKey = args[0];
12
- if (!authKey ||
13
- typeof authKey !== "string" ||
14
- authKey.trim().length === 0) {
15
- this.logError("Error: Auth key is required");
16
- console.log("\nUsage: sylas auth <auth-key>");
17
- console.log(`\nGet your auth key from: ${getSylasAppUrl()}/onboarding/auth-sylas`);
18
- process.exit(1);
19
- }
20
- console.log("\n🔑 Authenticating with Sylas...");
21
- this.logDivider();
22
- try {
23
- // Import ConfigApiClient
24
- const { ConfigApiClient } = await import("sylas-cloudflare-tunnel-client");
25
- // Call the config API to get credentials
26
- console.log("Validating auth key...");
27
- const configResponse = await ConfigApiClient.getConfig(authKey);
28
- if (!ConfigApiClient.isValid(configResponse)) {
29
- this.logError("Authentication failed");
30
- console.error(configResponse.error || "Invalid response from server");
31
- console.log("\nPlease verify your auth key is correct.");
32
- console.log(`Get your auth key from: ${getSylasAppUrl()}/onboarding/auth-sylas`);
33
- process.exit(1);
34
- }
35
- this.logSuccess("Authentication successful!");
36
- // Ensure SYLAS_HOME directory exists
37
- if (!existsSync(this.app.sylasHome)) {
38
- mkdirSync(this.app.sylasHome, { recursive: true });
39
- }
40
- // Store tokens in ~/.sylas/.env file
41
- const envPath = resolve(this.app.sylasHome, ".env");
42
- const envContent = `# Sylas Authentication Credentials
43
- # Generated on ${new Date().toISOString()}
44
- CLOUDFLARE_TOKEN=${configResponse.config.cloudflareToken}
45
- SYLAS_API_KEY=${configResponse.config.apiKey}
46
- SYLAS_SETUP_PENDING=true
47
- `;
48
- writeFileSync(envPath, envContent, "utf-8");
49
- this.logSuccess(`Credentials saved to ${envPath}`);
50
- // Reload environment variables to pick up SYLAS_SETUP_PENDING
51
- const dotenv = await import("dotenv");
52
- dotenv.config({ path: envPath, override: true });
53
- console.log("\n✨ Setup complete! Starting Sylas...");
54
- this.logDivider();
55
- console.log();
56
- // Start the edge app with the new configuration
57
- // Import StartCommand to avoid circular dependency
58
- const { StartCommand } = await import("./StartCommand.js");
59
- const startCommand = new StartCommand(this.app);
60
- await startCommand.execute([]);
61
- }
62
- catch (error) {
63
- this.logError("Authentication failed:");
64
- console.error(error.message);
65
- console.log("\nPlease try again or contact support if the issue persists.");
66
- process.exit(1);
67
- }
68
- }
69
- }
70
- //# sourceMappingURL=AuthCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthCommand.js","sourceRoot":"","sources":["../../../src/commands/AuthCommand.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { BaseCommand } from "./ICommand.js";
2
- /**
3
- * Check tokens command - check the status of all Linear tokens
4
- */
5
- export declare class CheckTokensCommand extends BaseCommand {
6
- execute(_args: string[]): Promise<void>;
7
- }
8
- //# sourceMappingURL=CheckTokensCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckTokensCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/CheckTokensCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmC5C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB7C"}
@@ -1,53 +0,0 @@
1
- import { BaseCommand } from "./ICommand.js";
2
- /**
3
- * Helper function to check Linear token status
4
- */
5
- async function checkLinearToken(token) {
6
- try {
7
- const response = await fetch("https://api.linear.app/graphql", {
8
- method: "POST",
9
- headers: {
10
- "Content-Type": "application/json",
11
- Authorization: token,
12
- },
13
- body: JSON.stringify({
14
- query: "{ viewer { id email name } }",
15
- }),
16
- });
17
- const data = (await response.json());
18
- if (data.errors) {
19
- return {
20
- valid: false,
21
- error: data.errors[0]?.message || "Unknown error",
22
- };
23
- }
24
- return { valid: true };
25
- }
26
- catch (error) {
27
- return { valid: false, error: error.message };
28
- }
29
- }
30
- /**
31
- * Check tokens command - check the status of all Linear tokens
32
- */
33
- export class CheckTokensCommand extends BaseCommand {
34
- async execute(_args) {
35
- if (!this.app.config.exists()) {
36
- this.logError("No edge configuration found. Please run setup first.");
37
- process.exit(1);
38
- }
39
- const config = this.app.config.load();
40
- console.log("Checking Linear tokens...\n");
41
- for (const repo of config.repositories) {
42
- process.stdout.write(`${repo.name} (${repo.linearWorkspaceName}): `);
43
- const result = await checkLinearToken(repo.linearToken);
44
- if (result.valid) {
45
- console.log("✅ Valid");
46
- }
47
- else {
48
- console.log(`❌ Invalid - ${result.error}`);
49
- }
50
- }
51
- }
52
- }
53
- //# sourceMappingURL=CheckTokensCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckTokensCommand.js","sourceRoot":"","sources":["../../../src/commands/CheckTokensCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC9B,KAAa;IAEb,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,KAAK;aACpB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,8BAA8B;aACrC,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;QAE5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,eAAe;aACjD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAClD,KAAK,CAAC,OAAO,CAAC,KAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,KAAK,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAExD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;IACF,CAAC;CACD"}
@@ -1,38 +0,0 @@
1
- import type { Application } from "../Application.js";
2
- import type { Logger } from "../services/Logger.js";
3
- /**
4
- * Interface for all CLI commands
5
- */
6
- export interface ICommand {
7
- /**
8
- * Execute the command
9
- * @param args Command-line arguments
10
- */
11
- execute(args: string[]): Promise<void>;
12
- }
13
- /**
14
- * Base class for commands with common functionality
15
- */
16
- export declare abstract class BaseCommand implements ICommand {
17
- protected app: Application;
18
- protected logger: Logger;
19
- constructor(app: Application);
20
- abstract execute(args: string[]): Promise<void>;
21
- /**
22
- * Helper to exit with error
23
- */
24
- protected exitWithError(message: string, code?: number): never;
25
- /**
26
- * Helper to log success
27
- */
28
- protected logSuccess(message: string): void;
29
- /**
30
- * Helper to log error
31
- */
32
- protected logError(message: string): void;
33
- /**
34
- * Helper to log section divider
35
- */
36
- protected logDivider(): void;
37
- }
38
- //# sourceMappingURL=ICommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ICommand.d.ts","sourceRoot":"","sources":["../../../src/commands/ICommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,8BAAsB,WAAY,YAAW,QAAQ;IAGxC,SAAS,CAAC,GAAG,EAAE,WAAW;IAFtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEH,GAAG,EAAE,WAAW;IAItC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK;IAKzD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;CAG5B"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Base class for commands with common functionality
3
- */
4
- export class BaseCommand {
5
- app;
6
- logger;
7
- constructor(app) {
8
- this.app = app;
9
- this.logger = app.logger;
10
- }
11
- /**
12
- * Helper to exit with error
13
- */
14
- exitWithError(message, code = 1) {
15
- this.logger.error(message);
16
- process.exit(code);
17
- }
18
- /**
19
- * Helper to log success
20
- */
21
- logSuccess(message) {
22
- this.logger.success(message);
23
- }
24
- /**
25
- * Helper to log error
26
- */
27
- logError(message) {
28
- this.logger.error(message);
29
- }
30
- /**
31
- * Helper to log section divider
32
- */
33
- logDivider() {
34
- this.logger.divider(50);
35
- }
36
- }
37
- //# sourceMappingURL=ICommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ICommand.js","sourceRoot":"","sources":["../../../src/commands/ICommand.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,OAAgB,WAAW;IAGV;IAFZ,MAAM,CAAS;IAEzB,YAAsB,GAAgB;QAAhB,QAAG,GAAH,GAAG,CAAa;QACrC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,CAAC;IAID;;OAEG;IACO,aAAa,CAAC,OAAe,EAAE,IAAI,GAAG,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,OAAe;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,OAAe;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,UAAU;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;CACD"}
@@ -1,8 +0,0 @@
1
- import { BaseCommand } from "./ICommand.js";
2
- /**
3
- * Refresh token command - refresh a specific Linear token
4
- */
5
- export declare class RefreshTokenCommand extends BaseCommand {
6
- execute(_args: string[]): Promise<void>;
7
- }
8
- //# sourceMappingURL=RefreshTokenCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefreshTokenCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/RefreshTokenCommand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmC5C;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAC7C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAwJ7C"}
@@ -1,152 +0,0 @@
1
- import http from "node:http";
2
- import open from "open";
3
- import { CLIPrompts } from "../ui/CLIPrompts.js";
4
- import { BaseCommand } from "./ICommand.js";
5
- /**
6
- * Helper function to check Linear token status
7
- */
8
- async function checkLinearToken(token) {
9
- try {
10
- const response = await fetch("https://api.linear.app/graphql", {
11
- method: "POST",
12
- headers: {
13
- "Content-Type": "application/json",
14
- Authorization: token,
15
- },
16
- body: JSON.stringify({
17
- query: "{ viewer { id email name } }",
18
- }),
19
- });
20
- const data = (await response.json());
21
- if (data.errors) {
22
- return {
23
- valid: false,
24
- error: data.errors[0]?.message || "Unknown error",
25
- };
26
- }
27
- return { valid: true };
28
- }
29
- catch (error) {
30
- return { valid: false, error: error.message };
31
- }
32
- }
33
- /**
34
- * Refresh token command - refresh a specific Linear token
35
- */
36
- export class RefreshTokenCommand extends BaseCommand {
37
- async execute(_args) {
38
- if (!this.app.config.exists()) {
39
- this.logError("No edge configuration found. Please run setup first.");
40
- process.exit(1);
41
- }
42
- const config = this.app.config.load();
43
- // Show repositories with their token status
44
- console.log("Checking current token status...\n");
45
- const tokenStatuses = [];
46
- for (const repo of config.repositories) {
47
- const result = await checkLinearToken(repo.linearToken);
48
- tokenStatuses.push({ repo, valid: result.valid });
49
- console.log(`${tokenStatuses.length}. ${repo.name} (${repo.linearWorkspaceName}): ${result.valid ? "✅ Valid" : "❌ Invalid"}`);
50
- }
51
- // Ask which token to refresh
52
- const answer = await CLIPrompts.ask('\nWhich repository token would you like to refresh? (Enter number or "all"): ');
53
- const indicesToRefresh = [];
54
- if (answer.toLowerCase() === "all") {
55
- indicesToRefresh.push(...Array.from({ length: tokenStatuses.length }, (_, i) => i));
56
- }
57
- else {
58
- const index = parseInt(answer, 10) - 1;
59
- if (Number.isNaN(index) || index < 0 || index >= tokenStatuses.length) {
60
- this.logError("Invalid selection");
61
- process.exit(1);
62
- }
63
- indicesToRefresh.push(index);
64
- }
65
- // Refresh tokens
66
- for (const index of indicesToRefresh) {
67
- const tokenStatus = tokenStatuses[index];
68
- if (!tokenStatus)
69
- continue;
70
- const { repo } = tokenStatus;
71
- console.log(`\nRefreshing token for ${repo.name} (${repo.linearWorkspaceName || repo.linearWorkspaceId})...`);
72
- console.log("Opening Linear OAuth flow in your browser...");
73
- // Use the proxy's OAuth flow with a callback to localhost
74
- const serverPort = process.env.SYLAS_SERVER_PORT
75
- ? parseInt(process.env.SYLAS_SERVER_PORT, 10)
76
- : 3456;
77
- const callbackUrl = `http://localhost:${serverPort}/callback`;
78
- const proxyUrl = this.app.getProxyUrl();
79
- const oauthUrl = `${proxyUrl}/oauth/authorize?callback=${encodeURIComponent(callbackUrl)}`;
80
- console.log(`\nPlease complete the OAuth flow in your browser.`);
81
- console.log(`If the browser doesn't open automatically, visit:\n${oauthUrl}\n`);
82
- // Start a temporary server to receive the OAuth callback
83
- let tokenReceived = null;
84
- const server = await new Promise((resolve) => {
85
- const s = http.createServer((req, res) => {
86
- if (req.url?.startsWith("/callback")) {
87
- const url = new URL(req.url, `http://localhost:${serverPort}`);
88
- tokenReceived = url.searchParams.get("token");
89
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
90
- res.end(`
91
- <html>
92
- <head>
93
- <meta charset="UTF-8">
94
- </head>
95
- <body style="font-family: system-ui; padding: 40px; text-align: center;">
96
- <h2>✅ Authorization successful!</h2>
97
- <p>You can close this window and return to your terminal.</p>
98
- <script>setTimeout(() => window.close(), 2000);</script>
99
- </body>
100
- </html>
101
- `);
102
- }
103
- else {
104
- res.writeHead(404);
105
- res.end("Not found");
106
- }
107
- });
108
- s.listen(serverPort, () => {
109
- console.log("Waiting for OAuth callback...");
110
- resolve(s);
111
- });
112
- });
113
- await open(oauthUrl);
114
- // Wait for the token with timeout
115
- const startTime = Date.now();
116
- while (!tokenReceived && Date.now() - startTime < 120000) {
117
- await new Promise((resolve) => setTimeout(resolve, 100));
118
- }
119
- server.close();
120
- const newToken = tokenReceived;
121
- if (!newToken || !newToken.startsWith("lin_oauth_")) {
122
- this.logError("Invalid token received from OAuth flow");
123
- continue;
124
- }
125
- // Verify the new token
126
- const verifyResult = await checkLinearToken(newToken);
127
- if (!verifyResult.valid) {
128
- this.logError(`New token is invalid: ${verifyResult.error}`);
129
- continue;
130
- }
131
- // Update the config - update ALL repositories that had the same old token
132
- const oldToken = repo.linearToken;
133
- let updatedCount = 0;
134
- this.app.config.update((cfg) => {
135
- for (let i = 0; i < cfg.repositories.length; i++) {
136
- const currentRepo = cfg.repositories[i];
137
- if (currentRepo && currentRepo.linearToken === oldToken) {
138
- currentRepo.linearToken = newToken;
139
- updatedCount++;
140
- this.logSuccess(`Updated token for ${currentRepo.name}`);
141
- }
142
- }
143
- return cfg;
144
- });
145
- if (updatedCount > 1) {
146
- console.log(`\n📝 Updated ${updatedCount} repositories that shared the same token`);
147
- }
148
- }
149
- this.logSuccess("Configuration saved");
150
- }
151
- }
152
- //# sourceMappingURL=RefreshTokenCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefreshTokenCommand.js","sourceRoot":"","sources":["../../../src/commands/RefreshTokenCommand.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { BaseCommand } from "./ICommand.js";
2
- /**
3
- * Self-add-repo command - clones a repo and adds it to config.json
4
- *
5
- * Usage:
6
- * sylas self-add-repo # prompts for everything
7
- * sylas self-add-repo <url> # prompts for workspace if multiple
8
- * sylas self-add-repo <url> <workspace> # no prompts
9
- */
10
- export declare class SelfAddRepoCommand extends BaseCommand {
11
- private rl;
12
- private getReadline;
13
- private prompt;
14
- private cleanup;
15
- execute(args: string[]): Promise<void>;
16
- }
17
- //# sourceMappingURL=SelfAddRepoCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelfAddRepoCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/SelfAddRepoCommand.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAClD,OAAO,CAAC,EAAE,CAAmC;IAE7C,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,OAAO;IAOT,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAkJ5C"}