@jterrats/open-orchestra 0.4.0 → 0.4.2-beta.1
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/CHANGELOG.md +21 -0
- package/dist/assets/web-console.js +91 -1
- package/dist/autonomous-phase-lifecycle.d.ts +26 -0
- package/dist/autonomous-phase-lifecycle.js +214 -0
- package/dist/autonomous-phase-lifecycle.js.map +1 -0
- package/dist/autonomous-run-state.d.ts +8 -0
- package/dist/autonomous-run-state.js +162 -0
- package/dist/autonomous-run-state.js.map +1 -0
- package/dist/autonomous-run-store.d.ts +17 -0
- package/dist/autonomous-run-store.js +89 -0
- package/dist/autonomous-run-store.js.map +1 -0
- package/dist/autonomous-workflow-constants.d.ts +7 -0
- package/dist/autonomous-workflow-constants.js +36 -0
- package/dist/autonomous-workflow-constants.js.map +1 -0
- package/dist/autonomous-workflow.d.ts +6 -45
- package/dist/autonomous-workflow.js +4 -394
- package/dist/autonomous-workflow.js.map +1 -1
- package/dist/benchmark.js +16 -0
- package/dist/benchmark.js.map +1 -1
- package/dist/clarification.d.ts +2 -0
- package/dist/clarification.js +23 -5
- package/dist/clarification.js.map +1 -1
- package/dist/cli.js +101 -14
- package/dist/cli.js.map +1 -1
- package/dist/command-manifest.js +8 -0
- package/dist/command-manifest.js.map +1 -1
- package/dist/command-utils.d.ts +6 -0
- package/dist/command-utils.js +19 -0
- package/dist/command-utils.js.map +1 -0
- package/dist/commands.d.ts +15 -43
- package/dist/commands.js +466 -912
- package/dist/commands.js.map +1 -1
- package/dist/constants.js +20 -0
- package/dist/constants.js.map +1 -1
- package/dist/defaults.d.ts +11 -0
- package/dist/defaults.js +11 -0
- package/dist/defaults.js.map +1 -1
- package/dist/instruction-commands.d.ts +5 -0
- package/dist/instruction-commands.js +98 -0
- package/dist/instruction-commands.js.map +1 -0
- package/dist/mcp-oauth-proxy.d.ts +47 -0
- package/dist/mcp-oauth-proxy.js +276 -0
- package/dist/mcp-oauth-proxy.js.map +1 -1
- package/dist/memory.d.ts +11 -0
- package/dist/memory.js +224 -0
- package/dist/memory.js.map +1 -0
- package/dist/metrics-commands.d.ts +3 -0
- package/dist/metrics-commands.js +123 -0
- package/dist/metrics-commands.js.map +1 -0
- package/dist/model-commands.d.ts +13 -0
- package/dist/model-commands.js +216 -0
- package/dist/model-commands.js.map +1 -0
- package/dist/notifications.d.ts +25 -0
- package/dist/notifications.js +187 -11
- package/dist/notifications.js.map +1 -1
- package/dist/package-update-check.d.ts +19 -0
- package/dist/package-update-check.js +123 -0
- package/dist/package-update-check.js.map +1 -0
- package/dist/runtime-adapters.d.ts +5 -1
- package/dist/runtime-adapters.js +27 -0
- package/dist/runtime-adapters.js.map +1 -1
- package/dist/runtime-bootstrap.js +4 -2
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/runtime-commands.d.ts +9 -0
- package/dist/runtime-commands.js +156 -0
- package/dist/runtime-commands.js.map +1 -0
- package/dist/runtime-execution-adapters.d.ts +2 -0
- package/dist/runtime-execution-adapters.js +163 -0
- package/dist/runtime-execution-adapters.js.map +1 -0
- package/dist/runtime-execution-renderer.d.ts +10 -0
- package/dist/runtime-execution-renderer.js +113 -0
- package/dist/runtime-execution-renderer.js.map +1 -0
- package/dist/runtime-execution.d.ts +27 -0
- package/dist/runtime-execution.js +153 -0
- package/dist/runtime-execution.js.map +1 -0
- package/dist/skills-commands.d.ts +10 -0
- package/dist/skills-commands.js +138 -0
- package/dist/skills-commands.js.map +1 -0
- package/dist/skills.d.ts +7 -1
- package/dist/skills.js +120 -11
- package/dist/skills.js.map +1 -1
- package/dist/sprint-commands.d.ts +5 -0
- package/dist/sprint-commands.js +120 -0
- package/dist/sprint-commands.js.map +1 -0
- package/dist/subagent-protocol.js +6 -0
- package/dist/subagent-protocol.js.map +1 -1
- package/dist/telemetry-commands.d.ts +7 -0
- package/dist/telemetry-commands.js +82 -0
- package/dist/telemetry-commands.js.map +1 -0
- package/dist/tool-commands.d.ts +5 -0
- package/dist/tool-commands.js +159 -0
- package/dist/tool-commands.js.map +1 -0
- package/dist/types.d.ts +206 -4
- package/dist/types.js.map +1 -1
- package/dist/web-api.js +93 -1
- package/dist/web-api.js.map +1 -1
- package/dist/web-chart-contracts.d.ts +3 -1
- package/dist/web-chart-contracts.js +6 -0
- package/dist/web-chart-contracts.js.map +1 -1
- package/dist/web-console.js +2 -2
- package/dist/workflow-services.d.ts +21 -3
- package/dist/workflow-services.js +474 -10
- package/dist/workflow-services.js.map +1 -1
- package/docs/runtime-llm-flow.md +46 -0
- package/package.json +2 -1
- package/skills/proactive-orchestra/SKILL.md +27 -0
- package/skills/proactive-orchestra/manifest.json +41 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { requireArg } from "./args.js";
|
|
2
|
+
import { computeBenchmark, recordEstimate, summarizeBenchmark, } from "./benchmark.js";
|
|
3
|
+
import { stringOption } from "./command-utils.js";
|
|
4
|
+
import { SIZING_LABELS } from "./types.js";
|
|
5
|
+
const CONFIDENCE_LEVELS = ["low", "medium", "high"];
|
|
6
|
+
export async function estimateCommand(options, io) {
|
|
7
|
+
const cwd = process.cwd();
|
|
8
|
+
const taskId = requireArg(options, "task");
|
|
9
|
+
const sizingRaw = requireArg(options, "sizing");
|
|
10
|
+
const soloDays = numberOption(options["solo-days"], 0);
|
|
11
|
+
const aiDays = numberOption(options["ai-unguided-days"], 0);
|
|
12
|
+
const confidence = (stringOption(options.confidence) ??
|
|
13
|
+
"medium");
|
|
14
|
+
const declaredBy = stringOption(options["declared-by"]) ?? "pm";
|
|
15
|
+
if (!SIZING_LABELS.includes(sizingRaw)) {
|
|
16
|
+
throw new Error(`--sizing must be one of: ${SIZING_LABELS.join(", ")}`);
|
|
17
|
+
}
|
|
18
|
+
if (!CONFIDENCE_LEVELS.includes(confidence)) {
|
|
19
|
+
throw new Error(`--confidence must be one of: ${CONFIDENCE_LEVELS.join(", ")}`);
|
|
20
|
+
}
|
|
21
|
+
if (soloDays <= 0)
|
|
22
|
+
throw new Error(`--solo-days must be > 0`);
|
|
23
|
+
if (aiDays <= 0)
|
|
24
|
+
throw new Error(`--ai-unguided-days must be > 0`);
|
|
25
|
+
const record = await recordEstimate(cwd, {
|
|
26
|
+
taskId,
|
|
27
|
+
sizingLabel: sizingRaw,
|
|
28
|
+
soloEstimateDays: soloDays,
|
|
29
|
+
aiUnguidedEstimateDays: aiDays,
|
|
30
|
+
confidence,
|
|
31
|
+
declaredBy,
|
|
32
|
+
});
|
|
33
|
+
if (options.json) {
|
|
34
|
+
io.log(JSON.stringify(record, null, 2));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
io.log(`Estimate recorded for ${taskId} [${record.id}]`);
|
|
38
|
+
io.log(` Sizing: ${record.sizingLabel}`);
|
|
39
|
+
io.log(` Solo: ${record.soloEstimateDays}d`);
|
|
40
|
+
io.log(` AI-unguided: ${record.aiUnguidedEstimateDays}d`);
|
|
41
|
+
io.log(` Confidence: ${record.confidence}`);
|
|
42
|
+
io.log(` Declared by: ${record.declaredBy}`);
|
|
43
|
+
}
|
|
44
|
+
export async function benchmarkCommand(options, io) {
|
|
45
|
+
const cwd = process.cwd();
|
|
46
|
+
if (options.summary) {
|
|
47
|
+
const summary = await summarizeBenchmark(cwd);
|
|
48
|
+
if (options.json) {
|
|
49
|
+
io.log(JSON.stringify(summary, null, 2));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (summary.stories.length === 0) {
|
|
53
|
+
io.log("No estimates recorded yet. Use: orchestra estimate --task <id> ...");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const header = `${"Story".padEnd(14)} ${"Size".padEnd(4)} ${"Solo".padEnd(6)} ${"AI".padEnd(6)} ${"Actual".padEnd(8)} ${"vs Solo".padEnd(8)} ${"vs AI".padEnd(8)} ${"QA".padEnd(4)} ${"Rev".padEnd(4)} ${"Blk".padEnd(4)} ${"Ev".padEnd(4)} ${"Les"}`;
|
|
57
|
+
io.log(header);
|
|
58
|
+
io.log("─".repeat(header.length));
|
|
59
|
+
for (const story of summary.stories) {
|
|
60
|
+
const actual = story.actualDays !== null ? `${story.actualDays}d` : "pending";
|
|
61
|
+
const vsSolo = story.vsSoloPct !== null
|
|
62
|
+
? `${story.vsSoloPct > 0 ? "+" : ""}${story.vsSoloPct}%`
|
|
63
|
+
: "—";
|
|
64
|
+
const vsAi = story.vsAiUnguidedPct !== null
|
|
65
|
+
? `${story.vsAiUnguidedPct > 0 ? "+" : ""}${story.vsAiUnguidedPct}%`
|
|
66
|
+
: "—";
|
|
67
|
+
io.log(`${story.taskId.padEnd(14)} ${story.sizingLabel.padEnd(4)} ${`${story.soloEstimateDays}d`.padEnd(6)} ${`${story.aiUnguidedEstimateDays}d`.padEnd(6)} ${actual.padEnd(8)} ${vsSolo.padEnd(8)} ${vsAi.padEnd(8)} ${String(story.qaIterations).padEnd(4)} ${String(story.quality.reviewCount).padEnd(4)} ${String(story.quality.blockingReviews).padEnd(4)} ${String(story.quality.evidenceCount).padEnd(4)} ${story.quality.lessonCount}`);
|
|
68
|
+
}
|
|
69
|
+
if (summary.totalWithActuals > 0) {
|
|
70
|
+
io.log("");
|
|
71
|
+
io.log(`Avg savings vs solo: ${summary.avgVsSoloPct}%`);
|
|
72
|
+
io.log(`Avg savings vs AI-unguided: ${summary.avgVsAiUnguidedPct}%`);
|
|
73
|
+
io.log(`Stories with actuals: ${summary.totalWithActuals}/${summary.stories.length}`);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const taskId = requireArg(options, "task");
|
|
78
|
+
const result = await computeBenchmark(cwd, taskId);
|
|
79
|
+
if (options.json) {
|
|
80
|
+
io.log(JSON.stringify(result, null, 2));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
io.log(`Benchmark: ${taskId} [${result.status}]`);
|
|
84
|
+
io.log(` Sizing: ${result.sizingLabel}`);
|
|
85
|
+
io.log(` Solo: ${result.soloEstimateDays}d (declared)`);
|
|
86
|
+
io.log(` AI-unguided: ${result.aiUnguidedEstimateDays}d (declared)`);
|
|
87
|
+
io.log(` Actual: ${result.actualDays !== null ? `${result.actualDays}d` : "pending — run not complete"}`);
|
|
88
|
+
if (result.vsSoloPct !== null) {
|
|
89
|
+
const sign = result.vsSoloPct > 0 ? "+" : "";
|
|
90
|
+
io.log(` vs Solo: ${sign}${result.vsSoloPct}%`);
|
|
91
|
+
io.log(` vs AI: ${result.vsAiUnguidedPct !== null ? `${result.vsAiUnguidedPct > 0 ? "+" : ""}${result.vsAiUnguidedPct}%` : "—"}`);
|
|
92
|
+
}
|
|
93
|
+
io.log(` QA loops: ${result.qaIterations}`);
|
|
94
|
+
if (result.phaseDurations.length > 0) {
|
|
95
|
+
io.log(` Phase durations:`);
|
|
96
|
+
for (const phase of result.phaseDurations) {
|
|
97
|
+
const duration = phase.durationMs !== null
|
|
98
|
+
? `${Math.round(phase.durationMs / 1000)}s`
|
|
99
|
+
: "pending";
|
|
100
|
+
io.log(` - ${phase.phase}: ${duration}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
io.log(` Reviews: ${result.quality.reviewCount} (${result.quality.blockingReviews} blocking)`);
|
|
104
|
+
io.log(` Evidence: ${result.quality.evidenceCount} artifacts`);
|
|
105
|
+
io.log(` Gate blocks: ${result.quality.gateBlockCount}`);
|
|
106
|
+
io.log(` Lessons: ${result.quality.lessonCount}`);
|
|
107
|
+
if (result.quality.totalInputTokens > 0 ||
|
|
108
|
+
result.quality.totalOutputTokens > 0) {
|
|
109
|
+
io.log(` Tokens: ${result.quality.totalInputTokens}in / ${result.quality.totalOutputTokens}out`);
|
|
110
|
+
io.log(` Cost: $${result.quality.estimatedCostUsd}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function numberOption(value, fallback) {
|
|
114
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
115
|
+
return fallback;
|
|
116
|
+
}
|
|
117
|
+
const parsed = Number(value);
|
|
118
|
+
if (!Number.isFinite(parsed)) {
|
|
119
|
+
throw new Error(`invalid number: ${value}`);
|
|
120
|
+
}
|
|
121
|
+
return parsed;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=metrics-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-commands.js","sourceRoot":"","sources":["../src/metrics-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CliIo, CliOptions } from "./types.js";
|
|
2
|
+
export declare function usageCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
3
|
+
export declare function budgetCheckCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
4
|
+
export declare function approvalsListCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
5
|
+
export declare function approvalsShowCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
6
|
+
export declare function approvalsApproveCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
7
|
+
export declare function approvalsRejectCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
8
|
+
export declare function configShowCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
9
|
+
export declare function modelProvidersCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
10
|
+
export declare function modelSetRoleCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
11
|
+
export declare function modelProvenanceAddCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
12
|
+
export declare function modelProvenanceListCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
13
|
+
export declare function modelCompleteFakeCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { requireArg } from "./args.js";
|
|
2
|
+
import { parseCsv, removeUndefined, stringOption, } from "./command-utils.js";
|
|
3
|
+
import { approveApproval, checkBudgetEstimatePreflight, checkUsageBudget, completeWithProviderFallback, getUsageReport, getWorkflowConfig, listApprovals, listConfiguredModelProviders, listModelProvenance, recordModelProvenance, rejectApproval, setRoleModelProvider, showApproval, } from "./workflow-services.js";
|
|
4
|
+
export async function usageCommand(options, io) {
|
|
5
|
+
const report = await getUsageReport(stringOption(options.task));
|
|
6
|
+
if (options.json) {
|
|
7
|
+
io.log(JSON.stringify(report, null, 2));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
io.log(renderUsageReport(report));
|
|
11
|
+
}
|
|
12
|
+
export async function budgetCheckCommand(options, io) {
|
|
13
|
+
const estimatedCostUsd = stringOption(options["estimate-cost"]);
|
|
14
|
+
if (estimatedCostUsd) {
|
|
15
|
+
const result = await checkBudgetEstimatePreflight(requireArg(options, "task"), numberOption(estimatedCostUsd, 0));
|
|
16
|
+
if (options.json) {
|
|
17
|
+
io.log(JSON.stringify(result, null, 2));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
io.log(renderBudgetCheck(result.budget));
|
|
21
|
+
for (const warning of result.warnings) {
|
|
22
|
+
io.log(`WARNING: ${warning.scope} estimatedCostUsd is ${warning.actual}/${warning.limit} (${warning.thresholdPercent}% threshold)`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!result.passed) {
|
|
26
|
+
throw new Error("budget check failed");
|
|
27
|
+
}
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const result = await checkUsageBudget(stringOption(options.task));
|
|
31
|
+
if (options.json) {
|
|
32
|
+
io.log(JSON.stringify(result, null, 2));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
io.log(renderBudgetCheck(result));
|
|
36
|
+
}
|
|
37
|
+
if (!result.passed) {
|
|
38
|
+
throw new Error("budget check failed");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function approvalsListCommand(options, io) {
|
|
42
|
+
const approvals = await listApprovals(stringOption(options.task));
|
|
43
|
+
if (options.json) {
|
|
44
|
+
io.log(JSON.stringify(approvals, null, 2));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (approvals.length === 0) {
|
|
48
|
+
io.log("No approvals");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
for (const approval of approvals) {
|
|
52
|
+
io.log(`${approval.id} [${approval.status}] ${approval.taskId ?? "no-task"} ${approval.artifact}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export async function approvalsShowCommand(options, io) {
|
|
56
|
+
const approval = await showApproval(requireArg(options, "id"));
|
|
57
|
+
if (options.json) {
|
|
58
|
+
io.log(JSON.stringify(approval, null, 2));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
io.log(approval.content);
|
|
62
|
+
}
|
|
63
|
+
export async function approvalsApproveCommand(options, io) {
|
|
64
|
+
const approval = await approveApproval(parseApprovalDecision(options));
|
|
65
|
+
io.log(`Approved ${approval.id}`);
|
|
66
|
+
}
|
|
67
|
+
export async function approvalsRejectCommand(options, io) {
|
|
68
|
+
const approval = await rejectApproval(parseApprovalDecision(options));
|
|
69
|
+
io.log(`Rejected ${approval.id}`);
|
|
70
|
+
}
|
|
71
|
+
export async function configShowCommand(options, io) {
|
|
72
|
+
const config = await getWorkflowConfig();
|
|
73
|
+
if (options.json) {
|
|
74
|
+
io.log(JSON.stringify(config, null, 2));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
io.log(`Tools: ${Object.keys(config.tools ?? {}).length}`);
|
|
78
|
+
io.log(`Role routes: ${Object.keys(config.providers?.byRole ?? {}).length}`);
|
|
79
|
+
}
|
|
80
|
+
export async function modelProvidersCommand(options, io) {
|
|
81
|
+
const providers = await listConfiguredModelProviders();
|
|
82
|
+
if (options.json) {
|
|
83
|
+
io.log(JSON.stringify(providers, null, 2));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (providers.length === 0) {
|
|
87
|
+
io.log("No configured model providers");
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
for (const provider of providers) {
|
|
91
|
+
io.log(`${provider.scope}: ${provider.provider}/${provider.model} (${provider.timeoutMs}ms)`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function modelSetRoleCommand(options, io) {
|
|
95
|
+
const role = requireArg(options, "role");
|
|
96
|
+
const routing = parseProviderRouting(options);
|
|
97
|
+
await setRoleModelProvider(role, routing);
|
|
98
|
+
io.log(`Configured model provider for ${role}`);
|
|
99
|
+
}
|
|
100
|
+
export async function modelProvenanceAddCommand(options, io) {
|
|
101
|
+
const record = await recordModelProvenance({
|
|
102
|
+
task: requireArg(options, "task"),
|
|
103
|
+
role: requireArg(options, "role"),
|
|
104
|
+
provider: requireArg(options, "provider"),
|
|
105
|
+
model: requireArg(options, "model"),
|
|
106
|
+
promptId: requireArg(options, "prompt-id"),
|
|
107
|
+
responseId: requireArg(options, "response-id"),
|
|
108
|
+
inputTokens: numberOption(options["input-tokens"], 0),
|
|
109
|
+
outputTokens: numberOption(options["output-tokens"], 0),
|
|
110
|
+
estimatedCostUsd: numberOption(options["estimated-cost-usd"], 0),
|
|
111
|
+
finishReason: requireArg(options, "finish-reason"),
|
|
112
|
+
});
|
|
113
|
+
io.log(`Recorded model provenance ${record.responseId}`);
|
|
114
|
+
}
|
|
115
|
+
export async function modelProvenanceListCommand(options, io) {
|
|
116
|
+
const records = await listModelProvenance(stringOption(options.task));
|
|
117
|
+
if (options.json) {
|
|
118
|
+
io.log(JSON.stringify(records, null, 2));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (records.length === 0) {
|
|
122
|
+
io.log("No model provenance");
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
for (const record of records) {
|
|
126
|
+
io.log(`${record.task} ${record.role} ${record.provider}/${record.model} ${record.responseId}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export async function modelCompleteFakeCommand(options, io) {
|
|
130
|
+
const result = await completeWithProviderFallback({
|
|
131
|
+
provider: requireArg(options, "provider"),
|
|
132
|
+
model: requireArg(options, "model"),
|
|
133
|
+
fallbacks: parseCsv(options.fallbacks),
|
|
134
|
+
maxTokens: 0,
|
|
135
|
+
maxCostUsd: 0,
|
|
136
|
+
timeoutMs: 30000,
|
|
137
|
+
retries: 0,
|
|
138
|
+
requiredCapabilities: [],
|
|
139
|
+
}, requireArg(options, "prompt"), removeUndefined({
|
|
140
|
+
failingProviders: parseCsv(options["fail-provider"]),
|
|
141
|
+
taskId: stringOption(options.task),
|
|
142
|
+
role: stringOption(options.role) ?? "parent",
|
|
143
|
+
}));
|
|
144
|
+
if (options.json) {
|
|
145
|
+
io.log(JSON.stringify(result, null, 2));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
io.log(`Fake completion used ${result.provider}/${result.model} fallback=${String(result.fallbackUsed)}`);
|
|
149
|
+
}
|
|
150
|
+
function parseProviderRouting(options) {
|
|
151
|
+
return {
|
|
152
|
+
provider: requireArg(options, "provider"),
|
|
153
|
+
model: requireArg(options, "model"),
|
|
154
|
+
fallbacks: parseCsv(options.fallbacks),
|
|
155
|
+
maxTokens: numberOption(options["max-tokens"], 0),
|
|
156
|
+
maxCostUsd: numberOption(options["max-cost-usd"], 0),
|
|
157
|
+
timeoutMs: numberOption(options["timeout-ms"], 30000),
|
|
158
|
+
retries: numberOption(options.retries, 0),
|
|
159
|
+
requiredCapabilities: parseCsv(options.capabilities),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function parseApprovalDecision(options) {
|
|
163
|
+
return {
|
|
164
|
+
id: requireArg(options, "id"),
|
|
165
|
+
approver: requireArg(options, "approver"),
|
|
166
|
+
rationale: requireArg(options, "rationale"),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function numberOption(value, fallback) {
|
|
170
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
171
|
+
return fallback;
|
|
172
|
+
}
|
|
173
|
+
const parsed = Number(value);
|
|
174
|
+
if (!Number.isFinite(parsed)) {
|
|
175
|
+
throw new Error(`invalid number: ${value}`);
|
|
176
|
+
}
|
|
177
|
+
return parsed;
|
|
178
|
+
}
|
|
179
|
+
function renderUsageReport(report) {
|
|
180
|
+
return [
|
|
181
|
+
`Usage${report.taskId ? ` for ${report.taskId}` : ""}`,
|
|
182
|
+
`- Requests: ${report.totals.requests}`,
|
|
183
|
+
`- Input tokens: ${report.totals.inputTokens}`,
|
|
184
|
+
`- Output tokens: ${report.totals.outputTokens}`,
|
|
185
|
+
`- Total tokens: ${report.totals.totalTokens}`,
|
|
186
|
+
`- Estimated cost USD: ${report.totals.estimatedCostUsd}`,
|
|
187
|
+
"",
|
|
188
|
+
"By role:",
|
|
189
|
+
...usageLines(report.byRole),
|
|
190
|
+
"",
|
|
191
|
+
"By provider:",
|
|
192
|
+
...usageLines(report.byProvider),
|
|
193
|
+
].join("\n");
|
|
194
|
+
}
|
|
195
|
+
function renderBudgetCheck(result) {
|
|
196
|
+
return [
|
|
197
|
+
`Budget check${result.taskId ? ` for ${result.taskId}` : ""}: ${result.passed ? "passed" : "failed"}`,
|
|
198
|
+
`- Applied budgets: ${result.appliedBudgets.length > 0
|
|
199
|
+
? result.appliedBudgets.join(", ")
|
|
200
|
+
: "none"}`,
|
|
201
|
+
`- Requests: ${result.usage.totals.requests}`,
|
|
202
|
+
`- Total tokens: ${result.usage.totals.totalTokens}`,
|
|
203
|
+
`- Estimated cost USD: ${result.usage.totals.estimatedCostUsd}`,
|
|
204
|
+
"",
|
|
205
|
+
"Violations:",
|
|
206
|
+
...(result.violations.length === 0
|
|
207
|
+
? ["- none"]
|
|
208
|
+
: result.violations.map((violation) => `- ${violation.scope} ${violation.metric}: ${violation.actual} > ${violation.limit}`)),
|
|
209
|
+
].join("\n");
|
|
210
|
+
}
|
|
211
|
+
function usageLines(items) {
|
|
212
|
+
return items.length === 0
|
|
213
|
+
? ["- none"]
|
|
214
|
+
: items.map((item) => `- ${item.key}: ${item.requests} requests, ${item.totalTokens} tokens, $${item.estimatedCostUsd}`);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=model-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-commands.js","sourceRoot":"","sources":["../src/model-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/notifications.d.ts
CHANGED
|
@@ -5,6 +5,18 @@ export interface GatePauseNotificationInput {
|
|
|
5
5
|
transitionKey: string;
|
|
6
6
|
reviewArtifact: string;
|
|
7
7
|
}
|
|
8
|
+
export type WorkflowNotificationKind = "done" | "failed" | "qa_retry" | "critical_blocking_review";
|
|
9
|
+
export interface WorkflowLifecycleNotificationInput {
|
|
10
|
+
root: string;
|
|
11
|
+
taskId: string;
|
|
12
|
+
kind: WorkflowNotificationKind;
|
|
13
|
+
runId?: string;
|
|
14
|
+
phase?: string;
|
|
15
|
+
actor?: string;
|
|
16
|
+
detail: string;
|
|
17
|
+
artifact?: string;
|
|
18
|
+
idempotencyKey?: string;
|
|
19
|
+
}
|
|
8
20
|
export interface NotificationTransports {
|
|
9
21
|
postSlack?: (webhookUrl: string, body: SlackPayload) => Promise<void>;
|
|
10
22
|
commentOnIssue?: (issue: string, body: string) => Promise<void>;
|
|
@@ -16,6 +28,17 @@ interface GatePauseMessage {
|
|
|
16
28
|
reviewArtifact: string;
|
|
17
29
|
resumeCommand: string;
|
|
18
30
|
}
|
|
31
|
+
interface WorkflowLifecycleMessage {
|
|
32
|
+
taskId: string;
|
|
33
|
+
taskTitle: string;
|
|
34
|
+
kind: WorkflowNotificationKind;
|
|
35
|
+
headline: string;
|
|
36
|
+
detail: string;
|
|
37
|
+
runId?: string;
|
|
38
|
+
phase?: string;
|
|
39
|
+
actor?: string;
|
|
40
|
+
artifact?: string;
|
|
41
|
+
}
|
|
19
42
|
interface SlackPayload {
|
|
20
43
|
text: string;
|
|
21
44
|
blocks: Array<{
|
|
@@ -27,5 +50,7 @@ interface SlackPayload {
|
|
|
27
50
|
}>;
|
|
28
51
|
}
|
|
29
52
|
export declare function notifyGatePaused(input: GatePauseNotificationInput, transports?: NotificationTransports): Promise<NotificationChannelResult[]>;
|
|
53
|
+
export declare function notifyWorkflowLifecycle(input: WorkflowLifecycleNotificationInput, transports?: NotificationTransports): Promise<NotificationChannelResult[]>;
|
|
30
54
|
export declare function buildGatePauseMessage(input: GatePauseNotificationInput): Promise<GatePauseMessage>;
|
|
55
|
+
export declare function buildWorkflowLifecycleMessage(input: WorkflowLifecycleNotificationInput): Promise<WorkflowLifecycleMessage>;
|
|
31
56
|
export {};
|