argustack 0.1.18 → 0.1.20

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/dist/adapters/jira/provider.d.ts +3 -1
  2. package/dist/adapters/jira/provider.d.ts.map +1 -1
  3. package/dist/adapters/jira/provider.js +16 -9
  4. package/dist/adapters/jira/provider.js.map +1 -1
  5. package/dist/adapters/jira-proxy/client.d.ts +11 -0
  6. package/dist/adapters/jira-proxy/client.d.ts.map +1 -0
  7. package/dist/adapters/jira-proxy/client.js +87 -0
  8. package/dist/adapters/jira-proxy/client.js.map +1 -0
  9. package/dist/adapters/jira-proxy/config-loader.d.ts +5 -0
  10. package/dist/adapters/jira-proxy/config-loader.d.ts.map +1 -0
  11. package/dist/adapters/jira-proxy/config-loader.js +133 -0
  12. package/dist/adapters/jira-proxy/config-loader.js.map +1 -0
  13. package/dist/adapters/jira-proxy/index.d.ts +5 -0
  14. package/dist/adapters/jira-proxy/index.d.ts.map +1 -0
  15. package/dist/adapters/jira-proxy/index.js +5 -0
  16. package/dist/adapters/jira-proxy/index.js.map +1 -0
  17. package/dist/adapters/jira-proxy/mapper.d.ts +5 -0
  18. package/dist/adapters/jira-proxy/mapper.d.ts.map +1 -0
  19. package/dist/adapters/jira-proxy/mapper.js +115 -0
  20. package/dist/adapters/jira-proxy/mapper.js.map +1 -0
  21. package/dist/adapters/jira-proxy/provider.d.ts +16 -0
  22. package/dist/adapters/jira-proxy/provider.d.ts.map +1 -0
  23. package/dist/adapters/jira-proxy/provider.js +147 -0
  24. package/dist/adapters/jira-proxy/provider.js.map +1 -0
  25. package/dist/cli/index.js +2 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/init/generators.d.ts +4 -4
  28. package/dist/cli/init/generators.d.ts.map +1 -1
  29. package/dist/cli/init/generators.js +26 -9
  30. package/dist/cli/init/generators.js.map +1 -1
  31. package/dist/cli/init/index.d.ts.map +1 -1
  32. package/dist/cli/init/index.js +13 -9
  33. package/dist/cli/init/index.js.map +1 -1
  34. package/dist/cli/init/setup-jira.d.ts +6 -2
  35. package/dist/cli/init/setup-jira.d.ts.map +1 -1
  36. package/dist/cli/init/setup-jira.js +188 -3
  37. package/dist/cli/init/setup-jira.js.map +1 -1
  38. package/dist/cli/init/types.d.ts +9 -0
  39. package/dist/cli/init/types.d.ts.map +1 -1
  40. package/dist/cli/init/types.js.map +1 -1
  41. package/dist/cli/sync.d.ts.map +1 -1
  42. package/dist/cli/sync.js +26 -12
  43. package/dist/cli/sync.js.map +1 -1
  44. package/dist/cli/workspaces.d.ts +3 -0
  45. package/dist/cli/workspaces.d.ts.map +1 -0
  46. package/dist/cli/workspaces.js +34 -0
  47. package/dist/cli/workspaces.js.map +1 -0
  48. package/dist/core/types/config.d.ts +1 -0
  49. package/dist/core/types/config.d.ts.map +1 -1
  50. package/dist/core/types/config.js.map +1 -1
  51. package/dist/core/types/index.d.ts +1 -0
  52. package/dist/core/types/index.d.ts.map +1 -1
  53. package/dist/core/types/proxy-config.d.ts +28 -0
  54. package/dist/core/types/proxy-config.d.ts.map +1 -0
  55. package/dist/core/types/proxy-config.js +2 -0
  56. package/dist/core/types/proxy-config.js.map +1 -0
  57. package/dist/mcp/helpers.d.ts.map +1 -1
  58. package/dist/mcp/helpers.js +32 -7
  59. package/dist/mcp/helpers.js.map +1 -1
  60. package/dist/mcp/tools/push.d.ts.map +1 -1
  61. package/dist/mcp/tools/push.js +86 -7
  62. package/dist/mcp/tools/push.js.map +1 -1
  63. package/dist/mcp/tools/workspace.d.ts.map +1 -1
  64. package/dist/mcp/tools/workspace.js +9 -4
  65. package/dist/mcp/tools/workspace.js.map +1 -1
  66. package/dist/workspace/registry.d.ts +11 -0
  67. package/dist/workspace/registry.d.ts.map +1 -0
  68. package/dist/workspace/registry.js +80 -0
  69. package/dist/workspace/registry.js.map +1 -0
  70. package/package.json +1 -1
  71. package/templates/env.example +3 -0
  72. package/templates/proxy-config-example.json +61 -0
