@aligndottech/connector-core 0.1.0

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 (106) hide show
  1. package/LICENSE +21 -0
  2. package/dist/fetchers/confluence.d.ts +9 -0
  3. package/dist/fetchers/confluence.d.ts.map +1 -0
  4. package/dist/fetchers/confluence.js +89 -0
  5. package/dist/fetchers/confluence.js.map +1 -0
  6. package/dist/fetchers/errors.d.ts +11 -0
  7. package/dist/fetchers/errors.d.ts.map +1 -0
  8. package/dist/fetchers/errors.js +15 -0
  9. package/dist/fetchers/errors.js.map +1 -0
  10. package/dist/fetchers/git.d.ts +23 -0
  11. package/dist/fetchers/git.d.ts.map +1 -0
  12. package/dist/fetchers/git.js +27 -0
  13. package/dist/fetchers/git.js.map +1 -0
  14. package/dist/fetchers/github.d.ts +9 -0
  15. package/dist/fetchers/github.d.ts.map +1 -0
  16. package/dist/fetchers/github.js +53 -0
  17. package/dist/fetchers/github.js.map +1 -0
  18. package/dist/fetchers/gitlab.d.ts +9 -0
  19. package/dist/fetchers/gitlab.d.ts.map +1 -0
  20. package/dist/fetchers/gitlab.js +33 -0
  21. package/dist/fetchers/gitlab.js.map +1 -0
  22. package/dist/fetchers/index.d.ts +20 -0
  23. package/dist/fetchers/index.d.ts.map +1 -0
  24. package/dist/fetchers/index.js +38 -0
  25. package/dist/fetchers/index.js.map +1 -0
  26. package/dist/fetchers/jira.d.ts +9 -0
  27. package/dist/fetchers/jira.d.ts.map +1 -0
  28. package/dist/fetchers/jira.js +73 -0
  29. package/dist/fetchers/jira.js.map +1 -0
  30. package/dist/fetchers/linear.d.ts +9 -0
  31. package/dist/fetchers/linear.d.ts.map +1 -0
  32. package/dist/fetchers/linear.js +71 -0
  33. package/dist/fetchers/linear.js.map +1 -0
  34. package/dist/fetchers/notion.d.ts +9 -0
  35. package/dist/fetchers/notion.d.ts.map +1 -0
  36. package/dist/fetchers/notion.js +85 -0
  37. package/dist/fetchers/notion.js.map +1 -0
  38. package/dist/fetchers/slack.d.ts +10 -0
  39. package/dist/fetchers/slack.d.ts.map +1 -0
  40. package/dist/fetchers/slack.js +103 -0
  41. package/dist/fetchers/slack.js.map +1 -0
  42. package/dist/fetchers/teams.d.ts +10 -0
  43. package/dist/fetchers/teams.d.ts.map +1 -0
  44. package/dist/fetchers/teams.js +76 -0
  45. package/dist/fetchers/teams.js.map +1 -0
  46. package/dist/fetchers/util/git.d.ts +22 -0
  47. package/dist/fetchers/util/git.d.ts.map +1 -0
  48. package/dist/fetchers/util/git.js +50 -0
  49. package/dist/fetchers/util/git.js.map +1 -0
  50. package/dist/fetchers/zoom.d.ts +9 -0
  51. package/dist/fetchers/zoom.d.ts.map +1 -0
  52. package/dist/fetchers/zoom.js +72 -0
  53. package/dist/fetchers/zoom.js.map +1 -0
  54. package/dist/index.d.ts +25 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +33 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/parsers/CommandParser.d.ts +69 -0
  59. package/dist/parsers/CommandParser.d.ts.map +1 -0
  60. package/dist/parsers/CommandParser.js +233 -0
  61. package/dist/parsers/CommandParser.js.map +1 -0
  62. package/dist/services/GatewayClient.d.ts +147 -0
  63. package/dist/services/GatewayClient.d.ts.map +1 -0
  64. package/dist/services/GatewayClient.js +411 -0
  65. package/dist/services/GatewayClient.js.map +1 -0
  66. package/dist/services/StreamingResponseConsumer.d.ts +28 -0
  67. package/dist/services/StreamingResponseConsumer.d.ts.map +1 -0
  68. package/dist/services/StreamingResponseConsumer.js +58 -0
  69. package/dist/services/StreamingResponseConsumer.js.map +1 -0
  70. package/dist/services/TelemetryClient.d.ts +116 -0
  71. package/dist/services/TelemetryClient.d.ts.map +1 -0
  72. package/dist/services/TelemetryClient.js +234 -0
  73. package/dist/services/TelemetryClient.js.map +1 -0
  74. package/dist/testing/MockGatewayClient.d.ts +51 -0
  75. package/dist/testing/MockGatewayClient.d.ts.map +1 -0
  76. package/dist/testing/MockGatewayClient.js +84 -0
  77. package/dist/testing/MockGatewayClient.js.map +1 -0
  78. package/dist/testing/fixtures.d.ts +49 -0
  79. package/dist/testing/fixtures.d.ts.map +1 -0
  80. package/dist/testing/fixtures.js +59 -0
  81. package/dist/testing/fixtures.js.map +1 -0
  82. package/dist/tiers/capabilities.d.ts +18 -0
  83. package/dist/tiers/capabilities.d.ts.map +1 -0
  84. package/dist/tiers/capabilities.js +99 -0
  85. package/dist/tiers/capabilities.js.map +1 -0
  86. package/dist/types/fetcher.d.ts +59 -0
  87. package/dist/types/fetcher.d.ts.map +1 -0
  88. package/dist/types/fetcher.js +15 -0
  89. package/dist/types/fetcher.js.map +1 -0
  90. package/dist/types/flow.d.ts +190 -0
  91. package/dist/types/flow.d.ts.map +1 -0
  92. package/dist/types/flow.js +24 -0
  93. package/dist/types/flow.js.map +1 -0
  94. package/dist/types/index.d.ts +707 -0
  95. package/dist/types/index.d.ts.map +1 -0
  96. package/dist/types/index.js +13 -0
  97. package/dist/types/index.js.map +1 -0
  98. package/dist/utils/requestContext.d.ts +42 -0
  99. package/dist/utils/requestContext.d.ts.map +1 -0
  100. package/dist/utils/requestContext.js +56 -0
  101. package/dist/utils/requestContext.js.map +1 -0
  102. package/dist/utils/validation.d.ts +25 -0
  103. package/dist/utils/validation.d.ts.map +1 -0
  104. package/dist/utils/validation.js +31 -0
  105. package/dist/utils/validation.js.map +1 -0
  106. package/package.json +51 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Shared command parser for communication connectors (Slack, Teams, etc.)
