argustack 0.1.6 → 0.1.8

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.
Files changed (72) hide show
  1. package/README.md +58 -385
  2. package/dist/adapters/git/mapper.d.ts +1 -1
  3. package/dist/adapters/git/mapper.js +1 -1
  4. package/dist/adapters/github/mapper.d.ts +1 -1
  5. package/dist/adapters/github/mapper.js +1 -1
  6. package/dist/cli/init/generators.d.ts +6 -0
  7. package/dist/cli/init/generators.d.ts.map +1 -0
  8. package/dist/cli/init/generators.js +153 -0
  9. package/dist/cli/init/generators.js.map +1 -0
  10. package/dist/cli/init/index.d.ts +4 -0
  11. package/dist/cli/init/index.d.ts.map +1 -0
  12. package/dist/cli/init/index.js +254 -0
  13. package/dist/cli/init/index.js.map +1 -0
  14. package/dist/cli/init/setup-csv.d.ts +4 -0
  15. package/dist/cli/init/setup-csv.d.ts.map +1 -0
  16. package/dist/cli/init/setup-csv.js +52 -0
  17. package/dist/cli/init/setup-csv.js.map +1 -0
  18. package/dist/cli/init/setup-db.d.ts +4 -0
  19. package/dist/cli/init/setup-db.d.ts.map +1 -0
  20. package/dist/cli/init/setup-db.js +33 -0
  21. package/dist/cli/init/setup-db.js.map +1 -0
  22. package/dist/cli/init/setup-git.d.ts +4 -0
  23. package/dist/cli/init/setup-git.d.ts.map +1 -0
  24. package/dist/cli/init/setup-git.js +244 -0
  25. package/dist/cli/init/setup-git.js.map +1 -0
  26. package/dist/cli/init/setup-github.d.ts +4 -0
  27. package/dist/cli/init/setup-github.d.ts.map +1 -0
  28. package/dist/cli/init/setup-github.js +102 -0
  29. package/dist/cli/init/setup-github.js.map +1 -0
  30. package/dist/cli/init/setup-jira.d.ts +4 -0
  31. package/dist/cli/init/setup-jira.d.ts.map +1 -0
  32. package/dist/cli/init/setup-jira.js +124 -0
  33. package/dist/cli/init/setup-jira.js.map +1 -0
  34. package/dist/cli/init/types.d.ts +59 -0
  35. package/dist/cli/init/types.d.ts.map +1 -0
  36. package/dist/cli/init/types.js +31 -0
  37. package/dist/cli/init/types.js.map +1 -0
  38. package/dist/core/types/config.js +1 -1
  39. package/dist/core/types/config.js.map +1 -1
  40. package/dist/mcp/helpers.d.ts +24 -0
  41. package/dist/mcp/helpers.d.ts.map +1 -0
  42. package/dist/mcp/helpers.js +73 -0
  43. package/dist/mcp/helpers.js.map +1 -0
  44. package/dist/mcp/server.d.ts +2 -3
  45. package/dist/mcp/server.d.ts.map +1 -1
  46. package/dist/mcp/server.js +12 -1579
  47. package/dist/mcp/server.js.map +1 -1
  48. package/dist/mcp/tools/estimate.d.ts +3 -0
  49. package/dist/mcp/tools/estimate.d.ts.map +1 -0
  50. package/dist/mcp/tools/estimate.js +478 -0
  51. package/dist/mcp/tools/estimate.js.map +1 -0
  52. package/dist/mcp/tools/issue.d.ts +3 -0
  53. package/dist/mcp/tools/issue.d.ts.map +1 -0
  54. package/dist/mcp/tools/issue.js +468 -0
  55. package/dist/mcp/tools/issue.js.map +1 -0
  56. package/dist/mcp/tools/query.d.ts +3 -0
  57. package/dist/mcp/tools/query.d.ts.map +1 -0
  58. package/dist/mcp/tools/query.js +319 -0
  59. package/dist/mcp/tools/query.js.map +1 -0
  60. package/dist/mcp/tools/search.d.ts +3 -0
  61. package/dist/mcp/tools/search.d.ts.map +1 -0
  62. package/dist/mcp/tools/search.js +61 -0
  63. package/dist/mcp/tools/search.js.map +1 -0
  64. package/dist/mcp/tools/workspace.d.ts +3 -0
  65. package/dist/mcp/tools/workspace.d.ts.map +1 -0
  66. package/dist/mcp/tools/workspace.js +86 -0
  67. package/dist/mcp/tools/workspace.js.map +1 -0
  68. package/dist/mcp/types.d.ts +157 -0
  69. package/dist/mcp/types.d.ts.map +1 -0
  70. package/dist/mcp/types.js +2 -0
  71. package/dist/mcp/types.js.map +1 -0
  72. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ import { getEnabledSources } from '../workspace/config.js';
2
+ import type { WorkspaceConfig } from '../core/types/index.js';
3
+ import type { ISourceProvider } from '../core/ports/source-provider.js';
4
+ import type { IStorage } from '../core/ports/storage.js';
5
+ import type { ToolResponse } from './types.js';
6
+ export type WorkspaceResult = {
7
+ ok: true;
8
+ root: string;
9
+ config: WorkspaceConfig;
10
+ } | {
11
+ ok: false;
12
+ reason: string;
13
+ };
14
+ export declare function loadWorkspace(): WorkspaceResult;
15
+ export declare function createAdapters(workspaceRoot: string): Promise<{
16
+ source: ISourceProvider | null;
17
+ storage: IStorage;
18
+ }>;
19
+ export declare function textResponse(text: string): ToolResponse;
20
+ export declare function errorResponse(text: string): ToolResponse;
21
+ export declare function getErrorMessage(err: unknown): string;
22
+ export declare function str(value: unknown): string;
23
+ export { getEnabledSources };
24
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACnD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,wBAAgB,aAAa,IAAI,eAAe,CAoB/C;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC,CA2BD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAExD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKpD;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAc1C;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ import dotenv from 'dotenv';
2
+ import { findWorkspaceRoot } from '../workspace/resolver.js';
3
+ import { readConfig, getEnabledSources } from '../workspace/config.js';
4
+ export function loadWorkspace() {
5
+ const envVar = process.env['ARGUSTACK_WORKSPACE'];
6
+ const root = findWorkspaceRoot();
7
+ if (!root) {
8
+ const hint = envVar
9
+ ? `ARGUSTACK_WORKSPACE is set to "${envVar}" but no .argustack/ marker found there or in parent directories.`
10
+ : 'No ARGUSTACK_WORKSPACE env var set and no .argustack/ found from cwd.';
11
+ return { ok: false, reason: hint };
12
+ }
13
+ const config = readConfig(root);
14
+ if (!config) {
15
+ return {
16
+ ok: false,
17
+ reason: `Workspace found at ${root} but .argustack/config.json is missing or invalid. Run "argustack init".`,
18
+ };
19
+ }
20
+ return { ok: true, root, config };
21
+ }
22
+ export async function createAdapters(workspaceRoot) {
23
+ dotenv.config({ path: `${workspaceRoot}/.env`, quiet: true });
24
+ const { JIRA_URL, JIRA_EMAIL, JIRA_API_TOKEN } = process.env;
25
+ const { DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME } = process.env;
26
+ let source = null;
27
+ if (JIRA_URL && JIRA_EMAIL && JIRA_API_TOKEN) {
28
+ const { JiraProvider } = await import('../adapters/jira/index.js');
29
+ source = new JiraProvider({
30
+ host: JIRA_URL,
31
+ email: JIRA_EMAIL,
32
+ apiToken: JIRA_API_TOKEN,
33
+ });
34
+ }
35
+ const { PostgresStorage } = await import('../adapters/postgres/index.js');
36
+ const storage = new PostgresStorage({
37
+ host: DB_HOST ?? 'localhost',
38
+ port: parseInt(DB_PORT ?? '5434', 10),
39
+ user: DB_USER ?? 'argustack',
40
+ password: DB_PASSWORD ?? 'argustack_local',
41
+ database: DB_NAME ?? 'argustack',
42
+ });
43
+ return { source, storage };
44
+ }
45
+ export function textResponse(text) {
46
+ return { content: [{ type: 'text', text }] };
47
+ }
48
+ export function errorResponse(text) {
49
+ return { content: [{ type: 'text', text }], isError: true };
50
+ }
51
+ export function getErrorMessage(err) {
52
+ if (err instanceof Error) {
53
+ return err.message;
54
+ }
55
+ return String(err);
56
+ }
57
+ export function str(value) {
58
+ if (value === null || value === undefined) {
59
+ return '';
60
+ }
61
+ if (typeof value === 'string') {
62
+ return value;
63
+ }
64
+ if (typeof value === 'number' || typeof value === 'boolean') {
65
+ return String(value);
66
+ }
67
+ if (value instanceof Date) {
68
+ return value.toISOString();
69
+ }
70
+ return JSON.stringify(value);
71
+ }
72
+ export { getEnabledSources };
73
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,10 @@
6
6
  * Runs on stdio transport — add to claude_desktop_config.json to use.
7
7
  *
8
8
  * Architecture:
9
- * MCP Server same Use Cases / Adapters as CLI
10
- * This is just another composition root (like cli/index.ts).
9
+ * MCP Server is a driving adapter (like cli/index.ts).
10
+ * Tools are split by domain: workspace, query, issue, search, estimate.
11
11
  */
12
12
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
13
- /** MCP server instance — exported for testing via InMemoryTransport */
14
13
  export declare const server: McpServer;
15
14
  export declare function startMcpServer(): Promise<void>;
16
15
  //# sourceMappingURL=server.d.ts.map
@@ -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;AA0LpE,uEAAuE;AACvE,eAAO,MAAM,MAAM,WAWjB,CAAC;AA46DH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD"}
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;AAyBpE,eAAO,MAAM,MAAM,WAWjB,CAAC;AAQH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD"}