n8n-nodes-github-copilot-agent-tool 0.1.1

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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/credentials/GitHubCopilotApi.credentials.d.ts +10 -0
  4. package/dist/credentials/GitHubCopilotApi.credentials.js +69 -0
  5. package/dist/credentials/GitHubCopilotApi.credentials.js.map +1 -0
  6. package/dist/credentials/gitHubCopilotApi.svg +12 -0
  7. package/dist/nodes/GitHubCopilotAgentTool/GitHubCopilotAgentTool.node.d.ts +5 -0
  8. package/dist/nodes/GitHubCopilotAgentTool/GitHubCopilotAgentTool.node.js +196 -0
  9. package/dist/nodes/GitHubCopilotAgentTool/GitHubCopilotAgentTool.node.js.map +1 -0
  10. package/dist/nodes/GitHubCopilotAgentTool/GitHubCopilotAgentTool.node.json +16 -0
  11. package/dist/nodes/GitHubCopilotAgentTool/gitHubCopilotAgentTool.dark.svg +12 -0
  12. package/dist/nodes/GitHubCopilotAgentTool/gitHubCopilotAgentTool.svg +12 -0
  13. package/dist/nodes/GitHubCopilotAuthHelper/GitHubCopilotAuthHelper.node.d.ts +5 -0
  14. package/dist/nodes/GitHubCopilotAuthHelper/GitHubCopilotAuthHelper.node.js +194 -0
  15. package/dist/nodes/GitHubCopilotAuthHelper/GitHubCopilotAuthHelper.node.js.map +1 -0
  16. package/dist/nodes/GitHubCopilotAuthHelper/GitHubCopilotAuthHelper.node.json +13 -0
  17. package/dist/nodes/GitHubCopilotAuthHelper/gitHubCopilotAuthHelper.dark.svg +12 -0
  18. package/dist/nodes/GitHubCopilotAuthHelper/gitHubCopilotAuthHelper.svg +12 -0
  19. package/dist/nodes/GitHubCopilotChatApi/GitHubCopilotChatApi.node.d.ts +5 -0
  20. package/dist/nodes/GitHubCopilotChatApi/GitHubCopilotChatApi.node.js +181 -0
  21. package/dist/nodes/GitHubCopilotChatApi/GitHubCopilotChatApi.node.js.map +1 -0
  22. package/dist/nodes/GitHubCopilotChatApi/GitHubCopilotChatApi.node.json +13 -0
  23. package/dist/nodes/GitHubCopilotChatApi/gitHubCopilotChatApi.dark.svg +12 -0
  24. package/dist/nodes/GitHubCopilotChatApi/gitHubCopilotChatApi.svg +12 -0
  25. package/dist/nodes/GitHubCopilotChatModel/GitHubCopilotChatModel.node.d.ts +5 -0
  26. package/dist/nodes/GitHubCopilotChatModel/GitHubCopilotChatModel.node.js +188 -0
  27. package/dist/nodes/GitHubCopilotChatModel/GitHubCopilotChatModel.node.js.map +1 -0
  28. package/dist/nodes/GitHubCopilotChatModel/GitHubCopilotChatModel.node.json +16 -0
  29. package/dist/nodes/GitHubCopilotChatModel/gitHubCopilotChatModel.dark.svg +12 -0
  30. package/dist/nodes/GitHubCopilotChatModel/gitHubCopilotChatModel.svg +12 -0
  31. package/dist/nodes/GitHubCopilotCli/GitHubCopilotCli.node.d.ts +5 -0
  32. package/dist/nodes/GitHubCopilotCli/GitHubCopilotCli.node.js +159 -0
  33. package/dist/nodes/GitHubCopilotCli/GitHubCopilotCli.node.js.map +1 -0
  34. package/dist/nodes/GitHubCopilotCli/GitHubCopilotCli.node.json +13 -0
  35. package/dist/nodes/GitHubCopilotCli/gitHubCopilotCli.dark.svg +12 -0
  36. package/dist/nodes/GitHubCopilotCli/gitHubCopilotCli.svg +12 -0
  37. package/dist/nodes/GitHubCopilotEmbeddings/GitHubCopilotEmbeddings.node.d.ts +5 -0
  38. package/dist/nodes/GitHubCopilotEmbeddings/GitHubCopilotEmbeddings.node.js +133 -0
  39. package/dist/nodes/GitHubCopilotEmbeddings/GitHubCopilotEmbeddings.node.js.map +1 -0
  40. package/dist/nodes/GitHubCopilotEmbeddings/GitHubCopilotEmbeddings.node.json +16 -0
  41. package/dist/nodes/GitHubCopilotEmbeddings/gitHubCopilotEmbeddings.dark.svg +12 -0
  42. package/dist/nodes/GitHubCopilotEmbeddings/gitHubCopilotEmbeddings.svg +12 -0
  43. package/dist/nodes/GitHubCopilotOpenAI/GitHubCopilotOpenAI.node.json +13 -0
  44. package/dist/nodes/GitHubCopilotOpenAI/GitHubCopilotOpenAi.node.d.ts +5 -0
  45. package/dist/nodes/GitHubCopilotOpenAI/GitHubCopilotOpenAi.node.js +177 -0
  46. package/dist/nodes/GitHubCopilotOpenAI/GitHubCopilotOpenAi.node.js.map +1 -0
  47. package/dist/nodes/GitHubCopilotOpenAI/gitHubCopilotOpenAI.dark.svg +12 -0
  48. package/dist/nodes/GitHubCopilotOpenAI/gitHubCopilotOpenAI.svg +12 -0
  49. package/dist/nodes/GitHubCopilotTest/GitHubCopilotTest.node.d.ts +5 -0
  50. package/dist/nodes/GitHubCopilotTest/GitHubCopilotTest.node.js +173 -0
  51. package/dist/nodes/GitHubCopilotTest/GitHubCopilotTest.node.js.map +1 -0
  52. package/dist/nodes/GitHubCopilotTest/GitHubCopilotTest.node.json +13 -0
  53. package/dist/nodes/GitHubCopilotTest/gitHubCopilotTest.dark.svg +12 -0
  54. package/dist/nodes/GitHubCopilotTest/gitHubCopilotTest.svg +12 -0
  55. package/dist/nodes/shared/apiClient.d.ts +11 -0
  56. package/dist/nodes/shared/apiClient.js +98 -0
  57. package/dist/nodes/shared/apiClient.js.map +1 -0
  58. package/dist/nodes/shared/types.d.ts +144 -0
  59. package/dist/nodes/shared/types.js +44 -0
  60. package/dist/nodes/shared/types.js.map +1 -0
  61. package/dist/package.json +75 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -0
  63. package/package.json +75 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitHubCopilotAuthHelper = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class GitHubCopilotAuthHelper {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'GitHub Copilot Auth Helper',
9
+ name: 'gitHubCopilotAuthHelper',
10
+ icon: {
11
+ light: 'file:gitHubCopilotAuthHelper.svg',
12
+ dark: 'file:gitHubCopilotAuthHelper.dark.svg',
13
+ },
14
+ group: ['transform'],
15
+ version: 1,
16
+ subtitle: '={{ $parameter["operation"] }}',
17
+ description: 'Manages OAuth Device Flow authentication for GitHub Copilot without requiring terminal access.',
18
+ defaults: { name: 'GitHub Copilot Auth Helper' },
19
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
20
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
21
+ credentials: [],
22
+ properties: [
23
+ {
24
+ displayName: 'Operation',
25
+ name: 'operation',
26
+ type: 'options',
27
+ noDataExpression: true,
28
+ options: [
29
+ {
30
+ name: 'Start Device Flow',
31
+ value: 'startDeviceFlow',
32
+ description: 'Request a device code and user verification URI',
33
+ action: 'Start o auth device flow',
34
+ },
35
+ {
36
+ name: 'Poll for Token',
37
+ value: 'pollForToken',
38
+ description: 'Poll the token endpoint once the user has authorized',
39
+ action: 'Poll for access token',
40
+ },
41
+ {
42
+ name: 'Revoke Token',
43
+ value: 'revokeToken',
44
+ description: 'Revoke an existing access token',
45
+ action: 'Revoke access token',
46
+ },
47
+ ],
48
+ default: 'startDeviceFlow',
49
+ },
50
+ {
51
+ displayName: 'Client ID',
52
+ name: 'clientId',
53
+ type: 'string',
54
+ default: 'Iv1.b507a08c87ecfe98',
55
+ description: 'GitHub OAuth App client ID. The default is the official Copilot CLI app.',
56
+ displayOptions: { show: { operation: ['startDeviceFlow'] } },
57
+ },
58
+ {
59
+ displayName: 'Scope',
60
+ name: 'scope',
61
+ type: 'string',
62
+ default: 'read:user',
63
+ description: 'Space-separated OAuth scopes to request',
64
+ displayOptions: { show: { operation: ['startDeviceFlow'] } },
65
+ },
66
+ {
67
+ displayName: 'Device Code',
68
+ name: 'deviceCode',
69
+ type: 'string',
70
+ default: '',
71
+ description: 'Device code returned by the Start Device Flow operation',
72
+ displayOptions: { show: { operation: ['pollForToken'] } },
73
+ },
74
+ {
75
+ displayName: 'Client ID',
76
+ name: 'clientIdPoll',
77
+ type: 'string',
78
+ default: 'Iv1.b507a08c87ecfe98',
79
+ description: 'GitHub OAuth App client ID (must match the one used in Start Device Flow)',
80
+ displayOptions: { show: { operation: ['pollForToken'] } },
81
+ },
82
+ {
83
+ displayName: 'Access Token',
84
+ name: 'accessToken',
85
+ type: 'string',
86
+ typeOptions: { password: true },
87
+ default: '',
88
+ description: 'Access token to revoke',
89
+ displayOptions: { show: { operation: ['revokeToken'] } },
90
+ },
91
+ {
92
+ displayName: 'Client ID',
93
+ name: 'clientIdRevoke',
94
+ type: 'string',
95
+ default: 'Iv1.b507a08c87ecfe98',
96
+ description: 'GitHub OAuth App client ID',
97
+ displayOptions: { show: { operation: ['revokeToken'] } },
98
+ },
99
+ ],
100
+ usableAsTool: true,
101
+ };
102
+ }
103
+ async execute() {
104
+ const items = this.getInputData();
105
+ const returnData = [];
106
+ for (let i = 0; i < items.length; i++) {
107
+ const operation = this.getNodeParameter('operation', i);
108
+ try {
109
+ if (operation === 'startDeviceFlow') {
110
+ const clientId = this.getNodeParameter('clientId', i);
111
+ const scope = this.getNodeParameter('scope', i);
112
+ const response = (await this.helpers.httpRequest({
113
+ method: 'POST',
114
+ url: 'https://github.com/login/device/code',
115
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
116
+ body: { client_id: clientId, scope },
117
+ json: true,
118
+ }));
119
+ returnData.push({
120
+ json: {
121
+ device_code: response.device_code,
122
+ user_code: response.user_code,
123
+ verification_uri: response.verification_uri,
124
+ expires_in: response.expires_in,
125
+ interval: response.interval,
126
+ instructions: `Go to ${response.verification_uri} and enter the code: ${response.user_code}`,
127
+ },
128
+ pairedItem: { item: i },
129
+ });
130
+ }
131
+ else if (operation === 'pollForToken') {
132
+ const deviceCode = this.getNodeParameter('deviceCode', i);
133
+ const clientId = this.getNodeParameter('clientIdPoll', i);
134
+ const response = (await this.helpers.httpRequest({
135
+ method: 'POST',
136
+ url: 'https://github.com/login/oauth/access_token',
137
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
138
+ body: {
139
+ client_id: clientId,
140
+ device_code: deviceCode,
141
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
142
+ },
143
+ json: true,
144
+ }));
145
+ if (response.error) {
146
+ returnData.push({
147
+ json: {
148
+ pending: response.error === 'authorization_pending',
149
+ error: response.error,
150
+ error_description: response.error_description,
151
+ },
152
+ pairedItem: { item: i },
153
+ });
154
+ }
155
+ else {
156
+ returnData.push({
157
+ json: {
158
+ pending: false,
159
+ access_token: response.access_token,
160
+ token_type: response.token_type,
161
+ scope: response.scope,
162
+ },
163
+ pairedItem: { item: i },
164
+ });
165
+ }
166
+ }
167
+ else {
168
+ const accessToken = this.getNodeParameter('accessToken', i);
169
+ const clientId = this.getNodeParameter('clientIdRevoke', i);
170
+ await this.helpers.httpRequest({
171
+ method: 'DELETE',
172
+ url: `https://api.github.com/applications/${clientId}/token`,
173
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
174
+ body: { access_token: accessToken },
175
+ auth: { username: clientId, password: accessToken },
176
+ json: true,
177
+ });
178
+ returnData.push({ json: { revoked: true }, pairedItem: { item: i } });
179
+ }
180
+ }
181
+ catch (error) {
182
+ if (this.continueOnFail()) {
183
+ const message = error instanceof Error ? error.message : String(error);
184
+ returnData.push({ json: { error: message }, pairedItem: { item: i } });
185
+ continue;
186
+ }
187
+ throw error;
188
+ }
189
+ }
190
+ return [returnData];
191
+ }
192
+ }
193
+ exports.GitHubCopilotAuthHelper = GitHubCopilotAuthHelper;
194
+ //# sourceMappingURL=GitHubCopilotAuthHelper.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubCopilotAuthHelper.node.js","sourceRoot":"","sources":["../../../nodes/GitHubCopilotAuthHelper/GitHubCopilotAuthHelper.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ {
2
+ "node": "n8n-nodes-github-copilot-agent-tool.gitHubCopilotAuthHelper",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Developer Tools"],
6
+ "resources": {
7
+ "primaryDocumentation": [
8
+ {
9
+ "url": "https://github.com/CyberLaboratory/n8n-github-copilot-ai-tool"
10
+ }
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
2
+ <circle cx="20" cy="20" r="19" fill="#161b22"/>
3
+ <ellipse cx="20" cy="18" rx="9" ry="8" fill="#c9d1d9"/>
4
+ <rect x="13" y="15" width="14" height="5.5" rx="2.75" fill="#161b22"/>
5
+ <circle cx="17" cy="17.75" r="1.6" fill="#c9d1d9"/>
6
+ <circle cx="23" cy="17.75" r="1.6" fill="#c9d1d9"/>
7
+ <circle cx="17" cy="17.75" r="0.75" fill="#79c0ff"/>
8
+ <circle cx="23" cy="17.75" r="0.75" fill="#79c0ff"/>
9
+ <rect x="18.5" y="25.5" width="3" height="4" rx="1.5" fill="#c9d1d9"/>
10
+ <circle cx="13" cy="18" r="1.5" fill="#c9d1d9"/>
11
+ <circle cx="27" cy="18" r="1.5" fill="#c9d1d9"/>
12
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
2
+ <circle cx="20" cy="20" r="19" fill="#24292e"/>
3
+ <ellipse cx="20" cy="18" rx="9" ry="8" fill="#f6f8fa"/>
4
+ <rect x="13" y="15" width="14" height="5.5" rx="2.75" fill="#24292e"/>
5
+ <circle cx="17" cy="17.75" r="1.6" fill="#f6f8fa"/>
6
+ <circle cx="23" cy="17.75" r="1.6" fill="#f6f8fa"/>
7
+ <circle cx="17" cy="17.75" r="0.75" fill="#58a6ff"/>
8
+ <circle cx="23" cy="17.75" r="0.75" fill="#58a6ff"/>
9
+ <rect x="18.5" y="25.5" width="3" height="4" rx="1.5" fill="#f6f8fa"/>
10
+ <circle cx="13" cy="18" r="1.5" fill="#f6f8fa"/>
11
+ <circle cx="27" cy="18" r="1.5" fill="#f6f8fa"/>
12
+ </svg>
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class GitHubCopilotChatApi implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitHubCopilotChatApi = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const apiClient_1 = require("../shared/apiClient");
6
+ const types_1 = require("../shared/types");
7
+ class GitHubCopilotChatApi {
8
+ constructor() {
9
+ this.description = {
10
+ displayName: 'GitHub Copilot Chat API',
11
+ name: 'gitHubCopilotChatApi',
12
+ icon: {
13
+ light: 'file:gitHubCopilotChatApi.svg',
14
+ dark: 'file:gitHubCopilotChatApi.dark.svg',
15
+ },
16
+ group: ['transform'],
17
+ version: 1,
18
+ subtitle: '={{ $parameter["model"] }}',
19
+ description: 'Direct access to advanced AI models via the GitHub Copilot API in OpenAI-compatible format.',
20
+ defaults: { name: 'GitHub Copilot Chat API' },
21
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
22
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
23
+ credentials: [{ name: 'gitHubCopilotApi', required: true }],
24
+ properties: [
25
+ {
26
+ displayName: 'Operation',
27
+ name: 'operation',
28
+ type: 'options',
29
+ noDataExpression: true,
30
+ options: [
31
+ {
32
+ name: 'Chat Completion',
33
+ value: 'chatCompletion',
34
+ description: 'Send messages and receive a chat completion',
35
+ action: 'Create a chat completion',
36
+ },
37
+ {
38
+ name: 'List Models',
39
+ value: 'listModels',
40
+ description: 'List available models on the Copilot API',
41
+ action: 'List available models',
42
+ },
43
+ ],
44
+ default: 'chatCompletion',
45
+ },
46
+ {
47
+ displayName: 'Model',
48
+ name: 'model',
49
+ type: 'options',
50
+ options: types_1.SUPPORTED_MODELS.map((m) => ({ name: m.name, value: m.value })),
51
+ default: 'claude-sonnet-4-5',
52
+ description: 'AI model to use for the completion',
53
+ displayOptions: { show: { operation: ['chatCompletion'] } },
54
+ },
55
+ {
56
+ displayName: 'Custom Model ID',
57
+ name: 'customModel',
58
+ type: 'string',
59
+ default: '',
60
+ description: 'Custom model identifier when "Custom (Specify Below)" is selected',
61
+ displayOptions: { show: { operation: ['chatCompletion'], model: ['custom'] } },
62
+ },
63
+ {
64
+ displayName: 'System Prompt',
65
+ name: 'systemPrompt',
66
+ type: 'string',
67
+ typeOptions: { rows: 4 },
68
+ default: 'You are a helpful AI assistant.',
69
+ description: 'System instructions sent before the user message',
70
+ displayOptions: { show: { operation: ['chatCompletion'] } },
71
+ },
72
+ {
73
+ displayName: 'User Message',
74
+ name: 'userMessage',
75
+ type: 'string',
76
+ typeOptions: { rows: 5 },
77
+ default: '',
78
+ required: true,
79
+ description: 'The user message to send to the model',
80
+ displayOptions: { show: { operation: ['chatCompletion'] } },
81
+ },
82
+ {
83
+ displayName: 'Options',
84
+ name: 'options',
85
+ type: 'collection',
86
+ placeholder: 'Add Option',
87
+ default: {},
88
+ displayOptions: { show: { operation: ['chatCompletion'] } },
89
+ options: [
90
+ {
91
+ displayName: 'Temperature',
92
+ name: 'temperature',
93
+ type: 'number',
94
+ typeOptions: { minValue: 0, maxValue: 2, numberPrecision: 2 },
95
+ default: 1,
96
+ description: 'Controls randomness (0 = deterministic, 2 = very random)',
97
+ },
98
+ {
99
+ displayName: 'Max Tokens',
100
+ name: 'maxTokens',
101
+ type: 'number',
102
+ typeOptions: { minValue: 1 },
103
+ default: 2048,
104
+ description: 'Maximum number of tokens to generate',
105
+ },
106
+ {
107
+ displayName: 'Top P',
108
+ name: 'topP',
109
+ type: 'number',
110
+ typeOptions: { minValue: 0, maxValue: 1, numberPrecision: 2 },
111
+ default: 1,
112
+ description: 'Nucleus sampling probability mass',
113
+ },
114
+ ],
115
+ },
116
+ ],
117
+ usableAsTool: true,
118
+ };
119
+ }
120
+ async execute() {
121
+ var _a, _b, _c, _d;
122
+ const items = this.getInputData();
123
+ const returnData = [];
124
+ for (let i = 0; i < items.length; i++) {
125
+ const start = Date.now();
126
+ try {
127
+ const { authToken, baseUrl } = await (0, apiClient_1.getCredentials)(this, i);
128
+ const operation = this.getNodeParameter('operation', i);
129
+ if (operation === 'listModels') {
130
+ const modelsResponse = await (0, apiClient_1.listModels)(this, authToken, baseUrl);
131
+ returnData.push({
132
+ json: { models: modelsResponse.data },
133
+ pairedItem: { item: i },
134
+ });
135
+ continue;
136
+ }
137
+ const modelParam = this.getNodeParameter('model', i);
138
+ const customModel = this.getNodeParameter('customModel', i, '');
139
+ const model = modelParam === 'custom' ? customModel : modelParam;
140
+ const systemPrompt = this.getNodeParameter('systemPrompt', i);
141
+ const userMessage = this.getNodeParameter('userMessage', i);
142
+ const options = this.getNodeParameter('options', i, {});
143
+ const messages = [
144
+ { role: 'system', content: systemPrompt },
145
+ { role: 'user', content: userMessage },
146
+ ];
147
+ const completion = await (0, apiClient_1.chatCompletion)(this, authToken, baseUrl, {
148
+ model,
149
+ messages,
150
+ temperature: options.temperature,
151
+ max_tokens: options.maxTokens,
152
+ top_p: options.topP,
153
+ });
154
+ returnData.push({
155
+ json: {
156
+ model_used: completion.model,
157
+ response: (_c = (_b = (_a = completion.choices[0]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : '',
158
+ finish_reason: (_d = completion.choices[0]) === null || _d === void 0 ? void 0 : _d.finish_reason,
159
+ usage: completion.usage,
160
+ latency_ms: Date.now() - start,
161
+ id: completion.id,
162
+ },
163
+ pairedItem: { item: i },
164
+ });
165
+ }
166
+ catch (error) {
167
+ if (this.continueOnFail()) {
168
+ returnData.push({
169
+ json: (0, apiClient_1.normalizeError)(error, undefined, Date.now() - start),
170
+ pairedItem: { item: i },
171
+ });
172
+ continue;
173
+ }
174
+ throw error;
175
+ }
176
+ }
177
+ return [returnData];
178
+ }
179
+ }
180
+ exports.GitHubCopilotChatApi = GitHubCopilotChatApi;
181
+ //# sourceMappingURL=GitHubCopilotChatApi.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubCopilotChatApi.node.js","sourceRoot":"","sources":["../../../nodes/GitHubCopilotChatApi/GitHubCopilotChatApi.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ {
2
+ "node": "n8n-nodes-github-copilot-agent-tool.gitHubCopilotChatApi",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["AI", "Developer Tools"],
6
+ "resources": {
7
+ "primaryDocumentation": [
8
+ {
9
+ "url": "https://github.com/CyberLaboratory/n8n-github-copilot-ai-tool"
10
+ }
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
2
+ <circle cx="20" cy="20" r="19" fill="#161b22"/>
3
+ <ellipse cx="20" cy="18" rx="9" ry="8" fill="#c9d1d9"/>
4
+ <rect x="13" y="15" width="14" height="5.5" rx="2.75" fill="#161b22"/>
5
+ <circle cx="17" cy="17.75" r="1.6" fill="#c9d1d9"/>
6
+ <circle cx="23" cy="17.75" r="1.6" fill="#c9d1d9"/>
7
+ <circle cx="17" cy="17.75" r="0.75" fill="#79c0ff"/>
8
+ <circle cx="23" cy="17.75" r="0.75" fill="#79c0ff"/>
9
+ <rect x="18.5" y="25.5" width="3" height="4" rx="1.5" fill="#c9d1d9"/>
10
+ <circle cx="13" cy="18" r="1.5" fill="#c9d1d9"/>
11
+ <circle cx="27" cy="18" r="1.5" fill="#c9d1d9"/>
12
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
2
+ <circle cx="20" cy="20" r="19" fill="#24292e"/>
3
+ <ellipse cx="20" cy="18" rx="9" ry="8" fill="#f6f8fa"/>
4
+ <rect x="13" y="15" width="14" height="5.5" rx="2.75" fill="#24292e"/>
5
+ <circle cx="17" cy="17.75" r="1.6" fill="#f6f8fa"/>
6
+ <circle cx="23" cy="17.75" r="1.6" fill="#f6f8fa"/>
7
+ <circle cx="17" cy="17.75" r="0.75" fill="#58a6ff"/>
8
+ <circle cx="23" cy="17.75" r="0.75" fill="#58a6ff"/>
9
+ <rect x="18.5" y="25.5" width="3" height="4" rx="1.5" fill="#f6f8fa"/>
10
+ <circle cx="13" cy="18" r="1.5" fill="#f6f8fa"/>
11
+ <circle cx="27" cy="18" r="1.5" fill="#f6f8fa"/>
12
+ </svg>
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class GitHubCopilotChatModel implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }