@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,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildReadinessEnvelope = buildReadinessEnvelope;
|
|
4
|
+
exports.parseReadinessVerdict = parseReadinessVerdict;
|
|
5
|
+
/**
|
|
6
|
+
* Readiness gate — one-shot quality pass (AC1, T6).
|
|
7
|
+
*
|
|
8
|
+
* Mirrors the planning.ts pattern: Bun-free, adapter-injected so it is
|
|
9
|
+
* unit-testable with a mock. The two public functions build the single-turn
|
|
10
|
+
* envelope for `software-teams-quality` and parse its structured verdict.
|
|
11
|
+
*/
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Envelope builder
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
function serialiseTasks(state) {
|
|
16
|
+
return state.tasks
|
|
17
|
+
.map((t) => { var _a; return `- ${t.taskId}: brief=${JSON.stringify((_a = t.name) !== null && _a !== void 0 ? _a : "")} agent=${JSON.stringify(t.agent)} wave=${t.wave} dependsOn=[${t.dependsOn.join(", ")}]`; })
|
|
18
|
+
.join("\n");
|
|
19
|
+
}
|
|
20
|
+
const READINESS_INSTRUCTION = [
|
|
21
|
+
"You are validating a generated orchestration plan for ONE-SHOT READINESS.",
|
|
22
|
+
"Assess every task against the following criteria:",
|
|
23
|
+
"",
|
|
24
|
+
"1. **Brief clarity** — each task's `brief` is non-empty and clearly describes",
|
|
25
|
+
" what the specialist must deliver and how success is measured.",
|
|
26
|
+
"2. **Agent pin** — every task has a non-empty `agent` field naming a valid",
|
|
27
|
+
" Software Teams specialist (e.g. software-teams-frontend, software-teams-backend).",
|
|
28
|
+
"3. **Dependencies present & acyclic** — every taskId referenced in `dependsOn`",
|
|
29
|
+
" exists in the plan; the dependency graph is acyclic.",
|
|
30
|
+
"4. **Valid waves** — every task has a `wave` >= 1.",
|
|
31
|
+
"",
|
|
32
|
+
"Respond with EXACTLY this format (machine-parsed, no extra prose before the header):",
|
|
33
|
+
"",
|
|
34
|
+
"```",
|
|
35
|
+
"READINESS: ready",
|
|
36
|
+
"```",
|
|
37
|
+
"",
|
|
38
|
+
"OR, if any criterion fails:",
|
|
39
|
+
"",
|
|
40
|
+
"```",
|
|
41
|
+
"READINESS: blocked",
|
|
42
|
+
"gaps:",
|
|
43
|
+
"- <gap description 1>",
|
|
44
|
+
"- <gap description 2>",
|
|
45
|
+
"```",
|
|
46
|
+
"",
|
|
47
|
+
"List EVERY blocking gap. Be specific: name the taskId and the failing criterion.",
|
|
48
|
+
].join("\n");
|
|
49
|
+
/**
|
|
50
|
+
* Build the single-turn envelope that runs the readiness quality pass.
|
|
51
|
+
* The `agentId` is `software-teams-quality`; the prompt serialises the plan's
|
|
52
|
+
* task list so the quality agent can evaluate it without disk access.
|
|
53
|
+
*/
|
|
54
|
+
function buildReadinessEnvelope(state, correlationId) {
|
|
55
|
+
const taskBlock = serialiseTasks(state);
|
|
56
|
+
return {
|
|
57
|
+
correlationId,
|
|
58
|
+
agentId: "software-teams-quality",
|
|
59
|
+
status: "ok",
|
|
60
|
+
input: {
|
|
61
|
+
prompt: `${READINESS_INSTRUCTION}\n\n## Plan tasks (${state.tasks.length} total)\n${taskBlock}`,
|
|
62
|
+
context: null,
|
|
63
|
+
},
|
|
64
|
+
result: { text: "" },
|
|
65
|
+
artifacts: [],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parse the structured READINESS verdict from the quality agent's response text.
|
|
70
|
+
* Tolerant of markdown fences and minor formatting variations.
|
|
71
|
+
*/
|
|
72
|
+
function parseReadinessVerdict(text) {
|
|
73
|
+
// Strip markdown fences if present
|
|
74
|
+
const stripped = text.replace(/```[a-z]*\s*/gi, "").replace(/```/g, "");
|
|
75
|
+
// Look for the READINESS header line
|
|
76
|
+
const headerMatch = stripped.match(/READINESS:\s*(ready|blocked)/i);
|
|
77
|
+
if (!headerMatch) {
|
|
78
|
+
// If no parseable header, treat as blocked with a diagnostic gap
|
|
79
|
+
return {
|
|
80
|
+
ready: false,
|
|
81
|
+
gaps: [
|
|
82
|
+
"Quality agent did not return a parseable READINESS verdict.",
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const verdict = headerMatch[1].toLowerCase();
|
|
87
|
+
if (verdict === "ready") {
|
|
88
|
+
return { ready: true, gaps: [] };
|
|
89
|
+
}
|
|
90
|
+
// Extract gap lines: everything after "gaps:" that starts with "- "
|
|
91
|
+
const gapsSection = stripped.slice(stripped.indexOf(headerMatch[0]) + headerMatch[0].length);
|
|
92
|
+
const gapLines = gapsSection
|
|
93
|
+
.split("\n")
|
|
94
|
+
.map((l) => l.trim())
|
|
95
|
+
.filter((l) => l.startsWith("- "))
|
|
96
|
+
.map((l) => l.slice(2).trim())
|
|
97
|
+
.filter((l) => l.length > 0);
|
|
98
|
+
return {
|
|
99
|
+
ready: false,
|
|
100
|
+
gaps: gapLines.length > 0
|
|
101
|
+
? gapLines
|
|
102
|
+
: ["Quality agent flagged the plan as blocked but listed no specific gaps."],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../../src/orchestration/run-state/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ChangeRef, NodeEnvelope } from "@websitelabs/software-teams";
|
|
2
|
+
export interface OrchestrationTask {
|
|
3
|
+
taskId: string;
|
|
4
|
+
name: string;
|
|
5
|
+
agent: string;
|
|
6
|
+
wave: number;
|
|
7
|
+
dependsOn: string[];
|
|
8
|
+
slice?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Single-turn adapter signature (T3 `runAgentTurn`). Injected so the planning
|
|
11
|
+
* pass is unit-testable with a mock — never imported statically (Bun chain). */
|
|
12
|
+
export type AgentTurnAdapter = (input: NodeEnvelope) => Promise<NodeEnvelope>;
|
|
13
|
+
export type RunTaskStatus = "pending" | "running" | "done" | "error" | "needs-input";
|
|
14
|
+
export interface RunTaskState {
|
|
15
|
+
taskId: string;
|
|
16
|
+
/** The task brief text — copied from `OrchestrationTask.name` at plan time so
|
|
17
|
+
* it is available for the readiness gate without re-invoking the planner.
|
|
18
|
+
* Additive + optional so existing serialised run-states without `name` still
|
|
19
|
+
* deserialise cleanly. */
|
|
20
|
+
name?: string;
|
|
21
|
+
agent: string;
|
|
22
|
+
wave: number;
|
|
23
|
+
dependsOn: string[];
|
|
24
|
+
status: RunTaskStatus;
|
|
25
|
+
/** populated when a task transitions to error / needs-input (traceability) */
|
|
26
|
+
detail?: string;
|
|
27
|
+
/** ADR-002 Decision E/F — the agent's captured portable change, set on terminal status (T8). */
|
|
28
|
+
changeRef?: ChangeRef;
|
|
29
|
+
}
|
|
30
|
+
export interface RunState {
|
|
31
|
+
correlationId: string;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
tasks: RunTaskState[];
|
|
34
|
+
}
|
|
35
|
+
export interface RunSummary {
|
|
36
|
+
total: number;
|
|
37
|
+
pending: number;
|
|
38
|
+
running: number;
|
|
39
|
+
done: number;
|
|
40
|
+
error: number;
|
|
41
|
+
needsInput: number;
|
|
42
|
+
complete: boolean;
|
|
43
|
+
resumable: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface PlanResult {
|
|
46
|
+
correlationId: string;
|
|
47
|
+
tasks: OrchestrationTask[];
|
|
48
|
+
envelopes: NodeEnvelope[];
|
|
49
|
+
state: RunState;
|
|
50
|
+
/** set when the PLANNER itself asked for human input — bubble up to T10 */
|
|
51
|
+
plannerNeedsInput?: NodeEnvelope;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=shapes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../../../src/orchestration/run-state/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;iFACiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAE9E,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf;;;+BAG2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,YAAY,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../../src/orchestration/run-state/shapes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ChangeRef, NodeEnvelope } from "@websitelabs/software-teams";
|
|
2
|
+
import type { OrchestrationTask, RunState, RunSummary, RunTaskState, RunTaskStatus } from "./shapes";
|
|
3
|
+
/** Create a fresh run state with every task pending. */
|
|
4
|
+
export declare function initRunState(correlationId: string, tasks: OrchestrationTask[]): RunState;
|
|
5
|
+
/** Immutably set a task's status (and optional detail). */
|
|
6
|
+
export declare function markTask(state: RunState, taskId: string, status: RunTaskStatus, detail?: string): RunState;
|
|
7
|
+
/**
|
|
8
|
+
* Fold a returned agent envelope into the run state for `taskId`.
|
|
9
|
+
* The specific task is named by `taskId` (carried on `input.context` when the
|
|
10
|
+
* orchestrator emitted it).
|
|
11
|
+
*/
|
|
12
|
+
export declare function applyResult(state: RunState, taskId: string, env: NodeEnvelope): RunState;
|
|
13
|
+
/** Aggregate the run's status — the traceable view a partial failure leaves behind. */
|
|
14
|
+
export declare function summarise(state: RunState): RunSummary;
|
|
15
|
+
/**
|
|
16
|
+
* Tasks that may run now: still pending and every in-plan dependency is done.
|
|
17
|
+
* A failed/needs-input dependency holds back its dependents (no silent skips).
|
|
18
|
+
*/
|
|
19
|
+
export declare function readyTasks(state: RunState): RunTaskState[];
|
|
20
|
+
/** The lowest wave with ready work, or null when nothing can run now. */
|
|
21
|
+
export declare function nextReadyWave(state: RunState): number | null;
|
|
22
|
+
export declare function failedTasks(state: RunState): RunTaskState[];
|
|
23
|
+
/**
|
|
24
|
+
* ADR-002 Decision F — T8 aggregation transition.
|
|
25
|
+
*
|
|
26
|
+
* Record a returning agent envelope's terminal status + changeRef into run-state.
|
|
27
|
+
* The task is located by correlationId (must match) + taskId (from envelope.input.context).
|
|
28
|
+
* Idempotent: re-applying the same result for an already-terminal task is a no-op.
|
|
29
|
+
*/
|
|
30
|
+
export declare function recordAgentResult(state: RunState, env: NodeEnvelope): RunState;
|
|
31
|
+
/**
|
|
32
|
+
* ADR-002 Decision F — T9 read contract (forward-aggregation accessor).
|
|
33
|
+
*
|
|
34
|
+
* Enumerate every agent task's status and changeRef from the rehydrated run-state.
|
|
35
|
+
* The Finaliser calls this to build its merge set — it does not receive envelopes back
|
|
36
|
+
* from agents; it reads the aggregated run-state directly.
|
|
37
|
+
*/
|
|
38
|
+
export interface AgentResult {
|
|
39
|
+
readonly taskId: string;
|
|
40
|
+
readonly agent: string;
|
|
41
|
+
readonly status: RunTaskStatus;
|
|
42
|
+
readonly changeRef?: ChangeRef;
|
|
43
|
+
}
|
|
44
|
+
export declare function enumerateAgentResults(state: RunState): AgentResult[];
|
|
45
|
+
export declare function needsInputTasks(state: RunState): RunTaskState[];
|
|
46
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../../src/orchestration/run-state/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,wDAAwD;AACxD,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,iBAAiB,EAAE,GACzB,QAAQ,CAaV;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,QAAQ,CASV;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,GAChB,QAAQ,CASV;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CAYrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,EAAE,CAU1D;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,EAAE,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,YAAY,GAChB,QAAQ,CAiCV;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,EAAE,CAOpE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,EAAE,CAE/D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initRunState = initRunState;
|
|
4
|
+
exports.markTask = markTask;
|
|
5
|
+
exports.applyResult = applyResult;
|
|
6
|
+
exports.summarise = summarise;
|
|
7
|
+
exports.readyTasks = readyTasks;
|
|
8
|
+
exports.nextReadyWave = nextReadyWave;
|
|
9
|
+
exports.failedTasks = failedTasks;
|
|
10
|
+
exports.recordAgentResult = recordAgentResult;
|
|
11
|
+
exports.enumerateAgentResults = enumerateAgentResults;
|
|
12
|
+
exports.needsInputTasks = needsInputTasks;
|
|
13
|
+
/** Create a fresh run state with every task pending. */
|
|
14
|
+
function initRunState(correlationId, tasks) {
|
|
15
|
+
return {
|
|
16
|
+
correlationId,
|
|
17
|
+
createdAt: new Date().toISOString(),
|
|
18
|
+
tasks: tasks.map((t) => ({
|
|
19
|
+
taskId: t.taskId,
|
|
20
|
+
...(t.name ? { name: t.name } : {}),
|
|
21
|
+
agent: t.agent,
|
|
22
|
+
wave: t.wave,
|
|
23
|
+
dependsOn: [...t.dependsOn],
|
|
24
|
+
status: "pending",
|
|
25
|
+
})),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Immutably set a task's status (and optional detail). */
|
|
29
|
+
function markTask(state, taskId, status, detail) {
|
|
30
|
+
return {
|
|
31
|
+
...state,
|
|
32
|
+
tasks: state.tasks.map((t) => t.taskId === taskId
|
|
33
|
+
? { ...t, status, ...(detail !== undefined ? { detail } : {}) }
|
|
34
|
+
: t),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Fold a returned agent envelope into the run state for `taskId`.
|
|
39
|
+
* The specific task is named by `taskId` (carried on `input.context` when the
|
|
40
|
+
* orchestrator emitted it).
|
|
41
|
+
*/
|
|
42
|
+
function applyResult(state, taskId, env) {
|
|
43
|
+
const status = env.status === "ok"
|
|
44
|
+
? "done"
|
|
45
|
+
: env.status === "needs-input"
|
|
46
|
+
? "needs-input"
|
|
47
|
+
: "error";
|
|
48
|
+
const detail = status === "done" ? undefined : env.result.text;
|
|
49
|
+
return markTask(state, taskId, status, detail);
|
|
50
|
+
}
|
|
51
|
+
/** Aggregate the run's status — the traceable view a partial failure leaves behind. */
|
|
52
|
+
function summarise(state) {
|
|
53
|
+
const count = (s) => state.tasks.filter((t) => t.status === s).length;
|
|
54
|
+
const total = state.tasks.length;
|
|
55
|
+
const done = count("done");
|
|
56
|
+
const pending = count("pending");
|
|
57
|
+
const running = count("running");
|
|
58
|
+
const needsInput = count("needs-input");
|
|
59
|
+
const error = count("error");
|
|
60
|
+
const complete = total > 0 && done === total;
|
|
61
|
+
const resumable = !complete && pending + running + needsInput > 0;
|
|
62
|
+
return { total, pending, running, done, error, needsInput, complete, resumable };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Tasks that may run now: still pending and every in-plan dependency is done.
|
|
66
|
+
* A failed/needs-input dependency holds back its dependents (no silent skips).
|
|
67
|
+
*/
|
|
68
|
+
function readyTasks(state) {
|
|
69
|
+
const known = new Set(state.tasks.map((t) => t.taskId));
|
|
70
|
+
const done = new Set(state.tasks.filter((t) => t.status === "done").map((t) => t.taskId));
|
|
71
|
+
return state.tasks.filter((t) => t.status === "pending" &&
|
|
72
|
+
t.dependsOn.every((d) => !known.has(d) || done.has(d)));
|
|
73
|
+
}
|
|
74
|
+
/** The lowest wave with ready work, or null when nothing can run now. */
|
|
75
|
+
function nextReadyWave(state) {
|
|
76
|
+
const ready = readyTasks(state);
|
|
77
|
+
if (ready.length === 0)
|
|
78
|
+
return null;
|
|
79
|
+
return Math.min(...ready.map((t) => t.wave));
|
|
80
|
+
}
|
|
81
|
+
function failedTasks(state) {
|
|
82
|
+
return state.tasks.filter((t) => t.status === "error");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* ADR-002 Decision F — T8 aggregation transition.
|
|
86
|
+
*
|
|
87
|
+
* Record a returning agent envelope's terminal status + changeRef into run-state.
|
|
88
|
+
* The task is located by correlationId (must match) + taskId (from envelope.input.context).
|
|
89
|
+
* Idempotent: re-applying the same result for an already-terminal task is a no-op.
|
|
90
|
+
*/
|
|
91
|
+
function recordAgentResult(state, env) {
|
|
92
|
+
if (env.correlationId !== state.correlationId)
|
|
93
|
+
return state;
|
|
94
|
+
const ctx = env.input.context;
|
|
95
|
+
const taskId = typeof (ctx === null || ctx === void 0 ? void 0 : ctx.taskId) === "string" ? ctx.taskId : undefined;
|
|
96
|
+
if (taskId === undefined)
|
|
97
|
+
return state;
|
|
98
|
+
const terminal = new Set(["done", "error", "needs-input"]);
|
|
99
|
+
return {
|
|
100
|
+
...state,
|
|
101
|
+
tasks: state.tasks.map((t) => {
|
|
102
|
+
if (t.taskId !== taskId)
|
|
103
|
+
return t;
|
|
104
|
+
if (terminal.has(t.status))
|
|
105
|
+
return t;
|
|
106
|
+
const status = env.status === "ok"
|
|
107
|
+
? "done"
|
|
108
|
+
: env.status === "needs-input"
|
|
109
|
+
? "needs-input"
|
|
110
|
+
: "error";
|
|
111
|
+
const detail = status === "done" ? undefined : env.result.text;
|
|
112
|
+
const changeRef = env.changeRef !== undefined ? env.changeRef : undefined;
|
|
113
|
+
return {
|
|
114
|
+
...t,
|
|
115
|
+
status,
|
|
116
|
+
...(detail !== undefined ? { detail } : {}),
|
|
117
|
+
...(changeRef !== undefined ? { changeRef } : {}),
|
|
118
|
+
};
|
|
119
|
+
}),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function enumerateAgentResults(state) {
|
|
123
|
+
return state.tasks.map((t) => ({
|
|
124
|
+
taskId: t.taskId,
|
|
125
|
+
agent: t.agent,
|
|
126
|
+
status: t.status,
|
|
127
|
+
...(t.changeRef !== undefined ? { changeRef: t.changeRef } : {}),
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
function needsInputTasks(state) {
|
|
131
|
+
return state.tasks.filter((t) => t.status === "needs-input");
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=transitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../../src/orchestration/run-state/transitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { OrchestrationTask, AgentTurnAdapter, RunTaskStatus, RunTaskState, RunState, RunSummary, PlanResult, } from "./run-state/shapes";
|
|
2
|
+
export { orderTasks, tasksToEnvelopes } from "./run-state/ordering";
|
|
3
|
+
export { BREAKDOWN_INSTRUCTION, buildPlannerEnvelope, parseBreakdown, planEpic, } from "./run-state/planning";
|
|
4
|
+
export { initRunState, markTask, applyResult, summarise, readyTasks, nextReadyWave, failedTasks, needsInputTasks, recordAgentResult, enumerateAgentResults, type AgentResult, } from "./run-state/transitions";
|
|
5
|
+
export { serialiseRunState, deserialiseRunState, isNodeEnvelope, } from "./run-state/persistence";
|
|
6
|
+
export { getRunStore, readRunState, writeRunState, deleteRunState, type RunStore, } from "./run-state/global-store";
|
|
7
|
+
export { buildReadinessEnvelope, parseReadinessVerdict, type ReadinessVerdict, } from "./run-state/readiness";
|
|
8
|
+
//# sourceMappingURL=run-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../../src/orchestration/run-state.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,KAAK,QAAQ,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseReadinessVerdict = exports.buildReadinessEnvelope = exports.deleteRunState = exports.writeRunState = exports.readRunState = exports.getRunStore = exports.isNodeEnvelope = exports.deserialiseRunState = exports.serialiseRunState = exports.enumerateAgentResults = exports.recordAgentResult = exports.needsInputTasks = exports.failedTasks = exports.nextReadyWave = exports.readyTasks = exports.summarise = exports.applyResult = exports.markTask = exports.initRunState = exports.planEpic = exports.parseBreakdown = exports.buildPlannerEnvelope = exports.BREAKDOWN_INSTRUCTION = exports.tasksToEnvelopes = exports.orderTasks = void 0;
|
|
4
|
+
var ordering_1 = require("./run-state/ordering");
|
|
5
|
+
Object.defineProperty(exports, "orderTasks", { enumerable: true, get: function () { return ordering_1.orderTasks; } });
|
|
6
|
+
Object.defineProperty(exports, "tasksToEnvelopes", { enumerable: true, get: function () { return ordering_1.tasksToEnvelopes; } });
|
|
7
|
+
var planning_1 = require("./run-state/planning");
|
|
8
|
+
Object.defineProperty(exports, "BREAKDOWN_INSTRUCTION", { enumerable: true, get: function () { return planning_1.BREAKDOWN_INSTRUCTION; } });
|
|
9
|
+
Object.defineProperty(exports, "buildPlannerEnvelope", { enumerable: true, get: function () { return planning_1.buildPlannerEnvelope; } });
|
|
10
|
+
Object.defineProperty(exports, "parseBreakdown", { enumerable: true, get: function () { return planning_1.parseBreakdown; } });
|
|
11
|
+
Object.defineProperty(exports, "planEpic", { enumerable: true, get: function () { return planning_1.planEpic; } });
|
|
12
|
+
var transitions_1 = require("./run-state/transitions");
|
|
13
|
+
Object.defineProperty(exports, "initRunState", { enumerable: true, get: function () { return transitions_1.initRunState; } });
|
|
14
|
+
Object.defineProperty(exports, "markTask", { enumerable: true, get: function () { return transitions_1.markTask; } });
|
|
15
|
+
Object.defineProperty(exports, "applyResult", { enumerable: true, get: function () { return transitions_1.applyResult; } });
|
|
16
|
+
Object.defineProperty(exports, "summarise", { enumerable: true, get: function () { return transitions_1.summarise; } });
|
|
17
|
+
Object.defineProperty(exports, "readyTasks", { enumerable: true, get: function () { return transitions_1.readyTasks; } });
|
|
18
|
+
Object.defineProperty(exports, "nextReadyWave", { enumerable: true, get: function () { return transitions_1.nextReadyWave; } });
|
|
19
|
+
Object.defineProperty(exports, "failedTasks", { enumerable: true, get: function () { return transitions_1.failedTasks; } });
|
|
20
|
+
Object.defineProperty(exports, "needsInputTasks", { enumerable: true, get: function () { return transitions_1.needsInputTasks; } });
|
|
21
|
+
Object.defineProperty(exports, "recordAgentResult", { enumerable: true, get: function () { return transitions_1.recordAgentResult; } });
|
|
22
|
+
Object.defineProperty(exports, "enumerateAgentResults", { enumerable: true, get: function () { return transitions_1.enumerateAgentResults; } });
|
|
23
|
+
var persistence_1 = require("./run-state/persistence");
|
|
24
|
+
Object.defineProperty(exports, "serialiseRunState", { enumerable: true, get: function () { return persistence_1.serialiseRunState; } });
|
|
25
|
+
Object.defineProperty(exports, "deserialiseRunState", { enumerable: true, get: function () { return persistence_1.deserialiseRunState; } });
|
|
26
|
+
Object.defineProperty(exports, "isNodeEnvelope", { enumerable: true, get: function () { return persistence_1.isNodeEnvelope; } });
|
|
27
|
+
var global_store_1 = require("./run-state/global-store");
|
|
28
|
+
Object.defineProperty(exports, "getRunStore", { enumerable: true, get: function () { return global_store_1.getRunStore; } });
|
|
29
|
+
Object.defineProperty(exports, "readRunState", { enumerable: true, get: function () { return global_store_1.readRunState; } });
|
|
30
|
+
Object.defineProperty(exports, "writeRunState", { enumerable: true, get: function () { return global_store_1.writeRunState; } });
|
|
31
|
+
Object.defineProperty(exports, "deleteRunState", { enumerable: true, get: function () { return global_store_1.deleteRunState; } });
|
|
32
|
+
var readiness_1 = require("./run-state/readiness");
|
|
33
|
+
Object.defineProperty(exports, "buildReadinessEnvelope", { enumerable: true, get: function () { return readiness_1.buildReadinessEnvelope; } });
|
|
34
|
+
Object.defineProperty(exports, "parseReadinessVerdict", { enumerable: true, get: function () { return readiness_1.parseReadinessVerdict; } });
|
|
35
|
+
//# sourceMappingURL=run-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../../src/orchestration/run-state.ts"],"names":[],"mappings":";;;AAUA,iDAAoE;AAA3D,sGAAA,UAAU,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAErC,iDAK8B;AAJ5B,iHAAA,qBAAqB,OAAA;AACrB,gHAAA,oBAAoB,OAAA;AACpB,0GAAA,cAAc,OAAA;AACd,oGAAA,QAAQ,OAAA;AAGV,uDAYiC;AAX/B,2GAAA,YAAY,OAAA;AACZ,uGAAA,QAAQ,OAAA;AACR,0GAAA,WAAW,OAAA;AACX,wGAAA,SAAS,OAAA;AACT,yGAAA,UAAU,OAAA;AACV,4GAAA,aAAa,OAAA;AACb,0GAAA,WAAW,OAAA;AACX,8GAAA,eAAe,OAAA;AACf,gHAAA,iBAAiB,OAAA;AACjB,oHAAA,qBAAqB,OAAA;AAIvB,uDAIiC;AAH/B,gHAAA,iBAAiB,OAAA;AACjB,kHAAA,mBAAmB,OAAA;AACnB,6GAAA,cAAc,OAAA;AAGhB,yDAMkC;AALhC,2GAAA,WAAW,OAAA;AACX,4GAAA,YAAY,OAAA;AACZ,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AAIhB,mDAI+B;AAH7B,mHAAA,sBAAsB,OAAA;AACtB,kHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Convert a free-text string to a URL-safe slug (default maxLength 50). */
|
|
2
|
+
export declare function slugify(input: string, maxLength?: number): string;
|
|
3
|
+
export interface CreatePrInput {
|
|
4
|
+
owner: string;
|
|
5
|
+
repo: string;
|
|
6
|
+
title: string;
|
|
7
|
+
body: string;
|
|
8
|
+
head: string;
|
|
9
|
+
base: string;
|
|
10
|
+
/** GitHub token — from softwareTeamsApi credential only (R-02). */
|
|
11
|
+
token: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateIssueInput {
|
|
14
|
+
owner: string;
|
|
15
|
+
repo: string;
|
|
16
|
+
title: string;
|
|
17
|
+
body: string;
|
|
18
|
+
labels?: string[];
|
|
19
|
+
/** GitHub token — from softwareTeamsApi credential only (R-02). */
|
|
20
|
+
token: string;
|
|
21
|
+
}
|
|
22
|
+
export interface GitHubCreatedRef {
|
|
23
|
+
url: string;
|
|
24
|
+
number: number;
|
|
25
|
+
}
|
|
26
|
+
/** Open a GitHub pull request. Throws when the GitHub API returns a non-2xx status. */
|
|
27
|
+
export declare function createPullRequest(input: CreatePrInput): Promise<GitHubCreatedRef>;
|
|
28
|
+
/** Open a GitHub issue. Throws when the GitHub API returns a non-2xx status. */
|
|
29
|
+
export declare function createIssue(input: CreateIssueInput): Promise<GitHubCreatedRef>;
|
|
30
|
+
/**
|
|
31
|
+
* Extract the branch name from a GitHub tree URL or pass through a plain name.
|
|
32
|
+
*
|
|
33
|
+
* Examples:
|
|
34
|
+
* "https://github.com/acme/site/tree/feat/my-feature" → "feat/my-feature"
|
|
35
|
+
* "feat/my-feature" → "feat/my-feature"
|
|
36
|
+
* undefined → null
|
|
37
|
+
*/
|
|
38
|
+
export declare function extractBranchName(url: string | undefined): string | null;
|
|
39
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/output/github.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAE7D;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAuCD,uFAAuF;AACvF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,gFAAgF;AAChF,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQxE"}
|