devto-mcp 0.2.0 → 0.2.2
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 +48 -4
- package/bin/devto-mcp.js +0 -0
- package/bin/devto.js +0 -0
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +233 -128
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -5
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +43 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +119 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@ npm install -g devto-mcp
|
|
|
10
10
|
|
|
11
11
|
Requires Node.js >= 18 and [Claude Code](https://claude.ai/claude-code).
|
|
12
12
|
|
|
13
|
+
This is a one-time global install. Each project is linked individually via `devto init` — uninstalling from one project does not affect others.
|
|
14
|
+
|
|
13
15
|
## Setup
|
|
14
16
|
|
|
15
17
|
1. Create an account and get an API key at [devto.ai](https://devto.ai)
|
|
@@ -21,12 +23,38 @@ devto login
|
|
|
21
23
|
devto config set anthropic-key sk-ant-xxxx
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
3.
|
|
26
|
+
3. In your project directory, link to DevTo:
|
|
25
27
|
|
|
26
28
|
```bash
|
|
29
|
+
cd your-project
|
|
27
30
|
devto init
|
|
28
31
|
```
|
|
29
32
|
|
|
33
|
+
This creates:
|
|
34
|
+
- `.devto.json` — project config (workspace URL, project key, provider)
|
|
35
|
+
- `.devto/config.json` — credentials (API key, scoped to this project)
|
|
36
|
+
- `.mcp.json` — Claude Code MCP server config
|
|
37
|
+
|
|
38
|
+
Both `.devto.json` and `.devto/` are added to `.gitignore` automatically.
|
|
39
|
+
|
|
40
|
+
4. Restart Claude Code to pick up the MCP config.
|
|
41
|
+
|
|
42
|
+
## Per-project configuration
|
|
43
|
+
|
|
44
|
+
Each project gets its own `.devto.json` in the project root:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"workspaceUrl": "https://yourcompany.atlassian.net",
|
|
49
|
+
"projectKey": "ENG",
|
|
50
|
+
"provider": "jira"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
When the MCP server starts, it walks up the directory tree from the current working directory looking for `.devto.json`. If found, that workspace and project are used for all API calls. If not found, it falls back to the tenant's default workspace.
|
|
55
|
+
|
|
56
|
+
**Add `.devto.json` to your `.gitignore`.** It may contain a workspace ID. `devto init` does this automatically.
|
|
57
|
+
|
|
30
58
|
## Usage
|
|
31
59
|
|
|
32
60
|
In Claude Code:
|
|
@@ -41,17 +69,29 @@ DevTo generates a structured plan. Run `confirm_plan` to push it to your project
|
|
|
41
69
|
|
|
42
70
|
| Command | Description |
|
|
43
71
|
|---|---|
|
|
44
|
-
| `devto login` | Authenticate with your API key |
|
|
45
|
-
| `devto
|
|
46
|
-
| `devto
|
|
72
|
+
| `devto login` | Authenticate with your API key (global) |
|
|
73
|
+
| `devto init` | Link this project to DevTo |
|
|
74
|
+
| `devto unlink` | Unlink this project (removes .devto.json, .devto/, registry entry) |
|
|
75
|
+
| `devto status` | Show connection and active project config |
|
|
47
76
|
| `devto doctor` | Run diagnostics |
|
|
48
77
|
| `devto sync` | Re-sync workspace config |
|
|
49
78
|
| `devto config set anthropic-key` | Store your Anthropic key locally |
|
|
50
79
|
|
|
80
|
+
### Unlinking a project
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
devto unlink
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This removes `.devto.json`, `.devto/`, the devto entry from `.mcp.json`, and the project from `~/.devto/projects.json`. It does **not** uninstall the global package.
|
|
87
|
+
|
|
88
|
+
To fully remove DevTo: `npm uninstall -g devto-mcp`.
|
|
89
|
+
|
|
51
90
|
## MCP tools
|
|
52
91
|
|
|
53
92
|
| Tool | Description |
|
|
54
93
|
|---|---|
|
|
94
|
+
| `get_project_summary` | Lightweight snapshot of active work |
|
|
55
95
|
| `create_plan` | Generate a plan from a feature description |
|
|
56
96
|
| `confirm_plan` | Execute a plan and create all work items |
|
|
57
97
|
| `create_epic` | Create an epic |
|
|
@@ -61,6 +101,10 @@ DevTo generates a structured plan. Run `confirm_plan` to push it to your project
|
|
|
61
101
|
| `update_task` | Update a task's status |
|
|
62
102
|
| `get_status` | Get project summary |
|
|
63
103
|
|
|
104
|
+
## Project registry
|
|
105
|
+
|
|
106
|
+
DevTo keeps a registry of linked projects at `~/.devto/projects.json`. This is used internally to track which directories are linked. You don't need to edit it manually.
|
|
107
|
+
|
|
64
108
|
## Dashboard
|
|
65
109
|
|
|
66
110
|
Manage your workspace, API keys, and billing at [devto.ai/dashboard](https://devto.ai/dashboard).
|
package/bin/devto-mcp.js
CHANGED
|
File without changes
|
package/bin/devto.js
CHANGED
|
File without changes
|
package/dist/cli.d.ts
CHANGED
|
@@ -6,13 +6,12 @@
|
|
|
6
6
|
* devto login Authenticate with your DevTo API key
|
|
7
7
|
* devto logout Clear global credentials
|
|
8
8
|
* devto status Show current connection status
|
|
9
|
-
* devto init
|
|
9
|
+
* devto init Link this project to DevTo
|
|
10
|
+
* devto unlink Unlink this project from DevTo
|
|
10
11
|
* devto doctor Test full connection chain
|
|
11
12
|
* devto sync Re-sync workspace configuration
|
|
12
13
|
* devto verbose Toggle verbose mode
|
|
13
14
|
* devto config set anthropic-key <key> Store Anthropic API key
|
|
14
|
-
* devto uninstall Remove DevTo from this project
|
|
15
|
-
* devto uninstall --purge Remove DevTo from this project + global config
|
|
16
15
|
*/
|
|
17
16
|
export {};
|
|
18
17
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
|
package/dist/cli.js
CHANGED
|
@@ -7,13 +7,12 @@
|
|
|
7
7
|
* devto login Authenticate with your DevTo API key
|
|
8
8
|
* devto logout Clear global credentials
|
|
9
9
|
* devto status Show current connection status
|
|
10
|
-
* devto init
|
|
10
|
+
* devto init Link this project to DevTo
|
|
11
|
+
* devto unlink Unlink this project from DevTo
|
|
11
12
|
* devto doctor Test full connection chain
|
|
12
13
|
* devto sync Re-sync workspace configuration
|
|
13
14
|
* devto verbose Toggle verbose mode
|
|
14
15
|
* devto config set anthropic-key <key> Store Anthropic API key
|
|
15
|
-
* devto uninstall Remove DevTo from this project
|
|
16
|
-
* devto uninstall --purge Remove DevTo from this project + global config
|
|
17
16
|
*/
|
|
18
17
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
18
|
if (k2 === undefined) k2 = k;
|
|
@@ -55,6 +54,19 @@ const path = __importStar(require("path"));
|
|
|
55
54
|
const os = __importStar(require("os"));
|
|
56
55
|
const config_1 = require("./config");
|
|
57
56
|
const command = process.argv[2];
|
|
57
|
+
const NO_PROJECT_MESSAGE = `\nNo project linked in this directory.\nRun \`devto init\` to link this project to a DevTo workspace.\n`;
|
|
58
|
+
/**
|
|
59
|
+
* Require .devto.json in the directory tree.
|
|
60
|
+
* If not found, print message and exit. Used by status, doctor, sync.
|
|
61
|
+
*/
|
|
62
|
+
function requireProjectJson() {
|
|
63
|
+
const projectJson = (0, config_1.findProjectJson)();
|
|
64
|
+
if (!projectJson) {
|
|
65
|
+
console.log(NO_PROJECT_MESSAGE);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
return projectJson;
|
|
69
|
+
}
|
|
58
70
|
async function prompt(question, hidden = false) {
|
|
59
71
|
return new Promise((resolve) => {
|
|
60
72
|
const rl = readline.createInterface({
|
|
@@ -99,15 +111,43 @@ async function validateKey(apiKey) {
|
|
|
99
111
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
100
112
|
headers: {
|
|
101
113
|
Authorization: `Bearer ${apiKey}`,
|
|
102
|
-
"X-DevTo-Version":
|
|
114
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
103
115
|
},
|
|
104
116
|
});
|
|
105
|
-
|
|
106
|
-
|
|
117
|
+
if (res.ok)
|
|
118
|
+
return "valid";
|
|
119
|
+
return "invalid";
|
|
107
120
|
}
|
|
108
121
|
catch {
|
|
109
|
-
|
|
110
|
-
|
|
122
|
+
return "unreachable";
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Fetch workspaces for a given API key.
|
|
127
|
+
* Returns array of { id, name, workspaceUrl, projectKey, providerType }.
|
|
128
|
+
*/
|
|
129
|
+
async function fetchWorkspaces(apiKey) {
|
|
130
|
+
const apiUrl = process.env.DEVTO_API_URL ?? "https://api.devto.ai";
|
|
131
|
+
try {
|
|
132
|
+
const res = await fetch(`${apiUrl}/api/v1/cli/workspaces`, {
|
|
133
|
+
headers: {
|
|
134
|
+
Authorization: `Bearer ${apiKey}`,
|
|
135
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
if (!res.ok)
|
|
139
|
+
return [];
|
|
140
|
+
const data = (await res.json());
|
|
141
|
+
return (data.workspaces ?? []).map((w) => ({
|
|
142
|
+
id: w.id,
|
|
143
|
+
name: w.name,
|
|
144
|
+
workspaceUrl: w.workspace_url,
|
|
145
|
+
projectKey: w.workspace_project_key,
|
|
146
|
+
providerType: w.provider_type,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return [];
|
|
111
151
|
}
|
|
112
152
|
}
|
|
113
153
|
async function login() {
|
|
@@ -121,11 +161,15 @@ async function login() {
|
|
|
121
161
|
process.exit(1);
|
|
122
162
|
}
|
|
123
163
|
process.stdout.write("Validating... ");
|
|
124
|
-
const
|
|
125
|
-
if (
|
|
164
|
+
const result = await validateKey(apiKey);
|
|
165
|
+
if (result === "invalid") {
|
|
126
166
|
console.error("\nInvalid API key. Check your key at https://devto.ai/dashboard/keys\n");
|
|
127
167
|
process.exit(1);
|
|
128
168
|
}
|
|
169
|
+
if (result === "unreachable") {
|
|
170
|
+
console.error("\nCould not reach DevTo API. Check your internet connection.\n");
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
129
173
|
const apiUrl = process.env.DEVTO_API_URL ?? "https://api.devto.ai";
|
|
130
174
|
(0, config_1.writeConfig)({ api_key: apiKey, api_url: apiUrl });
|
|
131
175
|
console.log("OK\n");
|
|
@@ -150,7 +194,7 @@ async function login() {
|
|
|
150
194
|
else {
|
|
151
195
|
console.log("\nSkipped. You can set it later: devto config set anthropic-key sk-ant-xxxx\n");
|
|
152
196
|
}
|
|
153
|
-
console.log("Next step: run `devto init`
|
|
197
|
+
console.log("Next step: run `devto init` in your project directory.");
|
|
154
198
|
console.log("Run `devto status` to verify your connection.\n");
|
|
155
199
|
}
|
|
156
200
|
async function logout() {
|
|
@@ -158,15 +202,14 @@ async function logout() {
|
|
|
158
202
|
if (fs.existsSync(configDir)) {
|
|
159
203
|
fs.rmSync(configDir, { recursive: true, force: true });
|
|
160
204
|
console.log("\nLogged out. Removed ~/.devto credentials.");
|
|
161
|
-
console.log("Note: Project .
|
|
162
|
-
console.log("Run `devto uninstall` in a project to remove it from that project.\n");
|
|
205
|
+
console.log("Note: Project .devto.json files are untouched — run `devto unlink` per project to remove them.\n");
|
|
163
206
|
}
|
|
164
207
|
else {
|
|
165
208
|
console.log("\nNo credentials found. Already logged out.\n");
|
|
166
209
|
}
|
|
167
210
|
}
|
|
168
211
|
async function status() {
|
|
169
|
-
|
|
212
|
+
const projectJson = requireProjectJson();
|
|
170
213
|
const projectConfig = (0, config_1.readProjectConfig)();
|
|
171
214
|
const globalConfig = (0, config_1.readConfig)();
|
|
172
215
|
const resolved = projectConfig
|
|
@@ -174,24 +217,27 @@ async function status() {
|
|
|
174
217
|
: globalConfig
|
|
175
218
|
? { config: globalConfig, source: "global" }
|
|
176
219
|
: null;
|
|
220
|
+
console.log("\nDevTo Status");
|
|
221
|
+
console.log("────────────");
|
|
222
|
+
console.log(`Project config: ${path.join(projectJson.dir, ".devto.json")}`);
|
|
223
|
+
console.log(` Workspace: ${projectJson.config.workspaceUrl}`);
|
|
224
|
+
console.log(` Project: ${projectJson.config.projectKey}`);
|
|
225
|
+
console.log(` Provider: ${projectJson.config.provider}`);
|
|
226
|
+
console.log();
|
|
177
227
|
if (!resolved) {
|
|
178
|
-
console.log("
|
|
179
|
-
console.log(" Run `devto init`
|
|
228
|
+
console.log("Auth: No API key found.");
|
|
229
|
+
console.log(" Run `devto init` to set up credentials for this project.\n");
|
|
180
230
|
process.exit(1);
|
|
181
231
|
}
|
|
182
232
|
const { config, source } = resolved;
|
|
183
233
|
if (source === "global") {
|
|
184
|
-
console.log("
|
|
185
|
-
|
|
234
|
+
console.log("Auth source: global (~/.devto/config.json)");
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log("Auth source: project (.devto/config.json)");
|
|
186
238
|
}
|
|
187
|
-
console.log("\nDevTo Status");
|
|
188
|
-
console.log("────────────");
|
|
189
|
-
console.log(`Source: ${source === "project" ? "project (.devto/config.json)" : "global (~/.devto/config.json)"}`);
|
|
190
239
|
console.log(`API URL: ${config.api_url}`);
|
|
191
240
|
console.log(`API Key: ${config.api_key.slice(0, 12)}...`);
|
|
192
|
-
if (config.workspace_id) {
|
|
193
|
-
console.log(`Workspace ID: ${config.workspace_id.slice(0, 8)}...`);
|
|
194
|
-
}
|
|
195
241
|
// Anthropic key status
|
|
196
242
|
const hasAnthropic = config.anthropic_key || (() => { try {
|
|
197
243
|
(0, config_1.getAnthropicKey)();
|
|
@@ -205,10 +251,11 @@ async function status() {
|
|
|
205
251
|
try {
|
|
206
252
|
const headers = {
|
|
207
253
|
Authorization: `Bearer ${config.api_key}`,
|
|
208
|
-
"X-DevTo-Version":
|
|
254
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
209
255
|
};
|
|
210
|
-
if (config.
|
|
211
|
-
headers["X-DevTo-Workspace"] = config.
|
|
256
|
+
if (projectJson.config.workspaceId) {
|
|
257
|
+
headers["X-DevTo-Workspace"] = projectJson.config.workspaceId;
|
|
258
|
+
}
|
|
212
259
|
const res = await fetch(`${config.api_url}/api/v1/status`, { headers });
|
|
213
260
|
if (res.ok) {
|
|
214
261
|
const data = (await res.json());
|
|
@@ -234,11 +281,12 @@ async function status() {
|
|
|
234
281
|
console.log();
|
|
235
282
|
}
|
|
236
283
|
async function init() {
|
|
237
|
-
console.log("\nDevTo Init —
|
|
284
|
+
console.log("\nDevTo Init — Link this project to DevTo\n");
|
|
238
285
|
const globalConfig = (0, config_1.readConfig)();
|
|
239
286
|
const existingProject = (0, config_1.readProjectConfig)();
|
|
287
|
+
const existingJson = (0, config_1.findProjectJson)(process.cwd());
|
|
240
288
|
const apiUrl = process.env.DEVTO_API_URL ?? globalConfig?.api_url ?? "https://api.devto.ai";
|
|
241
|
-
//
|
|
289
|
+
// ── Step 1: Get API key ──────────────────────────────────────────────
|
|
242
290
|
let apiKey;
|
|
243
291
|
if (existingProject?.api_key) {
|
|
244
292
|
const reuse = await prompt(`This project already has an API key (${existingProject.api_key.slice(0, 12)}...). Use it? (y/n): `);
|
|
@@ -264,13 +312,53 @@ async function init() {
|
|
|
264
312
|
}
|
|
265
313
|
// Validate the key
|
|
266
314
|
process.stdout.write("Validating... ");
|
|
267
|
-
const
|
|
268
|
-
if (
|
|
269
|
-
console.error("\nInvalid API key.
|
|
315
|
+
const validation = await validateKey(apiKey);
|
|
316
|
+
if (validation === "invalid") {
|
|
317
|
+
console.error("\nInvalid API key. Get a valid key at https://devto.ai/dashboard/keys\n");
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
if (validation === "unreachable") {
|
|
321
|
+
console.error("\nCould not reach DevTo API. Check your internet connection.\n");
|
|
270
322
|
process.exit(1);
|
|
271
323
|
}
|
|
272
324
|
console.log("OK");
|
|
273
|
-
//
|
|
325
|
+
// ── Step 2: Select workspace/project ─────────────────────────────────
|
|
326
|
+
console.log("\nFetching your workspaces...");
|
|
327
|
+
const workspaces = await fetchWorkspaces(apiKey);
|
|
328
|
+
if (workspaces.length === 0) {
|
|
329
|
+
console.log("\nNo workspaces found for this API key.");
|
|
330
|
+
console.log("This usually means:");
|
|
331
|
+
console.log(" 1. You haven't connected a workspace yet — go to https://devto.ai/dashboard and complete onboarding");
|
|
332
|
+
console.log(" 2. The API key is from a different account — check https://devto.ai/dashboard/keys\n");
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
console.log(`\nFound ${workspaces.length} workspace(s):\n`);
|
|
336
|
+
workspaces.forEach((ws, i) => {
|
|
337
|
+
console.log(` ${i + 1}. ${ws.name || ws.workspaceUrl} — ${ws.projectKey} (${ws.providerType})`);
|
|
338
|
+
});
|
|
339
|
+
let selected;
|
|
340
|
+
if (workspaces.length === 1) {
|
|
341
|
+
const confirm = await prompt(`\nUse this workspace? (y/n): `);
|
|
342
|
+
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
343
|
+
console.log("\nYou can connect a different workspace at https://devto.ai/dashboard/settings\n");
|
|
344
|
+
process.exit(0);
|
|
345
|
+
}
|
|
346
|
+
selected = workspaces[0];
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
const choice = await prompt(`\nSelect workspace (1-${workspaces.length}): `);
|
|
350
|
+
const idx = parseInt(choice, 10) - 1;
|
|
351
|
+
if (isNaN(idx) || idx < 0 || idx >= workspaces.length) {
|
|
352
|
+
console.error("\nInvalid selection.\n");
|
|
353
|
+
process.exit(1);
|
|
354
|
+
}
|
|
355
|
+
selected = workspaces[idx];
|
|
356
|
+
}
|
|
357
|
+
const workspaceUrl = selected.workspaceUrl;
|
|
358
|
+
const projectKey = selected.projectKey;
|
|
359
|
+
const provider = selected.providerType;
|
|
360
|
+
const workspaceId = selected.id;
|
|
361
|
+
// ── Step 3: Check for Anthropic key ──────────────────────────────────
|
|
274
362
|
let anthropicKey = existingProject?.anthropic_key;
|
|
275
363
|
if (!anthropicKey) {
|
|
276
364
|
try {
|
|
@@ -280,23 +368,41 @@ async function init() {
|
|
|
280
368
|
// No Anthropic key yet — skip
|
|
281
369
|
}
|
|
282
370
|
}
|
|
283
|
-
//
|
|
371
|
+
// ── Step 4: Write .devto.json (project config) ──────────────────────
|
|
372
|
+
(0, config_1.writeProjectJson)({
|
|
373
|
+
workspaceUrl,
|
|
374
|
+
projectKey,
|
|
375
|
+
provider,
|
|
376
|
+
workspaceId,
|
|
377
|
+
});
|
|
378
|
+
console.log("\nCreated .devto.json");
|
|
379
|
+
// Ensure .devto.json is gitignored
|
|
380
|
+
ensureGitignore(".devto.json");
|
|
381
|
+
// ── Step 5: Write .devto/config.json (credentials) ──────────────────
|
|
284
382
|
(0, config_1.writeProjectConfig)({
|
|
285
383
|
api_key: apiKey,
|
|
286
384
|
api_url: apiUrl,
|
|
287
385
|
anthropic_key: anthropicKey,
|
|
288
|
-
workspace_id:
|
|
386
|
+
workspace_id: workspaceId,
|
|
289
387
|
});
|
|
290
388
|
// Ensure .devto/ is gitignored
|
|
291
|
-
ensureGitignore();
|
|
292
|
-
console.log("
|
|
293
|
-
//
|
|
389
|
+
ensureGitignore(".devto/");
|
|
390
|
+
console.log("Created .devto/config.json");
|
|
391
|
+
// ── Step 6: Register in ~/.devto/projects.json ──────────────────────
|
|
392
|
+
(0, config_1.registerProject)({
|
|
393
|
+
path: process.cwd(),
|
|
394
|
+
workspaceUrl,
|
|
395
|
+
projectKey,
|
|
396
|
+
provider,
|
|
397
|
+
});
|
|
398
|
+
console.log("Registered in ~/.devto/projects.json");
|
|
399
|
+
// ── Step 7: Write .mcp.json (Claude Code config) ────────────────────
|
|
294
400
|
const isWindows = process.platform === "win32";
|
|
295
401
|
const envObj = { DEVTO_API_KEY: apiKey };
|
|
296
402
|
if (anthropicKey)
|
|
297
403
|
envObj.DEVTO_ANTHROPIC_KEY = anthropicKey;
|
|
298
|
-
if (
|
|
299
|
-
envObj.DEVTO_WORKSPACE_ID =
|
|
404
|
+
if (workspaceId)
|
|
405
|
+
envObj.DEVTO_WORKSPACE_ID = workspaceId;
|
|
300
406
|
const mcpServerConfig = {
|
|
301
407
|
command: isWindows ? "cmd" : "npx",
|
|
302
408
|
args: isWindows ? ["/c", "npx", "-y", "devto-mcp"] : ["-y", "devto-mcp"],
|
|
@@ -304,7 +410,6 @@ async function init() {
|
|
|
304
410
|
};
|
|
305
411
|
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
306
412
|
let mcpConfig = {};
|
|
307
|
-
// Read existing .mcp.json if present
|
|
308
413
|
if (fs.existsSync(mcpJsonPath)) {
|
|
309
414
|
try {
|
|
310
415
|
mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, "utf-8"));
|
|
@@ -317,7 +422,7 @@ async function init() {
|
|
|
317
422
|
mcpConfig.mcpServers = {};
|
|
318
423
|
mcpConfig.mcpServers.devto = mcpServerConfig;
|
|
319
424
|
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
320
|
-
console.log("MCP config written to .mcp.json
|
|
425
|
+
console.log("MCP config written to .mcp.json");
|
|
321
426
|
// Also remove any user-level devto MCP config to avoid conflicts
|
|
322
427
|
try {
|
|
323
428
|
const { execSync } = require("child_process");
|
|
@@ -326,8 +431,11 @@ async function init() {
|
|
|
326
431
|
catch {
|
|
327
432
|
// Not registered at user level — fine
|
|
328
433
|
}
|
|
329
|
-
console.log(`\
|
|
330
|
-
console.log(`
|
|
434
|
+
console.log(`\n── Project linked ──────────────────────────────`);
|
|
435
|
+
console.log(`Workspace: ${workspaceUrl}`);
|
|
436
|
+
console.log(`Project: ${projectKey}`);
|
|
437
|
+
console.log(`Provider: ${provider}`);
|
|
438
|
+
console.log(`API key: ${apiKey.slice(0, 12)}...`);
|
|
331
439
|
if (!anthropicKey) {
|
|
332
440
|
console.log("\nNote: Anthropic API key not configured.");
|
|
333
441
|
console.log(" AI plan generation (create_plan) requires an Anthropic key.");
|
|
@@ -337,6 +445,54 @@ async function init() {
|
|
|
337
445
|
}
|
|
338
446
|
console.log("\nRestart Claude Code to pick up the changes.\n");
|
|
339
447
|
}
|
|
448
|
+
async function unlink() {
|
|
449
|
+
console.log("\nDevTo Unlink — Remove this project from DevTo\n");
|
|
450
|
+
const projectJson = (0, config_1.findProjectJson)(process.cwd());
|
|
451
|
+
const devtoJsonPath = path.join(process.cwd(), ".devto.json");
|
|
452
|
+
const devtoConfigDir = path.join(process.cwd(), ".devto");
|
|
453
|
+
if (!projectJson && !fs.existsSync(devtoJsonPath) && !fs.existsSync(devtoConfigDir)) {
|
|
454
|
+
console.log("This project is not linked to DevTo.\n");
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
const confirm = await prompt("Remove DevTo configuration from this project? (y/n): ");
|
|
458
|
+
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
459
|
+
console.log("Cancelled.\n");
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
// Remove .devto.json
|
|
463
|
+
if (fs.existsSync(devtoJsonPath)) {
|
|
464
|
+
fs.unlinkSync(devtoJsonPath);
|
|
465
|
+
console.log("Removed .devto.json");
|
|
466
|
+
}
|
|
467
|
+
// Remove .devto/ directory
|
|
468
|
+
if (fs.existsSync(devtoConfigDir)) {
|
|
469
|
+
fs.rmSync(devtoConfigDir, { recursive: true, force: true });
|
|
470
|
+
console.log("Removed .devto/");
|
|
471
|
+
}
|
|
472
|
+
// Remove devto entry from .mcp.json
|
|
473
|
+
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
474
|
+
if (fs.existsSync(mcpJsonPath)) {
|
|
475
|
+
try {
|
|
476
|
+
const raw = fs.readFileSync(mcpJsonPath, "utf-8");
|
|
477
|
+
const mcpConfig = JSON.parse(raw);
|
|
478
|
+
if (mcpConfig.mcpServers?.devto) {
|
|
479
|
+
delete mcpConfig.mcpServers.devto;
|
|
480
|
+
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
481
|
+
console.log("Removed devto from .mcp.json");
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
catch {
|
|
485
|
+
// Skip corrupt config
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// Unregister from ~/.devto/projects.json
|
|
489
|
+
const removed = (0, config_1.unregisterProject)(process.cwd());
|
|
490
|
+
if (removed) {
|
|
491
|
+
console.log("Removed from ~/.devto/projects.json");
|
|
492
|
+
}
|
|
493
|
+
console.log("\nProject unlinked. Global credentials (~/.devto/config.json) are untouched.");
|
|
494
|
+
console.log("Restart Claude Code to apply changes.\n");
|
|
495
|
+
}
|
|
340
496
|
async function promptForApiKey() {
|
|
341
497
|
const apiKey = await prompt("Paste your API key: ", true);
|
|
342
498
|
if (!apiKey || !apiKey.startsWith("devto_")) {
|
|
@@ -345,28 +501,34 @@ async function promptForApiKey() {
|
|
|
345
501
|
}
|
|
346
502
|
return apiKey;
|
|
347
503
|
}
|
|
348
|
-
function ensureGitignore() {
|
|
504
|
+
function ensureGitignore(entry) {
|
|
349
505
|
const gitignorePath = path.join(process.cwd(), ".gitignore");
|
|
350
|
-
const entry = ".devto/";
|
|
351
506
|
try {
|
|
352
507
|
if (fs.existsSync(gitignorePath)) {
|
|
353
508
|
const content = fs.readFileSync(gitignorePath, "utf-8");
|
|
354
509
|
if (!content.includes(entry)) {
|
|
355
|
-
|
|
510
|
+
const label = entry === ".devto.json" ? "DevTo project config" : "DevTo credentials (contains API keys)";
|
|
511
|
+
fs.appendFileSync(gitignorePath, `\n# ${label}\n${entry}\n`);
|
|
356
512
|
}
|
|
357
513
|
}
|
|
358
514
|
else {
|
|
359
|
-
|
|
515
|
+
const label = entry === ".devto.json" ? "DevTo project config" : "DevTo credentials (contains API keys)";
|
|
516
|
+
fs.writeFileSync(gitignorePath, `# ${label}\n${entry}\n`);
|
|
360
517
|
}
|
|
361
518
|
}
|
|
362
519
|
catch {
|
|
363
|
-
console.log(
|
|
520
|
+
console.log(` Warning: Could not update .gitignore — make sure ${entry} is not committed.`);
|
|
364
521
|
}
|
|
365
522
|
}
|
|
366
523
|
async function doctor() {
|
|
367
524
|
console.log("\nDevTo Doctor — Connection Diagnostics\n");
|
|
525
|
+
const projectJson = requireProjectJson();
|
|
368
526
|
const resolved = (0, config_1.resolveConfig)();
|
|
369
527
|
const config = resolved?.config ?? null;
|
|
528
|
+
process.stdout.write("Project config (.devto.json) ... ");
|
|
529
|
+
console.log(`OK (${path.join(projectJson.dir, ".devto.json")})`);
|
|
530
|
+
console.log(` Workspace: ${projectJson.config.workspaceUrl}`);
|
|
531
|
+
console.log(` Project: ${projectJson.config.projectKey} (${projectJson.config.provider})`);
|
|
370
532
|
// 1. Check DevTo API reachable
|
|
371
533
|
process.stdout.write("DevTo API reachable ... ");
|
|
372
534
|
const apiUrl = config?.api_url ?? (0, config_1.getApiUrl)();
|
|
@@ -374,7 +536,7 @@ async function doctor() {
|
|
|
374
536
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
375
537
|
headers: {
|
|
376
538
|
...(config?.api_key ? { Authorization: `Bearer ${config.api_key}` } : {}),
|
|
377
|
-
"X-DevTo-Version":
|
|
539
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
378
540
|
},
|
|
379
541
|
});
|
|
380
542
|
if (res.ok) {
|
|
@@ -400,7 +562,7 @@ async function doctor() {
|
|
|
400
562
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
401
563
|
headers: {
|
|
402
564
|
Authorization: `Bearer ${config.api_key}`,
|
|
403
|
-
"X-DevTo-Version":
|
|
565
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
404
566
|
},
|
|
405
567
|
});
|
|
406
568
|
if (res.status === 401) {
|
|
@@ -428,7 +590,7 @@ async function doctor() {
|
|
|
428
590
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
429
591
|
headers: {
|
|
430
592
|
Authorization: `Bearer ${config.api_key}`,
|
|
431
|
-
"X-DevTo-Version":
|
|
593
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
432
594
|
},
|
|
433
595
|
});
|
|
434
596
|
if (res.ok) {
|
|
@@ -486,6 +648,7 @@ async function doctor() {
|
|
|
486
648
|
}
|
|
487
649
|
async function sync() {
|
|
488
650
|
console.log("\nDevTo Sync — Workspace Configuration Discovery\n");
|
|
651
|
+
requireProjectJson();
|
|
489
652
|
const config = (0, config_1.readConfig)();
|
|
490
653
|
if (!config?.api_key) {
|
|
491
654
|
console.log("Not logged in. Run `devto login` first.\n");
|
|
@@ -499,7 +662,7 @@ async function sync() {
|
|
|
499
662
|
headers: {
|
|
500
663
|
"Content-Type": "application/json",
|
|
501
664
|
Authorization: `Bearer ${config.api_key}`,
|
|
502
|
-
"X-DevTo-Version":
|
|
665
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
503
666
|
},
|
|
504
667
|
});
|
|
505
668
|
if (!res.ok) {
|
|
@@ -548,64 +711,6 @@ async function configSet() {
|
|
|
548
711
|
console.log(`Key: ${value.slice(0, 12)}...`);
|
|
549
712
|
console.log("Run `devto init` to embed it in your project's MCP config.\n");
|
|
550
713
|
}
|
|
551
|
-
async function uninstall() {
|
|
552
|
-
const purge = process.argv[3] === "--purge";
|
|
553
|
-
if (purge) {
|
|
554
|
-
console.log("\nDevTo Uninstall (full purge)\n");
|
|
555
|
-
const confirm = await prompt("This will remove DevTo MCP server AND delete global credentials (~/.devto). Continue? (y/n): ");
|
|
556
|
-
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
557
|
-
console.log("Cancelled.\n");
|
|
558
|
-
return;
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
else {
|
|
562
|
-
console.log("\nDevTo Uninstall\n");
|
|
563
|
-
const confirm = await prompt("Remove DevTo MCP server from Claude Code? (y/n): ");
|
|
564
|
-
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
565
|
-
console.log("Cancelled.\n");
|
|
566
|
-
return;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
// Remove via Claude CLI
|
|
570
|
-
const { spawnSync } = require("child_process");
|
|
571
|
-
try {
|
|
572
|
-
spawnSync("claude", ["mcp", "remove", "devto"], { stdio: "inherit", shell: true });
|
|
573
|
-
console.log("Removed DevTo MCP server from Claude Code.");
|
|
574
|
-
}
|
|
575
|
-
catch {
|
|
576
|
-
console.log("Could not remove via Claude CLI (may not be registered).");
|
|
577
|
-
}
|
|
578
|
-
// Also clean up .mcp.json if it has a devto entry (legacy)
|
|
579
|
-
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
580
|
-
if (fs.existsSync(mcpJsonPath)) {
|
|
581
|
-
try {
|
|
582
|
-
const raw = fs.readFileSync(mcpJsonPath, "utf-8");
|
|
583
|
-
const mcpConfig = JSON.parse(raw);
|
|
584
|
-
if (mcpConfig.mcpServers?.devto) {
|
|
585
|
-
delete mcpConfig.mcpServers.devto;
|
|
586
|
-
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
587
|
-
console.log(`Also removed devto from: ${mcpJsonPath}`);
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
catch {
|
|
591
|
-
// Skip corrupt config
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
// Only with --purge: remove global ~/.devto config
|
|
595
|
-
if (purge) {
|
|
596
|
-
const configDir = path.join(os.homedir(), ".devto");
|
|
597
|
-
if (fs.existsSync(configDir)) {
|
|
598
|
-
fs.rmSync(configDir, { recursive: true, force: true });
|
|
599
|
-
console.log("Removed ~/.devto global credentials.");
|
|
600
|
-
}
|
|
601
|
-
console.log("\nFull purge complete. To finish, run: npm uninstall -g devto-mcp\n");
|
|
602
|
-
}
|
|
603
|
-
else {
|
|
604
|
-
console.log("\nDevTo removed from this project.");
|
|
605
|
-
console.log("Your global credentials (~/.devto) are untouched — other projects still work.");
|
|
606
|
-
console.log("Restart Claude Code to apply changes.\n");
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
714
|
function printHelp() {
|
|
610
715
|
console.log(`
|
|
611
716
|
DevTo CLI — AI-powered work management
|
|
@@ -613,26 +718,26 @@ DevTo CLI — AI-powered work management
|
|
|
613
718
|
Usage:
|
|
614
719
|
devto login Authenticate with your DevTo API key
|
|
615
720
|
devto logout Clear global credentials (~/.devto)
|
|
616
|
-
devto status Show connection status
|
|
617
|
-
devto init
|
|
721
|
+
devto status Show connection status and active project
|
|
722
|
+
devto init Link this project to DevTo
|
|
723
|
+
devto unlink Unlink this project from DevTo
|
|
618
724
|
devto doctor Test full connection chain
|
|
619
725
|
devto sync Re-sync workspace configuration
|
|
620
726
|
devto verbose Toggle verbose mode
|
|
621
727
|
devto config set anthropic-key <key> Store Anthropic API key
|
|
622
|
-
devto uninstall Remove DevTo from this project
|
|
623
|
-
devto uninstall --purge Remove from project + delete global credentials
|
|
624
728
|
devto help Show this help message
|
|
625
729
|
devto --version Show installed version
|
|
626
730
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
{ "mcpServers": { "devto": { "command": "cmd", "args": ["/c", "npx", "-y", "devto-mcp"], "env": { "DEVTO_API_KEY": "your-key" } } } }
|
|
731
|
+
Setup:
|
|
732
|
+
1. npm install -g devto-mcp Install globally (once)
|
|
733
|
+
2. devto login Save your API key
|
|
734
|
+
3. devto init Link project, create .devto.json + .mcp.json
|
|
735
|
+
4. Restart Claude Code
|
|
633
736
|
|
|
634
|
-
|
|
635
|
-
|
|
737
|
+
Per-project config (.devto.json):
|
|
738
|
+
Created by \`devto init\`. Contains workspace URL, project key, and provider.
|
|
739
|
+
Add .devto.json to .gitignore (devto init does this automatically).
|
|
740
|
+
To disconnect a project: \`devto unlink\`
|
|
636
741
|
`);
|
|
637
742
|
}
|
|
638
743
|
async function main() {
|
|
@@ -653,6 +758,10 @@ async function main() {
|
|
|
653
758
|
case "--init":
|
|
654
759
|
await init();
|
|
655
760
|
break;
|
|
761
|
+
case "unlink":
|
|
762
|
+
case "--unlink":
|
|
763
|
+
await unlink();
|
|
764
|
+
break;
|
|
656
765
|
case "doctor":
|
|
657
766
|
case "--doctor":
|
|
658
767
|
await doctor();
|
|
@@ -669,13 +778,9 @@ async function main() {
|
|
|
669
778
|
case "--config":
|
|
670
779
|
await configSet();
|
|
671
780
|
break;
|
|
672
|
-
case "uninstall":
|
|
673
|
-
case "--uninstall":
|
|
674
|
-
await uninstall();
|
|
675
|
-
break;
|
|
676
781
|
case "--version":
|
|
677
782
|
case "-v":
|
|
678
|
-
console.log(`devto-mcp v${
|
|
783
|
+
console.log(`devto-mcp v${config_1.VERSION}`);
|
|
679
784
|
break;
|
|
680
785
|
case "help":
|
|
681
786
|
case "--help":
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAc,SAAQ,KAAK;IAG7B,IAAI,CAAC,EAAE,MAAM;IACb,MAAM,CAAC,EAAE,MAAM;gBAFtB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA;CAKzB;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAwCZ"}
|
package/dist/client.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DevToApiError = void 0;
|
|
4
4
|
exports.callApi = callApi;
|
|
5
5
|
const config_1 = require("./config");
|
|
6
|
-
const DEVTO_VERSION = "0.1.0";
|
|
7
6
|
class DevToApiError extends Error {
|
|
8
7
|
code;
|
|
9
8
|
status;
|
|
@@ -18,14 +17,18 @@ exports.DevToApiError = DevToApiError;
|
|
|
18
17
|
async function callApi(method, path, body) {
|
|
19
18
|
const apiKey = (0, config_1.getApiKey)();
|
|
20
19
|
const apiUrl = (0, config_1.getApiUrl)();
|
|
21
|
-
|
|
20
|
+
// Strict: workspace comes from .devto.json only — no tenant-default fallback
|
|
21
|
+
const projectJson = (0, config_1.findProjectJson)();
|
|
22
|
+
if (!projectJson) {
|
|
23
|
+
throw new DevToApiError("No DevTo project linked in this directory. Run `devto init` in your project root to get started.", "NO_PROJECT_LINKED");
|
|
24
|
+
}
|
|
22
25
|
const headers = {
|
|
23
26
|
"Content-Type": "application/json",
|
|
24
27
|
Authorization: `Bearer ${apiKey}`,
|
|
25
|
-
"X-DevTo-Version":
|
|
28
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
26
29
|
};
|
|
27
|
-
if (workspaceId) {
|
|
28
|
-
headers["X-DevTo-Workspace"] = workspaceId;
|
|
30
|
+
if (projectJson.config.workspaceId) {
|
|
31
|
+
headers["X-DevTo-Workspace"] = projectJson.config.workspaceId;
|
|
29
32
|
}
|
|
30
33
|
const res = await fetch(`${apiUrl}${path}`, {
|
|
31
34
|
method,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAaA,0BA4CC;AAzDD,qCAA0E;AAE1E,MAAa,aAAc,SAAQ,KAAK;IAG7B;IACA;IAHT,YACE,OAAe,EACR,IAAa,EACb,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AATD,sCASC;AAEM,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,IAAY,EACZ,IAAc;IAEd,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAE3B,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAA,wBAAe,GAAE,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,aAAa,CACrB,kGAAkG,EAClG,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,aAAa,EAAE,UAAU,MAAM,EAAE;QACjC,iBAAiB,EAAE,gBAAO;KAC3B,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE;QAC1C,MAAM;QACN,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,aAAa,CACpB,IAA6B,CAAC,OAAO,IAAI,mBAAmB,GAAG,CAAC,MAAM,EAAE,EACxE,IAA0B,CAAC,IAAI,EAChC,GAAG,CAAC,MAAM,CACX,CAAC;IACJ,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
|
1
2
|
export type DevToConfig = {
|
|
2
3
|
api_key: string;
|
|
3
4
|
api_url: string;
|
|
@@ -5,6 +6,48 @@ export type DevToConfig = {
|
|
|
5
6
|
workspace_id?: string;
|
|
6
7
|
verbose?: boolean;
|
|
7
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Per-project config stored as .devto.json in the project root.
|
|
11
|
+
* Contains workspace binding — NOT auth credentials.
|
|
12
|
+
*/
|
|
13
|
+
export type ProjectJsonConfig = {
|
|
14
|
+
workspaceUrl: string;
|
|
15
|
+
projectKey: string;
|
|
16
|
+
provider: string;
|
|
17
|
+
workspaceId?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Entry in ~/.devto/projects.json registry.
|
|
21
|
+
*/
|
|
22
|
+
export type ProjectRegistryEntry = {
|
|
23
|
+
path: string;
|
|
24
|
+
workspaceUrl: string;
|
|
25
|
+
projectKey: string;
|
|
26
|
+
provider: string;
|
|
27
|
+
linkedAt: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Walk up the directory tree from startDir looking for .devto.json.
|
|
31
|
+
* Returns the parsed config and the directory where it was found, or null.
|
|
32
|
+
*/
|
|
33
|
+
export declare function findProjectJson(startDir?: string): {
|
|
34
|
+
config: ProjectJsonConfig;
|
|
35
|
+
dir: string;
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* Write .devto.json to the given directory (defaults to cwd).
|
|
39
|
+
*/
|
|
40
|
+
export declare function writeProjectJson(config: ProjectJsonConfig, dir?: string): void;
|
|
41
|
+
export declare function readProjectsRegistry(): ProjectRegistryEntry[];
|
|
42
|
+
/**
|
|
43
|
+
* Register a project directory in ~/.devto/projects.json.
|
|
44
|
+
* Updates existing entry if the path already exists.
|
|
45
|
+
*/
|
|
46
|
+
export declare function registerProject(entry: Omit<ProjectRegistryEntry, "linkedAt">): void;
|
|
47
|
+
/**
|
|
48
|
+
* Remove a project directory from ~/.devto/projects.json.
|
|
49
|
+
*/
|
|
50
|
+
export declare function unregisterProject(dir?: string): boolean;
|
|
8
51
|
export declare function readProjectConfig(): DevToConfig | null;
|
|
9
52
|
export declare function writeProjectConfig(config: DevToConfig): void;
|
|
10
53
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAA2C,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAWF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgCpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAa9E;AAID,wBAAgB,oBAAoB,IAAI,oBAAoB,EAAE,CAS7D;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG,IAAI,CAkBnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CASvD;AASD,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAgBtD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAK5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CAM5F;AAID,wBAAgB,UAAU,IAAI,WAAW,GAAG,IAAI,CAe/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKrD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAUxC;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIjD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjD"}
|
package/dist/config.js
CHANGED
|
@@ -33,6 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.VERSION = void 0;
|
|
37
|
+
exports.findProjectJson = findProjectJson;
|
|
38
|
+
exports.writeProjectJson = writeProjectJson;
|
|
39
|
+
exports.readProjectsRegistry = readProjectsRegistry;
|
|
40
|
+
exports.registerProject = registerProject;
|
|
41
|
+
exports.unregisterProject = unregisterProject;
|
|
36
42
|
exports.readProjectConfig = readProjectConfig;
|
|
37
43
|
exports.writeProjectConfig = writeProjectConfig;
|
|
38
44
|
exports.resolveConfig = resolveConfig;
|
|
@@ -48,12 +54,123 @@ exports.setAnthropicKey = setAnthropicKey;
|
|
|
48
54
|
const fs = __importStar(require("fs"));
|
|
49
55
|
const path = __importStar(require("path"));
|
|
50
56
|
const os = __importStar(require("os"));
|
|
57
|
+
// Single source of truth — read from package.json at build time
|
|
58
|
+
exports.VERSION = require("../package.json").version;
|
|
51
59
|
const CONFIG_DIR = path.join(os.homedir(), ".devto");
|
|
52
60
|
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
61
|
+
const PROJECTS_FILE = path.join(CONFIG_DIR, "projects.json");
|
|
53
62
|
const DEFAULT_API_URL = "https://api.devto.ai";
|
|
54
|
-
// ─── Per-project
|
|
63
|
+
// ─── Per-project .devto.json (workspace binding) ────────────────────────────
|
|
64
|
+
// Walk up from cwd() looking for .devto.json.
|
|
65
|
+
// Contains workspaceUrl, projectKey, provider — not credentials.
|
|
66
|
+
/**
|
|
67
|
+
* Walk up the directory tree from startDir looking for .devto.json.
|
|
68
|
+
* Returns the parsed config and the directory where it was found, or null.
|
|
69
|
+
*/
|
|
70
|
+
function findProjectJson(startDir) {
|
|
71
|
+
let dir = startDir ?? process.cwd();
|
|
72
|
+
// Safety: limit traversal depth
|
|
73
|
+
for (let i = 0; i < 50; i++) {
|
|
74
|
+
const candidate = path.join(dir, ".devto.json");
|
|
75
|
+
try {
|
|
76
|
+
if (fs.existsSync(candidate)) {
|
|
77
|
+
const raw = fs.readFileSync(candidate, "utf-8");
|
|
78
|
+
const parsed = JSON.parse(raw);
|
|
79
|
+
if (parsed.workspaceUrl && parsed.projectKey && parsed.provider) {
|
|
80
|
+
return {
|
|
81
|
+
config: {
|
|
82
|
+
workspaceUrl: parsed.workspaceUrl,
|
|
83
|
+
projectKey: parsed.projectKey,
|
|
84
|
+
provider: parsed.provider,
|
|
85
|
+
workspaceId: parsed.workspaceId,
|
|
86
|
+
},
|
|
87
|
+
dir,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Skip unreadable files
|
|
94
|
+
}
|
|
95
|
+
const parent = path.dirname(dir);
|
|
96
|
+
if (parent === dir)
|
|
97
|
+
break; // reached filesystem root
|
|
98
|
+
dir = parent;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Write .devto.json to the given directory (defaults to cwd).
|
|
104
|
+
*/
|
|
105
|
+
function writeProjectJson(config, dir) {
|
|
106
|
+
const targetDir = dir ?? process.cwd();
|
|
107
|
+
const filePath = path.join(targetDir, ".devto.json");
|
|
108
|
+
// Write only the user-facing fields + internal workspaceId
|
|
109
|
+
const data = {
|
|
110
|
+
workspaceUrl: config.workspaceUrl,
|
|
111
|
+
projectKey: config.projectKey,
|
|
112
|
+
provider: config.provider,
|
|
113
|
+
};
|
|
114
|
+
if (config.workspaceId) {
|
|
115
|
+
data.workspaceId = config.workspaceId;
|
|
116
|
+
}
|
|
117
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
|
|
118
|
+
}
|
|
119
|
+
// ─── Projects registry (~/.devto/projects.json) ────────────────────────────
|
|
120
|
+
function readProjectsRegistry() {
|
|
121
|
+
try {
|
|
122
|
+
if (!fs.existsSync(PROJECTS_FILE))
|
|
123
|
+
return [];
|
|
124
|
+
const raw = fs.readFileSync(PROJECTS_FILE, "utf-8");
|
|
125
|
+
const parsed = JSON.parse(raw);
|
|
126
|
+
return Array.isArray(parsed.projects) ? parsed.projects : [];
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function writeProjectsRegistry(projects) {
|
|
133
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
134
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
135
|
+
}
|
|
136
|
+
fs.writeFileSync(PROJECTS_FILE, JSON.stringify({ projects }, null, 2));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Register a project directory in ~/.devto/projects.json.
|
|
140
|
+
* Updates existing entry if the path already exists.
|
|
141
|
+
*/
|
|
142
|
+
function registerProject(entry) {
|
|
143
|
+
const projects = readProjectsRegistry();
|
|
144
|
+
const normalized = path.resolve(entry.path);
|
|
145
|
+
const idx = projects.findIndex((p) => path.resolve(p.path) === normalized);
|
|
146
|
+
const full = {
|
|
147
|
+
...entry,
|
|
148
|
+
path: normalized,
|
|
149
|
+
linkedAt: new Date().toISOString(),
|
|
150
|
+
};
|
|
151
|
+
if (idx >= 0) {
|
|
152
|
+
projects[idx] = full;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
projects.push(full);
|
|
156
|
+
}
|
|
157
|
+
writeProjectsRegistry(projects);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Remove a project directory from ~/.devto/projects.json.
|
|
161
|
+
*/
|
|
162
|
+
function unregisterProject(dir) {
|
|
163
|
+
const projects = readProjectsRegistry();
|
|
164
|
+
const normalized = path.resolve(dir ?? process.cwd());
|
|
165
|
+
const filtered = projects.filter((p) => path.resolve(p.path) !== normalized);
|
|
166
|
+
if (filtered.length === projects.length)
|
|
167
|
+
return false; // not found
|
|
168
|
+
writeProjectsRegistry(filtered);
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
// ─── Per-project .devto/config.json (legacy + credentials) ─────────────────
|
|
55
172
|
// Stored in .devto/config.json inside the project directory.
|
|
56
|
-
// Takes precedence over
|
|
173
|
+
// Contains API key and credentials. Takes precedence over global config.
|
|
57
174
|
const PROJECT_CONFIG_DIR = path.join(process.cwd(), ".devto");
|
|
58
175
|
const PROJECT_CONFIG_FILE = path.join(PROJECT_CONFIG_DIR, "config.json");
|
|
59
176
|
function readProjectConfig() {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,0CAgCC;AAKD,4CAaC;AAID,oDASC;AAaD,0CAkBC;AAKD,8CASC;AASD,8CAgBC;AAED,gDAKC;AAMD,sCAMC;AAID,gCAeC;AAED,kCAKC;AAED,8BAYC;AAED,8BAEC;AAED,0CAUC;AAED,wCAEC;AAED,8BAGC;AAED,gCAIC;AAED,0CAIC;AAvRD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,gEAAgE;AACnD,QAAA,OAAO,GAAW,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAgClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,+EAA+E;AAC/E,8CAA8C;AAC9C,iEAAiE;AAEjE;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAiB;IAC/C,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,gCAAgC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAChE,OAAO;wBACL,MAAM,EAAE;4BACN,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,WAAW,EAAE,MAAM,CAAC,WAAW;yBAChC;wBACD,GAAG;qBACJ,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM,CAAC,0BAA0B;QACrD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAyB,EAAE,GAAY;IACtE,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,2DAA2D;IAC3D,MAAM,IAAI,GAA2B;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACtB,IAA2C,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAChF,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAE9E,SAAgB,oBAAoB;IAClC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAA6C;IAC3E,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IAE3E,MAAM,IAAI,GAAyB;QACjC,GAAG,KAAK;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC;IAEF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IAE7E,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,YAAY;IAEnE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,yEAAyE;AAEzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAEzE,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe;YAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAmB;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAEhF,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe;YAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,MAAmB;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,SAAS;IACvB,uEAAuE;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI,eAAe,CAAC;AAC/E,CAAC;AAED,SAAgB,eAAe;IAC7B,+DAA+D;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM,EAAE,aAAa;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC;IACvD,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC;AAC9E,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC;AAClC,CAAC;AAED,SAAgB,UAAU,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACzE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACzE,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC;IAC3B,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,6 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
7
7
|
const config_1 = require("./config");
|
|
8
8
|
const client_1 = require("./client");
|
|
9
9
|
const tools_1 = require("./tools");
|
|
10
|
-
const CURRENT_VERSION = "0.1.9";
|
|
11
10
|
// Auto-update check (non-blocking)
|
|
12
11
|
(async () => {
|
|
13
12
|
try {
|
|
@@ -16,7 +15,7 @@ const CURRENT_VERSION = "0.1.9";
|
|
|
16
15
|
});
|
|
17
16
|
if (res.ok) {
|
|
18
17
|
const data = (await res.json());
|
|
19
|
-
if (data.version && data.version !==
|
|
18
|
+
if (data.version && data.version !== config_1.VERSION) {
|
|
20
19
|
console.error(`[devto-mcp] DevTo v${data.version} is available. Run npm update -g devto-mcp to update.`);
|
|
21
20
|
}
|
|
22
21
|
}
|
|
@@ -33,6 +32,15 @@ catch (err) {
|
|
|
33
32
|
console.error(`[devto-mcp] ${err instanceof Error ? err.message : String(err)}`);
|
|
34
33
|
process.exit(1);
|
|
35
34
|
}
|
|
35
|
+
// Log active project config if found
|
|
36
|
+
const _projectJson = (0, config_1.findProjectJson)();
|
|
37
|
+
if (_projectJson) {
|
|
38
|
+
console.error(`[devto-mcp] Project: ${_projectJson.config.projectKey} @ ${_projectJson.config.workspaceUrl} (${_projectJson.dir})`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error("[devto-mcp] Warning: No .devto.json found. Tools will require `devto init` before use.");
|
|
42
|
+
}
|
|
43
|
+
const NO_PROJECT_MESSAGE = "No DevTo project linked in this directory. Run `devto init` in your project root to get started.";
|
|
36
44
|
const INSTRUCTIONS = `DevTo is an AI work manager (devto.ai) — NOT the Dev.to blogging platform. When the user mentions "devto", tasks, plans, epics, or project work, they mean this tool.
|
|
37
45
|
|
|
38
46
|
DevTo connects to the developer's project tracker (Jira, Linear, etc.) and manages work items through these MCP tools. Use them whenever the user asks about tasks, plans, sprints, or project status.
|
|
@@ -54,7 +62,7 @@ DevTo connects to the developer's project tracker (Jira, Linear, etc.) and manag
|
|
|
54
62
|
- get_status — Aggregate project metrics and current sprint.`;
|
|
55
63
|
const server = new index_js_1.Server({
|
|
56
64
|
name: "devto",
|
|
57
|
-
version:
|
|
65
|
+
version: config_1.VERSION,
|
|
58
66
|
}, {
|
|
59
67
|
capabilities: {
|
|
60
68
|
tools: {},
|
|
@@ -192,6 +200,13 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
|
192
200
|
// ─── Tool handler ────────────────────────────────────────────────────────────
|
|
193
201
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
194
202
|
const { name, arguments: args } = request.params;
|
|
203
|
+
// Strict project-context enforcement: require .devto.json for all tools
|
|
204
|
+
if (!(0, config_1.findProjectJson)()) {
|
|
205
|
+
return {
|
|
206
|
+
content: [{ type: "text", text: NO_PROJECT_MESSAGE }],
|
|
207
|
+
isError: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
195
210
|
try {
|
|
196
211
|
let result;
|
|
197
212
|
switch (name) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,wEAAmE;AACnE,wEAAiF;AACjF,iEAK4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|