argustack 0.1.17 → 0.1.18
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 +3 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/push.d.ts +3 -0
- package/dist/mcp/tools/push.d.ts.map +1 -0
- package/dist/mcp/tools/push.js +54 -0
- package/dist/mcp/tools/push.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
[**Documentation & Examples →**](https://app.paperlink.online/s/0aa7d2d6/argustack)
|
|
11
11
|
|
|
12
|
-
Argustack downloads your project data into local PostgreSQL, cross-references everything, and gives Claude direct access via
|
|
12
|
+
Argustack downloads your project data into local PostgreSQL, cross-references everything, and gives Claude direct access via 21 MCP tools. All data stays on your machine.
|
|
13
13
|
|
|
14
14
|
> *Was ticket PROJ-123 implemented as described?*
|
|
15
15
|
> *Who reviewed the PR and what was the feedback?*
|
|
@@ -24,7 +24,7 @@ Argustack downloads your project data into local PostgreSQL, cross-references ev
|
|
|
24
24
|
- **Cross-source timeline** — Jira + Git + GitHub events in chronological order
|
|
25
25
|
- **Semantic search** — find issues by meaning, not just keywords (pgvector)
|
|
26
26
|
- **Task estimation** — predict duration per developer based on actual history
|
|
27
|
-
- **
|
|
27
|
+
- **21 MCP tools** — Claude queries your data directly via SQL
|
|
28
28
|
- **IDE Plugin** — kanban board for JetBrains IDEs where columns are Claude Code skills
|
|
29
29
|
- **100% local** — no cloud, no accounts, no telemetry
|
|
30
30
|
|
|
@@ -90,6 +90,7 @@ After sync, Claude queries your data through these tools:
|
|
|
90
90
|
| `issue_timeline` | Full chronological timeline: Jira + Git + GitHub |
|
|
91
91
|
| `semantic_search` | Find similar issues by meaning (pgvector) |
|
|
92
92
|
| `estimate` | Predict task duration per developer |
|
|
93
|
+
| `push` | Push local board tasks to Jira |
|
|
93
94
|
| `workspace_info` | Current workspace configuration |
|
|
94
95
|
|
|
95
96
|
## IDE Plugin
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BpE,eAAO,MAAM,MAAM,WAWjB,CAAC;AAUH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -20,6 +20,7 @@ import { registerIssueTools } from './tools/issue.js';
|
|
|
20
20
|
import { registerSearchTools } from './tools/search.js';
|
|
21
21
|
import { registerEstimateTools } from './tools/estimate.js';
|
|
22
22
|
import { registerDatabaseTools } from './tools/database.js';
|
|
23
|
+
import { registerPushTools } from './tools/push.js';
|
|
23
24
|
const mcpFilename = fileURLToPath(import.meta.url);
|
|
24
25
|
const mcpPackageRoot = resolve(dirname(mcpFilename), '..', '..');
|
|
25
26
|
function loadIconDataUri() {
|
|
@@ -49,6 +50,7 @@ registerIssueTools(server);
|
|
|
49
50
|
registerSearchTools(server);
|
|
50
51
|
registerEstimateTools(server);
|
|
51
52
|
registerDatabaseTools(server);
|
|
53
|
+
registerPushTools(server);
|
|
52
54
|
export async function startMcpServer() {
|
|
53
55
|
const transport = new StdioServerTransport();
|
|
54
56
|
await server.connect(transport);
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0DzD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
import { loadWorkspace, textResponse, errorResponse, getErrorMessage, } from '../helpers.js';
|
|
3
|
+
import { JiraProvider } from '../../adapters/jira/index.js';
|
|
4
|
+
import { PostgresStorage } from '../../adapters/postgres/index.js';
|
|
5
|
+
import { PushUseCase } from '../../use-cases/push.js';
|
|
6
|
+
import { updateMdFrontmatter } from '../../adapters/board/md-parser.js';
|
|
7
|
+
export function registerPushTools(server) {
|
|
8
|
+
server.registerTool('push', {
|
|
9
|
+
description: 'Push local board tasks to Jira. Creates Stories for tasks with source=local in the Argustack database. Updates .md frontmatter with the new Jira key.',
|
|
10
|
+
inputSchema: {},
|
|
11
|
+
}, async () => {
|
|
12
|
+
const ws = loadWorkspace();
|
|
13
|
+
if (!ws.ok) {
|
|
14
|
+
return errorResponse(`Workspace not found: ${ws.reason}`);
|
|
15
|
+
}
|
|
16
|
+
dotenv.config({ path: `${ws.root}/.env`, quiet: true });
|
|
17
|
+
const jiraUrl = process.env['JIRA_URL'];
|
|
18
|
+
const jiraEmail = process.env['JIRA_EMAIL'];
|
|
19
|
+
const jiraToken = process.env['JIRA_API_TOKEN'];
|
|
20
|
+
if (!jiraUrl || !jiraEmail || !jiraToken) {
|
|
21
|
+
return errorResponse('Jira credentials not configured. Set JIRA_URL, JIRA_EMAIL, JIRA_API_TOKEN in .env');
|
|
22
|
+
}
|
|
23
|
+
const jira = new JiraProvider({ host: jiraUrl, email: jiraEmail, apiToken: jiraToken });
|
|
24
|
+
const storage = new PostgresStorage({
|
|
25
|
+
host: process.env['DB_HOST'] ?? 'localhost',
|
|
26
|
+
port: parseInt(process.env['DB_PORT'] ?? '5434', 10),
|
|
27
|
+
database: process.env['DB_NAME'] ?? 'argustack',
|
|
28
|
+
user: process.env['DB_USER'] ?? 'argustack',
|
|
29
|
+
password: process.env['DB_PASSWORD'] ?? 'argustack_local',
|
|
30
|
+
});
|
|
31
|
+
try {
|
|
32
|
+
await storage.initialize();
|
|
33
|
+
const useCase = new PushUseCase(jira, storage);
|
|
34
|
+
const result = await useCase.execute();
|
|
35
|
+
for (const item of result.created) {
|
|
36
|
+
if (item.mdPath) {
|
|
37
|
+
updateMdFrontmatter(item.mdPath, { jiraKey: item.newKey });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
await storage.close();
|
|
41
|
+
if (result.created.length === 0) {
|
|
42
|
+
return textResponse('No local issues to push. All issues already synced with Jira.');
|
|
43
|
+
}
|
|
44
|
+
const lines = result.created.map((item) => `${item.newKey} (was ${item.oldKey})`);
|
|
45
|
+
const summary = `Pushed ${String(result.created.length)} issue(s) to Jira:\n${lines.join('\n')}`;
|
|
46
|
+
return textResponse(result.errors > 0 ? `${summary}\n\n${String(result.errors)} error(s) occurred.` : summary);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
await storage.close();
|
|
50
|
+
return errorResponse(`Push failed: ${getErrorMessage(err)}`);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/mcp/tools/push.ts"],"names":[],"mappings":"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"}
|