@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.
Files changed (176) hide show
  1. package/ARCHITECTURE.md +1232 -0
  2. package/CONTRACT.md +450 -0
  3. package/README.md +491 -0
  4. package/dist/agents/software-teams-architect.md +155 -0
  5. package/dist/agents/software-teams-backend.md +93 -0
  6. package/dist/agents/software-teams-codebase-mapper.md +67 -0
  7. package/dist/agents/software-teams-committer.md +90 -0
  8. package/dist/agents/software-teams-debugger.md +91 -0
  9. package/dist/agents/software-teams-dev-planner.md +175 -0
  10. package/dist/agents/software-teams-devops.md +92 -0
  11. package/dist/agents/software-teams-feedback-learner.md +118 -0
  12. package/dist/agents/software-teams-frontend.md +107 -0
  13. package/dist/agents/software-teams-game-ai-engineer.md +179 -0
  14. package/dist/agents/software-teams-game-art-pipeline.md +180 -0
  15. package/dist/agents/software-teams-game-designer.md +245 -0
  16. package/dist/agents/software-teams-game-devops.md +134 -0
  17. package/dist/agents/software-teams-game-engineer.md +146 -0
  18. package/dist/agents/software-teams-game-producer.md +288 -0
  19. package/dist/agents/software-teams-game-qa.md +297 -0
  20. package/dist/agents/software-teams-game-tech-artist.md +186 -0
  21. package/dist/agents/software-teams-head-engineering.md +37 -0
  22. package/dist/agents/software-teams-perf-analyst.md +124 -0
  23. package/dist/agents/software-teams-phase-researcher.md +75 -0
  24. package/dist/agents/software-teams-plan-checker.md +87 -0
  25. package/dist/agents/software-teams-planner.md +456 -0
  26. package/dist/agents/software-teams-pr-feedback.md +127 -0
  27. package/dist/agents/software-teams-pr-generator.md +107 -0
  28. package/dist/agents/software-teams-producer.md +203 -0
  29. package/dist/agents/software-teams-product-lead.md +51 -0
  30. package/dist/agents/software-teams-programmer.md +126 -0
  31. package/dist/agents/software-teams-qa-tester.md +165 -0
  32. package/dist/agents/software-teams-quality.md +153 -0
  33. package/dist/agents/software-teams-researcher.md +151 -0
  34. package/dist/agents/software-teams-security.md +126 -0
  35. package/dist/agents/software-teams-ux-designer.md +92 -0
  36. package/dist/agents/software-teams-verifier.md +87 -0
  37. package/dist/credentials/SoftwareTeamsApi.credentials.d.ts +18 -0
  38. package/dist/credentials/SoftwareTeamsApi.credentials.d.ts.map +1 -0
  39. package/dist/credentials/SoftwareTeamsApi.credentials.js +110 -0
  40. package/dist/credentials/SoftwareTeamsApi.credentials.js.map +1 -0
  41. package/dist/credentials/softwareTeamsApi.svg +14 -0
  42. package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.d.ts +23 -0
  43. package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.d.ts.map +1 -0
  44. package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.js +308 -0
  45. package/dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.js.map +1 -0
  46. package/dist/nodes/SoftwareTeamsAgent/softwareTeamsAgent.svg +18 -0
  47. package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.d.ts +24 -0
  48. package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.d.ts.map +1 -0
  49. package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.js +2635 -0
  50. package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.js.map +1 -0
  51. package/dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.svg +6 -0
  52. package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.d.ts +6 -0
  53. package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.d.ts.map +1 -0
  54. package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.js +231 -0
  55. package/dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.js.map +1 -0
  56. package/dist/nodes/SoftwareTeamsFinaliser/softwareTeamsFinaliser.svg +11 -0
  57. package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.d.ts +25 -0
  58. package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.d.ts.map +1 -0
  59. package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.js +366 -0
  60. package/dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.js.map +1 -0
  61. package/dist/nodes/SoftwareTeamsHitl/softwareTeamsHitl.svg +11 -0
  62. package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.d.ts +15 -0
  63. package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.d.ts.map +1 -0
  64. package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.js +373 -0
  65. package/dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.js.map +1 -0
  66. package/dist/nodes/SoftwareTeamsOrchestrator/softwareTeamsOrchestrator.svg +20 -0
  67. package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.d.ts +6 -0
  68. package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.d.ts.map +1 -0
  69. package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.js +2685 -0
  70. package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.js.map +1 -0
  71. package/dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.svg +6 -0
  72. package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.d.ts +22 -0
  73. package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.d.ts.map +1 -0
  74. package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.js +2655 -0
  75. package/dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.js.map +1 -0
  76. package/dist/nodes/SoftwareTeamsPrFeedback/softwareTeamsPrFeedback.svg +8 -0
  77. package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.d.ts +19 -0
  78. package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.d.ts.map +1 -0
  79. package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.js +198 -0
  80. package/dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.js.map +1 -0
  81. package/dist/nodes/SoftwareTeamsSlackHitl/softwareTeamsSlackHitl.svg +10 -0
  82. package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.d.ts +6 -0
  83. package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.d.ts.map +1 -0
  84. package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.js +2601 -0
  85. package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.js.map +1 -0
  86. package/dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.svg +6 -0
  87. package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.d.ts +20 -0
  88. package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.d.ts.map +1 -0
  89. package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.js +175 -0
  90. package/dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.js.map +1 -0
  91. package/dist/nodes/SoftwareTeamsWorkspace/softwareTeamsWorkspace.svg +13 -0
  92. package/dist/src/execution/single-turn.d.ts +6 -0
  93. package/dist/src/execution/single-turn.d.ts.map +1 -0
  94. package/dist/src/execution/single-turn.js +2662 -0
  95. package/dist/src/execution/single-turn.js.map +1 -0
  96. package/dist/src/hitl/channels.d.ts +48 -0
  97. package/dist/src/hitl/channels.d.ts.map +1 -0
  98. package/dist/src/hitl/channels.js +297 -0
  99. package/dist/src/hitl/channels.js.map +1 -0
  100. package/dist/src/hitl/conversation-state.d.ts +45 -0
  101. package/dist/src/hitl/conversation-state.d.ts.map +1 -0
  102. package/dist/src/hitl/conversation-state.js +69 -0
  103. package/dist/src/hitl/conversation-state.js.map +1 -0
  104. package/dist/src/hitl/slack.d.ts +32 -0
  105. package/dist/src/hitl/slack.d.ts.map +1 -0
  106. package/dist/src/hitl/slack.js +202 -0
  107. package/dist/src/hitl/slack.js.map +1 -0
  108. package/dist/src/ingestion/context.d.ts +38 -0
  109. package/dist/src/ingestion/context.d.ts.map +1 -0
  110. package/dist/src/ingestion/context.js +2501 -0
  111. package/dist/src/ingestion/context.js.map +1 -0
  112. package/dist/src/ingestion/pr-feedback.d.ts +48 -0
  113. package/dist/src/ingestion/pr-feedback.d.ts.map +1 -0
  114. package/dist/src/ingestion/pr-feedback.js +85 -0
  115. package/dist/src/ingestion/pr-feedback.js.map +1 -0
  116. package/dist/src/n8n-cast.d.ts +11 -0
  117. package/dist/src/n8n-cast.d.ts.map +1 -0
  118. package/dist/src/n8n-cast.js +17 -0
  119. package/dist/src/n8n-cast.js.map +1 -0
  120. package/dist/src/orchestration/run-state/global-store.d.ts +7 -0
  121. package/dist/src/orchestration/run-state/global-store.d.ts.map +1 -0
  122. package/dist/src/orchestration/run-state/global-store.js +27 -0
  123. package/dist/src/orchestration/run-state/global-store.js.map +1 -0
  124. package/dist/src/orchestration/run-state/ordering.d.ts +14 -0
  125. package/dist/src/orchestration/run-state/ordering.d.ts.map +1 -0
  126. package/dist/src/orchestration/run-state/ordering.js +59 -0
  127. package/dist/src/orchestration/run-state/ordering.js.map +1 -0
  128. package/dist/src/orchestration/run-state/persistence.d.ts +9 -0
  129. package/dist/src/orchestration/run-state/persistence.d.ts.map +1 -0
  130. package/dist/src/orchestration/run-state/persistence.js +29 -0
  131. package/dist/src/orchestration/run-state/persistence.js.map +1 -0
  132. package/dist/src/orchestration/run-state/planning.d.ts +17 -0
  133. package/dist/src/orchestration/run-state/planning.d.ts.map +1 -0
  134. package/dist/src/orchestration/run-state/planning.js +117 -0
  135. package/dist/src/orchestration/run-state/planning.js.map +1 -0
  136. package/dist/src/orchestration/run-state/readiness.d.ts +20 -0
  137. package/dist/src/orchestration/run-state/readiness.d.ts.map +1 -0
  138. package/dist/src/orchestration/run-state/readiness.js +105 -0
  139. package/dist/src/orchestration/run-state/readiness.js.map +1 -0
  140. package/dist/src/orchestration/run-state/shapes.d.ts +53 -0
  141. package/dist/src/orchestration/run-state/shapes.d.ts.map +1 -0
  142. package/dist/src/orchestration/run-state/shapes.js +3 -0
  143. package/dist/src/orchestration/run-state/shapes.js.map +1 -0
  144. package/dist/src/orchestration/run-state/transitions.d.ts +46 -0
  145. package/dist/src/orchestration/run-state/transitions.d.ts.map +1 -0
  146. package/dist/src/orchestration/run-state/transitions.js +133 -0
  147. package/dist/src/orchestration/run-state/transitions.js.map +1 -0
  148. package/dist/src/orchestration/run-state.d.ts +8 -0
  149. package/dist/src/orchestration/run-state.d.ts.map +1 -0
  150. package/dist/src/orchestration/run-state.js +35 -0
  151. package/dist/src/orchestration/run-state.js.map +1 -0
  152. package/dist/src/output/github.d.ts +39 -0
  153. package/dist/src/output/github.d.ts.map +1 -0
  154. package/dist/src/output/github.js +2492 -0
  155. package/dist/src/output/github.js.map +1 -0
  156. package/dist/src/repo/git.d.ts +71 -0
  157. package/dist/src/repo/git.d.ts.map +1 -0
  158. package/dist/src/repo/git.js +207 -0
  159. package/dist/src/repo/git.js.map +1 -0
  160. package/dist/src/repo/merge.d.ts +36 -0
  161. package/dist/src/repo/merge.d.ts.map +1 -0
  162. package/dist/src/repo/merge.js +133 -0
  163. package/dist/src/repo/merge.js.map +1 -0
  164. package/dist/src/repo/repo-context.d.ts +23 -0
  165. package/dist/src/repo/repo-context.d.ts.map +1 -0
  166. package/dist/src/repo/repo-context.js +10 -0
  167. package/dist/src/repo/repo-context.js.map +1 -0
  168. package/dist/src/repo/teardown.d.ts +38 -0
  169. package/dist/src/repo/teardown.d.ts.map +1 -0
  170. package/dist/src/repo/teardown.js +171 -0
  171. package/dist/src/repo/teardown.js.map +1 -0
  172. package/dist/src/repo/validate.d.ts +4 -0
  173. package/dist/src/repo/validate.d.ts.map +1 -0
  174. package/dist/src/repo/validate.js +42 -0
  175. package/dist/src/repo/validate.js.map +1 -0
  176. package/package.json +73 -0
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SoftwareTeamsOrchestrator = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const node_crypto_1 = require("node:crypto");
6
+ const run_state_1 = require("../../src/orchestration/run-state");
7
+ const n8n_cast_1 = require("../../src/n8n-cast");
8
+ const SINGLE_TURN_MODULE = '../../src/execution/single-turn';
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
10
+ const { runAgentTurn } = require(SINGLE_TURN_MODULE);
11
+ const MODEL_OPTIONS = [
12
+ { name: 'Claude Sonnet 4.5 (Default)', value: 'claude-sonnet-4-5' },
13
+ { name: 'Claude Opus 4', value: 'claude-opus-4-5' },
14
+ { name: 'Claude Haiku 3.5', value: 'claude-haiku-3-5' },
15
+ ];
16
+ /**
17
+ * SoftwareTeamsOrchestrator node (AC4, R-04, R-05).
18
+ *
19
+ * Accepts an epic / sprint goal, runs ONE single-turn planning pass through the
20
+ * T3 adapter as `software-teams-planner`, and emits one output item per
21
+ * wave-task as a NodeEnvelope, ordered by wave then dependency.
22
+ * ARCHITECTURE.md §"Decision C — Canvas handoff" is the authority for item
23
+ * emission. Run state is persisted to workflow static data (R-05).
24
+ */
25
+ class SoftwareTeamsOrchestrator {
26
+ constructor() {
27
+ this.description = {
28
+ displayName: 'Software Teams Orchestrator',
29
+ name: 'softwareTeamsOrchestrator',
30
+ icon: 'file:softwareTeamsOrchestrator.svg',
31
+ group: ['transform'],
32
+ version: 1,
33
+ description: 'Break an epic / sprint goal into a waved task breakdown and delegate it ' +
34
+ 'to downstream Software Teams Agent nodes. Emits one NodeEnvelope per ' +
35
+ 'wave-task in dependency order.',
36
+ subtitle: '={{ $parameter["epic"]?.slice(0, 40) }}',
37
+ defaults: { name: 'Software Teams Orchestrator' },
38
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
39
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
40
+ credentials: [{ name: 'softwareTeamsApi', required: true }],
41
+ properties: [
42
+ {
43
+ displayName: 'Operation',
44
+ name: 'operation',
45
+ type: 'options',
46
+ noDataExpression: true,
47
+ options: [
48
+ {
49
+ name: 'Plan',
50
+ value: 'plan',
51
+ description: 'Break an epic into a waved task breakdown and fan out one envelope per task (default behaviour)',
52
+ action: 'Break an epic into a waved task breakdown and fan out one envelope per task',
53
+ },
54
+ {
55
+ name: 'Review',
56
+ value: 'review',
57
+ description: 'Validate a generated plan for one-shot readiness before fan-out (AC1 readiness gate)',
58
+ action: 'Validate a generated plan for one shot readiness before fan out',
59
+ },
60
+ {
61
+ name: 'Summary',
62
+ value: 'summary',
63
+ description: 'Read aggregated run-state for a completed or in-flight run and emit an Orchestrator-centric human summary of what each agent did',
64
+ action: 'Read aggregated run state and emit a human summary of what each agent did',
65
+ },
66
+ ],
67
+ default: 'plan',
68
+ description: 'Whether to plan a new epic, review a plan, or summarise an existing run',
69
+ },
70
+ {
71
+ displayName: 'Epic / Sprint Goal',
72
+ name: 'epic',
73
+ type: 'string',
74
+ typeOptions: { rows: 5 },
75
+ default: '',
76
+ required: true,
77
+ description: 'The epic, sprint goal, or project to break down into a waved task ' +
78
+ 'plan. Supports n8n expressions — e.g. pull it from an upstream ' +
79
+ "trigger with {{ $json.input.prompt }}.",
80
+ },
81
+ {
82
+ displayName: 'Correlation ID',
83
+ name: 'correlationId',
84
+ type: 'string',
85
+ default: '',
86
+ description: 'Stable run id carried unchanged onto every emitted envelope and used ' +
87
+ 'as the run-state / Slack-resume key (R-05). Leave blank to generate ' +
88
+ 'one. Reuse an upstream envelope\'s correlationId to continue its run.',
89
+ },
90
+ {
91
+ displayName: 'Planner Model',
92
+ name: 'model',
93
+ type: 'options',
94
+ noDataExpression: true,
95
+ options: MODEL_OPTIONS,
96
+ default: 'claude-sonnet-4-5',
97
+ description: 'Claude model used for the planning turn. Injected via the ' +
98
+ 'ANTHROPIC_DEFAULT_MODEL environment variable for the Claude CLI.',
99
+ },
100
+ ],
101
+ usableAsTool: true,
102
+ };
103
+ }
104
+ async execute() {
105
+ var _a, _b, _c, _d;
106
+ const items = this.getInputData();
107
+ const returnData = [];
108
+ // Credentials (R-02: NEVER written to output)
109
+ const credentials = await this.getCredentials('softwareTeamsApi');
110
+ process.env['ANTHROPIC_API_KEY'] = credentials.anthropicApiKey;
111
+ const githubToken = credentials.githubToken || undefined;
112
+ const boundRunAgentTurn = (input) => runAgentTurn(input, undefined, githubToken);
113
+ const staticData = this.getWorkflowStaticData('global');
114
+ const runs = (0, run_state_1.getRunStore)(staticData);
115
+ const itemCount = items.length > 0 ? items.length : 1;
116
+ // n8n per-item + continueOnFail pattern; entries() avoids a let counter.
117
+ for (const [i] of Array.from({ length: itemCount }).entries()) {
118
+ const upstream = ((_b = (_a = items[i]) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : {});
119
+ if ((0, run_state_1.isNodeEnvelope)(upstream) && upstream.status === 'needs-input') {
120
+ returnData.push({ json: (0, n8n_cast_1.toDataObject)(upstream), pairedItem: { item: i } });
121
+ continue;
122
+ }
123
+ if ((0, run_state_1.isNodeEnvelope)(upstream) && upstream.status === 'error') {
124
+ returnData.push({ json: (0, n8n_cast_1.toDataObject)(upstream), pairedItem: { item: i } });
125
+ continue;
126
+ }
127
+ if ((0, run_state_1.isNodeEnvelope)(upstream) && runs[upstream.correlationId] !== undefined) {
128
+ const existing = (0, run_state_1.deserialiseRunState)(runs[upstream.correlationId]);
129
+ if (existing !== null) {
130
+ const ctx = upstream.input.context;
131
+ if (typeof (ctx === null || ctx === void 0 ? void 0 : ctx.taskId) === 'string') {
132
+ const updated = (0, run_state_1.recordAgentResult)(existing, upstream);
133
+ runs[upstream.correlationId] = (0, run_state_1.serialiseRunState)(updated);
134
+ const results = (0, run_state_1.enumerateAgentResults)(updated);
135
+ returnData.push({
136
+ json: {
137
+ ...(0, n8n_cast_1.toDataObject)(upstream),
138
+ agentResults: results,
139
+ },
140
+ pairedItem: { item: i },
141
+ });
142
+ continue;
143
+ }
144
+ }
145
+ }
146
+ const operation = this.getNodeParameter('operation', i, 'plan') || 'plan';
147
+ if (operation === 'summary') {
148
+ const upstreamCorrelationId = (0, run_state_1.isNodeEnvelope)(upstream) ? upstream.correlationId : '';
149
+ const correlationIdParam = this.getNodeParameter('correlationId', i, '').trim();
150
+ const resolvedId = upstreamCorrelationId || correlationIdParam;
151
+ const runState = resolvedId !== '' ? (0, run_state_1.readRunState)(staticData, resolvedId) : null;
152
+ const agentLines = runState !== null
153
+ ? (0, run_state_1.enumerateAgentResults)(runState).map((r) => `- ${r.agent} (${r.taskId}): ${r.status}`)
154
+ : [];
155
+ const runSummary = runState !== null ? (0, run_state_1.summarise)(runState) : null;
156
+ const outcomeText = runSummary !== null
157
+ ? `Overall: ${runSummary.done}/${runSummary.total} done` +
158
+ (runSummary.error > 0 ? `, ${runSummary.error} error(s)` : '') +
159
+ (runSummary.needsInput > 0 ? `, ${runSummary.needsInput} awaiting input` : '') +
160
+ (runSummary.complete ? ' — run complete.' : runSummary.resumable ? ' — run resumable.' : '.')
161
+ : 'No run-state found for this correlationId.';
162
+ const summaryText = agentLines.length > 0
163
+ ? `Orchestrator run summary (${resolvedId || 'unknown'}):\n${agentLines.join('\n')}\n${outcomeText}`
164
+ : `Orchestrator run summary (${resolvedId || 'unknown'}): ${outcomeText}`;
165
+ returnData.push({
166
+ json: {
167
+ correlationId: resolvedId,
168
+ operation: 'summary',
169
+ summary: summaryText,
170
+ agentResults: runState !== null ? (0, run_state_1.enumerateAgentResults)(runState) : [],
171
+ },
172
+ pairedItem: { item: i },
173
+ });
174
+ continue;
175
+ }
176
+ // -------------------------------------------------------------------
177
+ // review — one-shot readiness gate (AC1, T6)
178
+ // -------------------------------------------------------------------
179
+ if (operation === 'review') {
180
+ const upstreamCorrelationId = (0, run_state_1.isNodeEnvelope)(upstream) ? upstream.correlationId : '';
181
+ const correlationIdParam = this.getNodeParameter('correlationId', i, '').trim();
182
+ const resolvedId = upstreamCorrelationId || correlationIdParam;
183
+ if (!resolvedId) {
184
+ const errEnv = {
185
+ correlationId: '',
186
+ agentId: 'software-teams-quality',
187
+ status: 'needs-input',
188
+ input: { prompt: '', context: null },
189
+ result: { text: 'Review requires a correlationId — the run must be planned first.' },
190
+ artifacts: [],
191
+ };
192
+ returnData.push({ json: (0, n8n_cast_1.toDataObject)(errEnv), pairedItem: { item: i } });
193
+ continue;
194
+ }
195
+ const epic = (_c = this.getNodeParameter('epic', i)) === null || _c === void 0 ? void 0 : _c.trim();
196
+ const model = this.getNodeParameter('model', i, 'claude-sonnet-4-5');
197
+ if (model) {
198
+ process.env['ANTHROPIC_DEFAULT_MODEL'] = model;
199
+ }
200
+ // Maximum 2 refine attempts (re-plan + re-review); after that, park via HITL.
201
+ const MAX_REFINE_ATTEMPTS = 2;
202
+ let accumulatedGaps = [];
203
+ for (let attempt = 0; attempt <= MAX_REFINE_ATTEMPTS; attempt++) {
204
+ const runState = (0, run_state_1.readRunState)(staticData, resolvedId);
205
+ if (runState === null) {
206
+ const errEnv = {
207
+ correlationId: resolvedId,
208
+ agentId: 'software-teams-quality',
209
+ status: 'needs-input',
210
+ input: { prompt: '', context: null },
211
+ result: { text: `No run-state found for correlationId "${resolvedId}" — the run must be planned first.` },
212
+ artifacts: [],
213
+ };
214
+ returnData.push({ json: (0, n8n_cast_1.toDataObject)(errEnv), pairedItem: { item: i } });
215
+ break;
216
+ }
217
+ // Run the single-turn quality pass
218
+ const readinessEnv = (0, run_state_1.buildReadinessEnvelope)(runState, resolvedId);
219
+ let qualityResponse;
220
+ try {
221
+ qualityResponse = await boundRunAgentTurn(readinessEnv);
222
+ }
223
+ catch (err) {
224
+ if (this.continueOnFail()) {
225
+ returnData.push({
226
+ json: { error: err instanceof Error ? err.message : String(err) },
227
+ pairedItem: { item: i },
228
+ });
229
+ break;
230
+ }
231
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Readiness review failed: ${err instanceof Error ? err.message : String(err)}`, { itemIndex: i });
232
+ }
233
+ const verdict = (0, run_state_1.parseReadinessVerdict)(qualityResponse.result.text);
234
+ if (verdict.ready) {
235
+ // PASS — emit green "ready" signal for downstream fan-out gate
236
+ const readyEnv = {
237
+ correlationId: resolvedId,
238
+ agentId: 'software-teams-quality',
239
+ status: 'ok',
240
+ input: { prompt: '', context: { operation: 'review' } },
241
+ result: { text: 'Readiness gate: PASS — plan is ready for fan-out.' },
242
+ artifacts: [],
243
+ };
244
+ returnData.push({
245
+ json: {
246
+ ...(0, n8n_cast_1.toDataObject)(readyEnv),
247
+ review: { ready: true },
248
+ },
249
+ pairedItem: { item: i },
250
+ });
251
+ break;
252
+ }
253
+ // BLOCKED — accumulate gaps
254
+ accumulatedGaps = [...accumulatedGaps, ...verdict.gaps];
255
+ // If we have exhausted refine attempts, park via HITL
256
+ if (attempt >= MAX_REFINE_ATTEMPTS) {
257
+ const parkedEnv = {
258
+ correlationId: resolvedId,
259
+ agentId: 'software-teams-quality',
260
+ status: 'needs-input',
261
+ input: { prompt: '', context: { operation: 'review' } },
262
+ result: {
263
+ text: `Readiness gate: BLOCKED after ${MAX_REFINE_ATTEMPTS} refine attempt(s).\n\nBlocking gaps:\n${accumulatedGaps.map((g) => `- ${g}`).join('\n')}`,
264
+ },
265
+ artifacts: [],
266
+ };
267
+ returnData.push({
268
+ json: {
269
+ ...(0, n8n_cast_1.toDataObject)(parkedEnv),
270
+ review: { ready: false, gaps: accumulatedGaps },
271
+ },
272
+ pairedItem: { item: i },
273
+ });
274
+ break;
275
+ }
276
+ // Auto-refine: re-invoke planEpic with gaps appended to the epic
277
+ if (!epic) {
278
+ // Cannot refine without the epic text — park immediately
279
+ const parkedEnv = {
280
+ correlationId: resolvedId,
281
+ agentId: 'software-teams-quality',
282
+ status: 'needs-input',
283
+ input: { prompt: '', context: { operation: 'review' } },
284
+ result: {
285
+ text: `Readiness gate: BLOCKED — cannot auto-refine without an epic.\n\nBlocking gaps:\n${accumulatedGaps.map((g) => `- ${g}`).join('\n')}`,
286
+ },
287
+ artifacts: [],
288
+ };
289
+ returnData.push({
290
+ json: {
291
+ ...(0, n8n_cast_1.toDataObject)(parkedEnv),
292
+ review: { ready: false, gaps: accumulatedGaps },
293
+ },
294
+ pairedItem: { item: i },
295
+ });
296
+ break;
297
+ }
298
+ const refinedEpic = `${epic}\n\n## Readiness gaps to address\n${verdict.gaps.join('\n')}`;
299
+ let refinedPlan;
300
+ try {
301
+ refinedPlan = await (0, run_state_1.planEpic)(refinedEpic, resolvedId, boundRunAgentTurn);
302
+ }
303
+ catch (err) {
304
+ if (this.continueOnFail()) {
305
+ returnData.push({
306
+ json: { error: err instanceof Error ? err.message : String(err) },
307
+ pairedItem: { item: i },
308
+ });
309
+ break;
310
+ }
311
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Readiness refine (attempt ${attempt + 1}) failed: ${err instanceof Error ? err.message : String(err)}`, { itemIndex: i });
312
+ }
313
+ if (refinedPlan.plannerNeedsInput) {
314
+ returnData.push({
315
+ json: (0, n8n_cast_1.toDataObject)(refinedPlan.plannerNeedsInput),
316
+ pairedItem: { item: i },
317
+ });
318
+ break;
319
+ }
320
+ // Persist the refined plan (overwrites the prior plan)
321
+ (0, run_state_1.writeRunState)(staticData, resolvedId, refinedPlan.state);
322
+ // Loop back to re-review the refreshed plan
323
+ }
324
+ continue;
325
+ }
326
+ const epic = (_d = this.getNodeParameter('epic', i)) === null || _d === void 0 ? void 0 : _d.trim();
327
+ if (!epic) {
328
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Software Teams Orchestrator requires an epic / sprint goal.', { itemIndex: i });
329
+ }
330
+ const correlationIdParam = this.getNodeParameter('correlationId', i, '').trim();
331
+ const correlationId = correlationIdParam || (0, node_crypto_1.randomUUID)();
332
+ const model = this.getNodeParameter('model', i, 'claude-sonnet-4-5');
333
+ if (model) {
334
+ process.env['ANTHROPIC_DEFAULT_MODEL'] = model;
335
+ }
336
+ let plan;
337
+ try {
338
+ plan = await (0, run_state_1.planEpic)(epic, correlationId, boundRunAgentTurn);
339
+ }
340
+ catch (err) {
341
+ if (this.continueOnFail()) {
342
+ returnData.push({
343
+ json: { error: err instanceof Error ? err.message : String(err) },
344
+ pairedItem: { item: i },
345
+ });
346
+ continue;
347
+ }
348
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Software Teams Orchestrator planning failed: ${err instanceof Error ? err.message : String(err)}`, { itemIndex: i });
349
+ }
350
+ if (plan.plannerNeedsInput) {
351
+ returnData.push({
352
+ json: (0, n8n_cast_1.toDataObject)(plan.plannerNeedsInput),
353
+ pairedItem: { item: i },
354
+ });
355
+ continue;
356
+ }
357
+ runs[correlationId] = (0, run_state_1.serialiseRunState)(plan.state);
358
+ const summary = (0, run_state_1.summarise)(plan.state);
359
+ plan.envelopes.forEach((env) => {
360
+ returnData.push({
361
+ json: {
362
+ ...(0, n8n_cast_1.toDataObject)(env),
363
+ run: { correlationId, taskCount: summary.total },
364
+ },
365
+ pairedItem: { item: i },
366
+ });
367
+ });
368
+ }
369
+ return [returnData];
370
+ }
371
+ }
372
+ exports.SoftwareTeamsOrchestrator = SoftwareTeamsOrchestrator;
373
+ //# sourceMappingURL=SoftwareTeamsOrchestrator.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoftwareTeamsOrchestrator.node.js","sourceRoot":"","sources":["../../../nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
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="#1B3FCC"/>
4
+ <!-- Orchestrator hub node -->
5
+ <circle cx="30" cy="14" r="6" fill="white"/>
6
+ <!-- Delegation edges to wave-1 agent nodes -->
7
+ <line x1="30" y1="20" x2="14" y2="34" stroke="white" stroke-width="1.8" stroke-linecap="round" opacity="0.85"/>
8
+ <line x1="30" y1="20" x2="30" y2="34" stroke="white" stroke-width="1.8" stroke-linecap="round" opacity="0.85"/>
9
+ <line x1="30" y1="20" x2="46" y2="34" stroke="white" stroke-width="1.8" stroke-linecap="round" opacity="0.85"/>
10
+ <!-- Wave-1 agent nodes -->
11
+ <circle cx="14" cy="36" r="4" fill="white" opacity="0.9"/>
12
+ <circle cx="30" cy="36" r="4" fill="white" opacity="0.9"/>
13
+ <circle cx="46" cy="36" r="4" fill="white" opacity="0.9"/>
14
+ <!-- Wave-2 edges (dependency handoff) -->
15
+ <line x1="14" y1="40" x2="22" y2="50" stroke="white" stroke-width="1.6" stroke-linecap="round" opacity="0.6"/>
16
+ <line x1="46" y1="40" x2="38" y2="50" stroke="white" stroke-width="1.6" stroke-linecap="round" opacity="0.6"/>
17
+ <!-- Wave-2 agent nodes -->
18
+ <circle cx="22" cy="52" r="3.2" fill="white" opacity="0.7"/>
19
+ <circle cx="38" cy="52" r="3.2" fill="white" opacity="0.7"/>
20
+ </svg>
@@ -0,0 +1,6 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class SoftwareTeamsOutput implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
6
+ //# sourceMappingURL=SoftwareTeamsOutput.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoftwareTeamsOutput.node.d.ts","sourceRoot":"","sources":["../../../nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAGrB,MAAM,cAAc,CAAC;AAWtB,qBAAa,mBAAoB,YAAW,SAAS;IACnD,WAAW,EAAE,oBAAoB,CAgG/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAyGxE"}