@convext/cli 0.1.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/README.md +180 -0
- package/dist/api.d.ts +121 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +218 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +165 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/check.d.ts +8 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +164 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +294 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +10 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +328 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +52 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/fileManager.d.ts +3 -0
- package/dist/utils/fileManager.d.ts.map +1 -0
- package/dist/utils/fileManager.js +35 -0
- package/dist/utils/fileManager.js.map +1 -0
- package/dist/utils/prompts.d.ts +9 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +78 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/scanner.d.ts +10 -0
- package/dist/utils/scanner.d.ts.map +1 -0
- package/dist/utils/scanner.js +196 -0
- package/dist/utils/scanner.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Convext CLI
|
|
2
|
+
|
|
3
|
+
Sync engineering rules and standards to your project from Convext.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install globally
|
|
9
|
+
npm install -g @convext/cli
|
|
10
|
+
|
|
11
|
+
# Or use via npx (no install needed)
|
|
12
|
+
npx @convext/cli <command>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Configure your API token
|
|
19
|
+
convext config --token YOUR_TOKEN
|
|
20
|
+
|
|
21
|
+
# 2. Initialize your project
|
|
22
|
+
convext init
|
|
23
|
+
|
|
24
|
+
# 3. Sync rules and generate dotfiles
|
|
25
|
+
convext sync
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Commands
|
|
29
|
+
|
|
30
|
+
### `sync` - Sync engineering rules and generate IDE dotfiles
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
convext sync [options]
|
|
34
|
+
|
|
35
|
+
Options:
|
|
36
|
+
-p, --project <id> Project ID to sync context for
|
|
37
|
+
-l, --languages <langs> Comma-separated languages (e.g., 'ruby,typescript')
|
|
38
|
+
-f, --format <format> Output format: all, claude, cursor, copilot (default: all)
|
|
39
|
+
-n, --dry-run Preview changes without writing files
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Generated files:
|
|
43
|
+
- `CLAUDE.md` - Claude Code instructions
|
|
44
|
+
- `.cursorrules` - Cursor IDE rules
|
|
45
|
+
- `.github/copilot-instructions.md` - GitHub Copilot instructions
|
|
46
|
+
|
|
47
|
+
### `check` - Validate compliance with Convext rules
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
convext check [options]
|
|
51
|
+
|
|
52
|
+
Options:
|
|
53
|
+
-s, --strict Fail (exit code 1) if files are out of sync
|
|
54
|
+
-q, --quiet Suppress output, only return exit code
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### `init` - Initialize and register project with Convext
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
convext init [options]
|
|
61
|
+
|
|
62
|
+
Options:
|
|
63
|
+
-n, --name <name> Project name (default: current directory name)
|
|
64
|
+
-o, --org <name> Organization name or ID
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Creates `.convext.json` with project configuration.
|
|
68
|
+
|
|
69
|
+
### `config` - Manage CLI configuration
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
convext config --token YOUR_TOKEN # Set API token
|
|
73
|
+
convext config --url https://... # Set custom API URL
|
|
74
|
+
convext config --show # Show current config
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### `whoami` - Show configured user and organization
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
convext whoami
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Configuration
|
|
84
|
+
|
|
85
|
+
### Authentication
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Config file (~/.convext/config.json)
|
|
89
|
+
convext config --token YOUR_TOKEN
|
|
90
|
+
|
|
91
|
+
# Or via environment variable
|
|
92
|
+
export CONVEXT_TOKEN="cc_live_..."
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Custom API URL
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
convext config --url https://your-server.com
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Workflows
|
|
102
|
+
|
|
103
|
+
### Pre-commit Hook
|
|
104
|
+
|
|
105
|
+
Automatically check compliance before committing:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
#!/bin/sh
|
|
109
|
+
# .git/hooks/pre-commit
|
|
110
|
+
|
|
111
|
+
# Ensure rules are in sync (don't fail build)
|
|
112
|
+
npx @convext/cli check || echo "Warning: Rules may be out of date"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Or stricter version:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
#!/bin/sh
|
|
119
|
+
# .git/hooks/pre-commit
|
|
120
|
+
|
|
121
|
+
npx @convext/cli sync 2>/dev/null || true
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### CI/CD Integration
|
|
125
|
+
|
|
126
|
+
#### GitHub Actions
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
name: Convext Compliance
|
|
130
|
+
|
|
131
|
+
on: [push, pull_request]
|
|
132
|
+
|
|
133
|
+
jobs:
|
|
134
|
+
check:
|
|
135
|
+
runs-on: ubuntu-latest
|
|
136
|
+
steps:
|
|
137
|
+
- uses: actions/checkout@v4
|
|
138
|
+
- uses: actions/setup-node@v4
|
|
139
|
+
- run: npx @convext/cli check --strict
|
|
140
|
+
env:
|
|
141
|
+
CONVEXT_TOKEN: ${{ secrets.CONVEXT_TOKEN }}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### Pre-push Hook
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npx @convext/cli check || exit 1
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Project Configuration
|
|
151
|
+
|
|
152
|
+
After running `init`, a `.convext.json` file is created:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"projectId": 123,
|
|
157
|
+
"name": "my-project",
|
|
158
|
+
"repoUrl": "https://github.com/myorg/my-project"
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
This file should be committed to version control so team members share the same project context.
|
|
163
|
+
|
|
164
|
+
## File Structure
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
~/.convext/ # Global config directory
|
|
168
|
+
config.json # API token and URL
|
|
169
|
+
|
|
170
|
+
.convext.json # Project-specific config (commit to repo)
|
|
171
|
+
|
|
172
|
+
CLAUDE.md # Generated file for Claude Code
|
|
173
|
+
.cursorrules # Generated file for Cursor
|
|
174
|
+
.github/
|
|
175
|
+
copilot-instructions.md # Generated file for GitHub Copilot
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## License
|
|
179
|
+
|
|
180
|
+
MIT
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export interface Rule {
|
|
2
|
+
id: number;
|
|
3
|
+
title: string;
|
|
4
|
+
severity: string;
|
|
5
|
+
category: string;
|
|
6
|
+
text: string;
|
|
7
|
+
}
|
|
8
|
+
export interface Standard {
|
|
9
|
+
identifier: string;
|
|
10
|
+
language: string;
|
|
11
|
+
framework?: string;
|
|
12
|
+
min_version?: string;
|
|
13
|
+
package_manager?: string;
|
|
14
|
+
linter?: string;
|
|
15
|
+
formatter?: string;
|
|
16
|
+
test_framework?: string;
|
|
17
|
+
libraries?: string[];
|
|
18
|
+
policy?: string[];
|
|
19
|
+
commands?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export interface ProjectContextResponse {
|
|
22
|
+
project_id: number;
|
|
23
|
+
project_name: string;
|
|
24
|
+
markdown: string;
|
|
25
|
+
rules_count: number;
|
|
26
|
+
standards_count: number;
|
|
27
|
+
}
|
|
28
|
+
export interface RuleSet {
|
|
29
|
+
id: number;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
language?: string;
|
|
33
|
+
rules_count: number;
|
|
34
|
+
standards_count: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ProjectContext {
|
|
37
|
+
project?: {
|
|
38
|
+
id: number;
|
|
39
|
+
name: string;
|
|
40
|
+
slug?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
tech_stack?: Record<string, unknown>;
|
|
43
|
+
};
|
|
44
|
+
assigned_rule_sets?: Array<{
|
|
45
|
+
id: number;
|
|
46
|
+
name: string;
|
|
47
|
+
slug?: string;
|
|
48
|
+
scope: string;
|
|
49
|
+
}>;
|
|
50
|
+
available_rule_sets?: {
|
|
51
|
+
organization: Array<{
|
|
52
|
+
id: number;
|
|
53
|
+
name: string;
|
|
54
|
+
slug?: string;
|
|
55
|
+
}>;
|
|
56
|
+
global: Array<{
|
|
57
|
+
id: number;
|
|
58
|
+
name: string;
|
|
59
|
+
slug?: string;
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
rules: Rule[];
|
|
63
|
+
standards?: Standard[];
|
|
64
|
+
language_standards?: Standard[];
|
|
65
|
+
}
|
|
66
|
+
export declare class ApiError extends Error {
|
|
67
|
+
statusCode: number;
|
|
68
|
+
constructor(statusCode: number, message: string);
|
|
69
|
+
}
|
|
70
|
+
export declare function getRules(): Promise<{
|
|
71
|
+
rules: Rule[];
|
|
72
|
+
}>;
|
|
73
|
+
export declare function getStandards(language?: string): Promise<{
|
|
74
|
+
standards: Standard[];
|
|
75
|
+
}>;
|
|
76
|
+
export declare function getRuleSets(): Promise<{
|
|
77
|
+
rulesets: RuleSet[];
|
|
78
|
+
}>;
|
|
79
|
+
export declare function getProjectContext(projectId?: number, repoUrl?: string): Promise<ProjectContext>;
|
|
80
|
+
export declare function getProjectMarkdown(projectSlug: string): Promise<ProjectContextResponse>;
|
|
81
|
+
type RegisteredProjectResponse = {
|
|
82
|
+
project_id: number;
|
|
83
|
+
message: string;
|
|
84
|
+
project?: {
|
|
85
|
+
id: number;
|
|
86
|
+
name: string;
|
|
87
|
+
repo_url?: string;
|
|
88
|
+
source?: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export declare function registerProject(name: string, repoUrl?: string, description?: string, organizationSlug?: string): Promise<RegisteredProjectResponse>;
|
|
92
|
+
export interface Organization {
|
|
93
|
+
id: number;
|
|
94
|
+
name: string;
|
|
95
|
+
slug: string;
|
|
96
|
+
projects_count: number;
|
|
97
|
+
}
|
|
98
|
+
export interface ProjectSummary {
|
|
99
|
+
id: number;
|
|
100
|
+
name: string;
|
|
101
|
+
slug: string;
|
|
102
|
+
repo_url?: string;
|
|
103
|
+
organization_name?: string;
|
|
104
|
+
}
|
|
105
|
+
export declare function getOrganizations(): Promise<{
|
|
106
|
+
organizations: Organization[];
|
|
107
|
+
}>;
|
|
108
|
+
export declare function getProjects(): Promise<{
|
|
109
|
+
projects: ProjectSummary[];
|
|
110
|
+
}>;
|
|
111
|
+
export declare function getEngineeringContext(projectId?: number, languages?: string): Promise<string>;
|
|
112
|
+
export declare function assignRuleSets(projectId: number, ruleSetSlugs: string[]): Promise<{
|
|
113
|
+
assigned: number;
|
|
114
|
+
rule_sets: Array<{
|
|
115
|
+
id: number;
|
|
116
|
+
name: string;
|
|
117
|
+
slug: string;
|
|
118
|
+
}>;
|
|
119
|
+
}>;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC;IACF,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvF,mBAAmB,CAAC,EAAE;QACpB,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC;CACjC;AAED,qBAAa,QAAS,SAAQ,KAAK;IAExB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EACzB,OAAO,EAAE,MAAM;CAKlB;AAqCD,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAY3D;AAED,wBAAsB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAWxF;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAUpE;AAED,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBrG;AAGD,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAqB7F;AAED,KAAK,yBAAyB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAqCpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAAE,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAqBnF;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAqB3E;AAED,wBAAsB,qBAAqB,CACzC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D,CAAC,CAiBD"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiError = void 0;
|
|
4
|
+
exports.getRules = getRules;
|
|
5
|
+
exports.getStandards = getStandards;
|
|
6
|
+
exports.getRuleSets = getRuleSets;
|
|
7
|
+
exports.getProjectContext = getProjectContext;
|
|
8
|
+
exports.getProjectMarkdown = getProjectMarkdown;
|
|
9
|
+
exports.registerProject = registerProject;
|
|
10
|
+
exports.getOrganizations = getOrganizations;
|
|
11
|
+
exports.getProjects = getProjects;
|
|
12
|
+
exports.getEngineeringContext = getEngineeringContext;
|
|
13
|
+
exports.assignRuleSets = assignRuleSets;
|
|
14
|
+
const config_js_1 = require("./config.js");
|
|
15
|
+
class ApiError extends Error {
|
|
16
|
+
statusCode;
|
|
17
|
+
constructor(statusCode, message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.statusCode = statusCode;
|
|
20
|
+
this.name = "ApiError";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ApiError = ApiError;
|
|
24
|
+
async function mcpCall(method, params = {}) {
|
|
25
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
26
|
+
const token = (0, config_js_1.getApiToken)();
|
|
27
|
+
if (!token) {
|
|
28
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
29
|
+
}
|
|
30
|
+
const response = await fetch(`${apiUrl}/mcp`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: {
|
|
33
|
+
"Content-Type": "application/json",
|
|
34
|
+
Authorization: `Bearer ${token}`,
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify({
|
|
37
|
+
jsonrpc: "2.0",
|
|
38
|
+
method,
|
|
39
|
+
params,
|
|
40
|
+
id: Date.now(),
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
45
|
+
}
|
|
46
|
+
const json = (await response.json());
|
|
47
|
+
if (json.error) {
|
|
48
|
+
throw new ApiError(json.error.code || 500, json.error.message);
|
|
49
|
+
}
|
|
50
|
+
return json.result;
|
|
51
|
+
}
|
|
52
|
+
async function getRules() {
|
|
53
|
+
const result = await mcpCall("tools/call", {
|
|
54
|
+
name: "get_rules_tool",
|
|
55
|
+
arguments: {},
|
|
56
|
+
});
|
|
57
|
+
// Parse the JSON text from the tool response
|
|
58
|
+
const text = result.content?.[0]?.text;
|
|
59
|
+
if (text) {
|
|
60
|
+
return JSON.parse(text);
|
|
61
|
+
}
|
|
62
|
+
return { rules: [] };
|
|
63
|
+
}
|
|
64
|
+
async function getStandards(language) {
|
|
65
|
+
const result = await mcpCall("tools/call", {
|
|
66
|
+
name: "get_tech_standards_tool",
|
|
67
|
+
arguments: language ? { language } : {},
|
|
68
|
+
});
|
|
69
|
+
const text = result.content?.[0]?.text;
|
|
70
|
+
if (text) {
|
|
71
|
+
return JSON.parse(text);
|
|
72
|
+
}
|
|
73
|
+
return { standards: [] };
|
|
74
|
+
}
|
|
75
|
+
async function getRuleSets() {
|
|
76
|
+
const result = await mcpCall("resources/read", {
|
|
77
|
+
uri: "charter:///rulesets",
|
|
78
|
+
});
|
|
79
|
+
const text = result.contents?.[0]?.text;
|
|
80
|
+
if (text) {
|
|
81
|
+
return JSON.parse(text);
|
|
82
|
+
}
|
|
83
|
+
return { rulesets: [] };
|
|
84
|
+
}
|
|
85
|
+
async function getProjectContext(projectId, repoUrl) {
|
|
86
|
+
const args = {};
|
|
87
|
+
if (projectId)
|
|
88
|
+
args.project_id = projectId;
|
|
89
|
+
if (repoUrl)
|
|
90
|
+
args.repo_url = repoUrl;
|
|
91
|
+
const result = await mcpCall("tools/call", {
|
|
92
|
+
name: "get_project_context_tool",
|
|
93
|
+
arguments: args,
|
|
94
|
+
});
|
|
95
|
+
const text = result.content?.[0]?.text;
|
|
96
|
+
if (text) {
|
|
97
|
+
const parsed = JSON.parse(text);
|
|
98
|
+
return {
|
|
99
|
+
...parsed,
|
|
100
|
+
rules: parsed.rules ?? [],
|
|
101
|
+
standards: parsed.standards ?? parsed.language_standards ?? [],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
throw new ApiError(404, "Project not found");
|
|
105
|
+
}
|
|
106
|
+
// Fetch pre-rendered markdown from the server (matches server preview exactly)
|
|
107
|
+
async function getProjectMarkdown(projectSlug) {
|
|
108
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
109
|
+
const token = (0, config_js_1.getApiToken)();
|
|
110
|
+
if (!token) {
|
|
111
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
112
|
+
}
|
|
113
|
+
const response = await fetch(`${apiUrl}/api/projects/${projectSlug}/context`, {
|
|
114
|
+
method: "GET",
|
|
115
|
+
headers: {
|
|
116
|
+
"Content-Type": "application/json",
|
|
117
|
+
Authorization: `Bearer ${token}`,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
122
|
+
}
|
|
123
|
+
return response.json();
|
|
124
|
+
}
|
|
125
|
+
async function registerProject(name, repoUrl, description, organizationSlug) {
|
|
126
|
+
const args = {
|
|
127
|
+
name,
|
|
128
|
+
};
|
|
129
|
+
if (repoUrl) {
|
|
130
|
+
args.repo_url = repoUrl;
|
|
131
|
+
}
|
|
132
|
+
if (description) {
|
|
133
|
+
args.description = description;
|
|
134
|
+
}
|
|
135
|
+
if (organizationSlug) {
|
|
136
|
+
args.organization_slug = organizationSlug;
|
|
137
|
+
}
|
|
138
|
+
const result = await mcpCall("tools/call", {
|
|
139
|
+
name: "register_project_tool",
|
|
140
|
+
arguments: args,
|
|
141
|
+
});
|
|
142
|
+
const text = result.content?.[0]?.text;
|
|
143
|
+
if (text) {
|
|
144
|
+
const parsed = JSON.parse(text);
|
|
145
|
+
if (parsed.project_id) {
|
|
146
|
+
return parsed;
|
|
147
|
+
}
|
|
148
|
+
if (parsed.project?.id) {
|
|
149
|
+
return {
|
|
150
|
+
project_id: parsed.project.id,
|
|
151
|
+
message: parsed.message || "Project registered successfully",
|
|
152
|
+
project: parsed.project,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
throw new ApiError(500, "Failed to register project");
|
|
157
|
+
}
|
|
158
|
+
async function getOrganizations() {
|
|
159
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
160
|
+
const token = (0, config_js_1.getApiToken)();
|
|
161
|
+
if (!token) {
|
|
162
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
163
|
+
}
|
|
164
|
+
const response = await fetch(`${apiUrl}/api/organizations`, {
|
|
165
|
+
method: "GET",
|
|
166
|
+
headers: {
|
|
167
|
+
"Content-Type": "application/json",
|
|
168
|
+
Authorization: `Bearer ${token}`,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
173
|
+
}
|
|
174
|
+
return response.json();
|
|
175
|
+
}
|
|
176
|
+
async function getProjects() {
|
|
177
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
178
|
+
const token = (0, config_js_1.getApiToken)();
|
|
179
|
+
if (!token) {
|
|
180
|
+
throw new ApiError(401, "No API token configured. Run: convext config --token YOUR_TOKEN");
|
|
181
|
+
}
|
|
182
|
+
const response = await fetch(`${apiUrl}/api/projects`, {
|
|
183
|
+
method: "GET",
|
|
184
|
+
headers: {
|
|
185
|
+
"Content-Type": "application/json",
|
|
186
|
+
Authorization: `Bearer ${token}`,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
if (!response.ok) {
|
|
190
|
+
throw new ApiError(response.status, `API request failed: ${response.statusText}`);
|
|
191
|
+
}
|
|
192
|
+
return response.json();
|
|
193
|
+
}
|
|
194
|
+
async function getEngineeringContext(projectId, languages) {
|
|
195
|
+
const result = await mcpCall("prompts/get", {
|
|
196
|
+
name: "engineering-context",
|
|
197
|
+
arguments: {
|
|
198
|
+
...(projectId && { project_id: String(projectId) }),
|
|
199
|
+
...(languages && { languages }),
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
return result.messages?.[0]?.content?.text || "";
|
|
203
|
+
}
|
|
204
|
+
async function assignRuleSets(projectId, ruleSetSlugs) {
|
|
205
|
+
const result = await mcpCall("tools/call", {
|
|
206
|
+
name: "assign_project_rule_sets_tool",
|
|
207
|
+
arguments: {
|
|
208
|
+
project_id: projectId,
|
|
209
|
+
rule_set_slugs: ruleSetSlugs,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
const text = result.content?.[0]?.text;
|
|
213
|
+
if (text) {
|
|
214
|
+
return JSON.parse(text);
|
|
215
|
+
}
|
|
216
|
+
throw new ApiError(500, "Failed to assign rule sets");
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|