@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,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertWithinBase = assertWithinBase;
|
|
4
|
+
exports.teardownWorktree = teardownWorktree;
|
|
5
|
+
exports.teardownClone = teardownClone;
|
|
6
|
+
exports.teardownAgentMemories = teardownAgentMemories;
|
|
7
|
+
exports.teardownPlanArtefacts = teardownPlanArtefacts;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const git_js_1 = require("./git.js");
|
|
11
|
+
// ── Path safety guard ─────────────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* Assert that `targetPath` is strictly inside `basePath` after resolving both
|
|
14
|
+
* to absolute canonical paths. Throws if the target IS the base, is above it,
|
|
15
|
+
* or escapes via `..` traversal.
|
|
16
|
+
*
|
|
17
|
+
* Used by the rm-based helpers to prevent accidental deletion of the repo root,
|
|
18
|
+
* `/`, or any path outside the allowed run base (R-04).
|
|
19
|
+
*/
|
|
20
|
+
function assertWithinBase(targetPath, basePath) {
|
|
21
|
+
const absTarget = (0, node_path_1.resolve)(targetPath);
|
|
22
|
+
const absBase = (0, node_path_1.resolve)(basePath);
|
|
23
|
+
if (absTarget === absBase) {
|
|
24
|
+
throw new Error(`Path safety violation: target "${absTarget}" is the base directory itself — refusing to delete.`);
|
|
25
|
+
}
|
|
26
|
+
const rel = (0, node_path_1.relative)(absBase, absTarget);
|
|
27
|
+
// relative() returns ".." or "../foo" when the target is outside the base,
|
|
28
|
+
// or an absolute path when the paths are on different drives (Windows).
|
|
29
|
+
if (rel.startsWith("..") || rel.startsWith(node_path_1.sep) || (0, node_path_1.resolve)(absBase, rel) !== absTarget) {
|
|
30
|
+
throw new Error(`Path safety violation: target "${absTarget}" is outside base "${absBase}" — refusing to delete.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ── teardownWorktree ──────────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* Idempotently remove a git worktree rooted at `worktreePath` inside
|
|
36
|
+
* `repoRoot`. Delegates to the existing headless `removeWorktree` from
|
|
37
|
+
* `src/repo/git.ts`. Returns `{ removed: false }` (never throws) when the
|
|
38
|
+
* worktree path does not exist or git reports it is not a working tree.
|
|
39
|
+
*/
|
|
40
|
+
async function teardownWorktree(repoRoot, worktreePath) {
|
|
41
|
+
if (!(0, node_fs_1.existsSync)(worktreePath)) {
|
|
42
|
+
return { removed: false, detail: "worktree path does not exist" };
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await (0, git_js_1.removeWorktree)({ repoDir: repoRoot, worktreePath });
|
|
46
|
+
return { removed: true };
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
50
|
+
// Treat "not a working tree" / ENOENT as already-absent — idempotent.
|
|
51
|
+
if (/not a working tree|ENOENT|is not a valid worktree|No such file/i.test(msg)) {
|
|
52
|
+
return { removed: false, detail: msg };
|
|
53
|
+
}
|
|
54
|
+
// Genuine unexpected error — still do not throw (R-04 idempotency),
|
|
55
|
+
// but surface it so callers can log.
|
|
56
|
+
return { removed: false, detail: `unexpected error: ${msg}` };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ── teardownClone ─────────────────────────────────────────────────────────────
|
|
60
|
+
/**
|
|
61
|
+
* Idempotently remove a clone directory at `clonePath`, guarded by
|
|
62
|
+
* `assertWithinBase` against `runsBaseDir`. Skips silently if absent.
|
|
63
|
+
*/
|
|
64
|
+
function teardownClone(clonePath, runsBaseDir) {
|
|
65
|
+
assertWithinBase(clonePath, runsBaseDir);
|
|
66
|
+
if (!(0, node_fs_1.existsSync)(clonePath)) {
|
|
67
|
+
return { removed: false, detail: "clone path does not exist" };
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
(0, node_fs_1.rmSync)(clonePath, { recursive: true, force: true });
|
|
71
|
+
return { removed: true };
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
75
|
+
if (/ENOENT|No such file/i.test(msg)) {
|
|
76
|
+
return { removed: false, detail: msg };
|
|
77
|
+
}
|
|
78
|
+
return { removed: false, detail: `unexpected error: ${msg}` };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// ── teardownAgentMemories ─────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Remove per-run agent-memory files and directories whose name contains the
|
|
84
|
+
* `correlationId` under `memoriesBase`. No-op if none match or the base does
|
|
85
|
+
* not exist.
|
|
86
|
+
*/
|
|
87
|
+
function teardownAgentMemories(correlationId, memoriesBase) {
|
|
88
|
+
if (!correlationId) {
|
|
89
|
+
return { removed: false, detail: "empty correlationId" };
|
|
90
|
+
}
|
|
91
|
+
if (!(0, node_fs_1.existsSync)(memoriesBase)) {
|
|
92
|
+
return { removed: false, detail: "memories base does not exist" };
|
|
93
|
+
}
|
|
94
|
+
let entries;
|
|
95
|
+
try {
|
|
96
|
+
entries = (0, node_fs_1.readdirSync)(memoriesBase);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return { removed: false, detail: "could not read memories base directory" };
|
|
100
|
+
}
|
|
101
|
+
const matching = entries.filter((name) => name.includes(correlationId));
|
|
102
|
+
if (matching.length === 0) {
|
|
103
|
+
return { removed: false, detail: "no matching memory entries found" };
|
|
104
|
+
}
|
|
105
|
+
let removedCount = 0;
|
|
106
|
+
for (const name of matching) {
|
|
107
|
+
const fullPath = (0, node_path_1.resolve)(memoriesBase, name);
|
|
108
|
+
try {
|
|
109
|
+
(0, node_fs_1.rmSync)(fullPath, { recursive: true, force: true });
|
|
110
|
+
removedCount++;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// best-effort per entry
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
removed: removedCount > 0,
|
|
118
|
+
detail: `removed ${removedCount}/${matching.length} memory entries`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// ── teardownPlanArtefacts ─────────────────────────────────────────────────────
|
|
122
|
+
/**
|
|
123
|
+
* Remove run-scoped plan/task artefact files under `plansDir` whose name
|
|
124
|
+
* encodes the `correlationId`. Never deletes the plans directory itself.
|
|
125
|
+
* Also removes a per-run subdirectory named after the correlationId if present.
|
|
126
|
+
*/
|
|
127
|
+
function teardownPlanArtefacts(correlationId, plansDir) {
|
|
128
|
+
if (!correlationId) {
|
|
129
|
+
return { removed: false, detail: "empty correlationId" };
|
|
130
|
+
}
|
|
131
|
+
assertWithinBase((0, node_path_1.resolve)(plansDir, correlationId), plansDir);
|
|
132
|
+
if (!(0, node_fs_1.existsSync)(plansDir)) {
|
|
133
|
+
return { removed: false, detail: "plans directory does not exist" };
|
|
134
|
+
}
|
|
135
|
+
let entries;
|
|
136
|
+
try {
|
|
137
|
+
entries = (0, node_fs_1.readdirSync)(plansDir);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return { removed: false, detail: "could not read plans directory" };
|
|
141
|
+
}
|
|
142
|
+
const matching = entries.filter((name) => name.includes(correlationId));
|
|
143
|
+
if (matching.length === 0) {
|
|
144
|
+
return { removed: false, detail: "no matching plan artefacts found" };
|
|
145
|
+
}
|
|
146
|
+
let removedCount = 0;
|
|
147
|
+
for (const name of matching) {
|
|
148
|
+
const fullPath = (0, node_path_1.resolve)(plansDir, name);
|
|
149
|
+
// Extra safety: never delete the plans dir itself
|
|
150
|
+
if ((0, node_path_1.resolve)(fullPath) === (0, node_path_1.resolve)(plansDir))
|
|
151
|
+
continue;
|
|
152
|
+
try {
|
|
153
|
+
const stat = (0, node_fs_1.statSync)(fullPath);
|
|
154
|
+
if (stat.isDirectory()) {
|
|
155
|
+
(0, node_fs_1.rmSync)(fullPath, { recursive: true, force: true });
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
(0, node_fs_1.rmSync)(fullPath, { force: true });
|
|
159
|
+
}
|
|
160
|
+
removedCount++;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// best-effort per entry
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
removed: removedCount > 0,
|
|
168
|
+
detail: `removed ${removedCount}/${matching.length} plan artefacts`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=teardown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../../src/repo/teardown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/repo/validate.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOwnerRepo = validateOwnerRepo;
|
|
4
|
+
exports.validateBranchName = validateBranchName;
|
|
5
|
+
exports.validateCloneUrl = validateCloneUrl;
|
|
6
|
+
const OWNER_REPO_RE = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
|
|
7
|
+
const BRANCH_ALLOWED_RE = /^[-A-Za-z0-9_./@]+$/;
|
|
8
|
+
const CLONE_URL_HTTPS_RE = /^https:\/\/[A-Za-z0-9._~:/?#[\]@!$&'()*+,;%=-]+$/;
|
|
9
|
+
const CLONE_URL_SSH_RE = /^git@[A-Za-z0-9._-]+:[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(\.git)?$/;
|
|
10
|
+
const CLONE_URL_INJECTION_RE = /[$`();|&<>\\]/;
|
|
11
|
+
const BRANCH_WHITESPACE_RE = /\s/;
|
|
12
|
+
function validateOwnerRepo(value) {
|
|
13
|
+
if (!OWNER_REPO_RE.test(value)) {
|
|
14
|
+
throw new Error(`Invalid owner/repo "${value}": must match <owner>/<repo> using only alphanumeric, hyphen, underscore, and dot characters.`);
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function validateBranchName(value) {
|
|
19
|
+
if (!value || value.startsWith("-") || value.startsWith(".")) {
|
|
20
|
+
throw new Error(`Invalid branch name "${value}": must not be empty or start with '-' or '.'.`);
|
|
21
|
+
}
|
|
22
|
+
if (value.includes("..") || value.includes("@{") || value.endsWith(".lock")) {
|
|
23
|
+
throw new Error(`Invalid branch name "${value}": contains forbidden git ref sequences (.., @{, or .lock suffix).`);
|
|
24
|
+
}
|
|
25
|
+
if (BRANCH_WHITESPACE_RE.test(value)) {
|
|
26
|
+
throw new Error(`Invalid branch name "${value}": contains whitespace characters.`);
|
|
27
|
+
}
|
|
28
|
+
if (!BRANCH_ALLOWED_RE.test(value)) {
|
|
29
|
+
throw new Error(`Invalid branch name "${value}": contains characters outside the allowed git ref charset (alphanumeric, hyphen, underscore, dot, slash, @).`);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function validateCloneUrl(value) {
|
|
34
|
+
if (CLONE_URL_INJECTION_RE.test(value)) {
|
|
35
|
+
throw new Error(`Invalid clone URL "${value}": contains shell-injection characters ($, \`, (, ), ;, |, &, <, >, \\).`);
|
|
36
|
+
}
|
|
37
|
+
if (!CLONE_URL_HTTPS_RE.test(value) && !CLONE_URL_SSH_RE.test(value)) {
|
|
38
|
+
throw new Error(`Invalid clone URL "${value}": must be an https:// or git@host:owner/repo URL.`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/repo/validate.ts"],"names":[],"mappings":";;AAUA,8CAOC;AAED,gDAsBC;AAED,4CAYC;AAvDD,MAAM,aAAa,GAAG,oCAAoC,CAAC;AAE3D,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,MAAM,kBAAkB,GAAG,kDAAkD,CAAC;AAC9E,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;AAC1F,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAE/C,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,+FAA+F,CAC5H,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,wBAAwB,KAAK,gDAAgD,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,wBAAwB,KAAK,oEAAoE,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,wBAAwB,KAAK,oCAAoC,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,wBAAwB,KAAK,+GAA+G,CAC7I,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,0EAA0E,CACtG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,oDAAoD,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@websitelabs/n8n-nodes-software-teams",
|
|
3
|
+
"version": "0.12.3",
|
|
4
|
+
"description": "Software Teams specialist agents as n8n community nodes. Self-hosted only — requires the claude binary and ANTHROPIC_API_KEY on the n8n worker.",
|
|
5
|
+
"author": { "name": "WebsiteLabs" },
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"software-teams",
|
|
10
|
+
"claude",
|
|
11
|
+
"anthropic",
|
|
12
|
+
"ai-agents"
|
|
13
|
+
],
|
|
14
|
+
"main": "dist/credentials/SoftwareTeamsApi.credentials.js",
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "n8n-node build && node scripts/bundle-specs.cjs && node scripts/bundle-shared-lib.cjs",
|
|
17
|
+
"prepack": "npm run build",
|
|
18
|
+
"build:watch": "n8n-node build --watch",
|
|
19
|
+
"dev": "n8n-node dev",
|
|
20
|
+
"lint": "n8n-node lint",
|
|
21
|
+
"lint:fix": "n8n-node lint --fix",
|
|
22
|
+
"test": "bun test --timeout 120000",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"verify:node-load": "n8n-node build && node scripts/bundle-specs.cjs && node scripts/bundle-shared-lib.cjs && node scripts/verify-node-load.cjs"
|
|
25
|
+
},
|
|
26
|
+
"n8n": {
|
|
27
|
+
"n8nNodesApiVersion": 1,
|
|
28
|
+
"credentials": [
|
|
29
|
+
"dist/credentials/SoftwareTeamsApi.credentials.js"
|
|
30
|
+
],
|
|
31
|
+
"nodes": [
|
|
32
|
+
"dist/nodes/SoftwareTeamsAgent/SoftwareTeamsAgent.node.js",
|
|
33
|
+
"dist/nodes/SoftwareTeamsTrigger/SoftwareTeamsTrigger.node.js",
|
|
34
|
+
"dist/nodes/SoftwareTeamsOutput/SoftwareTeamsOutput.node.js",
|
|
35
|
+
"dist/nodes/SoftwareTeamsOrchestrator/SoftwareTeamsOrchestrator.node.js",
|
|
36
|
+
"dist/nodes/SoftwareTeamsSlackHitl/SoftwareTeamsSlackHitl.node.js",
|
|
37
|
+
"dist/nodes/SoftwareTeamsHitl/SoftwareTeamsHitl.node.js",
|
|
38
|
+
"dist/nodes/SoftwareTeamsWorkspace/SoftwareTeamsWorkspace.node.js",
|
|
39
|
+
"dist/nodes/SoftwareTeamsFinaliser/SoftwareTeamsFinaliser.node.js",
|
|
40
|
+
"dist/nodes/SoftwareTeamsPrFeedback/SoftwareTeamsPrFeedback.node.js",
|
|
41
|
+
"dist/nodes/SoftwareTeamsCleanup/SoftwareTeamsCleanup.node.js"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist",
|
|
46
|
+
"README.md",
|
|
47
|
+
"CONTRACT.md",
|
|
48
|
+
"ARCHITECTURE.md",
|
|
49
|
+
"LICENSE"
|
|
50
|
+
],
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"n8n-workflow": "*"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@n8n/node-cli": "latest",
|
|
59
|
+
"@websitelabs/software-teams": "workspace:*",
|
|
60
|
+
"esbuild": "^0.25.0",
|
|
61
|
+
"eslint": "9.29.0",
|
|
62
|
+
"n8n-workflow": "^2.16.0",
|
|
63
|
+
"typescript": "^5.9.3"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=18.0.0"
|
|
67
|
+
},
|
|
68
|
+
"repository": {
|
|
69
|
+
"type": "git",
|
|
70
|
+
"url": "https://github.com/zottiben/software-teams.git",
|
|
71
|
+
"directory": "packages/n8n"
|
|
72
|
+
}
|
|
73
|
+
}
|