@websitelabs/n8n-nodes-software-teams 0.12.3
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/ARCHITECTURE.md +1232 -0
- package/CONTRACT.md +450 -0
- package/README.md +491 -0
- package/dist/agents/software-teams-architect.md +155 -0
- package/dist/agents/software-teams-backend.md +93 -0
- package/dist/agents/software-teams-codebase-mapper.md +67 -0
- package/dist/agents/software-teams-committer.md +90 -0
- package/dist/agents/software-teams-debugger.md +91 -0
- package/dist/agents/software-teams-dev-planner.md +175 -0
- package/dist/agents/software-teams-devops.md +92 -0
- package/dist/agents/software-teams-feedback-learner.md +118 -0
- package/dist/agents/software-teams-frontend.md +107 -0
- package/dist/agents/software-teams-game-ai-engineer.md +179 -0
- package/dist/agents/software-teams-game-art-pipeline.md +180 -0
- package/dist/agents/software-teams-game-designer.md +245 -0
- package/dist/agents/software-teams-game-devops.md +134 -0
- package/dist/agents/software-teams-game-engineer.md +146 -0
- package/dist/agents/software-teams-game-producer.md +288 -0
- package/dist/agents/software-teams-game-qa.md +297 -0
- package/dist/agents/software-teams-game-tech-artist.md +186 -0
- package/dist/agents/software-teams-head-engineering.md +37 -0
- package/dist/agents/software-teams-perf-analyst.md +124 -0
- package/dist/agents/software-teams-phase-researcher.md +75 -0
- package/dist/agents/software-teams-plan-checker.md +87 -0
- package/dist/agents/software-teams-planner.md +456 -0
- package/dist/agents/software-teams-pr-feedback.md +127 -0
- package/dist/agents/software-teams-pr-generator.md +107 -0
- package/dist/agents/software-teams-producer.md +203 -0
- package/dist/agents/software-teams-product-lead.md +51 -0
- package/dist/agents/software-teams-programmer.md +126 -0
- package/dist/agents/software-teams-qa-tester.md +165 -0
- package/dist/agents/software-teams-quality.md +153 -0
- package/dist/agents/software-teams-researcher.md +151 -0
- package/dist/agents/software-teams-security.md +126 -0
- package/dist/agents/software-teams-ux-designer.md +92 -0
- package/dist/agents/software-teams-verifier.md +87 -0
- package/dist/credentials/SoftwareTeamsApi.credentials.d.ts +18 -0
- package/dist/credentials/SoftwareTeamsApi.credentials.d.ts.map +1 -0
- package/dist/credentials/SoftwareTeamsApi.credentials.js +110 -0
- package/dist/credentials/SoftwareTeamsApi.credentials.js.map +1 -0
- package/dist/credentials/softwareTeamsApi.svg +14 -0
- package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.d.ts +23 -0
- package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.js +308 -0
- package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsAgent/softwareTeamsAgent.svg +18 -0
- package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.d.ts +24 -0
- package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.js +2635 -0
- package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.svg +6 -0
- package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.d.ts +6 -0
- package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.js +231 -0
- package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsFinaliser/softwareTeamsFinaliser.svg +11 -0
- package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.d.ts +25 -0
- package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.js +366 -0
- package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsHitl/softwareTeamsHitl.svg +11 -0
- package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.d.ts +15 -0
- package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.js +373 -0
- package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsOrchestrator/softwareTeamsOrchestrator.svg +20 -0
- package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.d.ts +6 -0
- package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.js +2685 -0
- package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.svg +6 -0
- package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.d.ts +22 -0
- package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.js +2655 -0
- package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsPrFeedback/softwareTeamsPrFeedback.svg +8 -0
- package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.d.ts +19 -0
- package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.js +198 -0
- package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsSlackHitl/softwareTeamsSlackHitl.svg +10 -0
- package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.d.ts +6 -0
- package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.js +2601 -0
- package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.svg +6 -0
- package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.d.ts +20 -0
- package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.d.ts.map +1 -0
- package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.js +175 -0
- package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.js.map +1 -0
- package/dist/nodes/SoftwareTeamsWorkspace/softwareTeamsWorkspace.svg +13 -0
- package/dist/src/execution/single-turn.d.ts +6 -0
- package/dist/src/execution/single-turn.d.ts.map +1 -0
- package/dist/src/execution/single-turn.js +2662 -0
- package/dist/src/execution/single-turn.js.map +1 -0
- package/dist/src/hitl/channels.d.ts +48 -0
- package/dist/src/hitl/channels.d.ts.map +1 -0
- package/dist/src/hitl/channels.js +297 -0
- package/dist/src/hitl/channels.js.map +1 -0
- package/dist/src/hitl/conversation-state.d.ts +45 -0
- package/dist/src/hitl/conversation-state.d.ts.map +1 -0
- package/dist/src/hitl/conversation-state.js +69 -0
- package/dist/src/hitl/conversation-state.js.map +1 -0
- package/dist/src/hitl/slack.d.ts +32 -0
- package/dist/src/hitl/slack.d.ts.map +1 -0
- package/dist/src/hitl/slack.js +202 -0
- package/dist/src/hitl/slack.js.map +1 -0
- package/dist/src/ingestion/context.d.ts +38 -0
- package/dist/src/ingestion/context.d.ts.map +1 -0
- package/dist/src/ingestion/context.js +2501 -0
- package/dist/src/ingestion/context.js.map +1 -0
- package/dist/src/ingestion/pr-feedback.d.ts +48 -0
- package/dist/src/ingestion/pr-feedback.d.ts.map +1 -0
- package/dist/src/ingestion/pr-feedback.js +85 -0
- package/dist/src/ingestion/pr-feedback.js.map +1 -0
- package/dist/src/n8n-cast.d.ts +11 -0
- package/dist/src/n8n-cast.d.ts.map +1 -0
- package/dist/src/n8n-cast.js +17 -0
- package/dist/src/n8n-cast.js.map +1 -0
- package/dist/src/orchestration/run-state/global-store.d.ts +7 -0
- package/dist/src/orchestration/run-state/global-store.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/global-store.js +27 -0
- package/dist/src/orchestration/run-state/global-store.js.map +1 -0
- package/dist/src/orchestration/run-state/ordering.d.ts +14 -0
- package/dist/src/orchestration/run-state/ordering.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/ordering.js +59 -0
- package/dist/src/orchestration/run-state/ordering.js.map +1 -0
- package/dist/src/orchestration/run-state/persistence.d.ts +9 -0
- package/dist/src/orchestration/run-state/persistence.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/persistence.js +29 -0
- package/dist/src/orchestration/run-state/persistence.js.map +1 -0
- package/dist/src/orchestration/run-state/planning.d.ts +17 -0
- package/dist/src/orchestration/run-state/planning.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/planning.js +117 -0
- package/dist/src/orchestration/run-state/planning.js.map +1 -0
- package/dist/src/orchestration/run-state/readiness.d.ts +20 -0
- package/dist/src/orchestration/run-state/readiness.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/readiness.js +105 -0
- package/dist/src/orchestration/run-state/readiness.js.map +1 -0
- package/dist/src/orchestration/run-state/shapes.d.ts +53 -0
- package/dist/src/orchestration/run-state/shapes.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/shapes.js +3 -0
- package/dist/src/orchestration/run-state/shapes.js.map +1 -0
- package/dist/src/orchestration/run-state/transitions.d.ts +46 -0
- package/dist/src/orchestration/run-state/transitions.d.ts.map +1 -0
- package/dist/src/orchestration/run-state/transitions.js +133 -0
- package/dist/src/orchestration/run-state/transitions.js.map +1 -0
- package/dist/src/orchestration/run-state.d.ts +8 -0
- package/dist/src/orchestration/run-state.d.ts.map +1 -0
- package/dist/src/orchestration/run-state.js +35 -0
- package/dist/src/orchestration/run-state.js.map +1 -0
- package/dist/src/output/github.d.ts +39 -0
- package/dist/src/output/github.d.ts.map +1 -0
- package/dist/src/output/github.js +2492 -0
- package/dist/src/output/github.js.map +1 -0
- package/dist/src/repo/git.d.ts +71 -0
- package/dist/src/repo/git.d.ts.map +1 -0
- package/dist/src/repo/git.js +207 -0
- package/dist/src/repo/git.js.map +1 -0
- package/dist/src/repo/merge.d.ts +36 -0
- package/dist/src/repo/merge.d.ts.map +1 -0
- package/dist/src/repo/merge.js +133 -0
- package/dist/src/repo/merge.js.map +1 -0
- package/dist/src/repo/repo-context.d.ts +23 -0
- package/dist/src/repo/repo-context.d.ts.map +1 -0
- package/dist/src/repo/repo-context.js +10 -0
- package/dist/src/repo/repo-context.js.map +1 -0
- package/dist/src/repo/teardown.d.ts +38 -0
- package/dist/src/repo/teardown.d.ts.map +1 -0
- package/dist/src/repo/teardown.js +171 -0
- package/dist/src/repo/teardown.js.map +1 -0
- package/dist/src/repo/validate.d.ts +4 -0
- package/dist/src/repo/validate.d.ts.map +1 -0
- package/dist/src/repo/validate.js +42 -0
- package/dist/src/repo/validate.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.verifySlackSignature = verifySlackSignature;
|
|
37
|
+
exports.postQuestion = postQuestion;
|
|
38
|
+
exports.postThreadReply = postThreadReply;
|
|
39
|
+
const https = __importStar(require("node:https"));
|
|
40
|
+
const crypto = __importStar(require("node:crypto"));
|
|
41
|
+
/**
|
|
42
|
+
* Verify a Slack interactivity webhook request using the HMAC-SHA256 signature
|
|
43
|
+
* Slack attaches to every inbound HTTP request.
|
|
44
|
+
*
|
|
45
|
+
* Security (R-05 / auth hardening — T13): the n8n resume URL is the outer auth
|
|
46
|
+
* layer; this adds a second layer by confirming the body was signed by YOUR Slack
|
|
47
|
+
* app's signing secret, so an attacker who learns the URL cannot forge a valid
|
|
48
|
+
* `hitlAnswer` without knowing that secret.
|
|
49
|
+
*/
|
|
50
|
+
function verifySlackSignature(slackSignature, timestamp, rawBody, signingSecret, maxAgeSeconds = 300) {
|
|
51
|
+
if (!slackSignature || !timestamp || !signingSecret)
|
|
52
|
+
return false;
|
|
53
|
+
const ts = parseInt(timestamp, 10);
|
|
54
|
+
if (isNaN(ts) || Math.abs(Date.now() / 1000 - ts) > maxAgeSeconds)
|
|
55
|
+
return false;
|
|
56
|
+
const baseString = `v0:${timestamp}:${rawBody}`;
|
|
57
|
+
const expectedSig = 'v0=' +
|
|
58
|
+
crypto.createHmac('sha256', signingSecret).update(baseString, 'utf8').digest('hex');
|
|
59
|
+
try {
|
|
60
|
+
return crypto.timingSafeEqual(Buffer.from(slackSignature, 'utf8'), Buffer.from(expectedSig, 'utf8'));
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Post an agent HITL question to Slack using Block Kit.
|
|
68
|
+
*
|
|
69
|
+
* Embeds correlationId (not the full resumeUrl) in the button value — Slack
|
|
70
|
+
* limits button values to 75 characters; the interactivity handler looks up
|
|
71
|
+
* the resumeUrl from the HITL state store keyed by correlationId.
|
|
72
|
+
*/
|
|
73
|
+
async function postQuestion(token, channel, question, correlationId, _resumeUrl) {
|
|
74
|
+
const buttonValue = correlationId.slice(0, 75);
|
|
75
|
+
const payload = {
|
|
76
|
+
channel,
|
|
77
|
+
text: `🤖 *Software Teams agent needs your input*`,
|
|
78
|
+
blocks: [
|
|
79
|
+
{
|
|
80
|
+
type: 'header',
|
|
81
|
+
text: {
|
|
82
|
+
type: 'plain_text',
|
|
83
|
+
text: '🤖 Agent question',
|
|
84
|
+
emoji: true,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'section',
|
|
89
|
+
text: {
|
|
90
|
+
type: 'mrkdwn',
|
|
91
|
+
text: question,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'divider',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'section',
|
|
99
|
+
fields: [
|
|
100
|
+
{
|
|
101
|
+
type: 'mrkdwn',
|
|
102
|
+
text: `*Correlation ID:*\n\`${correlationId}\``,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'mrkdwn',
|
|
106
|
+
text: `*Action:*\nClick the button or reply in thread, then POST to the resume URL`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: 'actions',
|
|
112
|
+
elements: [
|
|
113
|
+
{
|
|
114
|
+
type: 'button',
|
|
115
|
+
text: { type: 'plain_text', text: '💬 Provide answer', emoji: true },
|
|
116
|
+
action_id: 'hitl_reply',
|
|
117
|
+
value: buttonValue,
|
|
118
|
+
style: 'primary',
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'context',
|
|
124
|
+
elements: [
|
|
125
|
+
{
|
|
126
|
+
type: 'mrkdwn',
|
|
127
|
+
text: 'Your Slack interactivity handler receives this button click, ' +
|
|
128
|
+
'looks up the `resumeUrl` from the HITL state store by `correlationId`, ' +
|
|
129
|
+
'and POSTs `{ hitlAnswer: "<your answer>", correlationId: "<id>" }` to it.',
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
const result = await slackApiCall('chat.postMessage', token, payload);
|
|
136
|
+
return {
|
|
137
|
+
ts: result['ts'],
|
|
138
|
+
channel: result['channel'],
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Post a threaded reply in an existing Slack conversation.
|
|
143
|
+
* Uses the Slack HTTP API directly to avoid the n8n built-in Slack tool's
|
|
144
|
+
* thread_ts bug (GitHub #21252).
|
|
145
|
+
*/
|
|
146
|
+
async function postThreadReply(token, channel, threadTs, message) {
|
|
147
|
+
await slackApiCall('chat.postMessage', token, {
|
|
148
|
+
channel,
|
|
149
|
+
thread_ts: threadTs,
|
|
150
|
+
text: message,
|
|
151
|
+
mrkdwn: true,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/** Ingestion boundary: payload type is `unknown` because the Slack API accepts arbitrary JSON shapes per method. */
|
|
155
|
+
async function slackApiCall(method, token, payload) {
|
|
156
|
+
const body = JSON.stringify(payload);
|
|
157
|
+
const contentLength = Buffer.byteLength(body, 'utf8');
|
|
158
|
+
return new Promise((resolve, reject) => {
|
|
159
|
+
const req = https.request({
|
|
160
|
+
hostname: 'slack.com',
|
|
161
|
+
path: `/api/${method}`,
|
|
162
|
+
method: 'POST',
|
|
163
|
+
headers: {
|
|
164
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
165
|
+
'Content-Length': contentLength,
|
|
166
|
+
Authorization: `Bearer ${token}`,
|
|
167
|
+
Accept: 'application/json',
|
|
168
|
+
},
|
|
169
|
+
}, (res) => {
|
|
170
|
+
const chunks = [];
|
|
171
|
+
res.on('data', (chunk) => chunks.push(chunk));
|
|
172
|
+
res.on('end', () => {
|
|
173
|
+
var _a;
|
|
174
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
175
|
+
const parseResult = (() => {
|
|
176
|
+
try {
|
|
177
|
+
return { ok: true, parsed: JSON.parse(raw) };
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
return { ok: false, err: e };
|
|
181
|
+
}
|
|
182
|
+
})();
|
|
183
|
+
if (!parseResult.ok) {
|
|
184
|
+
reject(new Error(`Slack API ${method}: failed to parse response — ${String(parseResult.err)}\nBody: ${raw.slice(0, 200)}`));
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const parsed = parseResult.parsed;
|
|
188
|
+
if (!parsed['ok']) {
|
|
189
|
+
reject(new Error(`Slack API ${method} error: ${String((_a = parsed['error']) !== null && _a !== void 0 ? _a : 'unknown')}`));
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
resolve(parsed);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
res.on('error', reject);
|
|
196
|
+
});
|
|
197
|
+
req.on('error', reject);
|
|
198
|
+
req.write(body, 'utf8');
|
|
199
|
+
req.end();
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/hitl/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ClickUpRef } from "@websitelabs/software-teams";
|
|
2
|
+
/** The credential fields this adapter reads for ClickUp fetching. */
|
|
3
|
+
export interface ClickUpContextCredentials {
|
|
4
|
+
clickupApiKey: string;
|
|
5
|
+
}
|
|
6
|
+
/** The credential fields this adapter reads for Datadog fetching. */
|
|
7
|
+
export interface DatadogContextCredentials {
|
|
8
|
+
datadogApiKey: string;
|
|
9
|
+
datadogAppKey: string;
|
|
10
|
+
}
|
|
11
|
+
/** Context object emitted for a ClickUp source. */
|
|
12
|
+
export interface ClickUpContext {
|
|
13
|
+
source: "clickup";
|
|
14
|
+
ticketId: string;
|
|
15
|
+
/** PII-scrubbed markdown summary produced by formatTicketAsContext() (R-02, CONTRACT.md §2). */
|
|
16
|
+
summary: string;
|
|
17
|
+
}
|
|
18
|
+
/** Context object emitted for a Datadog source. */
|
|
19
|
+
export interface DatadogContext {
|
|
20
|
+
source: "datadog";
|
|
21
|
+
issueId: string;
|
|
22
|
+
/** PII-scrubbed markdown summary produced by formatDatadogAsContext(). Whitelisted fields only. */
|
|
23
|
+
summary: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fetch a ClickUp ticket and map it onto the envelope's input.context.
|
|
27
|
+
* Temporarily injects the credential token into process.env.CLICKUP_API_TOKEN
|
|
28
|
+
* (the env var fetchClickUpTicket reads), then restores the previous value.
|
|
29
|
+
* Returns null when the token is absent or the fetch fails (graceful degradation).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildClickUpContext(ref: ClickUpRef, creds: ClickUpContextCredentials): Promise<ClickUpContext | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch a Datadog Error Tracking issue and map it onto the envelope's input.context.
|
|
34
|
+
* Temporarily injects the credential tokens into DATADOG_API_KEY and DATADOG_APP_KEY,
|
|
35
|
+
* then restores them. Returns null when keys are absent or the fetch fails.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildDatadogContext(issueId: string, apiBase: string, creds: DatadogContextCredentials): Promise<DatadogContext | null>;
|
|
38
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/ingestion/context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwBhC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA8BhC"}
|