@@ -3,6 +3,7 @@ import { readdirSync, existsSync, statSync } from 'node:fs';
3
3
  import { join, dirname, basename } from 'node:path';
4
4
  import { findWorkspaceRoot } from '../workspace/resolver.js';
5
5
  import { readConfig, getEnabledSources } from '../workspace/config.js';
6
+ import { listRegisteredWorkspaces } from '../workspace/registry.js';
6
7
  let activeStorage = null;
7
8
  export function loadWorkspace() {
8
9
  const envVar = process.env['ARGUSTACK_WORKSPACE'];
@@ -28,12 +29,22 @@ export function loadWorkspace() {
28
29
  */
29
30
  export async function switchWorkspace(name) {
30
31
  const currentRoot = process.env['ARGUSTACK_WORKSPACE'];
31
- if (!currentRoot) {
32
- return { ok: false, reason: 'No ARGUSTACK_WORKSPACE set. Cannot determine sibling workspaces.' };
32
+ let targetDir = null;
33
+ if (currentRoot) {
34
+ const parentDir = dirname(currentRoot);
35
+ const siblingDir = join(parentDir, name);
36
+ if (existsSync(join(siblingDir, '.argustack'))) {
37
+ targetDir = siblingDir;
38
+ }
33
39
  }
34
- const parentDir = dirname(currentRoot);
35
- const targetDir = join(parentDir, name);
36
- if (!existsSync(join(targetDir, '.argustack'))) {
40
+ if (!targetDir) {
41
+ const registered = listRegisteredWorkspaces(currentRoot ?? undefined);
42
+ const match = registered.find((w) => w.name === name || basename(w.path) === name);
43
+ if (match) {
44
+ targetDir = match.path;
45
+ }
46
+ }
47
+ if (!targetDir) {
37
48
  const available = listSiblingWorkspaces();
38
49
  const names = available.map((w) => w.name).join(', ');
39
50
  return {
@@ -103,6 +114,13 @@ export function listSiblingWorkspaces() {
103
114
  active: name === currentName,
104
115
  });
105
116
  }
117
+ const registered = listRegisteredWorkspaces(currentRoot);
118
+ for (const rw of registered) {
119
+ const alreadyListed = workspaces.some((w) => w.path === rw.path);
120
+ if (!alreadyListed) {
121
+ workspaces.push(rw);
122
+ }
123
+ }
106
124
  return workspaces;
107
125
  }
108
126
  export function setActiveStorage(storage) {
@@ -116,13 +134,20 @@ export async function createAdapters(workspaceRoot) {
116
134
  const { JIRA_URL, JIRA_EMAIL, JIRA_API_TOKEN } = process.env;
117
135
  const { DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME } = process.env;
118
136
  let source = null;
119
- if (JIRA_URL && JIRA_EMAIL && JIRA_API_TOKEN) {
137
+ const wsConfig = readConfig(workspaceRoot);
138
+ const issueTypes = wsConfig?.sources.jira?.issueTypes;
139
+ const { proxyConfigExists, loadProxyConfig, ProxyJiraProvider } = await import('../adapters/jira-proxy/index.js');
140
+ if (proxyConfigExists(workspaceRoot)) {
141
+ const proxyConfig = loadProxyConfig(workspaceRoot);
142
+ source = new ProxyJiraProvider(proxyConfig, issueTypes);
143
+ }
144
+ else if (JIRA_URL && JIRA_EMAIL && JIRA_API_TOKEN) {
120
145
  const { JiraProvider } = await import('../adapters/jira/index.js');
121
146
  source = new JiraProvider({
122
147
  host: JIRA_URL,
123
148
  email: JIRA_EMAIL,
124
149
  apiToken: JIRA_API_TOKEN,
125
- });
150
+ }, issueTypes);
126
151
  }
127
152
  const { PostgresStorage } = await import('../adapters/postgres/index.js');
128
153
  const storage = new PostgresStorage({
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAiBvE,IAAI,aAAa,GAAoB,IAAI,CAAC;AAE1C,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM;YACjB,CAAC,CAAC,kCAAkC,MAAM,mEAAmE;YAC7G,CAAC,CAAC,uEAAuE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,sBAAsB,IAAI,0EAA0E;SAC7G,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kEAAkE,EAAE,CAAC;IACnG,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,cAAc,IAAI,2BAA2B,KAAK,IAAI,MAAM,EAAE;SACvE,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACrC,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;IAE/C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3D,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAC9E,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAC/E,GAAG,KAAK,gBAAgB,CACzB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE1C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpC,SAAS;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QAED,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC;YAClC,MAAM,EAAE,IAAI,KAAK,WAAW;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAiB;IAChD,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,aAAqB;IAIxD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAC7D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAExE,IAAI,MAAM,GAA2B,IAAI,CAAC;IAE1C,IAAI,QAAQ,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;QAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACnE,MAAM,GAAG,IAAI,YAAY,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAa,IAAI,eAAe,CAAC;QAC5C,IAAI,EAAE,OAAO,IAAI,WAAW;QAC5B,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,MAAM,EAAE,EAAE,CAAC;QACrC,IAAI,EAAE,OAAO,IAAI,WAAW;QAC5B,QAAQ,EAAE,WAAW,IAAI,iBAAiB;QAC1C,QAAQ,EAAE,OAAO,IAAI,WAAW;KACjC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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;AAwBzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwIzD"}
@@ -1,10 +1,95 @@
1
+ import { z } from 'zod/v4';
1
2
  import dotenv from 'dotenv';
2
3
  import { loadWorkspace, textResponse, errorResponse, getErrorMessage, } from '../helpers.js';
3
4
  import { JiraProvider } from '../../adapters/jira/index.js';
4
5
  import { PostgresStorage } from '../../adapters/postgres/index.js';
5
6
  import { PushUseCase } from '../../use-cases/push.js';
6
7
  import { updateMdFrontmatter } from '../../adapters/board/md-parser.js';
8
+ function createStorage() {
9
+ return new PostgresStorage({
10
+ host: process.env['DB_HOST'] ?? 'localhost',
11
+ port: parseInt(process.env['DB_PORT'] ?? '5434', 10),
12
+ database: process.env['DB_NAME'] ?? 'argustack',
13
+ user: process.env['DB_USER'] ?? 'argustack',
14
+ password: process.env['DB_PASSWORD'] ?? 'argustack_local',
15
+ });
16
+ }
7
17
  export function registerPushTools(server) {
18
+ server.registerTool('create_issue', {
19
+ description: 'Create an issue in Argustack local database (source=local). Agent reads task content, determines fields, passes what it can. Only summary is required. Use push tool after to send to Jira.',
20
+ inputSchema: {
21
+ summary: z.string().describe('Issue title (required)'),
22
+ description: z.string().optional().describe('Full description / requirements / acceptance criteria'),
23
+ project_key: z.string().optional().describe('Jira project key (e.g. PAP). Defaults to first project in JIRA_PROJECTS env'),
24
+ issue_type: z.string().optional().describe('Issue type (Story, Bug, Task, or localized name)'),
25
+ status: z.string().optional().describe('Status name'),
26
+ priority: z.string().optional().describe('Priority name'),
27
+ assignee: z.string().optional().describe('Assignee display name'),
28
+ parent_key: z.string().optional().describe('Parent issue or epic key (e.g. PAP-165)'),
29
+ labels: z.array(z.string()).optional().describe('Labels'),
30
+ components: z.array(z.string()).optional().describe('Component names'),
31
+ },
32
+ }, async ({ summary, description, project_key: projectKeyParam, issue_type: issueType, status, priority, assignee, parent_key: parentKey, labels, components }) => {
33
+ const ws = loadWorkspace();
34
+ if (!ws.ok) {
35
+ return errorResponse(`Workspace not found: ${ws.reason}`);
36
+ }
37
+ dotenv.config({ path: `${ws.root}/.env`, quiet: true });
38
+ const projectKey = projectKeyParam ?? process.env['JIRA_PROJECTS']?.split(',')[0]?.trim();
39
+ if (!projectKey) {
40
+ return errorResponse('No project_key provided and no JIRA_PROJECTS in .env');
41
+ }
42
+ const storage = createStorage();
43
+ try {
44
+ await storage.initialize();
45
+ const now = new Date().toISOString();
46
+ const issueKey = `LOCAL-${String(Date.now())}`;
47
+ await storage.saveBatch({
48
+ issues: [{
49
+ key: issueKey,
50
+ id: '',
51
+ projectKey,
52
+ summary,
53
+ description: description ?? null,
54
+ issueType: issueType ?? null,
55
+ status: status ?? null,
56
+ statusCategory: null,
57
+ priority: priority ?? null,
58
+ resolution: null,
59
+ assignee: assignee ?? null,
60
+ assigneeId: null,
61
+ reporter: null,
62
+ reporterId: null,
63
+ created: now,
64
+ updated: now,
65
+ resolved: null,
66
+ dueDate: null,
67
+ labels: labels ?? [],
68
+ components: components ?? [],
69
+ fixVersions: [],
70
+ parentKey: parentKey ?? null,
71
+ sprint: null,
72
+ storyPoints: null,
73
+ originalEstimate: null,
74
+ remainingEstimate: null,
75
+ timeSpent: null,
76
+ customFields: {},
77
+ rawJson: {},
78
+ source: 'local',
79
+ }],
80
+ comments: [],
81
+ changelogs: [],
82
+ worklogs: [],
83
+ links: [],
84
+ });
85
+ await storage.close();
86
+ return textResponse(`Created local issue: ${issueKey}\nProject: ${projectKey}\nSummary: ${summary}\n\nUse 'push' tool to send to Jira.`);
87
+ }
88
+ catch (err) {
89
+ await storage.close();
90
+ return errorResponse(`Failed to create issue: ${getErrorMessage(err)}`);
91
+ }
92
+ });
8
93
  server.registerTool('push', {
9
94
  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
95
  inputSchema: {},
@@ -21,13 +106,7 @@ export function registerPushTools(server) {
21
106
  return errorResponse('Jira credentials not configured. Set JIRA_URL, JIRA_EMAIL, JIRA_API_TOKEN in .env');
22
107
  }
23
108
  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
- });
109
+ const storage = createStorage();
31
110
  try {
32
111
  await storage.initialize();
33
112
  const useCase = new PushUseCase(jira, storage);
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/mcp/tools/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/mcp/tools/push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmK9D"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwK9D"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod/v4';
2
2
  import { SOURCE_META } from '../../core/types/index.js';
3
3
  import { loadWorkspace, createAdapters, getEnabledSources, switchWorkspace, listSiblingWorkspaces, textResponse, errorResponse, getErrorMessage, } from '../helpers.js';
4
+ import { registerWorkspace } from '../../workspace/registry.js';
4
5
  export function registerWorkspaceTools(server) {
5
6
  server.registerTool('workspace_info', {
6
7
  description: 'Get information about the current Argustack workspace — configured sources, paths, database connection',
@@ -65,14 +66,18 @@ export function registerWorkspaceTools(server) {
65
66
  server.registerTool('list_workspaces', {
66
67
  description: 'List all available Argustack workspaces. Shows which workspace is currently active.',
67
68
  }, () => {
69
+ const ws = loadWorkspace();
70
+ if (ws.ok) {
71
+ registerWorkspace(ws.root, ws.config.name);
72
+ }
68
73
  const workspaces = listSiblingWorkspaces();
69
74
  if (workspaces.length === 0) {
70
75
  return textResponse('No workspaces found. Run `argustack init <name>` to create one.');
71
76
  }
72
- const lines = workspaces.map((ws) => {
73
- const sources = ws.sources.map((s) => SOURCE_META[s].label).join(', ') || 'no sources';
74
- const marker = ws.active ? ' (active)' : '';
75
- return ` ${ws.active ? '●' : '○'} ${ws.name}${marker} — ${sources}`;
77
+ const lines = workspaces.map((w) => {
78
+ const sources = w.sources.map((s) => SOURCE_META[s].label).join(', ') || 'no sources';
79
+ const marker = w.active ? ' (active)' : '';
80
+ return ` ${w.active ? '●' : '○'} ${w.name}${marker} — ${sources}`;
76
81
  });
77
82
  return textResponse(`Workspaces (${String(workspaces.length)}):\n${lines.join('\n')}`);
78
83
  });
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/mcp/tools/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/mcp/tools/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SourceType } from '../core/types/index.js';
2
+ export interface WorkspaceInfo {
3
+ name: string;
4
+ path: string;
5
+ sources: SourceType[];
6
+ active: boolean;
7
+ }
8
+ export declare function registerWorkspace(workspacePath: string, name?: string): void;
9
+ export declare function listRegisteredWorkspaces(activeRoot?: string): WorkspaceInfo[];
10
+ export declare function pruneDeadWorkspaces(): void;
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/workspace/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgBzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAkB5E;AAED,wBAAgB,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CA4B7E;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C"}
@@ -0,0 +1,80 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { readConfig, getEnabledSources } from './config.js';
5
+ function registryDir() {
6
+ return join(homedir(), '.argustack');
7
+ }
8
+ function registryFile() {
9
+ return join(registryDir(), 'workspaces.json');
10
+ }
11
+ export function registerWorkspace(workspacePath, name) {
12
+ try {
13
+ const entries = readRegistry();
14
+ const existing = entries.find((e) => e.path === workspacePath);
15
+ if (existing) {
16
+ if (name && existing.name !== name) {
17
+ existing.name = name;
18
+ writeRegistry(entries);
19
+ }
20
+ return;
21
+ }
22
+ const wsName = name ?? workspacePath.split('/').pop() ?? 'unknown';
23
+ entries.push({ name: wsName, path: workspacePath, createdAt: new Date().toISOString() });
24
+ writeRegistry(entries);
25
+ }
26
+ catch {
27
+ /* registry is best-effort — don't fail init/sync */
28
+ }
29
+ }
30
+ export function listRegisteredWorkspaces(activeRoot) {
31
+ const entries = readRegistry();
32
+ const live = [];
33
+ const workspaces = [];
34
+ for (const entry of entries) {
35
+ if (!existsSync(join(entry.path, '.argustack'))) {
36
+ continue;
37
+ }
38
+ live.push(entry);
39
+ const config = readConfig(entry.path);
40
+ const sources = config ? getEnabledSources(config) : [];
41
+ const displayName = config?.name ?? entry.name;
42
+ workspaces.push({
43
+ name: displayName,
44
+ path: entry.path,
45
+ sources,
46
+ active: entry.path === activeRoot,
47
+ });
48
+ }
49
+ if (live.length !== entries.length) {
50
+ writeRegistry(live);
51
+ }
52
+ return workspaces;
53
+ }
54
+ export function pruneDeadWorkspaces() {
55
+ const entries = readRegistry();
56
+ const live = entries.filter((e) => existsSync(join(e.path, '.argustack')));
57
+ if (live.length !== entries.length) {
58
+ writeRegistry(live);
59
+ }
60
+ }
61
+ function readRegistry() {
62
+ if (!existsSync(registryFile())) {
63
+ return [];
64
+ }
65
+ try {
66
+ const raw = readFileSync(registryFile(), 'utf-8');
67
+ const parsed = JSON.parse(raw);
68
+ return Array.isArray(parsed) ? parsed : [];
69
+ }
70
+ catch {
71
+ return [];
72
+ }
73
+ }
74
+ function writeRegistry(entries) {
75
+ if (!existsSync(registryDir())) {
76
+ mkdirSync(registryDir(), { recursive: true });
77
+ }
78
+ writeFileSync(registryFile(), JSON.stringify(entries, null, 2) + '\n');
79
+ }
80
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/workspace/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argustack",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "Project analysis platform — Jira + Git + DB",
5
5
  "type": "module",
6
6
  "bin": {
@@ -6,6 +6,9 @@ JIRA_API_TOKEN=your_jira_api_token
6
6
  # Projects to pull (comma-separated)
7
7
  JIRA_PROJECTS=PROJ,ANOTHER
8
8
 
9
+ # === Jira Proxy (alternative to direct Jira API) ===
10
+ # JIRA_PROXY_TOKEN=your-service-token
11
+
9
12
  # === PostgreSQL (defaults — no need to change) ===
10
13
  DB_HOST=localhost
11
14
  DB_PORT=5434
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "Example Jira Proxy",
3
+ "description": "Example config for a Jira proxy server that sanitizes responses and enforces read-only access. Customize for your proxy.",
4
+ "base_url": "https://your-proxy.example.com/service/jira",
5
+ "auth": {
6
+ "type": "bearer_exchange",
7
+ "token_endpoint": "/service/auth/exchange",
8
+ "service_token_env": "JIRA_PROXY_TOKEN",
9
+ "ttl_minutes": 15
10
+ },
11
+ "endpoints": {
12
+ "search": {
13
+ "path": "/search",
14
+ "method": "GET",
15
+ "params": ["jql", "fields", "maxResults", "startAt"]
16
+ },
17
+ "issue": {
18
+ "path": "/issue/{key}",
19
+ "method": "GET"
20
+ },
21
+ "projects": {
22
+ "path": "/project/search",
23
+ "method": "GET",
24
+ "params": ["maxResults", "startAt", "query"]
25
+ },
26
+ "fields": {
27
+ "path": "/field",
28
+ "method": "GET"
29
+ }
30
+ },
31
+ "response_mapping": {
32
+ "issue_key": "key",
33
+ "summary": "fields.summary",
34
+ "description": "fields.description",
35
+ "status": "fields.status.name",
36
+ "status_category": "fields.status.statusCategory.name",
37
+ "issue_type": "fields.issuetype.name",
38
+ "priority": "fields.priority.name",
39
+ "resolution": "fields.resolution.name",
40
+ "assignee": "fields.assignee.displayName",
41
+ "assignee_id": "fields.assignee.accountId",
42
+ "reporter": "fields.reporter.displayName",
43
+ "reporter_id": "fields.reporter.accountId",
44
+ "created": "fields.created",
45
+ "updated": "fields.updated",
46
+ "resolved": "fields.resolutiondate",
47
+ "due_date": "fields.duedate",
48
+ "labels": "fields.labels",
49
+ "components": "fields.components[].name",
50
+ "fix_versions": "fields.fixVersions[].name",
51
+ "parent_key": "fields.parent.key",
52
+ "sprint": "fields.sprint.name",
53
+ "story_points": "fields.story_points"
54
+ },
55
+ "notes": {
56
+ "how_to_use": "1. Copy this file to .argustack/proxy.json in your workspace. 2. Set JIRA_PROXY_TOKEN in .env. 3. Update base_url to your proxy. 4. Adjust response_mapping if your proxy returns different field paths.",
57
+ "how_to_generate": "Give your proxy's OpenAPI spec (or API docs) and this template to any LLM. Ask it to generate a proxy.json config that maps your proxy's response format to these fields.",
58
+ "search_note": "Some proxies strip description from search results for performance. Use the issue endpoint to get full descriptions.",
59
+ "auth_types": "bearer = static token from env var. bearer_exchange = exchange long-lived service token for short-lived access token (recommended)."
60
+ }
61
+ }