@convext/cli 1.0.15 → 1.0.17
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 +2 -2
- package/dist/api.d.ts +62 -21
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +71 -10
- package/dist/api.js.map +1 -1
- package/dist/cli.js +23 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.d.ts +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +37 -46
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +34 -85
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/stats.d.ts +7 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +159 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +128 -22
- package/dist/commands/sync.js.map +1 -1
- package/dist/utils/hooks.d.ts +46 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/hooks.js +270 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/telemetry.d.ts +58 -0
- package/dist/utils/telemetry.d.ts.map +1 -0
- package/dist/utils/telemetry.js +156 -0
- package/dist/utils/telemetry.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ convext sync
|
|
|
37
37
|
convext sync [options]
|
|
38
38
|
|
|
39
39
|
Options:
|
|
40
|
-
-p, --project <
|
|
40
|
+
-p, --project <slug> Project slug to sync context for
|
|
41
41
|
-l, --languages <langs> Comma-separated languages (e.g., 'ruby,typescript')
|
|
42
42
|
-f, --format <format> Output format: all, claude, cursor, copilot (default: all)
|
|
43
43
|
-n, --dry-run Preview changes without writing files
|
|
@@ -191,7 +191,7 @@ After running `init`, a `.convext.json` file is created:
|
|
|
191
191
|
|
|
192
192
|
```json
|
|
193
193
|
{
|
|
194
|
-
"
|
|
194
|
+
"projectSlug": "my-org/my-project",
|
|
195
195
|
"name": "my-project",
|
|
196
196
|
"repoUrl": "https://github.com/myorg/my-project"
|
|
197
197
|
}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface Rule {
|
|
2
|
-
|
|
2
|
+
slug: string;
|
|
3
3
|
title: string;
|
|
4
4
|
severity: string;
|
|
5
5
|
category: string;
|
|
@@ -19,14 +19,14 @@ export interface Standard {
|
|
|
19
19
|
commands?: Record<string, string>;
|
|
20
20
|
}
|
|
21
21
|
export interface ProjectContextResponse {
|
|
22
|
-
|
|
22
|
+
project_slug: string;
|
|
23
23
|
project_name: string;
|
|
24
24
|
markdown: string;
|
|
25
25
|
rules_count: number;
|
|
26
26
|
standards_count: number;
|
|
27
27
|
}
|
|
28
28
|
export interface RuleSet {
|
|
29
|
-
|
|
29
|
+
slug: string;
|
|
30
30
|
name: string;
|
|
31
31
|
description: string;
|
|
32
32
|
language?: string;
|
|
@@ -35,28 +35,24 @@ export interface RuleSet {
|
|
|
35
35
|
}
|
|
36
36
|
export interface ProjectContext {
|
|
37
37
|
project?: {
|
|
38
|
-
|
|
38
|
+
slug: string;
|
|
39
39
|
name: string;
|
|
40
|
-
slug?: string;
|
|
41
40
|
description?: string;
|
|
42
41
|
tech_stack?: Record<string, unknown>;
|
|
43
42
|
};
|
|
44
43
|
assigned_rule_sets?: Array<{
|
|
45
|
-
|
|
44
|
+
slug: string;
|
|
46
45
|
name: string;
|
|
47
|
-
slug?: string;
|
|
48
46
|
scope: string;
|
|
49
47
|
}>;
|
|
50
48
|
available_rule_sets?: {
|
|
51
49
|
organization: Array<{
|
|
52
|
-
|
|
50
|
+
slug: string;
|
|
53
51
|
name: string;
|
|
54
|
-
slug?: string;
|
|
55
52
|
}>;
|
|
56
53
|
global: Array<{
|
|
57
|
-
|
|
54
|
+
slug: string;
|
|
58
55
|
name: string;
|
|
59
|
-
slug?: string;
|
|
60
56
|
}>;
|
|
61
57
|
};
|
|
62
58
|
rules: Rule[];
|
|
@@ -76,31 +72,30 @@ export declare function getStandards(language?: string): Promise<{
|
|
|
76
72
|
export declare function getRuleSets(): Promise<{
|
|
77
73
|
rulesets: RuleSet[];
|
|
78
74
|
}>;
|
|
79
|
-
export declare function getProjectContext(
|
|
75
|
+
export declare function getProjectContext(projectSlug?: string, repoUrl?: string): Promise<ProjectContext>;
|
|
80
76
|
export declare function getProjectMarkdown(projectSlug: string): Promise<ProjectContextResponse>;
|
|
81
77
|
type RegisteredProjectResponse = {
|
|
82
|
-
|
|
78
|
+
project_slug: string;
|
|
83
79
|
message: string;
|
|
84
80
|
project?: {
|
|
85
|
-
id: number;
|
|
86
81
|
name: string;
|
|
82
|
+
slug: string;
|
|
87
83
|
repo_url?: string;
|
|
88
84
|
source?: string;
|
|
89
85
|
};
|
|
90
86
|
};
|
|
91
87
|
export declare function registerProject(name: string, repoUrl?: string, description?: string, organizationSlug?: string): Promise<RegisteredProjectResponse>;
|
|
92
88
|
export interface Organization {
|
|
93
|
-
id: number;
|
|
94
|
-
name: string;
|
|
95
89
|
slug: string;
|
|
90
|
+
name: string;
|
|
96
91
|
projects_count: number;
|
|
97
92
|
}
|
|
98
93
|
export interface ProjectSummary {
|
|
99
|
-
id: number;
|
|
100
94
|
name: string;
|
|
101
95
|
slug: string;
|
|
102
96
|
repo_url?: string;
|
|
103
97
|
organization_name?: string;
|
|
98
|
+
organization_slug?: string;
|
|
104
99
|
}
|
|
105
100
|
export declare function getOrganizations(): Promise<{
|
|
106
101
|
organizations: Organization[];
|
|
@@ -108,14 +103,60 @@ export declare function getOrganizations(): Promise<{
|
|
|
108
103
|
export declare function getProjects(): Promise<{
|
|
109
104
|
projects: ProjectSummary[];
|
|
110
105
|
}>;
|
|
111
|
-
export declare function getEngineeringContext(
|
|
112
|
-
export declare function assignRuleSets(
|
|
106
|
+
export declare function getEngineeringContext(projectSlug?: string, languages?: string): Promise<string>;
|
|
107
|
+
export declare function assignRuleSets(projectSlug: string, ruleSetSlugs: string[]): Promise<{
|
|
113
108
|
assigned: number;
|
|
114
109
|
rule_sets: Array<{
|
|
115
|
-
id: number;
|
|
116
|
-
name: string;
|
|
117
110
|
slug: string;
|
|
111
|
+
name: string;
|
|
118
112
|
}>;
|
|
119
113
|
}>;
|
|
114
|
+
export interface EnforcementPattern {
|
|
115
|
+
pattern: string;
|
|
116
|
+
message: string;
|
|
117
|
+
}
|
|
118
|
+
export interface RuleWithEnforcement {
|
|
119
|
+
slug: string;
|
|
120
|
+
title: string;
|
|
121
|
+
severity: string;
|
|
122
|
+
category: string;
|
|
123
|
+
enforcement?: {
|
|
124
|
+
block_paths?: EnforcementPattern[];
|
|
125
|
+
block_content?: EnforcementPattern[];
|
|
126
|
+
block_dependencies?: Array<{
|
|
127
|
+
gem?: string;
|
|
128
|
+
package?: string;
|
|
129
|
+
message: string;
|
|
130
|
+
}>;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
export declare function getProjectRulesWithEnforcement(projectSlug: string): Promise<{
|
|
134
|
+
rules: RuleWithEnforcement[];
|
|
135
|
+
}>;
|
|
136
|
+
export interface ComplianceStats {
|
|
137
|
+
project_slug: string;
|
|
138
|
+
period_days: number;
|
|
139
|
+
total_events: number;
|
|
140
|
+
violations_blocked: number;
|
|
141
|
+
violations_warned: number;
|
|
142
|
+
compliance_checks: number;
|
|
143
|
+
tasks_completed: number;
|
|
144
|
+
enforcement_rate: number;
|
|
145
|
+
by_rule: Array<{
|
|
146
|
+
rule_slug: string;
|
|
147
|
+
rule_title: string;
|
|
148
|
+
blocked: number;
|
|
149
|
+
warned: number;
|
|
150
|
+
}>;
|
|
151
|
+
by_source: Record<string, number>;
|
|
152
|
+
by_day: Array<{
|
|
153
|
+
date: string;
|
|
154
|
+
count: number;
|
|
155
|
+
}>;
|
|
156
|
+
}
|
|
157
|
+
export declare function getComplianceStats(projectSlug: string, days?: number): Promise<ComplianceStats>;
|
|
158
|
+
export declare function uploadTelemetry(projectSlug: string, events: Array<Record<string, unknown>> | unknown[]): Promise<{
|
|
159
|
+
uploaded: number;
|
|
160
|
+
}>;
|
|
120
161
|
export {};
|
|
121
162
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -90,10 +90,10 @@ export async function getRuleSets() {
|
|
|
90
90
|
}
|
|
91
91
|
return { rulesets: [] };
|
|
92
92
|
}
|
|
93
|
-
export async function getProjectContext(
|
|
93
|
+
export async function getProjectContext(projectSlug, repoUrl) {
|
|
94
94
|
const args = {};
|
|
95
|
-
if (
|
|
96
|
-
args.
|
|
95
|
+
if (projectSlug)
|
|
96
|
+
args.project_slug = projectSlug;
|
|
97
97
|
if (repoUrl)
|
|
98
98
|
args.repo_url = repoUrl;
|
|
99
99
|
const result = await mcpCall("tools/call", {
|
|
@@ -152,12 +152,12 @@ export async function registerProject(name, repoUrl, description, organizationSl
|
|
|
152
152
|
const text = result.content?.[0]?.text;
|
|
153
153
|
if (text) {
|
|
154
154
|
const parsed = JSON.parse(text);
|
|
155
|
-
if (parsed.
|
|
155
|
+
if (parsed.project_slug) {
|
|
156
156
|
return parsed;
|
|
157
157
|
}
|
|
158
|
-
if (parsed.project?.
|
|
158
|
+
if (parsed.project?.slug) {
|
|
159
159
|
return {
|
|
160
|
-
|
|
160
|
+
project_slug: parsed.project.slug,
|
|
161
161
|
message: parsed.message || "Project registered successfully",
|
|
162
162
|
project: parsed.project,
|
|
163
163
|
};
|
|
@@ -205,21 +205,21 @@ export async function getProjects() {
|
|
|
205
205
|
}
|
|
206
206
|
return response.json();
|
|
207
207
|
}
|
|
208
|
-
export async function getEngineeringContext(
|
|
208
|
+
export async function getEngineeringContext(projectSlug, languages) {
|
|
209
209
|
const result = await mcpCall("prompts/get", {
|
|
210
210
|
name: "engineering-context",
|
|
211
211
|
arguments: {
|
|
212
|
-
...(
|
|
212
|
+
...(projectSlug && { project_slug: projectSlug }),
|
|
213
213
|
...(languages && { languages }),
|
|
214
214
|
},
|
|
215
215
|
});
|
|
216
216
|
return result.messages?.[0]?.content?.text || "";
|
|
217
217
|
}
|
|
218
|
-
export async function assignRuleSets(
|
|
218
|
+
export async function assignRuleSets(projectSlug, ruleSetSlugs) {
|
|
219
219
|
const result = await mcpCall("tools/call", {
|
|
220
220
|
name: "assign_project_rule_sets_tool",
|
|
221
221
|
arguments: {
|
|
222
|
-
|
|
222
|
+
project_slug: projectSlug,
|
|
223
223
|
rule_set_slugs: ruleSetSlugs,
|
|
224
224
|
},
|
|
225
225
|
});
|
|
@@ -229,4 +229,65 @@ export async function assignRuleSets(projectId, ruleSetSlugs) {
|
|
|
229
229
|
}
|
|
230
230
|
throw new ApiError(500, "Failed to assign rule sets");
|
|
231
231
|
}
|
|
232
|
+
export async function getProjectRulesWithEnforcement(projectSlug) {
|
|
233
|
+
const apiUrl = getApiUrl();
|
|
234
|
+
const token = getApiToken();
|
|
235
|
+
if (!token) {
|
|
236
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
237
|
+
}
|
|
238
|
+
const response = await fetch(`${apiUrl}/api/projects/${projectSlug}/rules?include_enforcement=true`, {
|
|
239
|
+
method: "GET",
|
|
240
|
+
headers: {
|
|
241
|
+
"Content-Type": "application/json",
|
|
242
|
+
Authorization: `Bearer ${token}`,
|
|
243
|
+
"X-CLI-Version": getCurrentVersion(),
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
checkVersionHeader(response);
|
|
247
|
+
if (!response.ok) {
|
|
248
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
249
|
+
}
|
|
250
|
+
return response.json();
|
|
251
|
+
}
|
|
252
|
+
export async function getComplianceStats(projectSlug, days = 30) {
|
|
253
|
+
const apiUrl = getApiUrl();
|
|
254
|
+
const token = getApiToken();
|
|
255
|
+
if (!token) {
|
|
256
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
257
|
+
}
|
|
258
|
+
const response = await fetch(`${apiUrl}/api/projects/${projectSlug}/compliance?days=${days}`, {
|
|
259
|
+
method: "GET",
|
|
260
|
+
headers: {
|
|
261
|
+
"Content-Type": "application/json",
|
|
262
|
+
Authorization: `Bearer ${token}`,
|
|
263
|
+
"X-CLI-Version": getCurrentVersion(),
|
|
264
|
+
},
|
|
265
|
+
});
|
|
266
|
+
checkVersionHeader(response);
|
|
267
|
+
if (!response.ok) {
|
|
268
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
269
|
+
}
|
|
270
|
+
return response.json();
|
|
271
|
+
}
|
|
272
|
+
export async function uploadTelemetry(projectSlug, events) {
|
|
273
|
+
const apiUrl = getApiUrl();
|
|
274
|
+
const token = getApiToken();
|
|
275
|
+
if (!token) {
|
|
276
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
277
|
+
}
|
|
278
|
+
const response = await fetch(`${apiUrl}/api/projects/${projectSlug}/events/bulk`, {
|
|
279
|
+
method: "POST",
|
|
280
|
+
headers: {
|
|
281
|
+
"Content-Type": "application/json",
|
|
282
|
+
Authorization: `Bearer ${token}`,
|
|
283
|
+
"X-CLI-Version": getCurrentVersion(),
|
|
284
|
+
},
|
|
285
|
+
body: JSON.stringify({ events }),
|
|
286
|
+
});
|
|
287
|
+
checkVersionHeader(response);
|
|
288
|
+
if (!response.ok) {
|
|
289
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
290
|
+
}
|
|
291
|
+
return response.json();
|
|
292
|
+
}
|
|
232
293
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { checkCommand } from "./commands/check.js";
|
|
|
7
7
|
import { initCommand } from "./commands/init.js";
|
|
8
8
|
import { mcpCommand, mcpStatusCommand } from "./commands/mcp.js";
|
|
9
9
|
import { loginCommand, logoutCommand } from "./commands/login.js";
|
|
10
|
+
import { statsCommand } from "./commands/stats.js";
|
|
10
11
|
import { checkForUpdates, getCurrentVersion } from "./utils/versionCheck.js";
|
|
11
12
|
// Show server URL first for every command
|
|
12
13
|
const apiUrl = getApiUrl();
|
|
@@ -31,30 +32,34 @@ Examples:
|
|
|
31
32
|
program
|
|
32
33
|
.command("sync")
|
|
33
34
|
.description("Sync engineering rules and generate IDE dotfiles")
|
|
34
|
-
.option("-p, --project <
|
|
35
|
+
.option("-p, --project <slug>", "Project slug to sync context for")
|
|
35
36
|
.option("-l, --languages <langs>", "Comma-separated languages to filter (e.g., 'ruby,typescript')")
|
|
36
37
|
.option("-f, --format <format>", "Output format: all, claude, cursor, copilot", "all")
|
|
37
38
|
.option("-n, --dry-run", "Show what would be written without making changes")
|
|
38
39
|
.option("-v, --verbose", "Show detailed debug output")
|
|
40
|
+
.option("--hooks", "Generate enforcement hooks for Claude Code")
|
|
41
|
+
.option("--telemetry", "Upload local telemetry to Convext cloud")
|
|
39
42
|
.action(async (options) => {
|
|
40
43
|
await syncCommand({
|
|
41
|
-
|
|
44
|
+
projectSlug: options.project,
|
|
42
45
|
languages: options.languages,
|
|
43
46
|
format: options.format,
|
|
44
47
|
dryRun: options.dryRun,
|
|
45
48
|
verbose: options.verbose,
|
|
49
|
+
hooks: options.hooks,
|
|
50
|
+
telemetry: options.telemetry,
|
|
46
51
|
});
|
|
47
52
|
});
|
|
48
53
|
// Check command - validate compliance
|
|
49
54
|
program
|
|
50
55
|
.command("check")
|
|
51
56
|
.description("Check compliance with Convext rules")
|
|
52
|
-
.option("-p, --project <
|
|
57
|
+
.option("-p, --project <slug>", "Project slug to check against")
|
|
53
58
|
.option("-l, --languages <langs>", "Comma-separated languages to check")
|
|
54
59
|
.option("-s, --strict", "Fail if any file is missing or out of sync")
|
|
55
60
|
.action(async (options) => {
|
|
56
61
|
await checkCommand({
|
|
57
|
-
|
|
62
|
+
projectSlug: options.project,
|
|
58
63
|
languages: options.languages,
|
|
59
64
|
strict: options.strict,
|
|
60
65
|
});
|
|
@@ -146,6 +151,20 @@ program
|
|
|
146
151
|
.action(async () => {
|
|
147
152
|
await logoutCommand();
|
|
148
153
|
});
|
|
154
|
+
// Stats command - show compliance statistics
|
|
155
|
+
program
|
|
156
|
+
.command("stats")
|
|
157
|
+
.description("Show local compliance statistics from telemetry")
|
|
158
|
+
.option("-d, --days <number>", "Number of days to show (0 for all time)", parseInt, 7)
|
|
159
|
+
.option("--json", "Output as JSON")
|
|
160
|
+
.option("-v, --verbose", "Show recent events")
|
|
161
|
+
.action(async (options) => {
|
|
162
|
+
await statsCommand({
|
|
163
|
+
days: options.days,
|
|
164
|
+
json: options.json,
|
|
165
|
+
verbose: options.verbose,
|
|
166
|
+
});
|
|
167
|
+
});
|
|
149
168
|
// Auth status command
|
|
150
169
|
program
|
|
151
170
|
.command("whoami")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,0CAA0C;AAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wEAAwE,CAAC;KACrF,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;CAUvB,CAAC,CAAC;AAEH,kDAAkD;AAClD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/check.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqHD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyID,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyID,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6MrE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -199,7 +199,7 @@ export async function initCommand(options) {
|
|
|
199
199
|
console.log(chalk.gray(` Matched via remote: ${matchedRemote.name}`));
|
|
200
200
|
}
|
|
201
201
|
if (await promptConfirm("Link to this project?", true)) {
|
|
202
|
-
await writeProjectConfig(matchingProject.
|
|
202
|
+
await writeProjectConfig(matchingProject.slug, matchingProject.name, matchedRemote?.url || detectedRepoUrl);
|
|
203
203
|
console.log(chalk.green("\n✓ Linked to existing project"));
|
|
204
204
|
return;
|
|
205
205
|
}
|
|
@@ -211,40 +211,42 @@ export async function initCommand(options) {
|
|
|
211
211
|
console.log(` • ${chalk.cyan(remote.name)}: ${chalk.gray(remote.url)}`);
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
// Step 5:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (!projectsByOrg.has(orgName)) {
|
|
222
|
-
projectsByOrg.set(orgName, []);
|
|
223
|
-
}
|
|
224
|
-
projectsByOrg.get(orgName).push(proj);
|
|
225
|
-
}
|
|
226
|
-
// Display grouped
|
|
227
|
-
for (const [orgName, orgProjects] of projectsByOrg) {
|
|
228
|
-
console.log(chalk.gray(`\n ${orgName}:`));
|
|
229
|
-
for (const proj of orgProjects) {
|
|
230
|
-
console.log(` • ${chalk.cyan(proj.name)}`);
|
|
231
|
-
}
|
|
214
|
+
// Step 5: Select organization FIRST
|
|
215
|
+
let selectedOrg;
|
|
216
|
+
if (options.organization) {
|
|
217
|
+
const found = organizations.find(o => o.slug === options.organization);
|
|
218
|
+
if (!found) {
|
|
219
|
+
console.log(chalk.red(`\nWorkspace "${options.organization}" not found.`));
|
|
220
|
+
return;
|
|
232
221
|
}
|
|
222
|
+
selectedOrg = found;
|
|
223
|
+
}
|
|
224
|
+
else if (organizations.length === 1) {
|
|
225
|
+
selectedOrg = organizations[0];
|
|
226
|
+
console.log(chalk.gray(`\nUsing workspace: ${selectedOrg.name}`));
|
|
233
227
|
}
|
|
228
|
+
else {
|
|
229
|
+
selectedOrg = await promptSelect("\nSelect a workspace:", organizations.map(org => ({
|
|
230
|
+
label: `${org.name} ${chalk.gray(`(${org.projects_count} projects)`)}`,
|
|
231
|
+
value: org,
|
|
232
|
+
})), 0);
|
|
233
|
+
}
|
|
234
|
+
// Step 7: Filter projects to selected org and show options
|
|
235
|
+
const orgProjects = projects.filter(p => p.organization_name === selectedOrg.name);
|
|
234
236
|
const actionOptions = [
|
|
235
237
|
{ label: chalk.green("+ Create new project"), value: { type: "create" } },
|
|
236
|
-
...
|
|
237
|
-
label: `Link to: ${proj.name}
|
|
238
|
+
...orgProjects.map(proj => ({
|
|
239
|
+
label: `Link to: ${proj.name}`,
|
|
238
240
|
value: { type: "link", project: proj },
|
|
239
241
|
})),
|
|
240
242
|
];
|
|
241
|
-
const action = await promptSelect(
|
|
243
|
+
const action = await promptSelect(`\nSelect project in ${chalk.cyan(selectedOrg.name)}:`, actionOptions, 0);
|
|
242
244
|
if (action.type === "link") {
|
|
243
|
-
await writeProjectConfig(action.project.
|
|
245
|
+
await writeProjectConfig(action.project.slug, action.project.name, action.project.repo_url);
|
|
244
246
|
console.log(chalk.green(`\n✓ Linked to project: ${action.project.name}`));
|
|
245
247
|
return;
|
|
246
248
|
}
|
|
247
|
-
// Step
|
|
249
|
+
// Step 8: Create new project
|
|
248
250
|
console.log("\n" + chalk.bold("Create New Project"));
|
|
249
251
|
const detectedName = options.name || detectProjectName();
|
|
250
252
|
const detectedDescription = options.description || detectProjectDescription();
|
|
@@ -275,26 +277,15 @@ export async function initCommand(options) {
|
|
|
275
277
|
finalRepoUrl = (await promptInput("Repository URL", detectedRepoUrl)).trim() || detectedRepoUrl;
|
|
276
278
|
}
|
|
277
279
|
const finalDescription = (await promptInput("Description (optional)", detectedDescription)).trim() || detectedDescription;
|
|
278
|
-
|
|
279
|
-
let orgSlug = options.organization;
|
|
280
|
-
if (!orgSlug) {
|
|
281
|
-
if (organizations.length === 1) {
|
|
282
|
-
orgSlug = organizations[0].slug;
|
|
283
|
-
console.log(chalk.gray(`\nUsing workspace: ${organizations[0].name}`));
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
const selectedOrg = await promptSelect("Select a workspace:", organizations.map(org => ({
|
|
287
|
-
label: `${org.name} (${org.projects_count} projects)`,
|
|
288
|
-
value: org,
|
|
289
|
-
})), 0);
|
|
290
|
-
orgSlug = selectedOrg.slug;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
280
|
+
const orgSlug = selectedOrg.slug;
|
|
293
281
|
spinner.start("Creating project...");
|
|
294
282
|
const result = await registerProject(finalName, finalRepoUrl, finalDescription, orgSlug);
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
283
|
+
const simpleSlug = result.project_slug || result.project?.slug || finalName.toLowerCase().replace(/[^a-z0-9]+/g, "-");
|
|
284
|
+
// Create compound slug (org-slug/project-slug)
|
|
285
|
+
const compoundSlug = `${orgSlug}/${simpleSlug}`;
|
|
286
|
+
spinner.succeed(`Project created: ${compoundSlug}`);
|
|
287
|
+
await writeProjectConfig(compoundSlug, finalName, finalRepoUrl);
|
|
288
|
+
summarizeProject(compoundSlug, finalName, finalRepoUrl, finalDescription);
|
|
298
289
|
await showRulesetSummary();
|
|
299
290
|
console.log("\n" + chalk.bold("Next Steps:"));
|
|
300
291
|
console.log(` 1. Assign rule sets in the Convext web interface.`);
|
|
@@ -319,7 +310,7 @@ function logInsight(label, values) {
|
|
|
319
310
|
console.log(` ${label}: ${chalk.cyan(data.join(", "))}`);
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
|
-
async function writeProjectConfig(
|
|
313
|
+
async function writeProjectConfig(slug, name, repoUrl) {
|
|
323
314
|
const cwd = process.cwd();
|
|
324
315
|
const convextDir = join(cwd, ".convext");
|
|
325
316
|
const localConfigPath = join(convextDir, "config.json");
|
|
@@ -328,17 +319,17 @@ async function writeProjectConfig(projectId, name, repoUrl) {
|
|
|
328
319
|
mkdirSync(convextDir, { recursive: true });
|
|
329
320
|
}
|
|
330
321
|
const localConfig = {
|
|
331
|
-
|
|
322
|
+
slug,
|
|
332
323
|
name,
|
|
333
324
|
repoUrl,
|
|
334
325
|
createdAt: new Date().toISOString(),
|
|
335
326
|
};
|
|
336
327
|
writeFileSync(localConfigPath, JSON.stringify(localConfig, null, 2));
|
|
337
328
|
}
|
|
338
|
-
function summarizeProject(
|
|
329
|
+
function summarizeProject(slug, name, repoUrl, description) {
|
|
339
330
|
console.log("\n" + chalk.bold("Project Configuration:"));
|
|
340
331
|
console.log(` Name: ${chalk.cyan(name)}`);
|
|
341
|
-
console.log(`
|
|
332
|
+
console.log(` Slug: ${chalk.cyan(slug)}`);
|
|
342
333
|
if (repoUrl) {
|
|
343
334
|
console.log(` Repository: ${chalk.cyan(repoUrl)}`);
|
|
344
335
|
}
|