@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,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SoftwareTeamsApi = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SoftwareTeamsApi credential type.
|
|
6
|
+
* Holds every secret the Software Teams n8n nodes need. Secrets are stored
|
|
7
|
+
* encrypted in n8n's DB and injected at execution time — they MUST NOT appear
|
|
8
|
+
* as node parameters, node output, or log entries (R-02).
|
|
9
|
+
* Self-hosted constraint (AC9): the n8n worker must have `claude` on PATH and
|
|
10
|
+
* ANTHROPIC_API_KEY set here. Fails fast with a clear error if the binary is absent.
|
|
11
|
+
*/
|
|
12
|
+
class SoftwareTeamsApi {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.name = 'softwareTeamsApi';
|
|
15
|
+
this.displayName = 'Software Teams API';
|
|
16
|
+
this.icon = 'file:softwareTeamsApi.svg';
|
|
17
|
+
this.test = {
|
|
18
|
+
request: {
|
|
19
|
+
baseURL: 'https://api.anthropic.com',
|
|
20
|
+
url: '/v1/models',
|
|
21
|
+
headers: {
|
|
22
|
+
'x-api-key': '={{ $credentials.anthropicApiKey }}',
|
|
23
|
+
'anthropic-version': '2023-06-01',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
this.documentationUrl = 'https://github.com/websitelabs/software-teams/tree/main/n8n#self-hosted-constraint';
|
|
28
|
+
this.properties = [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Anthropic API Key',
|
|
31
|
+
name: 'anthropicApiKey',
|
|
32
|
+
type: 'string',
|
|
33
|
+
typeOptions: { password: true },
|
|
34
|
+
default: '',
|
|
35
|
+
required: true,
|
|
36
|
+
description: 'Your Anthropic API key (https://console.anthropic.com/). ' +
|
|
37
|
+
'Injected into the claude CLI process via ANTHROPIC_API_KEY — ' +
|
|
38
|
+
'never passed as a CLI argument or written to node output.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
displayName: 'ClickUp API Token',
|
|
42
|
+
name: 'clickupApiKey',
|
|
43
|
+
type: 'string',
|
|
44
|
+
typeOptions: { password: true },
|
|
45
|
+
default: '',
|
|
46
|
+
description: 'ClickUp personal API token. Used by trigger and context-fetch nodes ' +
|
|
47
|
+
'that pull ticket detail for PII-scrubbed context (reuses src/utils/clickup.ts).',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
displayName: 'Datadog API Key',
|
|
51
|
+
name: 'datadogApiKey',
|
|
52
|
+
type: 'string',
|
|
53
|
+
typeOptions: { password: true },
|
|
54
|
+
default: '',
|
|
55
|
+
description: 'Datadog API key. Used by trigger nodes that ingest Datadog issues as ' +
|
|
56
|
+
'workflow inputs (reuses src/utils/datadog.ts PII scrubbing).',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Datadog Application Key',
|
|
60
|
+
name: 'datadogAppKey',
|
|
61
|
+
type: 'string',
|
|
62
|
+
typeOptions: { password: true },
|
|
63
|
+
default: '',
|
|
64
|
+
description: 'Datadog application key (required alongside the API key for certain ' +
|
|
65
|
+
'Datadog API endpoints).',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
displayName: 'GitHub Token',
|
|
69
|
+
name: 'githubToken',
|
|
70
|
+
type: 'string',
|
|
71
|
+
typeOptions: { password: true },
|
|
72
|
+
default: '',
|
|
73
|
+
description: 'GitHub personal access token or fine-grained token with repo + PR ' +
|
|
74
|
+
'write scopes. Used by the GitHub Output node (T7) to open PRs/issues.',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
displayName: 'Slack Bot Token',
|
|
78
|
+
name: 'slackBotToken',
|
|
79
|
+
type: 'string',
|
|
80
|
+
typeOptions: { password: true },
|
|
81
|
+
default: '',
|
|
82
|
+
description: 'Slack Bot OAuth token (xoxb-…). Used by the HITL state machine (T10) ' +
|
|
83
|
+
'to post agent questions and receive human replies via Slack webhooks.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
displayName: 'Discord Bot Token',
|
|
87
|
+
name: 'discordBotToken',
|
|
88
|
+
type: 'string',
|
|
89
|
+
typeOptions: { password: true },
|
|
90
|
+
default: '',
|
|
91
|
+
description: 'Discord Bot Token. Used by the channel-agnostic HITL node (T8) to ' +
|
|
92
|
+
'post agent questions and acknowledgements to a Discord channel via the ' +
|
|
93
|
+
'Discord REST API. The bot must have Send Messages permission in the target channel.',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
displayName: 'SMTP URL',
|
|
97
|
+
name: 'smtpUrl',
|
|
98
|
+
type: 'string',
|
|
99
|
+
typeOptions: { password: true },
|
|
100
|
+
default: '',
|
|
101
|
+
description: 'Single SMTP connection string (e.g. smtp://user:pass@host:port or ' +
|
|
102
|
+
'smtps://user:pass@host:465). Used by the channel-agnostic HITL node (T8) ' +
|
|
103
|
+
'to send agent questions and acknowledgements via email. Encodes all SMTP ' +
|
|
104
|
+
'credentials in one URL — do NOT add separate host/user/password fields.',
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.SoftwareTeamsApi = SoftwareTeamsApi;
|
|
110
|
+
//# sourceMappingURL=SoftwareTeamsApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoftwareTeamsApi.credentials.js","sourceRoot":"","sources":["../../credentials/SoftwareTeamsApi.credentials.ts"],"names":[],"mappings":";;;AAEA;;;;;;;GAOG;AACH,MAAa,gBAAgB;IAA7B;QACE,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,oBAAoB,CAAC;QACnC,SAAI,GAAG,2BAAoC,CAAC;QAC5C,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,YAAY;gBACjB,OAAO,EAAE;oBACP,WAAW,EAAE,qCAAqC;oBAClD,mBAAmB,EAAE,YAAY;iBAClC;aACF;SACF,CAAC;QACF,qBAAgB,GACd,oFAAoF,CAAC;QAEvF,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,2DAA2D;oBAC3D,+DAA+D;oBAC/D,2DAA2D;aAC9D;YAED;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,sEAAsE;oBACtE,iFAAiF;aACpF;YAED;gBACE,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,uEAAuE;oBACvE,8DAA8D;aACjE;YAED;gBACE,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,sEAAsE;oBACtE,yBAAyB;aAC5B;YAED;gBACE,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,oEAAoE;oBACpE,uEAAuE;aAC1E;YAED;gBACE,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,uEAAuE;oBACvE,uEAAuE;aAC1E;YAED;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,oEAAoE;oBACpE,yEAAyE;oBACzE,qFAAqF;aACxF;YAED;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACT,oEAAoE;oBACpE,2EAA2E;oBAC3E,2EAA2E;oBAC3E,yEAAyE;aAC5E;SACF,CAAC;IACJ,CAAC;CAAA;AA/GD,4CA+GC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" width="60" height="60">
|
|
2
|
+
<!-- Background rounded rectangle -->
|
|
3
|
+
<rect width="60" height="60" rx="10" ry="10" fill="#2D5BFF"/>
|
|
4
|
+
<!-- Key shape -->
|
|
5
|
+
<circle cx="24" cy="26" r="8" fill="none" stroke="white" stroke-width="2.5"/>
|
|
6
|
+
<circle cx="24" cy="26" r="3" fill="white"/>
|
|
7
|
+
<!-- Key stem -->
|
|
8
|
+
<line x1="30" y1="28" x2="46" y2="28" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
|
|
9
|
+
<!-- Key teeth -->
|
|
10
|
+
<line x1="42" y1="28" x2="42" y2="34" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
|
|
11
|
+
<line x1="38" y1="28" x2="38" y2="32" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
|
|
12
|
+
<!-- Label -->
|
|
13
|
+
<text x="30" y="48" text-anchor="middle" fill="white" font-family="sans-serif" font-size="8" font-weight="bold">API</text>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* SoftwareTeamsAgent node.
|
|
4
|
+
*
|
|
5
|
+
* Runs exactly ONE specialist turn via the Claude CLI (`runAgentTurn` from T3)
|
|
6
|
+
* and emits a typed `NodeEnvelope` on its output port.
|
|
7
|
+
*
|
|
8
|
+
* Handoff: When the input item carries an upstream `NodeEnvelope` (identified
|
|
9
|
+
* by `correlationId` + `agentId` + `status` fields), this node folds the
|
|
10
|
+
* upstream result/artifacts into `input.context` per CONTRACT.md §3, preserves
|
|
11
|
+
* `correlationId`, and sets `agentId` to this node's chosen specialist.
|
|
12
|
+
*
|
|
13
|
+
* First node: When there is no upstream envelope, a fresh `correlationId` is
|
|
14
|
+
* generated and `input.context` is taken from the optional Context parameter.
|
|
15
|
+
*
|
|
16
|
+
* `needs-input`: A downstream Switch node can route on
|
|
17
|
+
* `{{ $json.status === 'needs-input' }}` to feed the Slack HITL flow (T10).
|
|
18
|
+
*/
|
|
19
|
+
export declare class SoftwareTeamsAgent implements INodeType {
|
|
20
|
+
description: INodeTypeDescription;
|
|
21
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SoftwareTeamsAgent.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoftwareTeamsAgent.node.d.ts","sourceRoot":"","sources":["../../../nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAGrB,MAAM,cAAc,CAAC;AAwEtB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,WAAW,EAAE,oBAAoB,CAgE/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA+ExE"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SoftwareTeamsAgent = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const node_os_1 = require("node:os");
|
|
8
|
+
const run_state_1 = require("../../src/orchestration/run-state");
|
|
9
|
+
const n8n_cast_1 = require("../../src/n8n-cast");
|
|
10
|
+
const git_1 = require("../../src/repo/git");
|
|
11
|
+
const validate_1 = require("../../src/repo/validate");
|
|
12
|
+
const SINGLE_TURN_MODULE = '../../src/execution/single-turn';
|
|
13
|
+
const runAgentTurn = (input, repoContext, githubToken) =>
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
15
|
+
require(SINGLE_TURN_MODULE).runAgentTurn(input, repoContext, githubToken);
|
|
16
|
+
const SPECIALIST_OPTIONS = [
|
|
17
|
+
{ name: 'Architect', value: 'software-teams-architect' },
|
|
18
|
+
{ name: 'Backend Engineer', value: 'software-teams-backend' },
|
|
19
|
+
{ name: 'Codebase Mapper', value: 'software-teams-codebase-mapper' },
|
|
20
|
+
{ name: 'Committer', value: 'software-teams-committer' },
|
|
21
|
+
{ name: 'Debugger', value: 'software-teams-debugger' },
|
|
22
|
+
{ name: 'Dev Planner', value: 'software-teams-dev-planner' },
|
|
23
|
+
{ name: 'DevOps', value: 'software-teams-devops' },
|
|
24
|
+
{ name: 'Feedback Learner', value: 'software-teams-feedback-learner' },
|
|
25
|
+
{ name: 'Frontend Engineer', value: 'software-teams-frontend' },
|
|
26
|
+
{ name: 'Game AI Engineer', value: 'software-teams-game-ai-engineer' },
|
|
27
|
+
{ name: 'Game Art Pipeline', value: 'software-teams-game-art-pipeline' },
|
|
28
|
+
{ name: 'Game Designer', value: 'software-teams-game-designer' },
|
|
29
|
+
{ name: 'Game DevOps', value: 'software-teams-game-devops' },
|
|
30
|
+
{ name: 'Game Engineer', value: 'software-teams-game-engineer' },
|
|
31
|
+
{ name: 'Game Producer', value: 'software-teams-game-producer' },
|
|
32
|
+
{ name: 'Game QA', value: 'software-teams-game-qa' },
|
|
33
|
+
{ name: 'Game Tech Artist', value: 'software-teams-game-tech-artist' },
|
|
34
|
+
{ name: 'Head of Engineering', value: 'software-teams-head-engineering' },
|
|
35
|
+
{ name: 'Performance Analyst', value: 'software-teams-perf-analyst' },
|
|
36
|
+
{ name: 'Phase Researcher', value: 'software-teams-phase-researcher' },
|
|
37
|
+
{ name: 'Plan Checker', value: 'software-teams-plan-checker' },
|
|
38
|
+
{ name: 'Planner', value: 'software-teams-planner' },
|
|
39
|
+
{ name: 'PR Feedback', value: 'software-teams-pr-feedback' },
|
|
40
|
+
{ name: 'PR Generator', value: 'software-teams-pr-generator' },
|
|
41
|
+
{ name: 'Producer', value: 'software-teams-producer' },
|
|
42
|
+
{ name: 'Product Lead', value: 'software-teams-product-lead' },
|
|
43
|
+
{ name: 'Programmer', value: 'software-teams-programmer' },
|
|
44
|
+
{ name: 'QA Tester', value: 'software-teams-qa-tester' },
|
|
45
|
+
{ name: 'Quality Engineer', value: 'software-teams-quality' },
|
|
46
|
+
{ name: 'Researcher', value: 'software-teams-researcher' },
|
|
47
|
+
{ name: 'Security Engineer', value: 'software-teams-security' },
|
|
48
|
+
{ name: 'UX Designer', value: 'software-teams-ux-designer' },
|
|
49
|
+
{ name: 'Verifier', value: 'software-teams-verifier' },
|
|
50
|
+
];
|
|
51
|
+
const MODEL_OPTIONS = [
|
|
52
|
+
{ name: 'Claude Sonnet 4.5 (Default)', value: 'claude-sonnet-4-5' },
|
|
53
|
+
{ name: 'Claude Opus 4', value: 'claude-opus-4-5' },
|
|
54
|
+
{ name: 'Claude Haiku 3.5', value: 'claude-haiku-3-5' },
|
|
55
|
+
];
|
|
56
|
+
/**
|
|
57
|
+
* SoftwareTeamsAgent node.
|
|
58
|
+
*
|
|
59
|
+
* Runs exactly ONE specialist turn via the Claude CLI (`runAgentTurn` from T3)
|
|
60
|
+
* and emits a typed `NodeEnvelope` on its output port.
|
|
61
|
+
*
|
|
62
|
+
* Handoff: When the input item carries an upstream `NodeEnvelope` (identified
|
|
63
|
+
* by `correlationId` + `agentId` + `status` fields), this node folds the
|
|
64
|
+
* upstream result/artifacts into `input.context` per CONTRACT.md §3, preserves
|
|
65
|
+
* `correlationId`, and sets `agentId` to this node's chosen specialist.
|
|
66
|
+
*
|
|
67
|
+
* First node: When there is no upstream envelope, a fresh `correlationId` is
|
|
68
|
+
* generated and `input.context` is taken from the optional Context parameter.
|
|
69
|
+
*
|
|
70
|
+
* `needs-input`: A downstream Switch node can route on
|
|
71
|
+
* `{{ $json.status === 'needs-input' }}` to feed the Slack HITL flow (T10).
|
|
72
|
+
*/
|
|
73
|
+
class SoftwareTeamsAgent {
|
|
74
|
+
constructor() {
|
|
75
|
+
this.description = {
|
|
76
|
+
displayName: 'Software Teams Agent',
|
|
77
|
+
name: 'softwareTeamsAgent',
|
|
78
|
+
icon: 'file:softwareTeamsAgent.svg',
|
|
79
|
+
group: ['transform'],
|
|
80
|
+
version: 1,
|
|
81
|
+
description: 'Run a Software Teams specialist agent for one turn. ' +
|
|
82
|
+
'Emits a NodeEnvelope; wire multiple Agent nodes A→B for multi-agent handoff.',
|
|
83
|
+
subtitle: '={{ $parameter["specialist"] }}',
|
|
84
|
+
defaults: { name: 'Software Teams Agent' },
|
|
85
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
86
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
87
|
+
credentials: [
|
|
88
|
+
{ name: 'softwareTeamsApi', required: true },
|
|
89
|
+
],
|
|
90
|
+
properties: [
|
|
91
|
+
{
|
|
92
|
+
displayName: 'Specialist',
|
|
93
|
+
name: 'specialist',
|
|
94
|
+
type: 'options',
|
|
95
|
+
noDataExpression: true,
|
|
96
|
+
options: SPECIALIST_OPTIONS,
|
|
97
|
+
default: 'software-teams-programmer',
|
|
98
|
+
required: true,
|
|
99
|
+
description: 'The Software Teams specialist to invoke for this turn. ' +
|
|
100
|
+
'Matches a name in agents/*.md.',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
displayName: 'Prompt',
|
|
104
|
+
name: 'prompt',
|
|
105
|
+
type: 'string',
|
|
106
|
+
typeOptions: { rows: 5 },
|
|
107
|
+
default: '',
|
|
108
|
+
required: true,
|
|
109
|
+
description: 'The task instruction for this specialist turn (the `input.prompt` ' +
|
|
110
|
+
'field of the NodeEnvelope). Supports n8n expressions.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
displayName: 'Context (JSON)',
|
|
114
|
+
name: 'context',
|
|
115
|
+
type: 'string',
|
|
116
|
+
typeOptions: { rows: 4 },
|
|
117
|
+
default: '',
|
|
118
|
+
description: 'Optional JSON context for the first node in a workflow. ' +
|
|
119
|
+
'Ignored when an upstream NodeEnvelope is present (handoff nodes ' +
|
|
120
|
+
'inherit context from the upstream result automatically).',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
displayName: 'Model',
|
|
124
|
+
name: 'model',
|
|
125
|
+
type: 'options',
|
|
126
|
+
noDataExpression: true,
|
|
127
|
+
options: MODEL_OPTIONS,
|
|
128
|
+
default: 'claude-sonnet-4-5',
|
|
129
|
+
description: 'Claude model to use for this turn. Injected via the ' +
|
|
130
|
+
'ANTHROPIC_DEFAULT_MODEL environment variable for the Claude CLI.',
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
usableAsTool: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async execute() {
|
|
137
|
+
var _a, _b;
|
|
138
|
+
const items = this.getInputData();
|
|
139
|
+
const returnData = [];
|
|
140
|
+
const credentials = await this.getCredentials('softwareTeamsApi');
|
|
141
|
+
process.env['ANTHROPIC_API_KEY'] = credentials.anthropicApiKey;
|
|
142
|
+
const githubToken = credentials.githubToken || undefined;
|
|
143
|
+
const staticData = this.getWorkflowStaticData('global');
|
|
144
|
+
const itemCount = items.length > 0 ? items.length : 1;
|
|
145
|
+
for (const [i] of Array.from({ length: itemCount }).entries()) {
|
|
146
|
+
const specialist = this.getNodeParameter('specialist', i);
|
|
147
|
+
const prompt = this.getNodeParameter('prompt', i);
|
|
148
|
+
const contextRaw = this.getNodeParameter('context', i, '');
|
|
149
|
+
const model = this.getNodeParameter('model', i, 'claude-sonnet-4-5');
|
|
150
|
+
if (model) {
|
|
151
|
+
process.env['ANTHROPIC_DEFAULT_MODEL'] = model;
|
|
152
|
+
}
|
|
153
|
+
const upstream = ((_b = (_a = items[i]) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : {});
|
|
154
|
+
if (shouldSkipForSpecialist(upstream, specialist)) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
const isUpstreamEnvelope = typeof upstream['correlationId'] === 'string' &&
|
|
158
|
+
upstream['correlationId'].length > 0 &&
|
|
159
|
+
typeof upstream['agentId'] === 'string' &&
|
|
160
|
+
typeof upstream['status'] === 'string';
|
|
161
|
+
const envelope = isUpstreamEnvelope
|
|
162
|
+
? buildHandoffEnvelope((0, n8n_cast_1.fromDataObject)(items[i].json), specialist, prompt)
|
|
163
|
+
: buildFreshEnvelope(specialist, prompt, contextRaw);
|
|
164
|
+
const repoDescriptor = resolveRepoDescriptor(upstream);
|
|
165
|
+
let result;
|
|
166
|
+
try {
|
|
167
|
+
if (repoDescriptor) {
|
|
168
|
+
result = await executeWithWorktree({
|
|
169
|
+
envelope,
|
|
170
|
+
repoDescriptor,
|
|
171
|
+
specialist,
|
|
172
|
+
githubToken,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
result = await runAgentTurn(envelope, undefined, githubToken);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (this.continueOnFail()) {
|
|
181
|
+
returnData.push({
|
|
182
|
+
json: { error: err instanceof Error ? err.message : String(err) },
|
|
183
|
+
pairedItem: { item: i },
|
|
184
|
+
});
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Software Teams Agent execution failed: ${err instanceof Error ? err.message : String(err)}`, { itemIndex: i });
|
|
188
|
+
}
|
|
189
|
+
persistResultForward(staticData, result);
|
|
190
|
+
returnData.push({
|
|
191
|
+
json: (0, n8n_cast_1.toDataObject)(result),
|
|
192
|
+
pairedItem: { item: i },
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return [returnData];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.SoftwareTeamsAgent = SoftwareTeamsAgent;
|
|
199
|
+
/** ADR-004 Decision J — Agent forward-persist: fold the terminal envelope into the GLOBAL run-state (skip if unseeded), in ADDITION to the wire emit. */
|
|
200
|
+
function persistResultForward(staticData, result) {
|
|
201
|
+
const state = (0, run_state_1.readRunState)(staticData, result.correlationId);
|
|
202
|
+
if (state === null) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
(0, run_state_1.writeRunState)(staticData, result.correlationId, (0, run_state_1.recordAgentResult)(state, result));
|
|
206
|
+
}
|
|
207
|
+
function shouldSkipForSpecialist(upstream, specialist) {
|
|
208
|
+
const upstreamAgentId = upstream['agentId'];
|
|
209
|
+
return typeof upstreamAgentId === 'string' &&
|
|
210
|
+
upstreamAgentId.length > 0 &&
|
|
211
|
+
upstreamAgentId !== specialist;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Build an A→B handoff envelope (CONTRACT.md §3).
|
|
215
|
+
* Folds upstream result + artifacts into input.context; correlationId is
|
|
216
|
+
* carried unchanged, agentId is rewritten to this node's specialist.
|
|
217
|
+
*/
|
|
218
|
+
function buildHandoffEnvelope(up, specialist, prompt) {
|
|
219
|
+
const upCtx = up.input.context;
|
|
220
|
+
const taskId = typeof (upCtx === null || upCtx === void 0 ? void 0 : upCtx.taskId) === 'string' ? upCtx.taskId : undefined;
|
|
221
|
+
return {
|
|
222
|
+
correlationId: up.correlationId,
|
|
223
|
+
agentId: specialist,
|
|
224
|
+
status: 'ok',
|
|
225
|
+
input: {
|
|
226
|
+
prompt,
|
|
227
|
+
context: {
|
|
228
|
+
from: up.agentId,
|
|
229
|
+
upstreamStatus: up.status,
|
|
230
|
+
result: up.result,
|
|
231
|
+
artifacts: up.artifacts,
|
|
232
|
+
...(taskId !== undefined ? { taskId } : {}),
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
result: { text: '' },
|
|
236
|
+
artifacts: Array.isArray(up.artifacts) ? [...up.artifacts] : [],
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Build a fresh first-node envelope with a new correlationId.
|
|
241
|
+
* `contextRaw` is parsed as JSON if possible, otherwise treated as a plain string.
|
|
242
|
+
*/
|
|
243
|
+
function buildFreshEnvelope(specialist, prompt, contextRaw) {
|
|
244
|
+
const parsedContext = contextRaw && contextRaw.trim()
|
|
245
|
+
? (() => {
|
|
246
|
+
try {
|
|
247
|
+
return JSON.parse(contextRaw);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return contextRaw;
|
|
251
|
+
}
|
|
252
|
+
})()
|
|
253
|
+
: null;
|
|
254
|
+
return {
|
|
255
|
+
correlationId: (0, node_crypto_1.randomUUID)(),
|
|
256
|
+
agentId: specialist,
|
|
257
|
+
status: 'ok',
|
|
258
|
+
input: { prompt, context: parsedContext },
|
|
259
|
+
result: { text: '' },
|
|
260
|
+
artifacts: [],
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function resolveRepoDescriptor(upstream) {
|
|
264
|
+
const repo = upstream['repo'];
|
|
265
|
+
if (repo !== null &&
|
|
266
|
+
typeof repo === 'object' &&
|
|
267
|
+
typeof repo['cloneUrl'] === 'string' &&
|
|
268
|
+
typeof repo['ownerRepo'] === 'string' &&
|
|
269
|
+
typeof repo['baseBranch'] === 'string') {
|
|
270
|
+
return repo;
|
|
271
|
+
}
|
|
272
|
+
return undefined;
|
|
273
|
+
}
|
|
274
|
+
async function executeWithWorktree(opts) {
|
|
275
|
+
const { envelope, repoDescriptor, specialist, githubToken } = opts;
|
|
276
|
+
const { cloneUrl, ownerRepo, baseBranch } = repoDescriptor;
|
|
277
|
+
(0, validate_1.validateOwnerRepo)(ownerRepo);
|
|
278
|
+
(0, validate_1.validateBranchName)(baseBranch);
|
|
279
|
+
(0, validate_1.validateCloneUrl)(cloneUrl);
|
|
280
|
+
const correlationId = envelope.correlationId;
|
|
281
|
+
const repoDir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), 'st-workspace', correlationId);
|
|
282
|
+
const authenticatedCloneUrl = githubToken && cloneUrl.startsWith('https://')
|
|
283
|
+
? cloneUrl.replace('https://', `https://x-access-token:${githubToken}@`)
|
|
284
|
+
: cloneUrl;
|
|
285
|
+
await (0, git_1.cloneRepo)({ cloneUrl: authenticatedCloneUrl, branch: baseBranch, destDir: repoDir }).catch(() => undefined);
|
|
286
|
+
const worktreePath = await (0, git_1.createWorktree)({
|
|
287
|
+
repoDir,
|
|
288
|
+
agentId: specialist,
|
|
289
|
+
correlationId,
|
|
290
|
+
baseBranch,
|
|
291
|
+
});
|
|
292
|
+
const repoContext = {
|
|
293
|
+
cloneUrl,
|
|
294
|
+
ownerRepo,
|
|
295
|
+
baseBranch,
|
|
296
|
+
correlationId,
|
|
297
|
+
worktreePath,
|
|
298
|
+
};
|
|
299
|
+
try {
|
|
300
|
+
const agentResult = await runAgentTurn(envelope, repoContext, githubToken);
|
|
301
|
+
const changeRef = await (0, git_1.capturePortableChange)({ worktreePath, baseBranch });
|
|
302
|
+
return changeRef ? { ...agentResult, changeRef } : agentResult;
|
|
303
|
+
}
|
|
304
|
+
finally {
|
|
305
|
+
await (0, git_1.removeWorktree)({ repoDir, worktreePath }).catch(() => undefined);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=SoftwareTeamsAgent.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoftwareTeamsAgent.node.js","sourceRoot":"","sources":["../../../nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" width="60" height="60">
|
|
2
|
+
<!-- Background rounded rectangle -->
|
|
3
|
+
<rect width="60" height="60" rx="10" ry="10" fill="#2D5BFF"/>
|
|
4
|
+
<!-- Agent head / brain icon -->
|
|
5
|
+
<circle cx="30" cy="22" r="10" fill="none" stroke="white" stroke-width="2.5"/>
|
|
6
|
+
<!-- Eyes -->
|
|
7
|
+
<circle cx="26" cy="20" r="1.5" fill="white"/>
|
|
8
|
+
<circle cx="34" cy="20" r="1.5" fill="white"/>
|
|
9
|
+
<!-- Smile -->
|
|
10
|
+
<path d="M26 25 Q30 28 34 25" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round"/>
|
|
11
|
+
<!-- Connection lines (multi-agent handoff) -->
|
|
12
|
+
<line x1="16" y1="44" x2="30" y2="36" stroke="white" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
|
13
|
+
<line x1="30" y1="36" x2="44" y2="44" stroke="white" stroke-width="1.8" stroke-linecap="round" opacity="0.8"/>
|
|
14
|
+
<!-- Node dots -->
|
|
15
|
+
<circle cx="16" cy="44" r="2.5" fill="white" opacity="0.8"/>
|
|
16
|
+
<circle cx="30" cy="36" r="2.5" fill="white"/>
|
|
17
|
+
<circle cx="44" cy="44" r="2.5" fill="white" opacity="0.8"/>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
/**
|
|
3
|
+
* SoftwareTeamsCleanup node (AC5, R-04).
|
|
4
|
+
*
|
|
5
|
+
* Fired by a GitHub MERGE webhook (`pull_request` event, `closed` action,
|
|
6
|
+
* `merged === true`). Recovers the run's `correlationId` from the PR body tag
|
|
7
|
+
* (via `parseCorrelationTag`) and idempotently tears down all per-run state:
|
|
8
|
+
*
|
|
9
|
+
* 1. `runs[correlationId]` in global static data (deleteRunState)
|
|
10
|
+
* 2. Conversation state (deleteState)
|
|
11
|
+
* 3. Git worktrees (teardownWorktree)
|
|
12
|
+
* 4. Repo clones (teardownClone)
|
|
13
|
+
* 5. Agent memories (teardownAgentMemories)
|
|
14
|
+
* 6. Plan/task artefacts (teardownPlanArtefacts)
|
|
15
|
+
*
|
|
16
|
+
* Each step is independently guarded — one failure never aborts the rest.
|
|
17
|
+
* Running twice for the same correlationId is a clean no-op (AC5/R-04).
|
|
18
|
+
* Forward-only teardown; no Agent->Orchestrator return edge (ADR invariant).
|
|
19
|
+
*/
|
|
20
|
+
export declare class SoftwareTeamsCleanup implements INodeType {
|
|
21
|
+
description: INodeTypeDescription;
|
|
22
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SoftwareTeamsCleanup.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoftwareTeamsCleanup.node.d.ts","sourceRoot":"","sources":["../../../nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAGrB,MAAM,cAAc,CAAC;AAwBtB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,WAAW,EAAE,oBAAoB,CAmF/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAkLxE"}
|