@mexty/cli 1.3.0 → 1.4.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.
- package/BLOCKS_OVERVIEW.md +229 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +9 -7
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/publish.d.ts +5 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +41 -12
- package/dist/commands/publish.js.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/utils/api.d.ts +11 -0
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +8 -0
- package/dist/utils/api.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/create.ts +11 -7
- package/src/commands/publish.ts +146 -55
- package/src/index.ts +2 -13
- package/src/utils/api.ts +27 -0
- package/src/commands/fork.ts +0 -58
- package/src/commands/sync.ts +0 -350
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# MEXTY Blocks: Interactive Reusable Components
|
|
2
|
+
|
|
3
|
+
## What are Blocks?
|
|
4
|
+
|
|
5
|
+
Blocks are **interactive, reusable, and customizable React components** that can be embedded anywhere. They are the core building blocks of the MEXTY platform, designed to create rich, engaging experiences that can be easily shared and integrated.
|
|
6
|
+
|
|
7
|
+
## Key Characteristics
|
|
8
|
+
|
|
9
|
+
### 1. **Interactive**
|
|
10
|
+
|
|
11
|
+
- Blocks are fully functional React components with state management
|
|
12
|
+
- Support user interactions like clicks, form inputs, animations, and real-time updates
|
|
13
|
+
- Can include complex UI elements like charts, games, quizzes, media players, etc.
|
|
14
|
+
|
|
15
|
+
### 2. **Reusable**
|
|
16
|
+
|
|
17
|
+
- Once created, blocks can be used multiple times across different contexts
|
|
18
|
+
- Published blocks can be discovered and used by other users
|
|
19
|
+
- Blocks maintain their functionality regardless of where they're embedded
|
|
20
|
+
|
|
21
|
+
### 3. **Customizable via Props**
|
|
22
|
+
|
|
23
|
+
- Blocks accept **props** (properties) that allow customization without code changes
|
|
24
|
+
- Props can be of various types: strings, numbers, booleans, colors, URLs, arrays, objects
|
|
25
|
+
- Users can modify block behavior and appearance through a visual props editor
|
|
26
|
+
|
|
27
|
+
## Props System
|
|
28
|
+
|
|
29
|
+
The props system is the heart of block customization:
|
|
30
|
+
|
|
31
|
+
### Supported Prop Types
|
|
32
|
+
|
|
33
|
+
- **String**: Text content, labels, descriptions
|
|
34
|
+
- **Number**: Quantities, dimensions, durations
|
|
35
|
+
- **Boolean**: Toggle features on/off
|
|
36
|
+
- **Color**: Theme colors, backgrounds, text colors
|
|
37
|
+
- **Image URL**: Pictures, icons, backgrounds
|
|
38
|
+
- **Video URL**: Video content, tutorials
|
|
39
|
+
- **Audio URL**: Sound effects, music, narration
|
|
40
|
+
- **3D Model URL**: GLB/GLTF files for 3D content
|
|
41
|
+
- **Array**: Lists of items, datasets
|
|
42
|
+
- **Object**: Complex nested configurations
|
|
43
|
+
- **Enum**: Predefined choices (dropdown selections)
|
|
44
|
+
|
|
45
|
+
### Props Editor Features
|
|
46
|
+
|
|
47
|
+
- **Visual Interface**: No code required to customize blocks
|
|
48
|
+
- **Real-time Preview**: See changes instantly as you edit props
|
|
49
|
+
- **Media Integration**: Upload files, select from workspace, or use AI generation
|
|
50
|
+
- **Nested Objects**: Support for complex data structures
|
|
51
|
+
- **Array Management**: Add/remove items dynamically
|
|
52
|
+
- **Type Validation**: Ensures props match expected types
|
|
53
|
+
|
|
54
|
+
## Block Structure
|
|
55
|
+
|
|
56
|
+
### Core Files
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
block-repository/
|
|
60
|
+
├── src/
|
|
61
|
+
│ ├── block.tsx # Main component (receives props)
|
|
62
|
+
│ ├── App.tsx # Wrapper component
|
|
63
|
+
│ └── index.tsx # Entry point
|
|
64
|
+
├── package.json # Dependencies and metadata
|
|
65
|
+
├── webpack.config.js # Build configuration
|
|
66
|
+
└── index.html # Development preview
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Example Block Component
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
interface BlockProps {
|
|
73
|
+
title: string;
|
|
74
|
+
color: string;
|
|
75
|
+
items: Array<{
|
|
76
|
+
name: string;
|
|
77
|
+
value: number;
|
|
78
|
+
}>;
|
|
79
|
+
showAnimation: boolean;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export default function MyBlock(props: BlockProps) {
|
|
83
|
+
const { title, color, items, showAnimation } = props;
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div style={{ backgroundColor: color }}>
|
|
87
|
+
<h1>{title}</h1>
|
|
88
|
+
{items.map((item, index) => (
|
|
89
|
+
<div key={index} className={showAnimation ? "animate" : ""}>
|
|
90
|
+
{item.name}: {item.value}
|
|
91
|
+
</div>
|
|
92
|
+
))}
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Block Lifecycle
|
|
99
|
+
|
|
100
|
+
### 1. **Creation**
|
|
101
|
+
|
|
102
|
+
- Use `mexty create block --name "Block Name" --description "Description" --category "category"`
|
|
103
|
+
- Automatically creates GitHub repository with template
|
|
104
|
+
- Sets up development environment
|
|
105
|
+
|
|
106
|
+
### 2. **Development**
|
|
107
|
+
|
|
108
|
+
- Edit `src/block.tsx` to implement functionality
|
|
109
|
+
- Define TypeScript interfaces for props
|
|
110
|
+
- Test locally with `npm start`
|
|
111
|
+
|
|
112
|
+
### 3. **Publishing**
|
|
113
|
+
|
|
114
|
+
- Use `mexty save` to commit changes and trigger build
|
|
115
|
+
- System automatically parses props schema from TypeScript interfaces
|
|
116
|
+
- Generates federation bundle for embedding
|
|
117
|
+
|
|
118
|
+
### 4. **Distribution**
|
|
119
|
+
|
|
120
|
+
- Blocks can be shared privately or published to marketplace
|
|
121
|
+
- Published blocks become available as named components
|
|
122
|
+
- Can be made insertable by AI agents for automated content creation
|
|
123
|
+
|
|
124
|
+
## Props Schema Auto-Detection
|
|
125
|
+
|
|
126
|
+
The system automatically analyzes your block's TypeScript interface to generate a props schema:
|
|
127
|
+
|
|
128
|
+
```tsx
|
|
129
|
+
interface BlockProps {
|
|
130
|
+
title: string; // → String input
|
|
131
|
+
count: number; // → Number input
|
|
132
|
+
enabled: boolean; // → Toggle switch
|
|
133
|
+
color: string; // → Color picker (if name contains 'color')
|
|
134
|
+
imageUrl: string; // → Image selector (if name contains 'image')
|
|
135
|
+
options: string[]; // → Array of strings
|
|
136
|
+
config: {
|
|
137
|
+
// → Nested object
|
|
138
|
+
theme: "light" | "dark"; // → Enum dropdown
|
|
139
|
+
size: number;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Use Cases
|
|
145
|
+
|
|
146
|
+
### Educational Content
|
|
147
|
+
|
|
148
|
+
- Interactive quizzes and assessments
|
|
149
|
+
- Data visualizations and charts
|
|
150
|
+
- Simulations and experiments
|
|
151
|
+
- Progress trackers
|
|
152
|
+
|
|
153
|
+
### Business Applications
|
|
154
|
+
|
|
155
|
+
- Product showcases
|
|
156
|
+
- Pricing calculators
|
|
157
|
+
- Contact forms
|
|
158
|
+
- Dashboard widgets
|
|
159
|
+
|
|
160
|
+
### Entertainment
|
|
161
|
+
|
|
162
|
+
- Mini-games
|
|
163
|
+
- Interactive stories
|
|
164
|
+
- Media players
|
|
165
|
+
- Social widgets
|
|
166
|
+
|
|
167
|
+
### Marketing
|
|
168
|
+
|
|
169
|
+
- Call-to-action buttons
|
|
170
|
+
- Lead generation forms
|
|
171
|
+
- Product demos
|
|
172
|
+
- Testimonial carousels
|
|
173
|
+
|
|
174
|
+
## Integration Methods
|
|
175
|
+
|
|
176
|
+
### 1. **Direct Embedding**
|
|
177
|
+
|
|
178
|
+
```html
|
|
179
|
+
<iframe src="https://mexty.ai/preview.html?blockId=BLOCK_ID"></iframe>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 2. **React Integration**
|
|
183
|
+
|
|
184
|
+
```tsx
|
|
185
|
+
import { WeatherWidget } from "@mexty/block";
|
|
186
|
+
|
|
187
|
+
<WeatherWidget location="Paris" showForecast={true} theme="dark" />;
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 3. **Federation Module**
|
|
191
|
+
|
|
192
|
+
```javascript
|
|
193
|
+
const RemoteComponent = React.lazy(() => import("FEDERATION_URL"));
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## AI Agent Integration
|
|
197
|
+
|
|
198
|
+
Blocks can be marked as "insertable by agent" which allows AI systems to:
|
|
199
|
+
|
|
200
|
+
- Automatically select appropriate blocks for content
|
|
201
|
+
- Generate suitable props based on context
|
|
202
|
+
- Insert blocks into courses and pages
|
|
203
|
+
- Customize block behavior for specific use cases
|
|
204
|
+
|
|
205
|
+
## Best Practices
|
|
206
|
+
|
|
207
|
+
### Props Design
|
|
208
|
+
|
|
209
|
+
- Use descriptive prop names that indicate their purpose
|
|
210
|
+
- Provide sensible default values
|
|
211
|
+
- Group related props into objects
|
|
212
|
+
- Use enums for predefined choices
|
|
213
|
+
|
|
214
|
+
### Component Structure
|
|
215
|
+
|
|
216
|
+
- Keep components focused and single-purpose
|
|
217
|
+
- Handle loading and error states gracefully
|
|
218
|
+
- Make components responsive and accessible
|
|
219
|
+
- Optimize for performance
|
|
220
|
+
|
|
221
|
+
### Development Workflow
|
|
222
|
+
|
|
223
|
+
1. Define props interface first
|
|
224
|
+
2. Implement component logic
|
|
225
|
+
3. Test with various prop combinations
|
|
226
|
+
4. Commit and publish with `mexty save`
|
|
227
|
+
5. Share or publish to marketplace
|
|
228
|
+
|
|
229
|
+
This system enables rapid creation of interactive content while maintaining consistency, reusability, and ease of customization for end users.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwBD,wBAAsB,aAAa,CACjC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwBD,wBAAsB,aAAa,CACjC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAiIf"}
|
package/dist/commands/create.js
CHANGED
|
@@ -74,17 +74,19 @@ async function createCommand(subcommand, options = {}) {
|
|
|
74
74
|
// Create the block
|
|
75
75
|
const block = await api_1.apiClient.createBlock(blockData);
|
|
76
76
|
console.log(chalk_1.default.green(`✅ Block created successfully!`));
|
|
77
|
-
console.log(chalk_1.default.gray(` Block ID: ${block._id}`));
|
|
78
|
-
console.log(chalk_1.default.gray(` Block Type: ${block.blockType}`));
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
console.log(chalk_1.default.gray(` Block ID: ${block.id || block._id}`));
|
|
78
|
+
console.log(chalk_1.default.gray(` Block Type: ${block.blockType || block._doc?.blockType}`));
|
|
79
|
+
// Handle both plain objects and Mongoose documents
|
|
80
|
+
const gitUrl = block.gitUrl || block._doc?.gitUrl;
|
|
81
|
+
if (gitUrl) {
|
|
82
|
+
console.log(chalk_1.default.gray(` GitHub URL: ${gitUrl}`));
|
|
81
83
|
// Clone the repository
|
|
82
|
-
const repoName = git_1.GitManager.extractRepoName(
|
|
84
|
+
const repoName = git_1.GitManager.extractRepoName(gitUrl);
|
|
83
85
|
const targetDir = path_1.default.join(process.cwd(), repoName);
|
|
84
86
|
console.log(chalk_1.default.yellow(`📦 Cloning repository to ./${repoName}...`));
|
|
85
87
|
try {
|
|
86
88
|
const gitManager = new git_1.GitManager();
|
|
87
|
-
await gitManager.cloneRepository(
|
|
89
|
+
await gitManager.cloneRepository(gitUrl, targetDir);
|
|
88
90
|
console.log(chalk_1.default.green(`🎉 Block created and repository cloned successfully!`));
|
|
89
91
|
console.log(chalk_1.default.blue(`\nNext steps:`));
|
|
90
92
|
console.log(chalk_1.default.gray(` 1. cd ${repoName}`));
|
|
@@ -103,7 +105,7 @@ async function createCommand(subcommand, options = {}) {
|
|
|
103
105
|
catch (cloneError) {
|
|
104
106
|
console.error(chalk_1.default.red(`❌ Failed to clone repository: ${cloneError.message}`));
|
|
105
107
|
console.log(chalk_1.default.yellow(`You can manually clone it later:`));
|
|
106
|
-
console.log(chalk_1.default.gray(` git clone ${
|
|
108
|
+
console.log(chalk_1.default.gray(` git clone ${gitUrl}`));
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;;;AAoCA,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAmEA,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAmEA,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HhF"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -10,7 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const api_1 = require("../utils/api");
|
|
11
11
|
const git_1 = require("../utils/git");
|
|
12
12
|
const readline_1 = require("readline");
|
|
13
|
-
|
|
13
|
+
// Removed sync command import as it's been deleted
|
|
14
14
|
const auth_1 = require("../utils/auth");
|
|
15
15
|
// Simple confirmation function
|
|
16
16
|
async function confirm(question) {
|
|
@@ -63,13 +63,14 @@ async function findBlockId() {
|
|
|
63
63
|
}
|
|
64
64
|
return null;
|
|
65
65
|
}
|
|
66
|
-
async function publishCommand() {
|
|
66
|
+
async function publishCommand(options = {}) {
|
|
67
67
|
try {
|
|
68
68
|
// Check authentication first
|
|
69
69
|
(0, auth_1.requireAuthentication)();
|
|
70
70
|
const user = (0, auth_1.getAuthenticatedUser)();
|
|
71
|
-
console.log(chalk_1.default.blue('🚀 Publishing block...'));
|
|
71
|
+
console.log(chalk_1.default.blue('🚀 Publishing block to marketplace...'));
|
|
72
72
|
console.log(chalk_1.default.gray(` User: ${user?.fullName || user?.email || 'Unknown'}`));
|
|
73
|
+
console.log(chalk_1.default.gray(` Agent insertable: ${options.agent ? 'Yes' : 'No'}`));
|
|
73
74
|
// Check if we're in a git repository
|
|
74
75
|
const gitManager = new git_1.GitManager();
|
|
75
76
|
const isGitRepo = await gitManager.isGitRepository();
|
|
@@ -112,23 +113,51 @@ async function publishCommand() {
|
|
|
112
113
|
console.log(chalk_1.default.yellow('📡 Triggering build and bundle process...'));
|
|
113
114
|
try {
|
|
114
115
|
const result = await api_1.apiClient.saveAndBundle({ blockId });
|
|
115
|
-
console.log(chalk_1.default.green('✅ Block
|
|
116
|
+
console.log(chalk_1.default.green('✅ Block bundled successfully!'));
|
|
116
117
|
console.log(chalk_1.default.gray(` Bundle Path: ${result.bundlePath}`));
|
|
117
118
|
console.log(chalk_1.default.gray(` Federation URL: ${result.federationUrl}`));
|
|
118
119
|
if (result.message) {
|
|
119
120
|
console.log(chalk_1.default.blue(` ${result.message}`));
|
|
120
121
|
}
|
|
121
|
-
//
|
|
122
|
-
console.log(chalk_1.default.blue('\n
|
|
122
|
+
// Update sharing scope to publish to marketplace (free only)
|
|
123
|
+
console.log(chalk_1.default.blue('\n🌐 Publishing to marketplace...'));
|
|
123
124
|
try {
|
|
124
|
-
|
|
125
|
-
|
|
125
|
+
// Get current block to check existing scope
|
|
126
|
+
const block = await api_1.apiClient.getBlock(blockId);
|
|
127
|
+
const currentScope = block?.scope || ['user-store'];
|
|
128
|
+
// Add published-store to scope if not already present
|
|
129
|
+
const newScope = [...new Set([...currentScope, 'user-store', 'published-store'])];
|
|
130
|
+
await api_1.apiClient.updateBlockSharing(blockId, newScope);
|
|
131
|
+
console.log(chalk_1.default.green('✅ Block published to marketplace (free)'));
|
|
132
|
+
// Update agent insertability if requested
|
|
133
|
+
if (options.agent) {
|
|
134
|
+
console.log(chalk_1.default.blue('🤖 Making block insertable by AI agents...'));
|
|
135
|
+
try {
|
|
136
|
+
await api_1.apiClient.updateBlockAgentInsertable(blockId, true);
|
|
137
|
+
console.log(chalk_1.default.green('✅ Block is now insertable by AI agents'));
|
|
138
|
+
}
|
|
139
|
+
catch (agentError) {
|
|
140
|
+
// This might fail if user is not Mext staff, but that's okay
|
|
141
|
+
console.log(chalk_1.default.yellow('⚠️ Could not set agent insertability (requires Mext staff permissions)'));
|
|
142
|
+
console.log(chalk_1.default.gray(` Error: ${agentError.message || 'Permission denied'}`));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (sharingError) {
|
|
147
|
+
console.error(chalk_1.default.red('❌ Failed to publish to marketplace:'), sharingError.message);
|
|
148
|
+
console.log(chalk_1.default.yellow(' Block was built successfully but not published to marketplace.'));
|
|
149
|
+
console.log(chalk_1.default.gray(' You can try publishing again or contact support.'));
|
|
150
|
+
return;
|
|
126
151
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
152
|
+
// Success message
|
|
153
|
+
console.log(chalk_1.default.green('\n🎉 Block published to marketplace successfully!'));
|
|
154
|
+
console.log(chalk_1.default.blue('Your block is now:'));
|
|
155
|
+
console.log(chalk_1.default.gray(' ✓ Available for free download by anyone'));
|
|
156
|
+
console.log(chalk_1.default.gray(' ✓ Discoverable in the marketplace'));
|
|
157
|
+
if (options.agent) {
|
|
158
|
+
console.log(chalk_1.default.gray(' ✓ Insertable by AI agents (if you have permissions)'));
|
|
131
159
|
}
|
|
160
|
+
console.log(chalk_1.default.gray(` ✓ Viewable at: https://mexty.ai/preview.html?blockId=${blockId}`));
|
|
132
161
|
}
|
|
133
162
|
catch (buildError) {
|
|
134
163
|
console.error(chalk_1.default.red(`❌ Build failed: ${buildError.message}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,8 @@ const commander_1 = require("commander");
|
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const login_1 = require("./commands/login");
|
|
10
10
|
const create_1 = require("./commands/create");
|
|
11
|
-
const fork_1 = require("./commands/fork");
|
|
12
11
|
const delete_1 = require("./commands/delete");
|
|
13
12
|
const publish_1 = require("./commands/publish");
|
|
14
|
-
const sync_1 = require("./commands/sync");
|
|
15
13
|
const save_1 = require("./commands/save");
|
|
16
14
|
const api_1 = require("./utils/api");
|
|
17
15
|
const program = new commander_1.Command();
|
|
@@ -50,22 +48,15 @@ program
|
|
|
50
48
|
.option("-n, --name <name>", 'Block name (for "create block" syntax)')
|
|
51
49
|
.option("-c, --category <category>", 'Block category (for "create block" syntax)')
|
|
52
50
|
.action(create_1.createCommand);
|
|
53
|
-
program
|
|
54
|
-
.command("fork <blockId>")
|
|
55
|
-
.description("Fork an existing block and clone its repository")
|
|
56
|
-
.action(fork_1.forkCommand);
|
|
57
51
|
program
|
|
58
52
|
.command("delete <blockId>")
|
|
59
53
|
.description("Delete a block (requires ownership)")
|
|
60
54
|
.action(delete_1.deleteCommand);
|
|
61
55
|
program
|
|
62
56
|
.command("publish")
|
|
63
|
-
.description("Publish current block
|
|
57
|
+
.description("Publish current block to marketplace (free only)")
|
|
58
|
+
.option("--agent", "Make block insertable by AI agents", false)
|
|
64
59
|
.action(publish_1.publishCommand);
|
|
65
|
-
program
|
|
66
|
-
.command("sync")
|
|
67
|
-
.description("Sync block registry and update typed exports")
|
|
68
|
-
.action(sync_1.syncCommand);
|
|
69
60
|
program
|
|
70
61
|
.command("save")
|
|
71
62
|
.description("Save current block (git add, commit, push, and trigger build)")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,4CAAgD;AAChD,8CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,0CAA8C;AAC9C,qCAAwC;AAExC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,oBAAoB;AACpB,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CACV,iEAAiE,CAClE;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,eAAS,CAAC,eAAe,EAAE,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,eAAS,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,yCAAyC;AACzC,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,iCAAiC,EAAE,mBAAmB,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,YAAY,EAAE,QAAQ,CAAC;KACnD,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;KACrE,MAAM,CACL,2BAA2B,EAC3B,4CAA4C,CAC7C;KACA,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,SAAS,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAC9D,MAAM,CAAC,wBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
package/dist/utils/api.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
export interface Block {
|
|
2
2
|
_id: string;
|
|
3
|
+
id?: string;
|
|
3
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
|
+
};
|
|
4
13
|
title: string;
|
|
5
14
|
description: string;
|
|
6
15
|
gitUrl?: string;
|
|
@@ -70,6 +79,8 @@ declare class ApiClient {
|
|
|
70
79
|
deleteBlock(blockId: string): Promise<void>;
|
|
71
80
|
getBlock(blockId: string): Promise<Block>;
|
|
72
81
|
saveAndBundle(data: SaveAndBundleRequest): Promise<any>;
|
|
82
|
+
updateBlockSharing(blockId: string, scope: string[]): Promise<any>;
|
|
83
|
+
updateBlockAgentInsertable(blockId: string, isInsertableByAgent: boolean): Promise<any>;
|
|
73
84
|
healthCheck(): Promise<boolean>;
|
|
74
85
|
requestOTP(email: string): Promise<AuthResponse>;
|
|
75
86
|
verifyOTP(email: string, otp: string): Promise<AuthResponse>;
|
package/dist/utils/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,CAAC,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC;IACxD,OAAO,EAAE,GAAG,EAAE,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,GAAE,MAA+B;IA0DpD,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB;IAUjB,eAAe,IAAI,OAAO;IAI1B,aAAa,IAAI,GAAG;IAYrB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAQrD,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IAQjD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzC,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAQvD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAQlE,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAQvF,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQhD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAc5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAI9B;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
package/dist/utils/api.js
CHANGED
|
@@ -120,6 +120,14 @@ class ApiClient {
|
|
|
120
120
|
const response = await this.client.post("/api/blocks/save-and-bundle", data);
|
|
121
121
|
return response.data;
|
|
122
122
|
}
|
|
123
|
+
async updateBlockSharing(blockId, scope) {
|
|
124
|
+
const response = await this.client.patch(`/api/blocks/${blockId}/sharing`, { scope });
|
|
125
|
+
return response.data;
|
|
126
|
+
}
|
|
127
|
+
async updateBlockAgentInsertable(blockId, isInsertableByAgent) {
|
|
128
|
+
const response = await this.client.patch(`/api/blocks/${blockId}/agent-insertable`, { isInsertableByAgent });
|
|
129
|
+
return response.data;
|
|
130
|
+
}
|
|
123
131
|
async healthCheck() {
|
|
124
132
|
try {
|
|
125
133
|
await this.client.get("/api/health");
|
package/dist/utils/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA4D;AAC5D,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/create.ts
CHANGED
|
@@ -108,21 +108,25 @@ export async function createCommand(
|
|
|
108
108
|
const block = await apiClient.createBlock(blockData);
|
|
109
109
|
|
|
110
110
|
console.log(chalk.green(`✅ Block created successfully!`));
|
|
111
|
-
console.log(chalk.gray(` Block ID: ${block._id}`));
|
|
112
|
-
console.log(
|
|
111
|
+
console.log(chalk.gray(` Block ID: ${block.id || block._id}`));
|
|
112
|
+
console.log(
|
|
113
|
+
chalk.gray(` Block Type: ${block.blockType || block._doc?.blockType}`)
|
|
114
|
+
);
|
|
113
115
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
// Handle both plain objects and Mongoose documents
|
|
117
|
+
const gitUrl = block.gitUrl || block._doc?.gitUrl;
|
|
118
|
+
if (gitUrl) {
|
|
119
|
+
console.log(chalk.gray(` GitHub URL: ${gitUrl}`));
|
|
116
120
|
|
|
117
121
|
// Clone the repository
|
|
118
|
-
const repoName = GitManager.extractRepoName(
|
|
122
|
+
const repoName = GitManager.extractRepoName(gitUrl);
|
|
119
123
|
const targetDir = path.join(process.cwd(), repoName);
|
|
120
124
|
|
|
121
125
|
console.log(chalk.yellow(`📦 Cloning repository to ./${repoName}...`));
|
|
122
126
|
|
|
123
127
|
try {
|
|
124
128
|
const gitManager = new GitManager();
|
|
125
|
-
await gitManager.cloneRepository(
|
|
129
|
+
await gitManager.cloneRepository(gitUrl, targetDir);
|
|
126
130
|
|
|
127
131
|
console.log(
|
|
128
132
|
chalk.green(`🎉 Block created and repository cloned successfully!`)
|
|
@@ -149,7 +153,7 @@ export async function createCommand(
|
|
|
149
153
|
chalk.red(`❌ Failed to clone repository: ${cloneError.message}`)
|
|
150
154
|
);
|
|
151
155
|
console.log(chalk.yellow(`You can manually clone it later:`));
|
|
152
|
-
console.log(chalk.gray(` git clone ${
|
|
156
|
+
console.log(chalk.gray(` git clone ${gitUrl}`));
|
|
153
157
|
}
|
|
154
158
|
} else {
|
|
155
159
|
console.log(
|