argustack 0.1.19 → 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 (69) 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/workspace.d.ts.map +1 -1
  61. package/dist/mcp/tools/workspace.js +9 -4
  62. package/dist/mcp/tools/workspace.js.map +1 -1
  63. package/dist/workspace/registry.d.ts +11 -0
  64. package/dist/workspace/registry.d.ts.map +1 -0
  65. package/dist/workspace/registry.js +80 -0
  66. package/dist/workspace/registry.js.map +1 -0
  67. package/package.json +1 -1
  68. package/templates/env.example +3 -0
  69. package/templates/proxy-config-example.json +61 -0
@@ -13,7 +13,9 @@ import { type JiraCredentials } from './client.js';
13
13
  export declare class JiraProvider implements ISourceProvider {
14
14
  readonly name = "Jira";
15
15
  private readonly client;
16
- constructor(creds: JiraCredentials);
16
+ private readonly issueTypes;
17
+ constructor(creds: JiraCredentials, issueTypes?: string[]);
18
+ private buildJqlFilter;
17
19
  getProjects(): Promise<Project[]>;
18
20
  createIssue(issue: Issue): Promise<string>;
19
21
  getIssueCount(projectKey: string, since?: string): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAWrE;;;;;;;;GAQG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,KAAK,EAAE,eAAe;IAI5B,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASjC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB1C,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASjE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;CAgDlF"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAWrE;;;;;;;;GAQG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;gBAE1B,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE;IAKzD,OAAO,CAAC,cAAc;IAYhB,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASjC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB1C,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;CA6ClF"}
