@contextium/cli 0.6.7 → 0.7.1
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/README.md +149 -227
- package/dist/commands/marketplace.d.ts +3 -0
- package/dist/commands/marketplace.d.ts.map +1 -0
- package/dist/commands/marketplace.js +178 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/commands/new-file.d.ts.map +1 -1
- package/dist/commands/new-file.js +4 -0
- package/dist/commands/new-file.js.map +1 -1
- package/dist/commands/setup-claude.js +3 -3
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +9 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +44 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +2 -1
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/claude-permissions.d.ts +4 -0
- package/dist/lib/claude-permissions.d.ts.map +1 -0
- package/dist/lib/claude-permissions.js +41 -0
- package/dist/lib/claude-permissions.js.map +1 -0
- package/dist/lib/msal.js +18 -18
- package/dist/lib/wizard-state.d.ts +22 -0
- package/dist/lib/wizard-state.d.ts.map +1 -0
- package/dist/lib/wizard-state.js +23 -0
- package/dist/lib/wizard-state.js.map +1 -0
- package/dist/lib/wizard.d.ts +4 -0
- package/dist/lib/wizard.d.ts.map +1 -0
- package/dist/lib/wizard.js +910 -0
- package/dist/lib/wizard.js.map +1 -0
- package/package.json +62 -58
package/README.md
CHANGED
|
@@ -1,227 +1,149 @@
|
|
|
1
|
-
# Contextium CLI
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
#
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
contextium
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
contextium
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
contextium
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
contextium status
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
contextium
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
contextium
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
contextium
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
contextium
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"enabled": true,
|
|
151
|
-
"ttl": 3600,
|
|
152
|
-
"directory": ".contextium-cache",
|
|
153
|
-
"max_size_mb": 100
|
|
154
|
-
},
|
|
155
|
-
"sync": {
|
|
156
|
-
"auto": true,
|
|
157
|
-
"on_command": ["build", "test"],
|
|
158
|
-
"notify_changes": true,
|
|
159
|
-
"interval": 300
|
|
160
|
-
},
|
|
161
|
-
"files": {
|
|
162
|
-
"include": [],
|
|
163
|
-
"exclude": ["DEPRECATED_*.md", "DRAFT_*.md"],
|
|
164
|
-
"tags": ["foundation-context", "always-include"],
|
|
165
|
-
"auto_include_tags": true
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Workflow Example
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# 1. Initialize in your project
|
|
174
|
-
cd ~/projects/my-app
|
|
175
|
-
contextium init --workspace my-company --project my-app
|
|
176
|
-
|
|
177
|
-
# 2. Sync all documentation
|
|
178
|
-
contextium sync
|
|
179
|
-
|
|
180
|
-
# 3. Start coding with AI assistance
|
|
181
|
-
# Pipe all relevant docs to your AI tool
|
|
182
|
-
contextium cat --tag always-include | cursor --add-context
|
|
183
|
-
|
|
184
|
-
# 4. Update when docs change
|
|
185
|
-
contextium status # Check for updates
|
|
186
|
-
contextium sync # Download latest versions
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## Cache Management
|
|
190
|
-
|
|
191
|
-
The CLI caches files locally for faster access:
|
|
192
|
-
|
|
193
|
-
- Cache directory: `.contextium-cache/`
|
|
194
|
-
- TTL: 1 hour (configurable)
|
|
195
|
-
- Auto-syncs based on configuration
|
|
196
|
-
- Use `--no-cache` flag to bypass cache
|
|
197
|
-
|
|
198
|
-
## Development
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# Build
|
|
202
|
-
npm run build
|
|
203
|
-
|
|
204
|
-
# Watch mode
|
|
205
|
-
npm run dev
|
|
206
|
-
|
|
207
|
-
# Type check
|
|
208
|
-
npm run type-check
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## Architecture
|
|
212
|
-
|
|
213
|
-
The CLI is designed to be a lightweight bridge between your Contextium documentation repository and external AI coding tools:
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
Your Project
|
|
217
|
-
↓
|
|
218
|
-
Contextium CLI (fetch docs)
|
|
219
|
-
↓
|
|
220
|
-
Local Cache (.contextium-cache/)
|
|
221
|
-
↓
|
|
222
|
-
Pipe to AI Tool (Cursor, Claude, Copilot)
|
|
223
|
-
↓
|
|
224
|
-
AI-assisted Development
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
For more information, see the [Platform Specification](../../Resources/CONTEXTHUB_PLATFORM_SPEC.md).
|
|
1
|
+
# Contextium CLI
|
|
2
|
+
|
|
3
|
+
CLI for managing Contextium workspaces, context libraries, files, workflows, agents, skills, tags, and marketplace installs.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i -g @contextium/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or run without installing globally:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @contextium/cli --help
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 1) Sign in
|
|
21
|
+
contextium login
|
|
22
|
+
|
|
23
|
+
# 2) Optional guided setup
|
|
24
|
+
contextium setup
|
|
25
|
+
|
|
26
|
+
# 3) See your workspaces
|
|
27
|
+
contextium workspaces
|
|
28
|
+
|
|
29
|
+
# 4) List context libraries in a workspace
|
|
30
|
+
contextium libraries -w my-workspace
|
|
31
|
+
|
|
32
|
+
# 5) Find and read files
|
|
33
|
+
contextium find auth -w my-workspace
|
|
34
|
+
contextium cat README.md -w my-workspace
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Command Groups
|
|
38
|
+
|
|
39
|
+
### Auth
|
|
40
|
+
|
|
41
|
+
- `contextium login`
|
|
42
|
+
- `contextium logout`
|
|
43
|
+
- `contextium whoami`
|
|
44
|
+
|
|
45
|
+
### Setup
|
|
46
|
+
|
|
47
|
+
- `contextium setup`
|
|
48
|
+
- `contextium init`
|
|
49
|
+
- `contextium setup-claude`
|
|
50
|
+
|
|
51
|
+
### Workspace and Libraries
|
|
52
|
+
|
|
53
|
+
- `contextium workspaces`
|
|
54
|
+
- `contextium libraries -w <workspace>`
|
|
55
|
+
- `contextium create-library -w <workspace> -n "Docs"`
|
|
56
|
+
- `contextium update-library <libraryId> -n "New Name"`
|
|
57
|
+
|
|
58
|
+
### Files and Content
|
|
59
|
+
|
|
60
|
+
- `contextium files <library> -w <workspace>`
|
|
61
|
+
- `contextium new <library> -t "Guide" -p guide.md -w <workspace>`
|
|
62
|
+
- `contextium edit <fileId> -c "Updated content" -m "Update summary"`
|
|
63
|
+
- `contextium delete <fileId> --confirm`
|
|
64
|
+
- `contextium versions <fileId>`
|
|
65
|
+
- `contextium structure <library> -w <workspace>`
|
|
66
|
+
- `contextium cat --all -w <workspace>`
|
|
67
|
+
- `contextium sync -w <workspace>`
|
|
68
|
+
- `contextium status -w <workspace>`
|
|
69
|
+
|
|
70
|
+
### Search
|
|
71
|
+
|
|
72
|
+
- `contextium search "authentication" -w <workspace>`
|
|
73
|
+
- `contextium find "api" -w <workspace>`
|
|
74
|
+
|
|
75
|
+
### Tags
|
|
76
|
+
|
|
77
|
+
- `contextium tags types -w <workspace>`
|
|
78
|
+
- `contextium tags create-type -w <workspace> -n "Topic"`
|
|
79
|
+
- `contextium tags list -w <workspace>`
|
|
80
|
+
- `contextium tags create -w <workspace> --type <typeId> --value authentication`
|
|
81
|
+
- `contextium tags apply -w <workspace> --tag topic:authentication --file <fileId>`
|
|
82
|
+
- `contextium tags apply-bulk -w <workspace> --tag <tagId> --files <file1,file2>`
|
|
83
|
+
- `contextium tags remove -w <workspace> --tag <tagId> --file <fileId>`
|
|
84
|
+
- `contextium tags search -w <workspace> --tags topic:authentication`
|
|
85
|
+
- `contextium tags file-tags -w <workspace> --file <fileId>`
|
|
86
|
+
- `contextium tags update -w <workspace> --tag <tagId> --value auth`
|
|
87
|
+
- `contextium tags type-get -w <workspace> --type <typeId>`
|
|
88
|
+
- `contextium tags type-update -w <workspace> --type <typeId> --name "Topic"`
|
|
89
|
+
|
|
90
|
+
### Agents and Skills
|
|
91
|
+
|
|
92
|
+
- `contextium agents list -w <workspace>`
|
|
93
|
+
- `contextium agents create -w <workspace> -n "Code Reviewer"`
|
|
94
|
+
- `contextium agents add-skill -w <workspace> --agent <agentId> --skill <skillId>`
|
|
95
|
+
- `contextium agents remove-skill -w <workspace> --agent <agentId> --skill <skillId>`
|
|
96
|
+
- `contextium agents update -w <workspace> --agent <agentId> --name "Reviewer"`
|
|
97
|
+
- `contextium skills list -w <workspace>`
|
|
98
|
+
- `contextium skills create -w <workspace> -n "API Patterns"`
|
|
99
|
+
|
|
100
|
+
### Workflows
|
|
101
|
+
|
|
102
|
+
- `contextium workflows list -w <workspace>`
|
|
103
|
+
- `contextium workflows create -w <workspace> -n "Backend Task"`
|
|
104
|
+
- `contextium workflows update -w <workspace> --id <workflowId> --name "Backend Delivery"`
|
|
105
|
+
- `contextium workflow "Backend Task" -w <workspace>`
|
|
106
|
+
|
|
107
|
+
### Marketplace
|
|
108
|
+
|
|
109
|
+
- `contextium marketplace list`
|
|
110
|
+
- `contextium marketplace list --type skill --category backend`
|
|
111
|
+
- `contextium marketplace show code-review-assistant`
|
|
112
|
+
- `contextium marketplace install code-review-assistant -w <workspace>`
|
|
113
|
+
|
|
114
|
+
## Global Flags
|
|
115
|
+
|
|
116
|
+
- `-w, --workspace <name|slug|id>`: workspace selector for workspace-scoped commands
|
|
117
|
+
- `-h, --help`: show command help
|
|
118
|
+
- `-V, --version`: show CLI version
|
|
119
|
+
|
|
120
|
+
Run `contextium <command> --help` for command-specific flags.
|
|
121
|
+
|
|
122
|
+
## Typical Workflow
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Authenticate and inspect available resources
|
|
126
|
+
contextium login
|
|
127
|
+
contextium workspaces
|
|
128
|
+
contextium libraries -w my-workspace
|
|
129
|
+
|
|
130
|
+
# Pull context into your AI workflow
|
|
131
|
+
contextium cat --all -w my-workspace | pbcopy
|
|
132
|
+
|
|
133
|
+
# Create and evolve content
|
|
134
|
+
contextium new my-library -t "Runbook" -p runbook.md -w my-workspace
|
|
135
|
+
contextium edit <fileId> -c "Updated runbook content" -m "refresh steps"
|
|
136
|
+
|
|
137
|
+
# Organize with tags
|
|
138
|
+
contextium tags create-type -w my-workspace -n "Topic"
|
|
139
|
+
contextium tags create -w my-workspace --type <typeId> --value reliability
|
|
140
|
+
contextium tags apply -w my-workspace --tag topic:reliability --file <fileId>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Development
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm run build
|
|
147
|
+
npm run dev
|
|
148
|
+
npm run type-check
|
|
149
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/commands/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,kBAAkB,SACqC,CAAA"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ApiClient } from '../lib/api-client.js';
|
|
3
|
+
import { loadConfig } from '../lib/config.js';
|
|
4
|
+
import { chalk, ora } from '../lib/output.js';
|
|
5
|
+
export const marketplaceCommand = new Command('marketplace')
|
|
6
|
+
.description('Browse and install from the Contextium marketplace');
|
|
7
|
+
// ─── marketplace list ────────────────────────────────────────────────────────
|
|
8
|
+
marketplaceCommand
|
|
9
|
+
.command('list')
|
|
10
|
+
.description('Browse marketplace listings')
|
|
11
|
+
.option('-q, --query <text>', 'Search query')
|
|
12
|
+
.option('-t, --type <type>', 'Filter by type: skill, agent, mcp_server')
|
|
13
|
+
.option('-c, --category <category>', 'Filter by category')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const spinner = ora('Loading marketplace...').start();
|
|
16
|
+
try {
|
|
17
|
+
const config = await loadConfig();
|
|
18
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
19
|
+
const params = {};
|
|
20
|
+
if (options.query)
|
|
21
|
+
params.q = options.query;
|
|
22
|
+
if (options.type)
|
|
23
|
+
params.type = options.type;
|
|
24
|
+
if (options.category)
|
|
25
|
+
params.category = options.category;
|
|
26
|
+
const { data: res } = await client.get('/marketplace/listings', { params });
|
|
27
|
+
const listings = res.data || res || [];
|
|
28
|
+
spinner.stop();
|
|
29
|
+
if (listings.length === 0) {
|
|
30
|
+
const filters = [
|
|
31
|
+
options.query && `"${options.query}"`,
|
|
32
|
+
options.type && `type:${options.type}`,
|
|
33
|
+
options.category && `category:${options.category}`,
|
|
34
|
+
].filter(Boolean).join(' ');
|
|
35
|
+
console.log(chalk.yellow(`\nNo marketplace listings found${filters ? ` for ${filters}` : ''}`));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(chalk.bold(`\nMarketplace (${listings.length} listing${listings.length !== 1 ? 's' : ''}):\n`));
|
|
39
|
+
for (const listing of listings) {
|
|
40
|
+
const typeLabel = listing.type === 'mcp_server' ? 'mcp' : listing.type;
|
|
41
|
+
console.log(` ${chalk.cyan(listing.name)} ${chalk.dim(`[${typeLabel}]`)}`);
|
|
42
|
+
console.log(chalk.gray(` slug: ${listing.slug}`));
|
|
43
|
+
if (listing.category)
|
|
44
|
+
console.log(chalk.gray(` category: ${listing.category}`));
|
|
45
|
+
if (listing.shortDescription)
|
|
46
|
+
console.log(chalk.gray(` ${listing.shortDescription}`));
|
|
47
|
+
if (listing.installCount)
|
|
48
|
+
console.log(chalk.gray(` installs: ${listing.installCount}`));
|
|
49
|
+
if (listing.averageRating)
|
|
50
|
+
console.log(chalk.gray(` rating: ${listing.averageRating.toFixed(1)}/5`));
|
|
51
|
+
console.log();
|
|
52
|
+
}
|
|
53
|
+
console.log(chalk.dim(` Use "contextium marketplace show <slug>" for details`));
|
|
54
|
+
console.log(chalk.dim(` Use "contextium marketplace install <slug> -w <workspace>" to install`));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
spinner.fail(`Failed to load marketplace: ${error.message}`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// ─── marketplace show ─────────────────────────────────────────────────────────
|
|
62
|
+
marketplaceCommand
|
|
63
|
+
.command('show <slug>')
|
|
64
|
+
.description('Show details of a marketplace listing')
|
|
65
|
+
.action(async (slug) => {
|
|
66
|
+
const spinner = ora(`Loading ${slug}...`).start();
|
|
67
|
+
try {
|
|
68
|
+
const config = await loadConfig();
|
|
69
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
70
|
+
const { data: res } = await client.get(`/marketplace/listings/${slug}`);
|
|
71
|
+
const listing = res.data || res;
|
|
72
|
+
spinner.stop();
|
|
73
|
+
const typeLabel = listing.type === 'mcp_server' ? 'mcp_server' : listing.type;
|
|
74
|
+
console.log(chalk.bold(`\n${listing.name} [${typeLabel}]\n`));
|
|
75
|
+
console.log(` ${chalk.dim('Slug:')} ${listing.slug}`);
|
|
76
|
+
if (listing.category)
|
|
77
|
+
console.log(` ${chalk.dim('Category:')} ${listing.category}`);
|
|
78
|
+
if (listing.installCount !== undefined)
|
|
79
|
+
console.log(` ${chalk.dim('Installs:')} ${listing.installCount}`);
|
|
80
|
+
if (listing.averageRating) {
|
|
81
|
+
console.log(` ${chalk.dim('Rating:')} ${listing.averageRating.toFixed(1)}/5 (${listing.ratingCount || 0} reviews)`);
|
|
82
|
+
}
|
|
83
|
+
if (listing.tags?.length)
|
|
84
|
+
console.log(` ${chalk.dim('Tags:')} ${listing.tags.join(', ')}`);
|
|
85
|
+
if (listing.shortDescription) {
|
|
86
|
+
console.log(`\n ${listing.shortDescription}`);
|
|
87
|
+
}
|
|
88
|
+
if (listing.longDescription) {
|
|
89
|
+
console.log(`\n${chalk.bold('Description:')}\n${listing.longDescription}`);
|
|
90
|
+
}
|
|
91
|
+
if (listing.configSchema && Object.keys(listing.configSchema).length > 0) {
|
|
92
|
+
console.log(`\n${chalk.bold('Configuration:')}`);
|
|
93
|
+
for (const [key, cfg] of Object.entries(listing.configSchema)) {
|
|
94
|
+
const req = cfg.required ? chalk.red(' (required)') : chalk.dim(' (optional)');
|
|
95
|
+
console.log(` ${chalk.cyan(key)}${req}`);
|
|
96
|
+
console.log(chalk.gray(` ${cfg.description}`));
|
|
97
|
+
if (cfg.example)
|
|
98
|
+
console.log(chalk.gray(` example: ${cfg.example}`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (listing.versions?.length) {
|
|
102
|
+
console.log(`\n${chalk.bold('Latest Version:')} ${listing.versions[0].version}`);
|
|
103
|
+
if (listing.versions[0].changelog) {
|
|
104
|
+
console.log(chalk.gray(` ${listing.versions[0].changelog}`));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (listing.ratings?.length) {
|
|
108
|
+
console.log(`\n${chalk.bold('Recent Reviews:')}`);
|
|
109
|
+
listing.ratings.slice(0, 3).forEach((r) => {
|
|
110
|
+
console.log(` ${chalk.yellow('★'.repeat(r.rating))}${chalk.dim('★'.repeat(5 - r.rating))} ${r.review || ''}`);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
console.log();
|
|
114
|
+
console.log(chalk.dim(`Install with: contextium marketplace install ${listing.slug} -w <workspace>`));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
spinner.fail(`Failed to load listing: ${error.message}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
// ─── marketplace install ──────────────────────────────────────────────────────
|
|
122
|
+
marketplaceCommand
|
|
123
|
+
.command('install <slug>')
|
|
124
|
+
.description('Install a marketplace listing into a workspace')
|
|
125
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name, slug, or ID')
|
|
126
|
+
.action(async (slug, options) => {
|
|
127
|
+
const spinner = ora(`Installing ${slug}...`).start();
|
|
128
|
+
try {
|
|
129
|
+
const config = await loadConfig();
|
|
130
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
131
|
+
// Resolve workspace name/slug → ID
|
|
132
|
+
const { data: wsRes } = await client.get('/workspaces');
|
|
133
|
+
const workspaces = wsRes.data || wsRes || [];
|
|
134
|
+
const workspace = workspaces.find((w) => w.id === options.workspace ||
|
|
135
|
+
w.slug?.toLowerCase().trim() === options.workspace.toLowerCase().trim() ||
|
|
136
|
+
w.name?.toLowerCase().trim() === options.workspace.toLowerCase().trim());
|
|
137
|
+
if (!workspace) {
|
|
138
|
+
spinner.stop();
|
|
139
|
+
console.log(chalk.dim('Available workspaces:'));
|
|
140
|
+
workspaces.forEach((w) => console.log(chalk.dim(` - ${w.name} (${w.slug})`)));
|
|
141
|
+
throw new Error(`Workspace '${options.workspace}' not found`);
|
|
142
|
+
}
|
|
143
|
+
const { data: res } = await client.post(`/marketplace/listings/${slug}/import`, {
|
|
144
|
+
workspaceId: workspace.id,
|
|
145
|
+
});
|
|
146
|
+
const result = res.data || res;
|
|
147
|
+
spinner.stop();
|
|
148
|
+
console.log(chalk.green(`\n✓ "${slug}" installed successfully!\n`));
|
|
149
|
+
if (result.type === 'skill' || result.skill) {
|
|
150
|
+
const skill = result.skill || result;
|
|
151
|
+
console.log(` Type: skill`);
|
|
152
|
+
if (skill.name)
|
|
153
|
+
console.log(` Name: ${skill.name}`);
|
|
154
|
+
if (skill.id)
|
|
155
|
+
console.log(` ID: ${skill.id}`);
|
|
156
|
+
console.log();
|
|
157
|
+
console.log(chalk.dim(` Use "contextium skills list -w ${options.workspace}" to see it`));
|
|
158
|
+
}
|
|
159
|
+
else if (result.type === 'agent' || result.agent) {
|
|
160
|
+
const agent = result.agent || result;
|
|
161
|
+
console.log(` Type: agent`);
|
|
162
|
+
if (agent.name)
|
|
163
|
+
console.log(` Name: ${agent.name}`);
|
|
164
|
+
if (agent.id)
|
|
165
|
+
console.log(` ID: ${agent.id}`);
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(chalk.dim(` Use "contextium agents list -w ${options.workspace}" to see it`));
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
console.log(JSON.stringify(result, null, 2));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
spinner.fail(`Failed to install ${slug}: ${error.message}`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=marketplace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/commands/marketplace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"new-file.d.ts","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,cAAc,SAoFvB,CAAA"}
|
|
@@ -48,6 +48,10 @@ export const newFileCommand = new Command('new')
|
|
|
48
48
|
if (options.fromFile) {
|
|
49
49
|
content = await fs.readFile(options.fromFile, 'utf-8');
|
|
50
50
|
}
|
|
51
|
+
if (!content) {
|
|
52
|
+
spinner.fail('File content is required. Use -c <text> to provide content or -f <filepath> to read from a local file.');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
51
55
|
const data = {
|
|
52
56
|
title: options.title,
|
|
53
57
|
path: options.path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"new-file.js","sourceRoot":"","sources":["../../src/commands/new-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ import os from 'os';
|
|
|
5
5
|
import { chalk, ora } from '../lib/output.js';
|
|
6
6
|
export const setupClaudeCommand = new Command('setup-claude')
|
|
7
7
|
.description('Configure permissions for Claude Code CLI (Anthropic\'s AI coding assistant)')
|
|
8
|
-
.addHelpText('after', `
|
|
9
|
-
${chalk.dim('Note: This is ONLY needed if you use Claude Code (claude.ai/claude-code).')}
|
|
10
|
-
${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, skip this.')}
|
|
8
|
+
.addHelpText('after', `
|
|
9
|
+
${chalk.dim('Note: This is ONLY needed if you use Claude Code (claude.ai/claude-code).')}
|
|
10
|
+
${chalk.dim('If you use other IDEs (VSCode, Cursor, etc.) without Claude Code, skip this.')}
|
|
11
11
|
`)
|
|
12
12
|
.option('--global', 'Configure in global ~/.claude/settings.json (default)')
|
|
13
13
|
.option('--project', 'Configure in project .claude/settings.json')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,eAAO,MAAM,YAAY,SAKrB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { runWizard } from '../lib/wizard.js';
|
|
3
|
+
export const setupCommand = new Command('setup')
|
|
4
|
+
.description('Interactive setup wizard — authenticate, pick a workspace, build your first project')
|
|
5
|
+
.option('--force', 'Re-run all steps even if already configured')
|
|
6
|
+
.action(async (options) => {
|
|
7
|
+
await runWizard({ force: options.force ?? false });
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=setup.js.map
|