@contextium/cli 0.3.2 → 0.6.7
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 +227 -227
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +243 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/cat.d.ts.map +1 -1
- package/dist/commands/cat.js +13 -9
- package/dist/commands/cat.js.map +1 -1
- package/dist/commands/create-library.d.ts +3 -0
- package/dist/commands/create-library.d.ts.map +1 -0
- package/dist/commands/create-library.js +49 -0
- package/dist/commands/create-library.js.map +1 -0
- package/dist/commands/delete-file.d.ts +3 -0
- package/dist/commands/delete-file.d.ts.map +1 -0
- package/dist/commands/delete-file.js +39 -0
- package/dist/commands/delete-file.js.map +1 -0
- package/dist/commands/edit-file.d.ts +3 -0
- package/dist/commands/edit-file.d.ts.map +1 -0
- package/dist/commands/edit-file.js +64 -0
- package/dist/commands/edit-file.js.map +1 -0
- package/dist/commands/files.d.ts.map +1 -1
- package/dist/commands/files.js +5 -4
- package/dist/commands/files.js.map +1 -1
- package/dist/commands/find.d.ts.map +1 -1
- package/dist/commands/find.js +2 -1
- package/dist/commands/find.js.map +1 -1
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/new-file.d.ts +3 -0
- package/dist/commands/new-file.d.ts.map +1 -0
- package/dist/commands/new-file.js +73 -0
- package/dist/commands/new-file.js.map +1 -0
- package/dist/commands/projects.js +6 -6
- package/dist/commands/projects.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +5 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/setup-claude.js +3 -3
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +98 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/structure.d.ts +3 -0
- package/dist/commands/structure.d.ts.map +1 -0
- package/dist/commands/structure.js +96 -0
- package/dist/commands/structure.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +7 -5
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tags.d.ts.map +1 -1
- package/dist/commands/tags.js +381 -22
- package/dist/commands/tags.js.map +1 -1
- package/dist/commands/update-library.d.ts +3 -0
- package/dist/commands/update-library.d.ts.map +1 -0
- package/dist/commands/update-library.js +69 -0
- package/dist/commands/update-library.js.map +1 -0
- package/dist/commands/versions.d.ts +3 -0
- package/dist/commands/versions.d.ts.map +1 -0
- package/dist/commands/versions.js +48 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/commands/workflow.js +2 -2
- package/dist/commands/workflow.js.map +1 -1
- package/dist/commands/workflows.d.ts.map +1 -1
- package/dist/commands/workflows.js +400 -17
- package/dist/commands/workflows.js.map +1 -1
- package/dist/commands/workspaces.js +1 -1
- package/dist/commands/workspaces.js.map +1 -1
- package/dist/index.js +59 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +1 -0
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +9 -5
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/msal.js +18 -18
- package/package.json +58 -58
|
@@ -0,0 +1,243 @@
|
|
|
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
|
+
async function resolveWorkspace(client, workspaceName) {
|
|
6
|
+
const { data: workspacesData } = await client.get('/workspaces');
|
|
7
|
+
const workspaces = workspacesData.data || workspacesData;
|
|
8
|
+
const workspace = workspaces.find((w) => w.slug.toLowerCase().trim() === workspaceName.toLowerCase().trim() ||
|
|
9
|
+
w.name.toLowerCase().trim() === workspaceName.toLowerCase().trim());
|
|
10
|
+
if (!workspace) {
|
|
11
|
+
console.log(chalk.dim('Available workspaces:'));
|
|
12
|
+
workspaces.forEach((w) => console.log(chalk.dim(` - ${w.name} (${w.slug})`)));
|
|
13
|
+
throw new Error(`Workspace '${workspaceName}' not found`);
|
|
14
|
+
}
|
|
15
|
+
return workspace;
|
|
16
|
+
}
|
|
17
|
+
async function resolveSkillByName(client, workspaceId, skillName) {
|
|
18
|
+
const { data: projectsData } = await client.get(`/workspaces/${workspaceId}/projects`);
|
|
19
|
+
const projects = projectsData.data || projectsData || [];
|
|
20
|
+
const skillsProject = projects.find((p) => p.isSystem && p.systemType === 'skills');
|
|
21
|
+
if (!skillsProject) {
|
|
22
|
+
throw new Error('Skills Library not found in workspace.');
|
|
23
|
+
}
|
|
24
|
+
const { data: filesData } = await client.get(`/projects/${skillsProject.id}/files`);
|
|
25
|
+
const files = (filesData.data || filesData || []).filter((f) => !f.deletedAt);
|
|
26
|
+
const match = files.find((f) => f.title?.toLowerCase() === skillName.toLowerCase() ||
|
|
27
|
+
f.name?.toLowerCase() === skillName.toLowerCase());
|
|
28
|
+
if (!match) {
|
|
29
|
+
throw new Error(`Skill '${skillName}' not found. Use 'contextium skills list' to see skills.`);
|
|
30
|
+
}
|
|
31
|
+
return match.id;
|
|
32
|
+
}
|
|
33
|
+
export const agentsCommand = new Command('agents')
|
|
34
|
+
.description('Manage agents in a workspace');
|
|
35
|
+
agentsCommand
|
|
36
|
+
.command('list')
|
|
37
|
+
.description('List all agents in a workspace')
|
|
38
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
39
|
+
.action(async (options) => {
|
|
40
|
+
const spinner = ora('Loading agents...').start();
|
|
41
|
+
try {
|
|
42
|
+
const config = await loadConfig();
|
|
43
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
44
|
+
const workspace = await resolveWorkspace(client, options.workspace);
|
|
45
|
+
const { data: agentsData } = await client.get(`/workspaces/${workspace.id}/agents`);
|
|
46
|
+
const agents = agentsData.data || agentsData || [];
|
|
47
|
+
if (agents.length === 0) {
|
|
48
|
+
spinner.stop();
|
|
49
|
+
console.log(chalk.yellow(`\nNo agents found in workspace '${workspace.name}'`));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
spinner.stop();
|
|
53
|
+
console.log(chalk.bold(`\nAgents in '${workspace.name}':\n`));
|
|
54
|
+
for (const agent of agents) {
|
|
55
|
+
console.log(chalk.cyan(` ${agent.name}`));
|
|
56
|
+
if (agent.description)
|
|
57
|
+
console.log(chalk.dim(` ${agent.description}`));
|
|
58
|
+
console.log(chalk.gray(` id: ${agent.id}`));
|
|
59
|
+
if (agent.personaCategory)
|
|
60
|
+
console.log(chalk.gray(` persona: ${agent.personaCategory}`));
|
|
61
|
+
console.log();
|
|
62
|
+
}
|
|
63
|
+
console.log(chalk.dim(` Total: ${agents.length} agent(s)`));
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
spinner.fail(`Failed to load agents: ${error.message}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
agentsCommand
|
|
71
|
+
.command('create')
|
|
72
|
+
.description('Create a new agent')
|
|
73
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
74
|
+
.requiredOption('-n, --name <name>', 'Agent name')
|
|
75
|
+
.option('-d, --description <text>', 'Agent description')
|
|
76
|
+
.option('-p, --prompt <text>', 'System prompt for the agent')
|
|
77
|
+
.action(async (options) => {
|
|
78
|
+
const spinner = ora('Creating agent...').start();
|
|
79
|
+
try {
|
|
80
|
+
const config = await loadConfig();
|
|
81
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
82
|
+
const workspace = await resolveWorkspace(client, options.workspace);
|
|
83
|
+
const data = {
|
|
84
|
+
name: options.name,
|
|
85
|
+
systemPrompt: options.prompt || `You are ${options.name}. ${options.description || 'Help users with their tasks.'}`,
|
|
86
|
+
};
|
|
87
|
+
if (options.description)
|
|
88
|
+
data.description = options.description;
|
|
89
|
+
const { data: agentData } = await client.post(`/workspaces/${workspace.id}/agents`, data);
|
|
90
|
+
const agent = agentData.data || agentData;
|
|
91
|
+
spinner.stop();
|
|
92
|
+
console.log(chalk.green('\n✓ Agent created successfully!'));
|
|
93
|
+
console.log(` Name: ${agent.name}`);
|
|
94
|
+
console.log(` ID: ${agent.id}`);
|
|
95
|
+
if (agent.description)
|
|
96
|
+
console.log(` Description: ${agent.description}`);
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
spinner.fail(`Failed to create agent: ${error.message}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
agentsCommand
|
|
105
|
+
.command('add-skill')
|
|
106
|
+
.description('Add a skill to an agent')
|
|
107
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
108
|
+
.requiredOption('-a, --agent <agentId>', 'Agent ID or name')
|
|
109
|
+
.requiredOption('-s, --skill <skillId>', 'Skill ID or name')
|
|
110
|
+
.action(async (options) => {
|
|
111
|
+
const spinner = ora('Adding skill to agent...').start();
|
|
112
|
+
try {
|
|
113
|
+
const config = await loadConfig();
|
|
114
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
115
|
+
const workspace = await resolveWorkspace(client, options.workspace);
|
|
116
|
+
// Resolve agent by name if not a UUID
|
|
117
|
+
let agentId = options.agent;
|
|
118
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
119
|
+
if (!uuidRegex.test(agentId)) {
|
|
120
|
+
const { data: agentsData } = await client.get(`/workspaces/${workspace.id}/agents`);
|
|
121
|
+
const agents = agentsData.data || agentsData || [];
|
|
122
|
+
const matchingAgent = agents.find((a) => a.name.toLowerCase() === agentId.toLowerCase());
|
|
123
|
+
if (!matchingAgent) {
|
|
124
|
+
spinner.fail(`Agent '${agentId}' not found. Use 'contextium agents list -w ${options.workspace}' to see agents.`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
agentId = matchingAgent.id;
|
|
128
|
+
}
|
|
129
|
+
// Resolve skill by name if not a UUID
|
|
130
|
+
let skillId = options.skill;
|
|
131
|
+
if (!uuidRegex.test(skillId)) {
|
|
132
|
+
skillId = await resolveSkillByName(client, workspace.id, skillId);
|
|
133
|
+
}
|
|
134
|
+
const { data: agentData } = await client.post(`/workspaces/${workspace.id}/agents/${agentId}/skills`, { skillId });
|
|
135
|
+
const agent = agentData.data || agentData;
|
|
136
|
+
spinner.stop();
|
|
137
|
+
console.log(chalk.green('\n✓ Skill added to agent successfully!'));
|
|
138
|
+
console.log(` Agent: ${agent.name}`);
|
|
139
|
+
console.log(` Agent ID: ${agent.id}`);
|
|
140
|
+
console.log();
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
spinner.fail(`Failed to add skill to agent: ${error.message}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
agentsCommand
|
|
148
|
+
.command('remove-skill')
|
|
149
|
+
.description('Remove a skill from an agent')
|
|
150
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
151
|
+
.requiredOption('-a, --agent <agentId>', 'Agent ID or name')
|
|
152
|
+
.requiredOption('-s, --skill <skillId>', 'Skill ID or name')
|
|
153
|
+
.action(async (options) => {
|
|
154
|
+
const spinner = ora('Removing skill from agent...').start();
|
|
155
|
+
try {
|
|
156
|
+
const config = await loadConfig();
|
|
157
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
158
|
+
const workspace = await resolveWorkspace(client, options.workspace);
|
|
159
|
+
// Resolve agent by name if not a UUID
|
|
160
|
+
let agentId = options.agent;
|
|
161
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
162
|
+
if (!uuidRegex.test(agentId)) {
|
|
163
|
+
const { data: agentsData } = await client.get(`/workspaces/${workspace.id}/agents`);
|
|
164
|
+
const agents = agentsData.data || agentsData || [];
|
|
165
|
+
const matchingAgent = agents.find((a) => a.name.toLowerCase() === agentId.toLowerCase());
|
|
166
|
+
if (!matchingAgent) {
|
|
167
|
+
spinner.fail(`Agent '${agentId}' not found.`);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
agentId = matchingAgent.id;
|
|
171
|
+
}
|
|
172
|
+
// Resolve skill by name if not a UUID
|
|
173
|
+
let skillId = options.skill;
|
|
174
|
+
if (!uuidRegex.test(skillId)) {
|
|
175
|
+
skillId = await resolveSkillByName(client, workspace.id, skillId);
|
|
176
|
+
}
|
|
177
|
+
await client.delete(`/workspaces/${workspace.id}/agents/${agentId}/skills/${skillId}`);
|
|
178
|
+
spinner.stop();
|
|
179
|
+
console.log(chalk.green('\n✓ Skill removed from agent successfully!'));
|
|
180
|
+
console.log();
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
spinner.fail(`Failed to remove skill from agent: ${error.message}`);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
agentsCommand
|
|
188
|
+
.command('update')
|
|
189
|
+
.description('Update an existing agent')
|
|
190
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
191
|
+
.requiredOption('-a, --agent <agentId>', 'Agent ID or name')
|
|
192
|
+
.option('-n, --name <name>', 'New agent name')
|
|
193
|
+
.option('-d, --description <text>', 'New description')
|
|
194
|
+
.option('-p, --prompt <text>', 'New system prompt')
|
|
195
|
+
.option('--context <text>', 'New custom context')
|
|
196
|
+
.action(async (options) => {
|
|
197
|
+
const spinner = ora('Updating agent...').start();
|
|
198
|
+
try {
|
|
199
|
+
const config = await loadConfig();
|
|
200
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
201
|
+
const workspace = await resolveWorkspace(client, options.workspace);
|
|
202
|
+
// Resolve agent by name if not a UUID
|
|
203
|
+
let agentId = options.agent;
|
|
204
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
205
|
+
if (!uuidRegex.test(agentId)) {
|
|
206
|
+
const { data: agentsData } = await client.get(`/workspaces/${workspace.id}/agents`);
|
|
207
|
+
const agents = agentsData.data || agentsData || [];
|
|
208
|
+
const matchingAgent = agents.find((a) => a.name.toLowerCase() === agentId.toLowerCase());
|
|
209
|
+
if (!matchingAgent) {
|
|
210
|
+
spinner.fail(`Agent '${agentId}' not found. Use 'contextium agents list -w ${options.workspace}' to see agents.`);
|
|
211
|
+
process.exit(1);
|
|
212
|
+
}
|
|
213
|
+
agentId = matchingAgent.id;
|
|
214
|
+
}
|
|
215
|
+
const data = {};
|
|
216
|
+
if (options.name)
|
|
217
|
+
data.name = options.name;
|
|
218
|
+
if (options.description)
|
|
219
|
+
data.description = options.description;
|
|
220
|
+
if (options.prompt)
|
|
221
|
+
data.systemPrompt = options.prompt;
|
|
222
|
+
if (options.context)
|
|
223
|
+
data.customContext = options.context;
|
|
224
|
+
if (Object.keys(data).length === 0) {
|
|
225
|
+
spinner.fail('No fields to update. Use --name, --description, --prompt, or --context.');
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
const { data: agentData } = await client.patch(`/workspaces/${workspace.id}/agents/${agentId}`, data);
|
|
229
|
+
const agent = agentData.data || agentData;
|
|
230
|
+
spinner.stop();
|
|
231
|
+
console.log(chalk.green('\n✓ Agent updated successfully!'));
|
|
232
|
+
console.log(` Name: ${agent.name}`);
|
|
233
|
+
console.log(` ID: ${agent.id}`);
|
|
234
|
+
if (agent.description)
|
|
235
|
+
console.log(` Description: ${agent.description}`);
|
|
236
|
+
console.log();
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
spinner.fail(`Failed to update agent: ${error.message}`);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat.d.ts","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"cat.d.ts","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,eAAO,MAAM,UAAU,SAsLnB,CAAA"}
|
package/dist/commands/cat.js
CHANGED
|
@@ -6,8 +6,8 @@ import { chalk } from '../lib/output.js';
|
|
|
6
6
|
export const catCommand = new Command('cat')
|
|
7
7
|
.description('Output file content to stdout')
|
|
8
8
|
.argument('[files...]', 'File names to output')
|
|
9
|
-
.option('--all', 'Output all files (requires
|
|
10
|
-
.option('--workspace <slug>', 'Specify workspace to search in')
|
|
9
|
+
.option('--all', 'Output all files (requires -w)')
|
|
10
|
+
.option('-w, --workspace <slug>', 'Specify workspace to search in')
|
|
11
11
|
.option('--tag <tags...>', 'Filter by tags')
|
|
12
12
|
.option('--with-meta', 'Include metadata header')
|
|
13
13
|
.option('--format <format>', 'Output format (text|json)', 'text')
|
|
@@ -35,7 +35,7 @@ export const catCommand = new Command('cat')
|
|
|
35
35
|
// For --all and --tag options, workspace is required
|
|
36
36
|
if ((options.all || options.tag) && !workspaceId) {
|
|
37
37
|
console.error(chalk.red('Error: --all and --tag options require a workspace'));
|
|
38
|
-
console.error(chalk.dim('Either set a default workspace or use
|
|
38
|
+
console.error(chalk.dim('Either set a default workspace or use -w <slug>'));
|
|
39
39
|
process.exit(1);
|
|
40
40
|
}
|
|
41
41
|
let filesToFetch = [];
|
|
@@ -47,8 +47,9 @@ export const catCommand = new Command('cat')
|
|
|
47
47
|
const { data: projectsData } = await client.get(`/workspaces/${workspace.id}/projects`);
|
|
48
48
|
const projects = projectsData.data || projectsData;
|
|
49
49
|
for (const project of projects) {
|
|
50
|
-
const { data } = await client.get(`/projects/${project.id}/files`);
|
|
51
|
-
|
|
50
|
+
const { data: filesData } = await client.get(`/projects/${project.id}/files`);
|
|
51
|
+
const files = filesData.data || filesData;
|
|
52
|
+
filesToFetch.push(...files.map((f) => f.title));
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
else if (options.tag && options.tag.length > 0) {
|
|
@@ -56,8 +57,9 @@ export const catCommand = new Command('cat')
|
|
|
56
57
|
const { data: projectsData } = await client.get(`/workspaces/${workspaceId}/projects`);
|
|
57
58
|
const projects = projectsData.data || projectsData;
|
|
58
59
|
for (const project of projects) {
|
|
59
|
-
const { data } = await client.get(`/projects/${project.id}/files`, { params: { tags: options.tag.join(',') } });
|
|
60
|
-
|
|
60
|
+
const { data: filesData } = await client.get(`/projects/${project.id}/files`, { params: { tags: options.tag.join(',') } });
|
|
61
|
+
const files = filesData.data || filesData;
|
|
62
|
+
filesToFetch.push(...files.map((f) => f.title));
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
else if (files.length > 0) {
|
|
@@ -87,7 +89,8 @@ export const catCommand = new Command('cat')
|
|
|
87
89
|
const projects = projectsData.data || projectsData;
|
|
88
90
|
for (const project of projects) {
|
|
89
91
|
const { data: filesResponse } = await client.get(`/projects/${project.id}/files`, { params: { search: fileName } });
|
|
90
|
-
|
|
92
|
+
const filesArr = filesResponse.data || filesResponse;
|
|
93
|
+
file = filesArr.find((f) => f.title === fileName || f.path === fileName);
|
|
91
94
|
if (file)
|
|
92
95
|
break;
|
|
93
96
|
}
|
|
@@ -101,7 +104,8 @@ export const catCommand = new Command('cat')
|
|
|
101
104
|
const projects = projectsData.data || projectsData;
|
|
102
105
|
for (const project of projects) {
|
|
103
106
|
const { data: filesResponse } = await client.get(`/projects/${project.id}/files`, { params: { search: fileName } });
|
|
104
|
-
|
|
107
|
+
const filesArr = filesResponse.data || filesResponse;
|
|
108
|
+
file = filesArr.find((f) => f.title === fileName || f.path === fileName);
|
|
105
109
|
if (file)
|
|
106
110
|
break;
|
|
107
111
|
}
|
package/dist/commands/cat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat.js","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGxC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC9C,MAAM,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cat.js","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-library.d.ts","sourceRoot":"","sources":["../../src/commands/create-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,oBAAoB,SAkD7B,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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 createLibraryCommand = new Command('create-library')
|
|
6
|
+
.description('Create a new context library (project) in a workspace')
|
|
7
|
+
.requiredOption('-w, --workspace <workspace>', 'Workspace name or slug')
|
|
8
|
+
.requiredOption('-n, --name <name>', 'Library name')
|
|
9
|
+
.option('-d, --description <text>', 'Library description')
|
|
10
|
+
.action(async (options) => {
|
|
11
|
+
const spinner = ora('Creating context library...').start();
|
|
12
|
+
try {
|
|
13
|
+
const config = await loadConfig();
|
|
14
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
15
|
+
// Resolve workspace
|
|
16
|
+
const { data: workspacesData } = await client.get('/workspaces');
|
|
17
|
+
const workspaces = workspacesData.data || workspacesData;
|
|
18
|
+
const workspace = workspaces.find((w) => w.slug.toLowerCase().trim() === options.workspace.toLowerCase().trim() ||
|
|
19
|
+
w.name.toLowerCase().trim() === options.workspace.toLowerCase().trim());
|
|
20
|
+
if (!workspace) {
|
|
21
|
+
spinner.fail(`Workspace '${options.workspace}' not found`);
|
|
22
|
+
console.log(chalk.dim('Available workspaces:'));
|
|
23
|
+
workspaces.forEach((w) => console.log(chalk.dim(` - ${w.name} (${w.slug})`)));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const slug = options.name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '').replace(/-+/g, '-').replace(/^-|-$/g, '');
|
|
27
|
+
const data = {
|
|
28
|
+
name: options.name,
|
|
29
|
+
slug,
|
|
30
|
+
};
|
|
31
|
+
if (options.description)
|
|
32
|
+
data.description = options.description;
|
|
33
|
+
const { data: projectData } = await client.post(`/workspaces/${workspace.id}/projects`, data);
|
|
34
|
+
const project = projectData.data || projectData;
|
|
35
|
+
spinner.stop();
|
|
36
|
+
console.log(chalk.green('\n✓ Context library created successfully!'));
|
|
37
|
+
console.log(` Name: ${project.name}`);
|
|
38
|
+
console.log(` Slug: ${project.slug}`);
|
|
39
|
+
console.log(` ID: ${project.id}`);
|
|
40
|
+
if (project.description)
|
|
41
|
+
console.log(` Description: ${project.description}`);
|
|
42
|
+
console.log();
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
spinner.fail(`Failed to create context library: ${error.message}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=create-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-library.js","sourceRoot":"","sources":["../../src/commands/create-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-file.d.ts","sourceRoot":"","sources":["../../src/commands/delete-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,iBAAiB,SAuC1B,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 deleteFileCommand = new Command('delete')
|
|
6
|
+
.description('Delete a file (moves to trash, restorable)')
|
|
7
|
+
.argument('<fileId>', 'File ID to delete')
|
|
8
|
+
.option('--confirm', 'Skip confirmation prompt')
|
|
9
|
+
.action(async (fileId, options) => {
|
|
10
|
+
if (!options.confirm) {
|
|
11
|
+
// Simple confirmation via stdout since we want minimal deps
|
|
12
|
+
console.log(chalk.yellow(`\n⚠ This will move file ${fileId} to trash.`));
|
|
13
|
+
console.log(chalk.dim(' Use --confirm to skip this warning.\n'));
|
|
14
|
+
const readline = await import('readline');
|
|
15
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
const answer = await new Promise((resolve) => {
|
|
17
|
+
rl.question(' Continue? (y/N) ', resolve);
|
|
18
|
+
});
|
|
19
|
+
rl.close();
|
|
20
|
+
if (answer.toLowerCase() !== 'y') {
|
|
21
|
+
console.log(chalk.dim(' Cancelled.'));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const spinner = ora('Deleting file...').start();
|
|
26
|
+
try {
|
|
27
|
+
const config = await loadConfig();
|
|
28
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
29
|
+
await client.delete(`/files/${fileId}`);
|
|
30
|
+
spinner.stop();
|
|
31
|
+
console.log(chalk.green('\n✓ File moved to trash.'));
|
|
32
|
+
console.log(chalk.dim(' The file can be restored from the web app.\n'));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
spinner.fail(`Failed to delete file: ${error.message}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=delete-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-file.js","sourceRoot":"","sources":["../../src/commands/delete-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACnD,WAAW,CAAC,4CAA4C,CAAC;KACzD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE;IACxC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,4DAA4D;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,MAAM,YAAY,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACrF,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnD,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,KAAK,EAAE,CAAA;QAEV,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAE5D,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,MAAM,EAAE,CAAC,CAAA;QAEvC,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAA;IAC1E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,eAAe,SAsDxB,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
import fs from 'fs/promises';
|
|
6
|
+
export const editFileCommand = new Command('edit')
|
|
7
|
+
.description('Update an existing file')
|
|
8
|
+
.argument('<fileId>', 'File ID to update')
|
|
9
|
+
.option('-t, --title <title>', 'New file title')
|
|
10
|
+
.option('-p, --path <path>', 'New file path')
|
|
11
|
+
.option('-c, --content <text>', 'New file content')
|
|
12
|
+
.option('-f, --from-file <filepath>', 'Read new content from a local file')
|
|
13
|
+
.option('-s, --status <status>', 'Set status: active or archived')
|
|
14
|
+
.option('-m, --message <text>', 'Change summary / commit message')
|
|
15
|
+
.option('--version', 'Create a new version (default when content changes)')
|
|
16
|
+
.option('--folder <id>', 'Move to folder ID (use "root" for root)')
|
|
17
|
+
.option('--library <id>', 'Move to a different context library (project) by ID')
|
|
18
|
+
.action(async (fileId, options) => {
|
|
19
|
+
const spinner = ora('Updating file...').start();
|
|
20
|
+
try {
|
|
21
|
+
const config = await loadConfig();
|
|
22
|
+
const client = new ApiClient(config.api_key, config.api_url);
|
|
23
|
+
// Read content from file if specified
|
|
24
|
+
let content = options.content;
|
|
25
|
+
if (options.fromFile) {
|
|
26
|
+
content = await fs.readFile(options.fromFile, 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
const data = {};
|
|
29
|
+
if (options.title)
|
|
30
|
+
data.title = options.title;
|
|
31
|
+
if (options.path)
|
|
32
|
+
data.path = options.path;
|
|
33
|
+
if (content !== undefined)
|
|
34
|
+
data.content = content;
|
|
35
|
+
if (options.status)
|
|
36
|
+
data.status = options.status;
|
|
37
|
+
if (options.message)
|
|
38
|
+
data.changeSummary = options.message;
|
|
39
|
+
if (options.version)
|
|
40
|
+
data.createVersion = true;
|
|
41
|
+
if (options.folder)
|
|
42
|
+
data.folderId = options.folder === 'root' ? null : options.folder;
|
|
43
|
+
if (options.library)
|
|
44
|
+
data.projectId = options.library;
|
|
45
|
+
if (Object.keys(data).length === 0) {
|
|
46
|
+
spinner.fail('No changes specified. Use --title, --content, --status, etc.');
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const { data: fileData } = await client.put(`/files/${fileId}`, data);
|
|
50
|
+
const file = fileData.data || fileData;
|
|
51
|
+
spinner.stop();
|
|
52
|
+
console.log(chalk.green('\n✓ File updated successfully!'));
|
|
53
|
+
console.log(` Title: ${file.title}`);
|
|
54
|
+
console.log(` ID: ${file.id}`);
|
|
55
|
+
if (file.currentVersion)
|
|
56
|
+
console.log(` Version: ${file.currentVersion}`);
|
|
57
|
+
console.log();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
spinner.fail(`Failed to update file: ${error.message}`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=edit-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../src/commands/edit-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,YAAY,SAkJrB,CAAA"}
|
package/dist/commands/files.js
CHANGED
|
@@ -3,9 +3,9 @@ import { ApiClient } from '../lib/api-client.js';
|
|
|
3
3
|
import { loadConfig } from '../lib/config.js';
|
|
4
4
|
import { chalk, ora } from '../lib/output.js';
|
|
5
5
|
export const filesCommand = new Command('files')
|
|
6
|
-
.description('List files in a context library with pagination')
|
|
7
|
-
.argument('<library>', 'Context library name or slug')
|
|
8
|
-
.option('--workspace <slug>', 'Specify workspace (required if project name is ambiguous)')
|
|
6
|
+
.description('List files in a context library (project) with pagination')
|
|
7
|
+
.argument('<library>', 'Context library/project name or slug')
|
|
8
|
+
.option('-w, --workspace <slug>', 'Specify workspace (required if project name is ambiguous)')
|
|
9
9
|
.option('--page <number>', 'Page number', '1')
|
|
10
10
|
.option('--limit <number>', 'Items per page', '20')
|
|
11
11
|
.action(async (projectName, options) => {
|
|
@@ -57,7 +57,7 @@ export const filesCommand = new Command('files')
|
|
|
57
57
|
console.log();
|
|
58
58
|
console.log(chalk.dim('Please specify a workspace:'));
|
|
59
59
|
matchingProjects.forEach(({ project, workspace }) => {
|
|
60
|
-
console.log(chalk.dim(` - ${project.name} in ${workspace.name} (
|
|
60
|
+
console.log(chalk.dim(` - ${project.name} in ${workspace.name} (-w ${workspace.slug})`));
|
|
61
61
|
});
|
|
62
62
|
process.exit(1);
|
|
63
63
|
}
|
|
@@ -102,6 +102,7 @@ export const filesCommand = new Command('files')
|
|
|
102
102
|
else
|
|
103
103
|
timeAgo = updatedDate.toLocaleDateString();
|
|
104
104
|
console.log(chalk.gray(`${itemNumber}.`), chalk.white(file.title), chalk.dim(`(v${file.currentVersion}, ${timeAgo})`));
|
|
105
|
+
console.log(chalk.gray(` ID: ${file.id}`));
|
|
105
106
|
}
|
|
106
107
|
console.log();
|
|
107
108
|
if (totalPages > 1) {
|