3
+ * This ensures consistent command handling across all platforms.
4
+ */
5
+ import type { CommandAction, Issue, RelatedDecision } from '../types/index.js';
6
+ /**
7
+ * Parse user command text into standardized action
8
+ */
9
+ export declare class CommandParser {
10
+ /**
11
+ * Parse user text into a standardized command action
12
+ */
13
+ static parse(text: string): CommandAction;
14
+ /**
15
+ * Parse merge-related commands
16
+ */
17
+ private static parseMergeCommand;
18
+ /**
19
+ * Parse keep commands for conflict resolution
20
+ * Note: Order matters - check "both" first since "keep b" would otherwise match "keep_old"
21
+ */
22
+ private static parseKeepCommand;
23
+ /**
24
+ * Parse supersession commands
25
+ */
26
+ private static parseSupersessionCommand;
27
+ /**
28
+ * Parse create issue command, extracting optional project key
29
+ */
30
+ private static parseCreateCommand;
31
+ /**
32
+ * Check if text is a greeting
33
+ */
34
+ static isGreeting(text: string): boolean;
35
+ }
36
+ /**
37
+ * Generate command help text for different scenarios
38
+ */
39
+ export declare class CommandHelpText {
40
+ /**
41
+ * Get command list for duplicate decisions
42
+ */
43
+ static getDuplicateCommands(): string[];
44
+ /**
45
+ * Get command list for conflicting decisions
46
+ */
47
+ static getConflictCommands(): string[];
48
+ /**
49
+ * Get command list for supersession decisions
50
+ */
51
+ static getSupersessionCommands(): string[];
52
+ /**
53
+ * Get command list for JIRA/Linear issue linking
54
+ */
55
+ static getIssueCommands(connectors?: string[]): string[];
56
+ /**
57
+ * Get all applicable commands for a given context
58
+ */
59
+ static getApplicableCommands(relatedDecisions: RelatedDecision[], issues: Issue[], enabledConnectors?: string[]): string[];
60
+ /**
61
+ * Format commands for Slack (uses backticks and bold)
62
+ */
63
+ static formatForSlack(commands: string[]): string;
64
+ /**
65
+ * Format commands for Teams (uses ** for bold)
66
+ */
67
+ static formatForTeams(commands: string[]): string;
68
+ }
69
+ //# sourceMappingURL=CommandParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandParser.d.ts","sourceRoot":"","sources":["../../src/parsers/CommandParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAO/E;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAiEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAuBhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAc/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAUvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAOjC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;IAQvC;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAQtC;;OAEG;IACH,MAAM,CAAC,uBAAuB,IAAI,MAAM,EAAE;IAO1C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAM,EAAa,GAAG,MAAM,EAAE;IAqBlE;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,gBAAgB,EAAE,eAAe,EAAE,EACnC,MAAM,EAAE,KAAK,EAAE,EACf,iBAAiB,GAAE,MAAM,EAAa,GACrC,MAAM,EAAE;IAqCX;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAIjD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;CAGlD"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Shared command parser for communication connectors (Slack, Teams, etc.)
3
+ * This ensures consistent command handling across all platforms.
4
+ */
5
+ /**
6
+ * Patterns for detecting greetings
7
+ */
8
+ const GREETING_PATTERNS = /^(hi|hello|hey|sup|yo|good\s*(morning|afternoon|evening)|howdy|hiya|greetings)$/i;
9
+ /**
10
+ * Parse user command text into standardized action
11
+ */
12
+ export class CommandParser {
13
+ /**
14
+ * Parse user text into a standardized command action
15
+ */
16
+ static parse(text) {
17
+ const trimmedText = text.trim();
18
+ const lowerText = trimmedText.toLowerCase();
19
+ // Greeting detection (should reset conversation)
20
+ if (GREETING_PATTERNS.test(trimmedText)) {
21
+ return { type: 'greeting' };
22
+ }
23
+ // Help command
24
+ if (lowerText === 'help' || lowerText === '/help') {
25
+ return { type: 'help' };
26
+ }
27
+ // Skip command
28
+ if (lowerText === 'skip' || lowerText.includes('skip')) {
29
+ return { type: 'skip' };
30
+ }
31
+ // Acknowledge command (for non-conflict relationships like relates/refines)
32
+ if (lowerText === 'acknowledge' || lowerText === 'ack' || lowerText === 'ok') {
33
+ return { type: 'skip' }; // Acknowledge is functionally the same as skip - move to next
34
+ }
35
+ // Merge commands
36
+ if (lowerText.includes('merge')) {
37
+ return this.parseMergeCommand(text, lowerText);
38
+ }
39
+ // Conflict resolution commands
40
+ if (lowerText.includes('keep')) {
41
+ const keepAction = this.parseKeepCommand(lowerText);
42
+ if (keepAction)
43
+ return keepAction;
44
+ }
45
+ // Supersession commands
46
+ if (lowerText.includes('supersession')) {
47
+ const supersessionAction = this.parseSupersessionCommand(lowerText);
48
+ if (supersessionAction)
49
+ return supersessionAction;
50
+ }
51
+ // Create new issue command
52
+ // Supports: "create new", "create jira", "create linear", "create new in PROJECT", "create in PROJECT"
53
+ if (lowerText.includes('create') && (lowerText.includes('new') || lowerText.includes('jira') || lowerText.includes('linear') || lowerText.includes(' in '))) {
54
+ return this.parseCreateCommand(text);
55
+ }
56
+ // Link to issue command
57
+ const issueKeyMatch = text.match(/\b[A-Z]+-\d+\b/);
58
+ if (lowerText.includes('link') && issueKeyMatch) {
59
+ return { type: 'link_issue', issueKey: issueKeyMatch[0] };
60
+ }
61
+ // Also allow just typing an issue key to link
62
+ if (issueKeyMatch && !lowerText.includes('create')) {
63
+ // Check if the message is primarily just an issue key reference
64
+ const cleanText = trimmedText.replace(/\b[A-Z]+-\d+\b/g, '').trim();
65
+ if (cleanText.length < 10 || lowerText.includes('link')) {
66
+ return { type: 'link_issue', issueKey: issueKeyMatch[0] };
67
+ }
68
+ }
69
+ return { type: 'unknown' };
70
+ }
71
+ /**
72
+ * Parse merge-related commands
73
+ */
74
+ static parseMergeCommand(text, lowerText) {
75
+ const indexMatches = text.match(/#(\d+)/g);
76
+ if (lowerText.includes('merge all')) {
77
+ return { type: 'merge_all' };
78
+ }
79
+ if (indexMatches && indexMatches.length > 1) {
80
+ // Merge with multiple specific indices: "merge #1, #2"
81
+ const indices = indexMatches.map(m => parseInt(m.substring(1)) - 1);
82
+ return { type: 'merge_specific', indices };
83
+ }
84
+ if (indexMatches && indexMatches.length === 1) {
85
+ // Merge with specific index: "merge #1" or "merge with #2"
86
+ const index = parseInt(indexMatches[0].substring(1)) - 1;
87
+ return { type: 'merge_single', index };
88
+ }
89
+ // Default: merge with first duplicate
90
+ return { type: 'merge_single', index: 0 };
91
+ }
92
+ /**
93
+ * Parse keep commands for conflict resolution
94
+ * Note: Order matters - check "both" first since "keep b" would otherwise match "keep_old"
95
+ */
96
+ static parseKeepCommand(lowerText) {
97
+ // Check "both" first - it's the most specific
98
+ if (lowerText.includes('both')) {
99
+ return { type: 'keep_both' };
100
+ }
101
+ if (lowerText.includes('new') || lowerText === 'keep a') {
102
+ return { type: 'keep_new' };
103
+ }
104
+ if (lowerText.includes('old') || lowerText === 'keep b') {
105
+ return { type: 'keep_old' };
106
+ }
107
+ return null;
108
+ }
109
+ /**
110
+ * Parse supersession commands
111
+ */
112
+ static parseSupersessionCommand(lowerText) {
113
+ if (lowerText.includes('accept')) {
114
+ return { type: 'accept_supersession' };
115
+ }
116
+ if (lowerText.includes('reject')) {
117
+ return { type: 'reject_supersession' };
118
+ }
119
+ return null;
120
+ }
121
+ /**
122
+ * Parse create issue command, extracting optional project key
123
+ */
124
+ static parseCreateCommand(text) {
125
+ // Check for "create new in PROJECT-KEY" pattern
126
+ const projectMatch = text.match(/create\s+(?:new\s+)?in\s+([A-Z][A-Z0-9]+)/i);
127
+ const projectKey = projectMatch ? projectMatch[1].toUpperCase() : undefined;
128
+ return { type: 'create_issue', projectKey };
129
+ }
130
+ /**
131
+ * Check if text is a greeting
132
+ */
133
+ static isGreeting(text) {
134
+ return GREETING_PATTERNS.test(text.trim());
135
+ }
136
+ }
137
+ /**
138
+ * Generate command help text for different scenarios
139
+ */
140
+ export class CommandHelpText {
141
+ /**
142
+ * Get command list for duplicate decisions
143
+ */
144
+ static getDuplicateCommands() {
145
+ return [
146
+ '`merge` - Merge with first duplicate',
147
+ '`merge all` - Merge with all duplicates',
148
+ '`merge #1, #2` - Merge with specific duplicates',
149
+ ];
150
+ }
151
+ /**
152
+ * Get command list for conflicting decisions
153
+ */
154
+ static getConflictCommands() {
155
+ return [
156
+ '`keep new` (or `keep a`) - Keep new decision, archive conflicting one',
157
+ '`keep old` (or `keep b`) - Keep old decision, archive new one',
158
+ '`keep both` - Keep both decisions as separate',
159
+ ];
160
+ }
161
+ /**
162
+ * Get command list for supersession decisions
163
+ */
164
+ static getSupersessionCommands() {
165
+ return [
166
+ '`accept supersession` - Archive old decision, keep new one',
167
+ '`reject supersession` - Keep old decision active',
168
+ ];
169
+ }
170
+ /**
171
+ * Get command list for JIRA/Linear issue linking
172
+ */
173
+ static getIssueCommands(connectors = ['jira']) {
174
+ const commands = [];
175
+ if (connectors.includes('jira') || connectors.includes('linear')) {
176
+ commands.push('`link to PROJ-123` - Link to existing issue');
177
+ }
178
+ if (connectors.includes('jira')) {
179
+ commands.push('`create new` - Create new JIRA issue');
180
+ commands.push('`create new in PROJ` - Create in specific project');
181
+ }
182
+ if (connectors.includes('linear')) {
183
+ commands.push('`create linear` - Create new Linear issue');
184
+ }
185
+ commands.push('`skip` - Continue without linking');
186
+ return commands;
187
+ }
188
+ /**
189
+ * Get all applicable commands for a given context
190
+ */
191
+ static getApplicableCommands(relatedDecisions, issues, enabledConnectors = ['jira']) {
192
+ const commands = [];
193
+ const hasDuplicates = relatedDecisions.some(d => d.relationship === 'duplicates');
194
+ const hasConflicts = relatedDecisions.some(d => d.relationship === 'conflicts_with');
195
+ const hasSupersessions = relatedDecisions.some(d => d.relationship === 'supersedes');
196
+ if (hasDuplicates) {
197
+ commands.push('**Duplicate Resolution:**');
198
+ commands.push(...this.getDuplicateCommands().map(c => ` ${c}`));
199
+ }
200
+ if (hasConflicts) {
201
+ commands.push('**Conflict Resolution:**');
202
+ commands.push(...this.getConflictCommands().map(c => ` ${c}`));
203
+ }
204
+ if (hasSupersessions) {
205
+ commands.push('**Supersession:**');
206
+ commands.push(...this.getSupersessionCommands().map(c => ` ${c}`));
207
+ }
208
+ // Issue commands
209
+ const hasIssueConnectors = enabledConnectors.some(c => ['jira', 'linear'].includes(c));
210
+ if (hasIssueConnectors) {
211
+ commands.push('**Issue Tracking:**');
212
+ commands.push(...this.getIssueCommands(enabledConnectors).map(c => ` ${c}`));
213
+ }
214
+ // Always include skip
215
+ if (!commands.some(c => c.includes('skip'))) {
216
+ commands.push('`skip` - Skip this step');
217
+ }
218
+ return commands;
219
+ }
220
+ /**
221
+ * Format commands for Slack (uses backticks and bold)
222
+ */
223
+ static formatForSlack(commands) {
224
+ return commands.join('\n');
225
+ }
226
+ /**
227
+ * Format commands for Teams (uses ** for bold)
228
+ */
229
+ static formatForTeams(commands) {
230
+ return commands.join('\n');
231
+ }
232
+ }
233
+ //# sourceMappingURL=CommandParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandParser.js","sourceRoot":"","sources":["../../src/parsers/CommandParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Shared Gateway API client for all communication connectors
3
+ * Provides consistent API access to the Align Gateway service
4
+ *
5
+ * This is the SINGLE SOURCE OF TRUTH for Gateway API access.
6
+ * DO NOT create duplicate GatewayRepository implementations in connector packages.
7
+ */
8
+ import type { ConsensusResponse, ConversationalRequest, ConversationalResponse, CreateIssueParams, CreateIssueResult, Decision, DecisionSearchOptions, DecisionSearchResponse, DecisionSnapshot, EpicSuggestion, IngestPayload, IngestResponse, Issue, IssueSearchResult, JiraProject, JiraSettings, StreamEvent } from '../types/index.js';
9
+ /**
10
+ * Jira credentials from Gateway
11
+ */
12
+ export interface JiraCredentials {
13
+ base: string;
14
+ token: string;
15
+ cloudId?: string;
16
+ }
17
+ export interface GatewayClientConfig {
18
+ gatewayUrl: string;
19
+ bearerToken?: string;
20
+ }
21
+ /**
22
+ * Shared client for Gateway API operations
23
+ */
24
+ export declare class GatewayClient {
25
+ private gatewayUrl;
26
+ private bearerToken?;
27
+ constructor(config: GatewayClientConfig);
28
+ /**
29
+ * Create from environment variables
30
+ */
31
+ static fromEnv(): GatewayClient;
32
+ /**
33
+ * Make authenticated request to Gateway
34
+ */
35
+ protected request<T>(path: string, options?: {
36
+ method?: string;
37
+ body?: unknown;
38
+ tenantId?: string;
39
+ }): Promise<T>;
40
+ /**
41
+ * Send ingest payload to Gateway for decision extraction
42
+ */
43
+ ingest(tenantId: string, payload: IngestPayload): Promise<IngestResponse>;
44
+ /**
45
+ * Send payload to Gateway for consensus analysis of a debate
46
+ */
47
+ consensus(tenantId: string, payload: IngestPayload): Promise<ConsensusResponse>;
48
+ /**
49
+ * Send payload to Gateway for conversational AI processing
50
+ * Detects intent (decision, consensus, question, etc.) and returns appropriate response
51
+ */
52
+ conversational(tenantId: string, payload: ConversationalRequest): Promise<ConversationalResponse>;
53
+ /**
54
+ * Stream conversational AI response via SSE.
55
+ * Yields events: { type: 'token', data: { text: string } }
56
+ * or { type: 'complete', data: ConversationalResponse }
57
+ * or { type: 'error', data: { error: string } }
58
+ */
59
+ streamConversational(tenantId: string, payload: ConversationalRequest): AsyncGenerator<StreamEvent>;
60
+ /**
61
+ * Fetch decision details by ID
62
+ */
63
+ getDecision(tenantId: string, decisionId: string): Promise<Decision>;
64
+ /**
65
+ * Search decisions using smart search (auto-selects semantic vs keyword)
66
+ */
67
+ searchDecisions(tenantId: string, query: string, options?: DecisionSearchOptions): Promise<DecisionSearchResponse>;
68
+ /**
69
+ * Fetch multiple decisions by IDs in a single request
70
+ */
71
+ getDecisions(tenantId: string, decisionIds: string[]): Promise<Decision[]>;
72
+ /**
73
+ * Search for issues across enabled connectors
74
+ */
75
+ searchIssues(tenantId: string, keywords: string, sourceText?: string): Promise<IssueSearchResult>;
76
+ /**
77
+ * Create an issue in the specified connector
78
+ */
79
+ createIssue(tenantId: string, params: CreateIssueParams): Promise<CreateIssueResult>;
80
+ /**
81
+ * Link a decision to an issue
82
+ */
83
+ linkDecisionToIssue(tenantId: string, decisionId: string, issue: Issue): Promise<void>;
84
+ /**
85
+ * Fetch JIRA tenant settings
86
+ */
87
+ getJiraSettings(tenantId: string): Promise<JiraSettings>;
88
+ /**
89
+ * Save JIRA tenant settings (e.g. default project key)
90
+ */
91
+ saveJiraSettings(tenantId: string, settings: {
92
+ default_project_key?: string;
93
+ default_project_id?: string;
94
+ }): Promise<void>;
95
+ /**
96
+ * Fetch available JIRA projects
97
+ */
98
+ getJiraProjects(tenantId: string): Promise<JiraProject[]>;
99
+ /**
100
+ * Get AI-suggested epic for a decision
101
+ */
102
+ suggestEpic(tenantId: string, projectKey: string, title: string, description: string, goals: string[]): Promise<EpicSuggestion | null>;
103
+ /**
104
+ * Get a decision snapshot by ID
105
+ */
106
+ getSnapshot(tenantId: string, decisionId: string): Promise<DecisionSnapshot>;
107
+ /**
108
+ * Update decision source URL
109
+ */
110
+ updateDecisionSourceUrl(tenantId: string, decisionId: string, sourceUrl: string): Promise<DecisionSnapshot>;
111
+ /**
112
+ * Fetch a single issue by key
113
+ */
114
+ fetchIssue(tenantId: string, issueKey: string): Promise<Issue>;
115
+ /**
116
+ * Add a comment to an issue
117
+ */
118
+ addCommentToIssue(tenantId: string, issueKey: string, comment: {
119
+ body: unknown;
120
+ }): Promise<void>;
121
+ /**
122
+ * Get Slack conversation state
123
+ */
124
+ getSlackConversationState(tenantId: string, channelId: string, threadTs: string): Promise<{
125
+ state: unknown;
126
+ } | null>;
127
+ /**
128
+ * Save Slack conversation state
129
+ */
130
+ saveSlackConversationState(tenantId: string, data: unknown): Promise<void>;
131
+ /**
132
+ * Query the Brain service
133
+ */
134
+ queryBrain(tenantId: string, question: string, context: unknown): Promise<{
135
+ answer: string;
136
+ sources?: unknown[];
137
+ }>;
138
+ /**
139
+ * Fetch Jira credentials for a tenant
140
+ */
141
+ fetchJiraCredentials(tenantId: string): Promise<JiraCredentials>;
142
+ /**
143
+ * Trigger a Slack shortcut
144
+ */
145
+ triggerSlackShortcut(tenantId: string, data: unknown): Promise<void>;
146
+ }
147
+ //# sourceMappingURL=GatewayClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GatewayClient.d.ts","sourceRoot":"","sources":["../../src/services/GatewayClient.ts"],"names":[],"mappings":"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"}