gaunt-sloth-assistant 0.4.0 → 0.4.2
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/dist/providers/jiraIssueProvider.js +10 -3
- package/dist/providers/jiraIssueProvider.js.map +1 -1
- package/package.json +2 -2
- package/src/providers/jiraIssueProvider.ts +12 -3
- package/dist/configs/types.d.ts +0 -14
- package/dist/configs/types.js +0 -2
- package/dist/configs/types.js.map +0 -1
- package/dist/providers/jiraIssueLegacyAccessTokenProvider.d.ts +0 -8
- package/dist/providers/jiraIssueLegacyAccessTokenProvider.js +0 -62
- package/dist/providers/jiraIssueLegacyAccessTokenProvider.js.map +0 -1
@@ -53,7 +53,11 @@ export async function get(config, issueId) {
|
|
53
53
|
}
|
54
54
|
}
|
55
55
|
/**
|
56
|
-
* Helper function to get Jira issue details using Atlassian REST API
|
56
|
+
* Helper function to get Jira issue details using Atlassian REST API v2.
|
57
|
+
*
|
58
|
+
* The feature was initially developed to use Atlassian REST API v3, which by
|
59
|
+
* default returns the ADF JSON format for description, which is not very useful for us.
|
60
|
+
*
|
57
61
|
* @param config Jira configuration
|
58
62
|
* @param jiraKey Jira issue ID
|
59
63
|
* @returns Jira issue response
|
@@ -61,13 +65,16 @@ export async function get(config, issueId) {
|
|
61
65
|
async function getJiraIssue(config, jiraKey) {
|
62
66
|
// Jira Cloud ID can be found by authenticated user at https://company.atlassian.net/_edge/tenant_info
|
63
67
|
// According to doc https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-get permissions to read this resource:
|
68
|
+
// https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-rest-api-2-issue-issueidorkey-get
|
64
69
|
// either Classic (RECOMMENDED) read:jira-work
|
65
70
|
// or Granular read:issue-meta:jira, read:issue-security-level:jira, read:issue.vote:jira, read:issue.changelog:jira, read:avatar:jira, read:issue:jira, read:status:jira, read:user:jira, read:field-configuration:jira
|
66
|
-
const apiUrl = `https://api.atlassian.com/ex/jira/${config.cloudId}/rest/api/
|
71
|
+
const apiUrl = `https://api.atlassian.com/ex/jira/${config.cloudId}/rest/api/2/issue/${jiraKey}`;
|
67
72
|
if (config.displayUrl) {
|
68
73
|
display(`Loading Jira issue ${config.displayUrl}${jiraKey}`);
|
69
74
|
}
|
70
75
|
display(`Retrieving jira from api ${apiUrl.replace(/^https?:\/\//, '')}`);
|
76
|
+
// This filter will be necessary for V3: `&expand=renderedFields` to convert ADF to HTML
|
77
|
+
const filters = '?fields=summary,description'; // Limit JSON to summary and description
|
71
78
|
// Encode credentials for Basic Authentication header
|
72
79
|
const credentials = `${config.username}:${config.token}`;
|
73
80
|
const encodedCredentials = Buffer.from(credentials).toString('base64');
|
@@ -78,7 +85,7 @@ async function getJiraIssue(config, jiraKey) {
|
|
78
85
|
Accept: 'application/json; charset=utf-8',
|
79
86
|
'Accept-Language': 'en-US,en;q=0.9', // Prevents errors in other languages
|
80
87
|
};
|
81
|
-
const response = await fetch(apiUrl, {
|
88
|
+
const response = await fetch(apiUrl + filters, {
|
82
89
|
method: 'GET',
|
83
90
|
headers: headers,
|
84
91
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jiraIssueProvider.js","sourceRoot":"","sources":["../../src/providers/jiraIssueProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"jiraIssueProvider.js","sourceRoot":"","sources":["../../src/providers/jiraIssueProvider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "gaunt-sloth-assistant",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.2",
|
4
4
|
"description": "",
|
5
5
|
"license": "MIT",
|
6
6
|
"author": "Andrew Kondratev",
|
@@ -30,7 +30,7 @@
|
|
30
30
|
"@langchain/groq": "^0.2.2",
|
31
31
|
"@langchain/langgraph": "^0.2.71",
|
32
32
|
"chalk": "^5.4.1",
|
33
|
-
"commander": "^
|
33
|
+
"commander": "^14.0.0",
|
34
34
|
"uuid": "^11.1.0"
|
35
35
|
},
|
36
36
|
"devDependencies": {
|
@@ -8,6 +8,7 @@ interface JiraIssueResponse {
|
|
8
8
|
description: string;
|
9
9
|
[key: string]: unknown;
|
10
10
|
};
|
11
|
+
|
11
12
|
[key: string]: unknown;
|
12
13
|
}
|
13
14
|
|
@@ -84,7 +85,11 @@ export async function get(
|
|
84
85
|
}
|
85
86
|
|
86
87
|
/**
|
87
|
-
* Helper function to get Jira issue details using Atlassian REST API
|
88
|
+
* Helper function to get Jira issue details using Atlassian REST API v2.
|
89
|
+
*
|
90
|
+
* The feature was initially developed to use Atlassian REST API v3, which by
|
91
|
+
* default returns the ADF JSON format for description, which is not very useful for us.
|
92
|
+
*
|
88
93
|
* @param config Jira configuration
|
89
94
|
* @param jiraKey Jira issue ID
|
90
95
|
* @returns Jira issue response
|
@@ -93,14 +98,18 @@ async function getJiraIssue(config: JiraConfig, jiraKey: string): Promise<JiraIs
|
|
93
98
|
// Jira Cloud ID can be found by authenticated user at https://company.atlassian.net/_edge/tenant_info
|
94
99
|
|
95
100
|
// According to doc https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-get permissions to read this resource:
|
101
|
+
// https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-rest-api-2-issue-issueidorkey-get
|
96
102
|
// either Classic (RECOMMENDED) read:jira-work
|
97
103
|
// or Granular read:issue-meta:jira, read:issue-security-level:jira, read:issue.vote:jira, read:issue.changelog:jira, read:avatar:jira, read:issue:jira, read:status:jira, read:user:jira, read:field-configuration:jira
|
98
|
-
const apiUrl = `https://api.atlassian.com/ex/jira/${config.cloudId}/rest/api/
|
104
|
+
const apiUrl = `https://api.atlassian.com/ex/jira/${config.cloudId}/rest/api/2/issue/${jiraKey}`;
|
99
105
|
if (config.displayUrl) {
|
100
106
|
display(`Loading Jira issue ${config.displayUrl}${jiraKey}`);
|
101
107
|
}
|
102
108
|
display(`Retrieving jira from api ${apiUrl.replace(/^https?:\/\//, '')}`);
|
103
109
|
|
110
|
+
// This filter will be necessary for V3: `&expand=renderedFields` to convert ADF to HTML
|
111
|
+
const filters = '?fields=summary,description'; // Limit JSON to summary and description
|
112
|
+
|
104
113
|
// Encode credentials for Basic Authentication header
|
105
114
|
const credentials = `${config.username}:${config.token}`;
|
106
115
|
const encodedCredentials = Buffer.from(credentials).toString('base64');
|
@@ -113,7 +122,7 @@ async function getJiraIssue(config: JiraConfig, jiraKey: string): Promise<JiraIs
|
|
113
122
|
'Accept-Language': 'en-US,en;q=0.9', // Prevents errors in other languages
|
114
123
|
};
|
115
124
|
|
116
|
-
const response = await fetch(apiUrl, {
|
125
|
+
const response = await fetch(apiUrl + filters, {
|
117
126
|
method: 'GET',
|
118
127
|
headers: headers,
|
119
128
|
});
|
package/dist/configs/types.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import type { SlothContext } from '#src/config.js';
|
2
|
-
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
3
|
-
export interface LLMConfig {
|
4
|
-
type: string;
|
5
|
-
model?: string;
|
6
|
-
apiKey?: string;
|
7
|
-
temperature?: number;
|
8
|
-
responses?: string[];
|
9
|
-
[key: string]: unknown;
|
10
|
-
}
|
11
|
-
export interface ConfigModule {
|
12
|
-
init: (configFileName: string, context: SlothContext) => void;
|
13
|
-
processJsonConfig: (llmConfig: LLMConfig) => Promise<BaseChatModel | null>;
|
14
|
-
}
|
package/dist/configs/types.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/configs/types.ts"],"names":[],"mappings":""}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import type { JiraConfig } from "./types.js";
|
2
|
-
/**
|
3
|
-
* Gets Jira issue using Atlassian REST API v2
|
4
|
-
* @param config Jira configuration
|
5
|
-
* @param issueId Jira issue ID
|
6
|
-
* @returns Jira issue content
|
7
|
-
*/
|
8
|
-
export declare function get(config: JiraConfig | null, issueId: string | undefined): Promise<string | null>;
|
@@ -1,62 +0,0 @@
|
|
1
|
-
import { displayError, displayWarning } from "#src/consoleUtils.js";
|
2
|
-
/**
|
3
|
-
* Gets Jira issue using Atlassian REST API v2
|
4
|
-
* @param config Jira configuration
|
5
|
-
* @param issueId Jira issue ID
|
6
|
-
* @returns Jira issue content
|
7
|
-
*/
|
8
|
-
export async function get(config, issueId) {
|
9
|
-
if (!config) {
|
10
|
-
displayWarning("No Jira config provided");
|
11
|
-
return null;
|
12
|
-
}
|
13
|
-
if (!issueId) {
|
14
|
-
displayWarning("No issue ID provided");
|
15
|
-
return null;
|
16
|
-
}
|
17
|
-
if (!config.username) {
|
18
|
-
displayWarning("No Jira username provided");
|
19
|
-
return null;
|
20
|
-
}
|
21
|
-
if (!config.baseUrl) {
|
22
|
-
displayWarning("No Jira base URL provided");
|
23
|
-
return null;
|
24
|
-
}
|
25
|
-
if (!config.token) {
|
26
|
-
displayWarning("No Jira token provided");
|
27
|
-
return null;
|
28
|
-
}
|
29
|
-
try {
|
30
|
-
const issue = await getJiraIssue(config, issueId);
|
31
|
-
if (!issue) {
|
32
|
-
return null;
|
33
|
-
}
|
34
|
-
const summary = issue.fields.summary;
|
35
|
-
const description = issue.fields.description;
|
36
|
-
return `Jira Issue: ${issueId}\nSummary: ${summary}\n\nDescription:\n${description}`;
|
37
|
-
}
|
38
|
-
catch (error) {
|
39
|
-
displayError(`Failed to get Jira issue: ${error instanceof Error ? error.message : String(error)}`);
|
40
|
-
return null;
|
41
|
-
}
|
42
|
-
}
|
43
|
-
/**
|
44
|
-
* Helper function to get Jira issue details
|
45
|
-
* @param config Jira configuration
|
46
|
-
* @param issueId Jira issue ID
|
47
|
-
* @returns Jira issue response
|
48
|
-
*/
|
49
|
-
async function getJiraIssue(config, issueId) {
|
50
|
-
const auth = Buffer.from(`${config.username}:${config.token}`).toString('base64');
|
51
|
-
const response = await fetch(`${config.baseUrl}/rest/api/2/issue/${issueId}`, {
|
52
|
-
headers: {
|
53
|
-
'Authorization': `Basic ${auth}`,
|
54
|
-
'Accept': 'application/json'
|
55
|
-
}
|
56
|
-
});
|
57
|
-
if (!response.ok) {
|
58
|
-
throw new Error(`Failed to fetch Jira issue: ${response.statusText}`);
|
59
|
-
}
|
60
|
-
return response.json();
|
61
|
-
}
|
62
|
-
//# sourceMappingURL=jiraIssueLegacyAccessTokenProvider.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"jiraIssueLegacyAccessTokenProvider.js","sourceRoot":"","sources":["../../src/providers/jiraIssueLegacyAccessTokenProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYpE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,MAAyB,EAAE,OAA2B;IAC5E,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnB,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;QAE7C,OAAO,eAAe,OAAO,cAAc,OAAO,qBAAqB,WAAW,EAAE,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,YAAY,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,MAAkB,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,qBAAqB,OAAO,EAAE,EAAE;QAC1E,OAAO,EAAE;YACL,eAAe,EAAE,SAAS,IAAI,EAAE;YAChC,QAAQ,EAAE,kBAAkB;SAC/B;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|