@@ -13,8 +13,21 @@ const PAGE_SIZE = 50;
13
13
  export class JiraProvider {
14
14
  name = 'Jira';
15
15
  client;
16
- constructor(creds) {
16
+ issueTypes;
17
+ constructor(creds, issueTypes) {
17
18
  this.client = createJiraClient(creds);
19
+ this.issueTypes = issueTypes ?? [];
20
+ }
21
+ buildJqlFilter(projectKey, since) {
22
+ let jql = `project = "${projectKey}"`;
23
+ if (this.issueTypes.length > 0) {
24
+ const types = this.issueTypes.map((t) => `"${t}"`).join(', ');
25
+ jql += ` AND issuetype in (${types})`;
26
+ }
27
+ if (since) {
28
+ jql += ` AND updated >= "${since}"`;
29
+ }
30
+ return jql;
18
31
  }
19
32
  async getProjects() {
20
33
  const result = await this.client.projects.searchProjects({ maxResults: 200 });
@@ -44,18 +57,12 @@ export class JiraProvider {
44
57
  return result.key;
45
58
  }
46
59
  async getIssueCount(projectKey, since) {
47
- let jql = `project = "${projectKey}"`;
48
- if (since) {
49
- jql += ` AND updated >= "${since}"`;
50
- }
60
+ const jql = this.buildJqlFilter(projectKey, since);
51
61
  const result = await this.client.issueSearch.countIssues({ jql });
52
62
  return result.count ?? 0;
53
63
  }
54
64
  async *pullIssues(projectKey, since) {
55
- let jql = `project = "${projectKey}" ORDER BY updated ASC`;
56
- if (since) {
57
- jql = `project = "${projectKey}" AND updated >= "${since}" ORDER BY updated ASC`;
58
- }
65
+ const jql = `${this.buildJqlFilter(projectKey, since)} ORDER BY updated ASC`;
59
66
  let pageToken = undefined;
60
67
  do {
61
68
  const searchParams = {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/adapters/jira/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/adapters/jira/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ProxyConfig } from '../../core/types/proxy-config.js';
2
+ export declare class ProxyClient {
3
+ private readonly config;
4
+ private accessToken;
5
+ private tokenExpiresAt;
6
+ constructor(config: ProxyConfig);
7
+ fetch(endpointPath: string, params?: Record<string, string>): Promise<unknown>;
8
+ authenticate(): Promise<string>;
9
+ private buildUrl;
10
+ }
11
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,WAAW;IAIzB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC9E,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAkDrC,OAAO,CAAC,QAAQ;CAQjB"}
@@ -0,0 +1,87 @@
1
+ export class ProxyClient {
2
+ config;
3
+ accessToken = null;
4
+ tokenExpiresAt = 0;
5
+ constructor(config) {
6
+ this.config = config;
7
+ }
8
+ async fetch(endpointPath, params) {
9
+ const token = await this.authenticate();
10
+ const url = this.buildUrl(endpointPath, params);
11
+ const headers = {
12
+ 'Authorization': `Bearer ${token}`,
13
+ 'Accept': 'application/json',
14
+ ...this.config.headers,
15
+ };
16
+ const response = await globalThis.fetch(url, {
17
+ method: 'GET',
18
+ headers,
19
+ });
20
+ if (response.status === 401) {
21
+ this.accessToken = null;
22
+ this.tokenExpiresAt = 0;
23
+ const retryToken = await this.authenticate();
24
+ const retryResponse = await globalThis.fetch(url, {
25
+ method: 'GET',
26
+ headers: { ...headers, 'Authorization': `Bearer ${retryToken}` },
27
+ });
28
+ if (!retryResponse.ok) {
29
+ throw new Error(`Proxy request failed after re-auth: ${String(retryResponse.status)} ${retryResponse.statusText}`);
30
+ }
31
+ return retryResponse.json();
32
+ }
33
+ if (!response.ok) {
34
+ throw new Error(`Proxy request failed: ${String(response.status)} ${response.statusText} — ${url}`);
35
+ }
36
+ return response.json();
37
+ }
38
+ async authenticate() {
39
+ if (this.accessToken && Date.now() < this.tokenExpiresAt) {
40
+ return this.accessToken;
41
+ }
42
+ const serviceToken = process.env[this.config.auth.service_token_env] ?? '';
43
+ if (serviceToken.length === 0) {
44
+ throw new Error(`Environment variable ${this.config.auth.service_token_env} is not set`);
45
+ }
46
+ if (this.config.auth.type === 'bearer') {
47
+ this.accessToken = serviceToken;
48
+ this.tokenExpiresAt = Number.MAX_SAFE_INTEGER;
49
+ return serviceToken;
50
+ }
51
+ const tokenEndpoint = this.config.auth.token_endpoint;
52
+ if (!tokenEndpoint) {
53
+ throw new Error('Token endpoint is required for bearer_exchange auth');
54
+ }
55
+ const origin = new URL(this.config.base_url).origin;
56
+ const exchangeUrl = `${origin}${tokenEndpoint}`;
57
+ const response = await globalThis.fetch(exchangeUrl, {
58
+ method: 'POST',
59
+ headers: {
60
+ 'Authorization': `Bearer ${serviceToken}`,
61
+ 'Accept': 'application/json',
62
+ ...this.config.headers,
63
+ },
64
+ });
65
+ if (!response.ok) {
66
+ throw new Error(`Token exchange failed at ${tokenEndpoint}: ${String(response.status)} ${response.statusText}. Check ${this.config.auth.service_token_env}.`);
67
+ }
68
+ const body = await response.json();
69
+ const token = (body['access_token'] ?? body['token'] ?? body['accessToken']);
70
+ if (!token) {
71
+ throw new Error('Token exchange response missing access_token field');
72
+ }
73
+ this.accessToken = token;
74
+ const ttlMs = (this.config.auth.ttl_minutes ?? 15) * 60 * 1000;
75
+ this.tokenExpiresAt = Date.now() + ttlMs - 30_000;
76
+ return token;
77
+ }
78
+ buildUrl(endpointPath, params) {
79
+ const base = `${this.config.base_url}${endpointPath}`;
80
+ if (!params || Object.keys(params).length === 0) {
81
+ return base;
82
+ }
83
+ const searchParams = new URLSearchParams(params);
84
+ return `${base}?${searchParams.toString()}`;
85
+ }
86
+ }
87
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ProxyConfig } from '../../core/types/proxy-config.js';
2
+ export declare function proxyConfigExists(workspaceRoot: string): boolean;
3
+ export declare function loadProxyConfig(workspaceRoot: string): ProxyConfig;
4
+ export declare function buildDefaultProxyConfig(baseUrl: string, serviceTokenEnv?: string): ProxyConfig;
5
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAIpE,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAsBlE;AA4FD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,SAAqB,GAAG,WAAW,CAiB1G"}
@@ -0,0 +1,133 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ const PROXY_CONFIG_PATH = '.argustack/proxy.json';
4
+ export function proxyConfigExists(workspaceRoot) {
5
+ return existsSync(join(workspaceRoot, PROXY_CONFIG_PATH));
6
+ }
7
+ export function loadProxyConfig(workspaceRoot) {
8
+ const filePath = join(workspaceRoot, PROXY_CONFIG_PATH);
9
+ if (!existsSync(filePath)) {
10
+ throw new Error(`Proxy config not found: ${filePath}`);
11
+ }
12
+ let raw;
13
+ try {
14
+ raw = readFileSync(filePath, 'utf-8');
15
+ }
16
+ catch (err) {
17
+ throw new Error(`Failed to read proxy config: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
18
+ }
19
+ let parsed;
20
+ try {
21
+ parsed = JSON.parse(raw);
22
+ }
23
+ catch (err) {
24
+ throw new Error(`Invalid JSON in proxy config (${filePath}): ${err instanceof Error ? err.message : String(err)}`, { cause: err });
25
+ }
26
+ return validateProxyConfig(parsed);
27
+ }
28
+ function validateProxyConfig(raw) {
29
+ if (typeof raw !== 'object' || raw === null) {
30
+ throw new Error('Proxy config must be a JSON object');
31
+ }
32
+ const obj = raw;
33
+ if (typeof obj['base_url'] !== 'string' || obj['base_url'].length === 0) {
34
+ throw new Error('Proxy config: "base_url" is required (non-empty string)');
35
+ }
36
+ if (typeof obj['auth'] !== 'object' || obj['auth'] === null) {
37
+ throw new Error('Proxy config: "auth" section is required');
38
+ }
39
+ const auth = obj['auth'];
40
+ if (auth['type'] !== 'bearer' && auth['type'] !== 'bearer_exchange') {
41
+ throw new Error('Proxy config: auth.type must be "bearer" or "bearer_exchange"');
42
+ }
43
+ if (typeof auth['service_token_env'] !== 'string' || auth['service_token_env'].length === 0) {
44
+ throw new Error('Proxy config: auth.service_token_env is required');
45
+ }
46
+ if (auth['type'] === 'bearer_exchange') {
47
+ if (typeof auth['token_endpoint'] !== 'string' || auth['token_endpoint'].length === 0) {
48
+ throw new Error('Proxy config: auth.token_endpoint is required for bearer_exchange');
49
+ }
50
+ }
51
+ if (typeof obj['endpoints'] !== 'object' || obj['endpoints'] === null) {
52
+ throw new Error('Proxy config: "endpoints" section is required');
53
+ }
54
+ const endpoints = obj['endpoints'];
55
+ for (const key of ['search', 'issue', 'projects', 'fields']) {
56
+ const ep = endpoints[key];
57
+ if (typeof ep !== 'object' || ep === null) {
58
+ throw new Error(`Proxy config: endpoints.${key} is required`);
59
+ }
60
+ const epObj = ep;
61
+ if (typeof epObj['path'] !== 'string') {
62
+ throw new Error(`Proxy config: endpoints.${key}.path is required`);
63
+ }
64
+ }
65
+ const config = {
66
+ name: typeof obj['name'] === 'string' ? obj['name'] : 'Proxy',
67
+ base_url: obj['base_url'],
68
+ auth: {
69
+ type: auth['type'],
70
+ service_token_env: auth['service_token_env'],
71
+ ...(typeof auth['token_endpoint'] === 'string' ? { token_endpoint: auth['token_endpoint'] } : {}),
72
+ ...(typeof auth['ttl_minutes'] === 'number' ? { ttl_minutes: auth['ttl_minutes'] } : {}),
73
+ },
74
+ endpoints: {
75
+ search: parseEndpoint(endpoints['search']),
76
+ issue: parseEndpoint(endpoints['issue']),
77
+ projects: parseEndpoint(endpoints['projects']),
78
+ fields: parseEndpoint(endpoints['fields']),
79
+ },
80
+ };
81
+ if (typeof obj['description'] === 'string') {
82
+ config.description = obj['description'];
83
+ }
84
+ if (typeof obj['response_mapping'] === 'object' && obj['response_mapping'] !== null) {
85
+ const mapping = {};
86
+ for (const [k, v] of Object.entries(obj['response_mapping'])) {
87
+ if (typeof v === 'string') {
88
+ mapping[k] = v;
89
+ }
90
+ }
91
+ config.response_mapping = mapping;
92
+ }
93
+ if (typeof obj['headers'] === 'object' && obj['headers'] !== null) {
94
+ const headers = {};
95
+ for (const [k, v] of Object.entries(obj['headers'])) {
96
+ if (typeof v === 'string') {
97
+ headers[k] = v;
98
+ }
99
+ }
100
+ config.headers = headers;
101
+ }
102
+ return config;
103
+ }
104
+ export function buildDefaultProxyConfig(baseUrl, serviceTokenEnv = 'JIRA_PROXY_TOKEN') {
105
+ return {
106
+ name: 'Jira Proxy',
107
+ base_url: baseUrl.replace(/\/+$/, ''),
108
+ auth: {
109
+ type: 'bearer_exchange',
110
+ token_endpoint: '/service/auth/exchange',
111
+ service_token_env: serviceTokenEnv,
112
+ ttl_minutes: 15,
113
+ },
114
+ endpoints: {
115
+ search: { path: '/search', method: 'GET', params: ['jql', 'fields', 'maxResults', 'startAt'] },
116
+ issue: { path: '/issue/{key}', method: 'GET' },
117
+ projects: { path: '/project/search', method: 'GET', params: ['maxResults', 'startAt', 'query'] },
118
+ fields: { path: '/field', method: 'GET' },
119
+ },
120
+ };
121
+ }
122
+ function parseEndpoint(raw) {
123
+ const method = raw['method'] === 'POST' ? 'POST' : 'GET';
124
+ const result = {
125
+ path: raw['path'],
126
+ method,
127
+ };
128
+ if (Array.isArray(raw['params'])) {
129
+ result.params = raw['params'].filter((p) => typeof p === 'string');
130
+ }
131
+ return result;
132
+ }
133
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { ProxyClient } from './client.js';
2
+ export { ProxyJiraProvider } from './provider.js';
3
+ export { mapProxyIssue, resolvePath } from './mapper.js';
4
+ export { loadProxyConfig, proxyConfigExists, buildDefaultProxyConfig } from './config-loader.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { ProxyClient } from './client.js';
2
+ export { ProxyJiraProvider } from './provider.js';
3
+ export { mapProxyIssue, resolvePath } from './mapper.js';
4
+ export { loadProxyConfig, proxyConfigExists, buildDefaultProxyConfig } from './config-loader.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Issue } from '../../core/types/issue.js';
2
+ import type { ProxyFieldMapping } from '../../core/types/proxy-config.js';
3
+ export declare function mapProxyIssue(raw: Record<string, unknown>, mapping?: ProxyFieldMapping): Issue;
4
+ export declare function resolvePath(obj: unknown, path: string): unknown;
5
+ //# sourceMappingURL=mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AA2B1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAsC9F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA8B/D"}
@@ -0,0 +1,115 @@
1
+ const DEFAULT_MAPPING = {
2
+ issue_key: 'key',
3
+ summary: 'fields.summary',
4
+ description: 'fields.description',
5
+ status: 'fields.status.name',
6
+ status_category: 'fields.status.statusCategory.name',
7
+ issue_type: 'fields.issuetype.name',
8
+ priority: 'fields.priority.name',
9
+ resolution: 'fields.resolution.name',
10
+ assignee: 'fields.assignee.displayName',
11
+ assignee_id: 'fields.assignee.accountId',
12
+ reporter: 'fields.reporter.displayName',
13
+ reporter_id: 'fields.reporter.accountId',
14
+ created: 'fields.created',
15
+ updated: 'fields.updated',
16
+ resolved: 'fields.resolutiondate',
17
+ due_date: 'fields.duedate',
18
+ labels: 'fields.labels',
19
+ components: 'fields.components[].name',
20
+ fix_versions: 'fields.fixVersions[].name',
21
+ parent_key: 'fields.parent.key',
22
+ sprint: 'fields.sprint.name',
23
+ story_points: 'fields.story_points',
24
+ };
25
+ export function mapProxyIssue(raw, mapping) {
26
+ const m = mapping ?? DEFAULT_MAPPING;
27
+ const issueKey = resolveString(raw, m['issue_key'] ?? 'key') ?? '';
28
+ const projectKey = issueKey.split('-')[0] ?? '';
29
+ return {
30
+ key: issueKey,
31
+ id: resolveString(raw, 'id') ?? '',
32
+ projectKey,
33
+ summary: resolveString(raw, m['summary'] ?? 'fields.summary') ?? '',
34
+ description: resolveString(raw, m['description'] ?? 'fields.description'),
35
+ issueType: resolveString(raw, m['issue_type'] ?? 'fields.issuetype.name'),
36
+ status: resolveString(raw, m['status'] ?? 'fields.status.name'),
37
+ statusCategory: resolveString(raw, m['status_category'] ?? 'fields.status.statusCategory.name'),
38
+ priority: resolveString(raw, m['priority'] ?? 'fields.priority.name'),
39
+ resolution: resolveString(raw, m['resolution'] ?? 'fields.resolution.name'),
40
+ assignee: resolveString(raw, m['assignee'] ?? 'fields.assignee.displayName'),
41
+ assigneeId: resolveString(raw, m['assignee_id'] ?? 'fields.assignee.accountId'),
42
+ reporter: resolveString(raw, m['reporter'] ?? 'fields.reporter.displayName'),
43
+ reporterId: resolveString(raw, m['reporter_id'] ?? 'fields.reporter.accountId'),
44
+ created: resolveString(raw, m['created'] ?? 'fields.created'),
45
+ updated: resolveString(raw, m['updated'] ?? 'fields.updated'),
46
+ resolved: resolveString(raw, m['resolved'] ?? 'fields.resolutiondate'),
47
+ dueDate: resolveString(raw, m['due_date'] ?? 'fields.duedate'),
48
+ labels: resolveStringArray(raw, m['labels'] ?? 'fields.labels'),
49
+ components: resolveStringArray(raw, m['components'] ?? 'fields.components[].name'),
50
+ fixVersions: resolveStringArray(raw, m['fix_versions'] ?? 'fields.fixVersions[].name'),
51
+ parentKey: resolveString(raw, m['parent_key'] ?? 'fields.parent.key'),
52
+ sprint: resolveString(raw, m['sprint'] ?? 'fields.sprint.name'),
53
+ storyPoints: resolveNumber(raw, m['story_points'] ?? 'fields.story_points'),
54
+ originalEstimate: null,
55
+ remainingEstimate: null,
56
+ timeSpent: null,
57
+ customFields: {},
58
+ rawJson: raw,
59
+ source: 'jira',
60
+ };
61
+ }
62
+ export function resolvePath(obj, path) {
63
+ if (!path || obj === null || obj === undefined) {
64
+ return undefined;
65
+ }
66
+ const parts = path.split('.');
67
+ let current = obj;
68
+ for (const part of parts) {
69
+ if (current === null || current === undefined) {
70
+ return undefined;
71
+ }
72
+ if (part.endsWith('[]')) {
73
+ const arrayKey = part.slice(0, -2);
74
+ const arr = current[arrayKey];
75
+ if (!Array.isArray(arr)) {
76
+ return undefined;
77
+ }
78
+ const remaining = parts.slice(parts.indexOf(part) + 1).join('.');
79
+ if (remaining) {
80
+ return arr.map((item) => resolvePath(item, remaining)).filter((v) => v !== undefined);
81
+ }
82
+ return arr;
83
+ }
84
+ current = current[part];
85
+ }
86
+ return current;
87
+ }
88
+ function resolveString(obj, path) {
89
+ const value = resolvePath(obj, path);
90
+ if (value === null || value === undefined) {
91
+ return null;
92
+ }
93
+ if (typeof value === 'string') {
94
+ return value;
95
+ }
96
+ if (typeof value === 'number' || typeof value === 'boolean') {
97
+ return String(value);
98
+ }
99
+ return JSON.stringify(value);
100
+ }
101
+ function resolveNumber(obj, path) {
102
+ const value = resolvePath(obj, path);
103
+ if (typeof value === 'number') {
104
+ return value;
105
+ }
106
+ return null;
107
+ }
108
+ function resolveStringArray(obj, path) {
109
+ const value = resolvePath(obj, path);
110
+ if (Array.isArray(value)) {
111
+ return value.filter((v) => typeof v === 'string');
112
+ }
113
+ return [];
114
+ }
115
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ISourceProvider } from '../../core/ports/source-provider.js';
2
+ import type { IssueBatch, Project } from '../../core/types/index.js';
3
+ import type { ProxyConfig } from '../../core/types/proxy-config.js';
4
+ export declare class ProxyJiraProvider implements ISourceProvider {
5
+ readonly name = "Jira (Proxy)";
6
+ private readonly client;
7
+ private readonly config;
8
+ private readonly issueTypes;
9
+ constructor(config: ProxyConfig, issueTypes?: string[]);
10
+ private buildJqlFilter;
11
+ getProjects(): Promise<Project[]>;
12
+ getIssueCount(projectKey: string, since?: string): Promise<number>;
13
+ pullIssues(projectKey: string, since?: string): AsyncGenerator<IssueBatch>;
14
+ private enrichDescriptions;
15
+ }
16
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/adapters/jira-proxy/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAS,UAAU,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAUpE,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;gBAE1B,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE;IAMtD,OAAO,CAAC,cAAc;IAYhB,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAqBjC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBjE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;YA4DnE,kBAAkB;CA2CjC"}