@mexty/cli 1.6.0 → 1.7.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 (55) hide show
  1. package/GITHUB_OAUTH_SETUP.md +247 -0
  2. package/dist/commands/create.d.ts +9 -0
  3. package/dist/commands/create.d.ts.map +1 -0
  4. package/dist/commands/create.js +130 -0
  5. package/dist/commands/create.js.map +1 -0
  6. package/dist/commands/delete.d.ts +2 -0
  7. package/dist/commands/delete.d.ts.map +1 -0
  8. package/dist/commands/delete.js +59 -0
  9. package/dist/commands/delete.js.map +1 -0
  10. package/dist/commands/github-disconnect.d.ts +2 -0
  11. package/dist/commands/github-disconnect.d.ts.map +1 -0
  12. package/dist/commands/github-disconnect.js +73 -0
  13. package/dist/commands/github-disconnect.js.map +1 -0
  14. package/dist/commands/github-login.d.ts +2 -0
  15. package/dist/commands/github-login.d.ts.map +1 -0
  16. package/dist/commands/github-login.js +100 -0
  17. package/dist/commands/github-login.js.map +1 -0
  18. package/dist/commands/login.d.ts +2 -0
  19. package/dist/commands/login.d.ts.map +1 -0
  20. package/dist/commands/login.js +90 -0
  21. package/dist/commands/login.js.map +1 -0
  22. package/dist/commands/publish.d.ts +6 -0
  23. package/dist/commands/publish.d.ts.map +1 -0
  24. package/dist/commands/publish.js +176 -0
  25. package/dist/commands/publish.js.map +1 -0
  26. package/dist/commands/save.d.ts +2 -0
  27. package/dist/commands/save.d.ts.map +1 -0
  28. package/dist/commands/save.js +162 -0
  29. package/dist/commands/save.js.map +1 -0
  30. package/dist/commands/update-git-url.d.ts +2 -0
  31. package/dist/commands/update-git-url.d.ts.map +1 -0
  32. package/dist/commands/update-git-url.js +153 -0
  33. package/dist/commands/update-git-url.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +119 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/utils/api.d.ts +117 -0
  39. package/dist/utils/api.d.ts.map +1 -0
  40. package/dist/utils/api.js +202 -0
  41. package/dist/utils/api.js.map +1 -0
  42. package/dist/utils/auth.d.ts +4 -0
  43. package/dist/utils/auth.d.ts.map +1 -0
  44. package/dist/utils/auth.js +27 -0
  45. package/dist/utils/auth.js.map +1 -0
  46. package/dist/utils/git.d.ts +47 -0
  47. package/dist/utils/git.d.ts.map +1 -0
  48. package/dist/utils/git.js +224 -0
  49. package/dist/utils/git.js.map +1 -0
  50. package/package.json +2 -1
  51. package/src/commands/github-disconnect.ts +80 -0
  52. package/src/commands/github-login.ts +107 -0
  53. package/src/index.ts +37 -0
  54. package/src/utils/api.ts +21 -0
  55. package/src/utils/git.ts +60 -2
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.updateGitUrlCommand = updateGitUrlCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const api_1 = require("../utils/api");
9
+ const auth_1 = require("../utils/auth");
10
+ const readline_1 = require("readline");
11
+ // Simple prompt function
12
+ async function prompt(question, defaultValue) {
13
+ return new Promise((resolve) => {
14
+ const rl = (0, readline_1.createInterface)({
15
+ input: process.stdin,
16
+ output: process.stdout,
17
+ });
18
+ const promptText = defaultValue
19
+ ? `${question} (${defaultValue}): `
20
+ : `${question}: `;
21
+ rl.question(promptText, (answer) => {
22
+ rl.close();
23
+ resolve(answer.trim() || defaultValue || "");
24
+ });
25
+ });
26
+ }
27
+ // Simple yes/no prompt function
28
+ async function promptYesNo(question) {
29
+ return new Promise((resolve) => {
30
+ const rl = (0, readline_1.createInterface)({
31
+ input: process.stdin,
32
+ output: process.stdout,
33
+ });
34
+ rl.question(`${question} (y/n): `, (answer) => {
35
+ rl.close();
36
+ resolve(answer.toLowerCase().startsWith("y"));
37
+ });
38
+ });
39
+ }
40
+ async function updateGitUrlCommand(blockId, gitUrl, reset) {
41
+ try {
42
+ // Require authentication
43
+ await (0, auth_1.requireAuthentication)();
44
+ const user = (0, auth_1.getAuthenticatedUser)();
45
+ console.log(chalk_1.default.blue("🔗 Update Block Git URL"));
46
+ console.log(chalk_1.default.gray("Update the Git repository URL for a block\n"));
47
+ // Get block ID if not provided
48
+ if (!blockId) {
49
+ blockId = await prompt("Enter block ID");
50
+ if (!blockId) {
51
+ console.error(chalk_1.default.red("❌ Block ID is required"));
52
+ process.exit(1);
53
+ }
54
+ }
55
+ // Validate block ID format
56
+ if (!/^[a-f0-9]{24}$/.test(blockId)) {
57
+ console.error(chalk_1.default.red("❌ Invalid block ID format"));
58
+ process.exit(1);
59
+ }
60
+ console.log(chalk_1.default.blue(`📦 Block ID: ${blockId}`));
61
+ // Get current block information
62
+ try {
63
+ const block = await api_1.apiClient.getBlock(blockId);
64
+ console.log(chalk_1.default.green(`✅ Found block: ${block.title}`));
65
+ console.log(chalk_1.default.gray(`Current Git URL: ${block.gitUrl || "Not set"}`));
66
+ // Check if current URL is default
67
+ const isDefaultUrl = block.gitUrl?.startsWith("https://github.com/mext-ai/block-");
68
+ if (isDefaultUrl) {
69
+ console.log(chalk_1.default.yellow("ℹ️ Current URL is the default Mext URL"));
70
+ }
71
+ }
72
+ catch (error) {
73
+ console.error(chalk_1.default.red(`❌ Failed to fetch block: ${error.message}`));
74
+ process.exit(1);
75
+ }
76
+ let newGitUrl;
77
+ let resetToDefault = false;
78
+ // Handle reset option
79
+ if (reset) {
80
+ resetToDefault = true;
81
+ newGitUrl = `https://github.com/mext-ai/block-${blockId}`;
82
+ console.log(chalk_1.default.blue(`🔄 Resetting to default URL: ${newGitUrl}`));
83
+ }
84
+ else if (gitUrl) {
85
+ // Validate provided URL
86
+ const isValidUrl = /^https:\/\/github\.com\/[\w\-\.]+\/[\w\-\.]+(?:\.git)?$/.test(gitUrl);
87
+ if (!isValidUrl) {
88
+ console.error(chalk_1.default.red("❌ Invalid Git URL format. Please provide a valid GitHub URL."));
89
+ process.exit(1);
90
+ }
91
+ newGitUrl = gitUrl;
92
+ console.log(chalk_1.default.blue(`🔗 New Git URL: ${newGitUrl}`));
93
+ }
94
+ else {
95
+ // Interactive mode
96
+ const currentBlock = await api_1.apiClient.getBlock(blockId);
97
+ const currentUrl = currentBlock.gitUrl || "";
98
+ // Ask for new URL
99
+ newGitUrl = await prompt("Enter new Git URL", currentUrl);
100
+ if (!newGitUrl) {
101
+ console.error(chalk_1.default.red("❌ Git URL is required"));
102
+ process.exit(1);
103
+ }
104
+ // Validate URL format
105
+ const isValidUrl = /^https:\/\/github\.com\/[\w\-\.]+\/[\w\-\.]+(?:\.git)?$/.test(newGitUrl);
106
+ if (!isValidUrl) {
107
+ console.error(chalk_1.default.red("❌ Invalid Git URL format. Please provide a valid GitHub URL."));
108
+ process.exit(1);
109
+ }
110
+ // Check if user wants to reset to default
111
+ if (!newGitUrl.startsWith("https://github.com/mext-ai/block-")) {
112
+ const shouldReset = await promptYesNo("This is not the default Mext URL. Do you want to reset to default instead?");
113
+ if (shouldReset) {
114
+ resetToDefault = true;
115
+ newGitUrl = `https://github.com/mext-ai/block-${blockId}`;
116
+ console.log(chalk_1.default.blue(`🔄 Resetting to default URL: ${newGitUrl}`));
117
+ }
118
+ }
119
+ }
120
+ // Confirm the update
121
+ console.log(chalk_1.default.yellow(`\n⚠️ About to update Git URL to: ${newGitUrl}`));
122
+ const confirmed = await promptYesNo("Do you want to proceed?");
123
+ if (!confirmed) {
124
+ console.log(chalk_1.default.gray("❌ Update cancelled"));
125
+ process.exit(0);
126
+ }
127
+ // Update the Git URL
128
+ console.log(chalk_1.default.blue("🔄 Updating Git URL..."));
129
+ try {
130
+ const result = await api_1.apiClient.updateBlockGitUrl(blockId, newGitUrl, resetToDefault);
131
+ console.log(chalk_1.default.green("✅ Git URL updated successfully!"));
132
+ console.log(chalk_1.default.gray(`New URL: ${result.gitUrl}`));
133
+ if (result.resetToDefault) {
134
+ console.log(chalk_1.default.yellow("🔄 URL was reset to default"));
135
+ }
136
+ }
137
+ catch (error) {
138
+ console.error(chalk_1.default.red(`❌ Failed to update Git URL: ${error.message}`));
139
+ if (error.response?.status === 403) {
140
+ console.error(chalk_1.default.red("Access denied. You can only update blocks you own."));
141
+ }
142
+ else if (error.response?.status === 404) {
143
+ console.error(chalk_1.default.red("Block not found."));
144
+ }
145
+ process.exit(1);
146
+ }
147
+ }
148
+ catch (error) {
149
+ console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
150
+ process.exit(1);
151
+ }
152
+ }
153
+ //# sourceMappingURL=update-git-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-git-url.js","sourceRoot":"","sources":["../../src/commands/update-git-url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const login_1 = require("./commands/login");
10
+ const create_1 = require("./commands/create");
11
+ const delete_1 = require("./commands/delete");
12
+ const publish_1 = require("./commands/publish");
13
+ const save_1 = require("./commands/save");
14
+ const update_git_url_1 = require("./commands/update-git-url");
15
+ const github_login_1 = require("./commands/github-login");
16
+ const github_disconnect_1 = require("./commands/github-disconnect");
17
+ const api_1 = require("./utils/api");
18
+ const program = new commander_1.Command();
19
+ // CLI Configuration
20
+ program
21
+ .name("mexty")
22
+ .description("MEXT CLI for managing React microfrontend blocks and components")
23
+ .version("1.0.0");
24
+ // Add commands
25
+ program
26
+ .command("login")
27
+ .description("Authenticate with MEXT")
28
+ .action(login_1.loginCommand);
29
+ program
30
+ .command("logout")
31
+ .description("Logout from MEXT")
32
+ .action(async () => {
33
+ try {
34
+ if (!api_1.apiClient.isAuthenticated()) {
35
+ console.log(chalk_1.default.yellow("⚠️ You are not logged in"));
36
+ return;
37
+ }
38
+ await api_1.apiClient.logout();
39
+ console.log(chalk_1.default.green("✅ Logged out successfully"));
40
+ }
41
+ catch (error) {
42
+ console.error(chalk_1.default.red(`❌ Logout failed: ${error.message}`));
43
+ }
44
+ });
45
+ // Support both old and new create syntax
46
+ program
47
+ .command("create [subcommand]")
48
+ .description("Create a new React microfrontend block")
49
+ .option("-d, --description <description>", "Block description")
50
+ .option("-t, --type <type>", "Block type", "custom")
51
+ .option("-n, --name <name>", 'Block name (for "create block" syntax)')
52
+ .option("-c, --category <category>", 'Block category (for "create block" syntax)')
53
+ .action(create_1.createCommand);
54
+ program
55
+ .command("delete <blockId>")
56
+ .description("Delete a block (requires ownership)")
57
+ .action(delete_1.deleteCommand);
58
+ program
59
+ .command("publish")
60
+ .description("Publish current block to marketplace (free only)")
61
+ .option("--agent", "Make block insertable by AI agents", false)
62
+ .action(publish_1.publishCommand);
63
+ program
64
+ .command("save")
65
+ .description("Save current block (git add, commit, push, and trigger build)")
66
+ .action(save_1.saveCommand);
67
+ program
68
+ .command("update-git-url [blockId]")
69
+ .description("Update the Git repository URL for a block")
70
+ .option("-u, --url <url>", "New Git URL")
71
+ .option("-r, --reset", "Reset to default Mext URL")
72
+ .action((blockId, options) => {
73
+ (0, update_git_url_1.updateGitUrlCommand)(blockId, options.url, options.reset);
74
+ });
75
+ program
76
+ .command("github-login")
77
+ .description("Connect your GitHub account for private repository access")
78
+ .action(github_login_1.githubLoginCommand);
79
+ program
80
+ .command("github-disconnect")
81
+ .description("Disconnect your GitHub account")
82
+ .action(github_disconnect_1.githubDisconnectCommand);
83
+ program
84
+ .command("github-status")
85
+ .description("Check GitHub connection status")
86
+ .action(async () => {
87
+ try {
88
+ if (!api_1.apiClient.isAuthenticated()) {
89
+ console.log(chalk_1.default.yellow("⚠️ Please login first: mexty login"));
90
+ return;
91
+ }
92
+ const status = await api_1.apiClient.getGitHubStatus();
93
+ if (status.connected) {
94
+ console.log(chalk_1.default.green("✅ GitHub connected"));
95
+ console.log(chalk_1.default.gray(` Username: ${status.githubUsername}`));
96
+ console.log(chalk_1.default.gray(` Status: ${status.message}`));
97
+ }
98
+ else {
99
+ console.log(chalk_1.default.yellow("❌ GitHub not connected"));
100
+ console.log(chalk_1.default.blue(" Connect with: mexty github-login"));
101
+ }
102
+ }
103
+ catch (error) {
104
+ console.error(chalk_1.default.red(`❌ Failed to check status: ${error.message}`));
105
+ }
106
+ });
107
+ // Error handling
108
+ program.on("command:*", () => {
109
+ console.error(chalk_1.default.red(`Invalid command: ${program.args.join(" ")}`));
110
+ console.log(chalk_1.default.yellow("See --help for a list of available commands."));
111
+ process.exit(1);
112
+ });
113
+ // Parse arguments
114
+ program.parse(process.argv);
115
+ // Show help if no command provided
116
+ if (!process.argv.slice(2).length) {
117
+ program.outputHelp();
118
+ }
119
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ export interface Block {
2
+ _id: string;
3
+ id?: string;
4
+ blockType: string;
5
+ _doc?: {
6
+ _id: string;
7
+ blockType: string;
8
+ title: string;
9
+ description: string;
10
+ gitUrl?: string;
11
+ [key: string]: any;
12
+ };
13
+ title: string;
14
+ description: string;
15
+ gitUrl?: string;
16
+ courseId?: string;
17
+ courseName?: string;
18
+ allowedBrickTypes: string[];
19
+ allowedBlockTypes?: string[];
20
+ scope: ("library" | "user-store" | "published-store")[];
21
+ content: any[];
22
+ forkedId?: string;
23
+ bundlePath?: string;
24
+ federationUrl?: string;
25
+ buildStatus?: "pending" | "building" | "success" | "failed";
26
+ buildError?: string;
27
+ lastBuilt?: Date;
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ }
31
+ export interface CreateBlockRequest {
32
+ blockType: string;
33
+ title: string;
34
+ description: string;
35
+ gitUrl?: string;
36
+ courseId?: string;
37
+ courseName?: string;
38
+ allowedBrickTypes: string[];
39
+ allowedBlockTypes?: string[];
40
+ scope: string[];
41
+ content?: any[];
42
+ }
43
+ export interface ForkBlockRequest {
44
+ blockId: string;
45
+ title?: string;
46
+ description?: string;
47
+ }
48
+ export interface SaveAndBundleRequest {
49
+ blockId: string;
50
+ }
51
+ export interface AuthResponse {
52
+ success: boolean;
53
+ message: string;
54
+ token?: string;
55
+ user?: {
56
+ id: string;
57
+ email: string;
58
+ fullName?: string;
59
+ occupation?: string;
60
+ isProfileComplete: boolean;
61
+ };
62
+ }
63
+ export interface LoginRequest {
64
+ email: string;
65
+ otp: string;
66
+ }
67
+ declare class ApiClient {
68
+ private client;
69
+ private baseUrl;
70
+ private tokenPath;
71
+ constructor(baseUrl?: string);
72
+ private getStoredToken;
73
+ private storeToken;
74
+ private clearStoredToken;
75
+ isAuthenticated(): boolean;
76
+ getStoredUser(): any;
77
+ createBlock(data: CreateBlockRequest): Promise<Block>;
78
+ forkBlock(data: ForkBlockRequest): Promise<Block>;
79
+ deleteBlock(blockId: string): Promise<void>;
80
+ getBlock(blockId: string): Promise<Block>;
81
+ saveAndBundle(data: SaveAndBundleRequest): Promise<any>;
82
+ updateBlockSharing(blockId: string, scope: string[]): Promise<any>;
83
+ updateBlockAgentInsertable(blockId: string, isInsertableByAgent: boolean): Promise<any>;
84
+ healthCheck(): Promise<boolean>;
85
+ requestOTP(email: string): Promise<AuthResponse>;
86
+ verifyOTP(email: string, otp: string): Promise<AuthResponse>;
87
+ addBlockToStructure(blockId: string, parentPath?: string): Promise<any>;
88
+ logout(): Promise<void>;
89
+ updateBlockGitUrl(blockId: string, gitUrl?: string, resetToDefault?: boolean): Promise<any>;
90
+ getGitHubAuthUrl(): Promise<{
91
+ success: boolean;
92
+ url?: string;
93
+ message: string;
94
+ }>;
95
+ getGitHubStatus(): Promise<{
96
+ success: boolean;
97
+ connected: boolean;
98
+ githubUsername?: string;
99
+ message: string;
100
+ }>;
101
+ getGitHubToken(): Promise<{
102
+ success: boolean;
103
+ token?: string;
104
+ username?: string;
105
+ expiresAt?: Date;
106
+ message?: string;
107
+ expired?: boolean;
108
+ }>;
109
+ disconnectGitHub(): Promise<{
110
+ success: boolean;
111
+ message: string;
112
+ }>;
113
+ setBaseUrl(url: string): void;
114
+ }
115
+ export declare const apiClient: ApiClient;
116
+ export {};
117
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const os_1 = __importDefault(require("os"));
12
+ class ApiClient {
13
+ constructor(baseUrl = "https://api.mexty.ai") {
14
+ this.baseUrl = baseUrl;
15
+ this.tokenPath = path_1.default.join(os_1.default.homedir(), ".mext", "auth.json");
16
+ this.client = axios_1.default.create({
17
+ baseURL: baseUrl,
18
+ timeout: 30000,
19
+ headers: {
20
+ "Content-Type": "application/json",
21
+ },
22
+ });
23
+ // Add request interceptor to include auth token
24
+ this.client.interceptors.request.use((config) => {
25
+ const token = this.getStoredToken();
26
+ if (token) {
27
+ config.headers.Authorization = `Bearer ${token}`;
28
+ }
29
+ return config;
30
+ }, (error) => Promise.reject(error));
31
+ // Add response interceptor for error handling
32
+ this.client.interceptors.response.use((response) => response, (error) => {
33
+ if (error.response?.status === 401) {
34
+ console.error(chalk_1.default.red("Authentication required. Please login first: mexty login"));
35
+ this.clearStoredToken();
36
+ }
37
+ else if (error.response) {
38
+ console.error(chalk_1.default.red(`API Error ${error.response.status}: ${error.response.data?.error || error.message}`));
39
+ }
40
+ else if (error.request) {
41
+ console.error(chalk_1.default.red("Network Error: Could not reach MEXT server"));
42
+ console.error(chalk_1.default.yellow(`Make sure the server is running at ${this.baseUrl}`));
43
+ }
44
+ else {
45
+ console.error(chalk_1.default.red(`Request Error: ${error.message}`));
46
+ }
47
+ throw error;
48
+ });
49
+ }
50
+ getStoredToken() {
51
+ try {
52
+ if (fs_1.default.existsSync(this.tokenPath)) {
53
+ const authData = JSON.parse(fs_1.default.readFileSync(this.tokenPath, "utf8"));
54
+ return authData.token || null;
55
+ }
56
+ }
57
+ catch (error) {
58
+ // Ignore errors reading token file
59
+ }
60
+ return null;
61
+ }
62
+ storeToken(token, user) {
63
+ try {
64
+ const authDir = path_1.default.dirname(this.tokenPath);
65
+ if (!fs_1.default.existsSync(authDir)) {
66
+ fs_1.default.mkdirSync(authDir, { recursive: true });
67
+ }
68
+ const authData = {
69
+ token,
70
+ user,
71
+ timestamp: new Date().toISOString(),
72
+ };
73
+ fs_1.default.writeFileSync(this.tokenPath, JSON.stringify(authData, null, 2));
74
+ }
75
+ catch (error) {
76
+ console.warn(chalk_1.default.yellow(`Warning: Could not store auth token: ${error.message}`));
77
+ }
78
+ }
79
+ clearStoredToken() {
80
+ try {
81
+ if (fs_1.default.existsSync(this.tokenPath)) {
82
+ fs_1.default.unlinkSync(this.tokenPath);
83
+ }
84
+ }
85
+ catch (error) {
86
+ // Ignore errors clearing token file
87
+ }
88
+ }
89
+ isAuthenticated() {
90
+ return this.getStoredToken() !== null;
91
+ }
92
+ getStoredUser() {
93
+ try {
94
+ if (fs_1.default.existsSync(this.tokenPath)) {
95
+ const authData = JSON.parse(fs_1.default.readFileSync(this.tokenPath, "utf8"));
96
+ return authData.user || null;
97
+ }
98
+ }
99
+ catch (error) {
100
+ // Ignore errors reading user data
101
+ }
102
+ return null;
103
+ }
104
+ async createBlock(data) {
105
+ const response = await this.client.post("/api/blocks", data);
106
+ return response.data;
107
+ }
108
+ async forkBlock(data) {
109
+ const response = await this.client.post("/api/blocks/fork", data);
110
+ return response.data;
111
+ }
112
+ async deleteBlock(blockId) {
113
+ await this.client.delete(`/api/blocks/${blockId}`);
114
+ }
115
+ async getBlock(blockId) {
116
+ const response = await this.client.get(`/api/blocks/${blockId}`);
117
+ return response.data;
118
+ }
119
+ async saveAndBundle(data) {
120
+ const response = await this.client.post("/api/blocks/save-and-bundle", data);
121
+ return response.data;
122
+ }
123
+ async updateBlockSharing(blockId, scope) {
124
+ const response = await this.client.patch(`/api/blocks/${blockId}/sharing`, {
125
+ scope,
126
+ });
127
+ return response.data;
128
+ }
129
+ async updateBlockAgentInsertable(blockId, isInsertableByAgent) {
130
+ const response = await this.client.patch(`/api/blocks/${blockId}/agent-insertable`, { isInsertableByAgent });
131
+ return response.data;
132
+ }
133
+ async healthCheck() {
134
+ try {
135
+ await this.client.get("/api/health");
136
+ return true;
137
+ }
138
+ catch (error) {
139
+ return false;
140
+ }
141
+ }
142
+ async requestOTP(email) {
143
+ const response = await this.client.post("/api/auth/request-otp", { email });
144
+ return response.data;
145
+ }
146
+ async verifyOTP(email, otp) {
147
+ const response = await this.client.post("/api/auth/verify-otp", { email, otp });
148
+ const data = response.data;
149
+ if (data.success && data.token && data.user) {
150
+ this.storeToken(data.token, data.user);
151
+ }
152
+ return data;
153
+ }
154
+ async addBlockToStructure(blockId, parentPath) {
155
+ const response = await this.client.post("/api/structure/add-block", {
156
+ blockId,
157
+ parentPath: parentPath || "/",
158
+ });
159
+ return response.data;
160
+ }
161
+ async logout() {
162
+ try {
163
+ await this.client.post("/api/auth/logout");
164
+ }
165
+ catch (error) {
166
+ // Ignore logout errors
167
+ }
168
+ finally {
169
+ this.clearStoredToken();
170
+ }
171
+ }
172
+ async updateBlockGitUrl(blockId, gitUrl, resetToDefault) {
173
+ const response = await this.client.patch(`/api/blocks/${blockId}/git-url`, {
174
+ gitUrl,
175
+ resetToDefault,
176
+ });
177
+ return response.data;
178
+ }
179
+ // GitHub OAuth methods
180
+ async getGitHubAuthUrl() {
181
+ const response = await this.client.get("/api/auth/github/url");
182
+ return response.data;
183
+ }
184
+ async getGitHubStatus() {
185
+ const response = await this.client.get("/api/auth/github/status");
186
+ return response.data;
187
+ }
188
+ async getGitHubToken() {
189
+ const response = await this.client.get("/api/auth/github/token");
190
+ return response.data;
191
+ }
192
+ async disconnectGitHub() {
193
+ const response = await this.client.post("/api/auth/github/disconnect");
194
+ return response.data;
195
+ }
196
+ setBaseUrl(url) {
197
+ this.baseUrl = url;
198
+ this.client.defaults.baseURL = url;
199
+ }
200
+ }
201
+ exports.apiClient = new ApiClient();
202
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function checkAuthentication(): boolean;
2
+ export declare function getAuthenticatedUser(): any;
3
+ export declare function requireAuthentication(): void;
4
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C;AAED,wBAAgB,oBAAoB,IAAI,GAAG,CAE1C;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}