@phamvuhoang/otto-core 0.33.0 → 0.33.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/dist/codebase-memory-adapter.d.ts +99 -0
- package/dist/codebase-memory-adapter.d.ts.map +1 -0
- package/dist/codebase-memory-adapter.js +127 -0
- package/dist/codebase-memory-adapter.js.map +1 -0
- package/dist/context-compressor.d.ts +11 -0
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +16 -0
- package/dist/context-compressor.js.map +1 -1
- package/dist/eval.d.ts +30 -0
- package/dist/eval.d.ts.map +1 -1
- package/dist/eval.js +42 -1
- package/dist/eval.js.map +1 -1
- package/dist/extension-profiles.d.ts.map +1 -1
- package/dist/extension-profiles.js +11 -0
- package/dist/extension-profiles.js.map +1 -1
- package/dist/fanout.d.ts +48 -1
- package/dist/fanout.d.ts.map +1 -1
- package/dist/fanout.js +121 -11
- package/dist/fanout.js.map +1 -1
- package/dist/handoff.d.ts +32 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +58 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +59 -2
- package/dist/loop.js.map +1 -1
- package/dist/panel.d.ts +10 -0
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +29 -4
- package/dist/panel.js.map +1 -1
- package/dist/plan-tasks.d.ts +39 -5
- package/dist/plan-tasks.d.ts.map +1 -1
- package/dist/plan-tasks.js +85 -12
- package/dist/plan-tasks.js.map +1 -1
- package/dist/report-finalize.d.ts +9 -0
- package/dist/report-finalize.d.ts.map +1 -1
- package/dist/report-finalize.js +28 -1
- package/dist/report-finalize.js.map +1 -1
- package/dist/run-report.d.ts +45 -0
- package/dist/run-report.d.ts.map +1 -1
- package/dist/run-report.js +18 -0
- package/dist/run-report.js.map +1 -1
- package/dist/tools.d.ts +17 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +48 -0
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/templates/subtask.md +17 -0
package/dist/plan-tasks.js
CHANGED
|
@@ -119,36 +119,109 @@ export function discoverPlanTasks(workspaceDir) {
|
|
|
119
119
|
}
|
|
120
120
|
return best?.tasks ?? [];
|
|
121
121
|
}
|
|
122
|
+
/** Escape a `fileScope` glob (only `*` is a wildcard) into a matching RegExp. */
|
|
123
|
+
function globToRegExp(glob) {
|
|
124
|
+
const escaped = glob
|
|
125
|
+
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
126
|
+
.replace(/\*/g, "[^/]*");
|
|
127
|
+
return new RegExp(`^${escaped}$`);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* True if two `fileScope` entries collide — exact match, directory/prefix
|
|
131
|
+
* containment (either side may be a directory the other is nested under), or
|
|
132
|
+
* a glob on either side matching the other. Exported: P25 Task 2 reuses this
|
|
133
|
+
* for reconciling scopes against the plan's file map.
|
|
134
|
+
*/
|
|
135
|
+
export function pathsCollide(a, b) {
|
|
136
|
+
if (a === b)
|
|
137
|
+
return true;
|
|
138
|
+
const dir = (p) => (p.endsWith("/") ? p : `${p}/`);
|
|
139
|
+
if (a.startsWith(dir(b)) || b.startsWith(dir(a)))
|
|
140
|
+
return true;
|
|
141
|
+
if (a.includes("*") && globToRegExp(a).test(b))
|
|
142
|
+
return true;
|
|
143
|
+
if (b.includes("*") && globToRegExp(b).test(a))
|
|
144
|
+
return true;
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
/** True if any path in `a` collides with any path in `b` (see {@link pathsCollide}). */
|
|
148
|
+
export function scopesOverlap(a, b) {
|
|
149
|
+
return a.some((x) => b.some((y) => pathsCollide(x, y)));
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Fraction of `task.fileScope` grounded in the plan's file map (paths the
|
|
153
|
+
* plan actually names). `1` when `planFileMap` is empty (no plan map to check
|
|
154
|
+
* against — no penalty) or the task declares no scope.
|
|
155
|
+
*/
|
|
156
|
+
export function scopeConfidence(task, planFileMap) {
|
|
157
|
+
if (planFileMap.length === 0 || task.fileScope.length === 0)
|
|
158
|
+
return 1;
|
|
159
|
+
const grounded = task.fileScope.filter((f) => planFileMap.some((m) => pathsCollide(f, m)));
|
|
160
|
+
return grounded.length / task.fileScope.length;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Predict cross-task file-scope conflicts and per-task scope confidence
|
|
164
|
+
* against the plan's file map. Pure/side-effect-free — callers decide what to
|
|
165
|
+
* do with the predictions (e.g. {@link planParallelGroups} defers low-
|
|
166
|
+
* confidence or overlapping tasks to singleton waves).
|
|
167
|
+
*/
|
|
168
|
+
export function predictConflicts(tasks, planFileMap) {
|
|
169
|
+
return tasks.map((t) => {
|
|
170
|
+
const overlapsWith = tasks
|
|
171
|
+
.filter((o) => o.id !== t.id && scopesOverlap(t.fileScope, o.fileScope))
|
|
172
|
+
.map((o) => o.id);
|
|
173
|
+
const confidence = scopeConfidence(t, planFileMap);
|
|
174
|
+
const reasons = [];
|
|
175
|
+
if (overlapsWith.length)
|
|
176
|
+
reasons.push(`file-scope overlaps ${overlapsWith.join(", ")}`);
|
|
177
|
+
if (confidence < 0.5)
|
|
178
|
+
reasons.push(`scope not grounded in plan map (confidence ${confidence.toFixed(2)})`);
|
|
179
|
+
return {
|
|
180
|
+
taskId: t.id,
|
|
181
|
+
overlapsWith,
|
|
182
|
+
confidence,
|
|
183
|
+
reason: reasons.join("; ") || undefined,
|
|
184
|
+
};
|
|
185
|
+
});
|
|
186
|
+
}
|
|
122
187
|
/**
|
|
123
188
|
* Group tasks into execution waves. A task joins the current wave iff all its
|
|
124
|
-
* deps are in earlier waves, it is `parallelSafe`,
|
|
125
|
-
* disjoint from every task already in the wave
|
|
126
|
-
*
|
|
127
|
-
*
|
|
189
|
+
* deps are in earlier waves, it is `parallelSafe`, its `fileScope` is
|
|
190
|
+
* disjoint (via {@link pathsCollide}) from every task already in the wave,
|
|
191
|
+
* and its plan-map-reconciled confidence is `>= 0.5`. A non-`parallelSafe`
|
|
192
|
+
* task, one whose scope collides with the wave, or one with low scope
|
|
193
|
+
* confidence runs alone in its own wave, preserving correctness.
|
|
194
|
+
* `planFileMap` is optional and defaults to `[]`, which yields confidence `1`
|
|
195
|
+
* for every task (see {@link scopeConfidence}) — omitting it reproduces
|
|
196
|
+
* today's exact-scope-disjointness behavior. Assumes a validated (acyclic)
|
|
197
|
+
* graph from {@link parsePlanTasks}.
|
|
128
198
|
*/
|
|
129
|
-
export function planParallelGroups(tasks) {
|
|
199
|
+
export function planParallelGroups(tasks, planFileMap = []) {
|
|
200
|
+
const conflicts = new Map(predictConflicts(tasks, planFileMap).map((c) => [c.taskId, c]));
|
|
201
|
+
const confident = (t) => (conflicts.get(t.id)?.confidence ?? 1) >= 0.5;
|
|
130
202
|
const waves = [];
|
|
131
203
|
const done = new Set();
|
|
132
204
|
let remaining = [...tasks];
|
|
133
205
|
while (remaining.length > 0) {
|
|
134
206
|
const wave = [];
|
|
135
|
-
const usedScope =
|
|
207
|
+
const usedScope = [];
|
|
136
208
|
for (const t of remaining) {
|
|
137
209
|
const depsReady = t.dependsOn.every((d) => done.has(d));
|
|
138
210
|
if (!depsReady)
|
|
139
211
|
continue;
|
|
140
|
-
const disjoint = t.fileScope.every((f) => !usedScope.
|
|
212
|
+
const disjoint = t.fileScope.every((f) => !usedScope.some((u) => pathsCollide(f, u)));
|
|
141
213
|
if (wave.length === 0) {
|
|
142
214
|
// First task in the wave always admitted (deps ready). A non-parallel
|
|
143
|
-
// task seals the wave as a
|
|
215
|
+
// task, or one with low plan-map confidence, seals the wave as a
|
|
216
|
+
// singleton.
|
|
144
217
|
wave.push(t);
|
|
145
|
-
t.fileScope
|
|
146
|
-
if (!t.parallelSafe)
|
|
218
|
+
usedScope.push(...t.fileScope);
|
|
219
|
+
if (!t.parallelSafe || !confident(t))
|
|
147
220
|
break;
|
|
148
221
|
}
|
|
149
|
-
else if (t.parallelSafe && disjoint) {
|
|
222
|
+
else if (t.parallelSafe && disjoint && confident(t)) {
|
|
150
223
|
wave.push(t);
|
|
151
|
-
t.fileScope
|
|
224
|
+
usedScope.push(...t.fileScope);
|
|
152
225
|
}
|
|
153
226
|
}
|
|
154
227
|
if (wave.length === 0) {
|
package/dist/plan-tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-tasks.js","sourceRoot":"","sources":["../src/plan-tasks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-tasks.js","sourceRoot":"","sources":["../src/plan-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,19 @@ export type FinalizeReportContext = {
|
|
|
17
17
|
headSha?: string | null;
|
|
18
18
|
changedFiles?: string[];
|
|
19
19
|
scopeDrift?: ScopeDriftSummary | null;
|
|
20
|
+
fanout?: RunManifest["fanout"];
|
|
20
21
|
};
|
|
21
22
|
export declare const DEFAULT_REPORT_LEGIBILITY_THRESHOLD = 1;
|
|
22
23
|
export declare function extractRunReport(stageResult: string): string | null;
|
|
23
24
|
export declare function summarizeReviewSeverity(stages: StageRecord[]): ReviewSeveritySummary | null;
|
|
25
|
+
/**
|
|
26
|
+
* Render a `--fan-out` run's sub-agent evidence (issue #66 P11, P25 Task 5)
|
|
27
|
+
* as an "Agent contributions" section — each task's status, changed files,
|
|
28
|
+
* and defer reason, plus the synthesizer's cross-task summary. Pure; returns
|
|
29
|
+
* `""` when there are no contributions so non-fan-out runs omit the section
|
|
30
|
+
* entirely.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatAgentContributions(fanout: NonNullable<FinalizeReportContext["fanout"]>): string;
|
|
24
33
|
export declare function buildFallbackRunReport(ctx: FinalizeReportContext): string;
|
|
25
34
|
export declare function finalizeReportText(reportText: string | null, ctx: FinalizeReportContext): string;
|
|
26
35
|
//# sourceMappingURL=report-finalize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-finalize.d.ts","sourceRoot":"","sources":["../src/report-finalize.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAUzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"report-finalize.d.ts","sourceRoot":"","sources":["../src/report-finalize.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAUzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAInE;AAWD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EAAE,GACpB,qBAAqB,GAAG,IAAI,CAmB9B;AAqLD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,GACnD,MAAM,CAYR;AAiCD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAkEzE;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,EAAE,qBAAqB,GACzB,MAAM,CAYR"}
|
package/dist/report-finalize.js
CHANGED
|
@@ -176,6 +176,32 @@ function appendVerificationGallery(report, ctx) {
|
|
|
176
176
|
const withGallery = `${report.trimEnd()}\n\n${section}\n`;
|
|
177
177
|
return visual ? `${withGallery.trimEnd()}\n\n${visual}\n` : withGallery;
|
|
178
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Render a `--fan-out` run's sub-agent evidence (issue #66 P11, P25 Task 5)
|
|
181
|
+
* as an "Agent contributions" section — each task's status, changed files,
|
|
182
|
+
* and defer reason, plus the synthesizer's cross-task summary. Pure; returns
|
|
183
|
+
* `""` when there are no contributions so non-fan-out runs omit the section
|
|
184
|
+
* entirely.
|
|
185
|
+
*/
|
|
186
|
+
export function formatAgentContributions(fanout) {
|
|
187
|
+
if (!fanout.contributions.length)
|
|
188
|
+
return "";
|
|
189
|
+
const rows = fanout.contributions
|
|
190
|
+
.map((c) => `- **${c.taskId}** — ${c.status}${c.changedFiles.length ? ` (${c.changedFiles.join(", ")})` : ""}${c.reason ? ` — ${c.reason}` : ""}`)
|
|
191
|
+
.join("\n");
|
|
192
|
+
const summary = fanout.crossTaskSummary
|
|
193
|
+
? `\n\n${fanout.crossTaskSummary}`
|
|
194
|
+
: "";
|
|
195
|
+
return `## Agent contributions\n\n${rows}${summary}`;
|
|
196
|
+
}
|
|
197
|
+
function appendAgentContributions(report, ctx) {
|
|
198
|
+
if (!ctx.fanout)
|
|
199
|
+
return report;
|
|
200
|
+
const section = formatAgentContributions(ctx.fanout);
|
|
201
|
+
if (!section)
|
|
202
|
+
return report;
|
|
203
|
+
return `${report.trimEnd()}\n\n${section}\n`;
|
|
204
|
+
}
|
|
179
205
|
function appendLegibilityGate(report) {
|
|
180
206
|
const score = scoreReportLegibility(report);
|
|
181
207
|
const passed = score.ratio >= DEFAULT_REPORT_LEGIBILITY_THRESHOLD;
|
|
@@ -265,7 +291,8 @@ export function finalizeReportText(reportText, ctx) {
|
|
|
265
291
|
const withOutcome = ensureOutcomeSection(base, ctx.manifest);
|
|
266
292
|
const withRisk = insertRiskNotes(withOutcome, summarizeReviewSeverity(ctx.stages), ctx.scopeDrift);
|
|
267
293
|
const withEvidence = appendAutomatedEvidence(withRisk, ctx);
|
|
268
|
-
const
|
|
294
|
+
const withContributions = appendAgentContributions(withEvidence, ctx);
|
|
295
|
+
const withGallery = appendVerificationGallery(withContributions, ctx);
|
|
269
296
|
return appendLegibilityGate(withGallery);
|
|
270
297
|
}
|
|
271
298
|
//# sourceMappingURL=report-finalize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-finalize.js","sourceRoot":"","sources":["../src/report-finalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EACL,aAAa,GAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,GAAG,0CAA0C,CAAC;AAC/D,MAAM,KAAK,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"report-finalize.js","sourceRoot":"","sources":["../src/report-finalize.ts"],"names":[],"mappings":"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"}
|
package/dist/run-report.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { PlanReconciliation, VerificationEntry } from "./verification-matri
|
|
|
4
4
|
import type { PolicyViolationKind } from "./safety-policy.js";
|
|
5
5
|
import type { TaintSource } from "./taint.js";
|
|
6
6
|
import type { TokenUsage } from "./tokens.js";
|
|
7
|
+
import type { CbmIndexIdentity, IndexFreshness, WriteInventory } from "./codebase-memory-adapter.js";
|
|
8
|
+
import type { FanoutResult } from "./fanout.js";
|
|
7
9
|
/**
|
|
8
10
|
* A safety-relevant occurrence recorded in a run's trajectory so policy
|
|
9
11
|
* violations and untrusted-input handling are visible to evaluation scoring and
|
|
@@ -81,6 +83,22 @@ export type ToolUsage = {
|
|
|
81
83
|
retrievalHandle?: string;
|
|
82
84
|
/** Why the tool was selected/used (so a run report can explain the choice). */
|
|
83
85
|
reasons?: string[];
|
|
86
|
+
/** The tool's version, when known (P26 codebase-memory evidence). */
|
|
87
|
+
toolVersion?: string;
|
|
88
|
+
/** Identity of the index this invocation queried, when applicable (P26). */
|
|
89
|
+
indexIdentity?: CbmIndexIdentity;
|
|
90
|
+
/** Freshness classification of the index at invocation time (P26). */
|
|
91
|
+
indexFreshness?: IndexFreshness;
|
|
92
|
+
/** Estimated tokens avoided by retrieving via this tool instead of inline context (P26). */
|
|
93
|
+
tokensAvoided?: number;
|
|
94
|
+
/** Size of the result returned, if relevant (P26). */
|
|
95
|
+
resultSize?: number;
|
|
96
|
+
/** Wall-clock latency of the invocation in milliseconds (P26). */
|
|
97
|
+
latencyMs?: number;
|
|
98
|
+
/** The query issued to the tool, if applicable (P26). */
|
|
99
|
+
query?: string;
|
|
100
|
+
/** Reason the tool fell back to a degraded path, if it did (P26). */
|
|
101
|
+
fallbackReason?: string;
|
|
84
102
|
};
|
|
85
103
|
/**
|
|
86
104
|
* A named pointer to a file Otto produced during a run (rendered prompt, NDJSON
|
|
@@ -175,9 +193,36 @@ export type RunManifest = {
|
|
|
175
193
|
/** Matrix↔plan reconciliation when a matching plan exists (issue #201);
|
|
176
194
|
* a row shortfall means at least one plan task was never verified. */
|
|
177
195
|
verificationPlan?: PlanReconciliation;
|
|
196
|
+
/** Run-level codebase-memory index record (P26 spike); absent for non-CBM runs. */
|
|
197
|
+
codebaseMemory?: {
|
|
198
|
+
indexIdentity?: CbmIndexIdentity;
|
|
199
|
+
buildMs?: number;
|
|
200
|
+
refreshMs?: number;
|
|
201
|
+
writeInventory?: WriteInventory;
|
|
202
|
+
};
|
|
203
|
+
/** Sub-agent fan-out evidence (issue #66 P11, P25 Task 4): per-task
|
|
204
|
+
* contributions (status + changed files + defer reason) and the
|
|
205
|
+
* cross-task interaction summary; absent when `--fan-out` did not run. */
|
|
206
|
+
fanout?: {
|
|
207
|
+
contributions: {
|
|
208
|
+
taskId: string;
|
|
209
|
+
status: string;
|
|
210
|
+
changedFiles: string[];
|
|
211
|
+
reason?: string;
|
|
212
|
+
}[];
|
|
213
|
+
crossTaskSummary: string;
|
|
214
|
+
};
|
|
178
215
|
startedAt: string;
|
|
179
216
|
finishedAt?: string;
|
|
180
217
|
};
|
|
218
|
+
/**
|
|
219
|
+
* Map a `runFanout` result onto the manifest's `fanout` evidence field (P25
|
|
220
|
+
* Task 4): one contribution per task outcome (status + changed files + defer
|
|
221
|
+
* reason, when any), plus the synthesizer's cross-task summary. Pure — no I/O
|
|
222
|
+
* — so the loop can call it directly on the in-memory `FanoutResult` and the
|
|
223
|
+
* mapping itself stays unit-testable without spawning sub-agents.
|
|
224
|
+
*/
|
|
225
|
+
export declare function summarizeFanout(result: FanoutResult): NonNullable<RunManifest["fanout"]>;
|
|
181
226
|
/**
|
|
182
227
|
* Allocate a sortable, filesystem-safe run id: an ISO timestamp with its
|
|
183
228
|
* colons/periods replaced by dashes, suffixed by the pid to keep concurrent
|
package/dist/run-report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"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"}
|
package/dist/run-report.js
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Map a `runFanout` result onto the manifest's `fanout` evidence field (P25
|
|
5
|
+
* Task 4): one contribution per task outcome (status + changed files + defer
|
|
6
|
+
* reason, when any), plus the synthesizer's cross-task summary. Pure — no I/O
|
|
7
|
+
* — so the loop can call it directly on the in-memory `FanoutResult` and the
|
|
8
|
+
* mapping itself stays unit-testable without spawning sub-agents.
|
|
9
|
+
*/
|
|
10
|
+
export function summarizeFanout(result) {
|
|
11
|
+
return {
|
|
12
|
+
contributions: result.outcomes.map((o) => ({
|
|
13
|
+
taskId: o.task.id,
|
|
14
|
+
status: o.status,
|
|
15
|
+
changedFiles: o.handoff?.changedFiles ?? [],
|
|
16
|
+
...(o.reason !== undefined ? { reason: o.reason } : {}),
|
|
17
|
+
})),
|
|
18
|
+
crossTaskSummary: result.crossTaskSummary,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
3
21
|
/**
|
|
4
22
|
* Allocate a sortable, filesystem-safe run id: an ISO timestamp with its
|
|
5
23
|
* colons/periods replaced by dashes, suffixed by the pid to keep concurrent
|
package/dist/run-report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -56,6 +56,13 @@ export type ToolDefinition = {
|
|
|
56
56
|
approvalActions: string[];
|
|
57
57
|
/** Registry-level enable flag; config can additionally disable per stage. */
|
|
58
58
|
enabled: boolean;
|
|
59
|
+
/** Per-operation allowlist (issue #P26); absent = no op gating (today's behavior). */
|
|
60
|
+
operations?: ToolOperation[];
|
|
61
|
+
};
|
|
62
|
+
/** One MCP-style operation a tool exposes, and whether it writes. */
|
|
63
|
+
export type ToolOperation = {
|
|
64
|
+
name: string;
|
|
65
|
+
write: boolean;
|
|
59
66
|
};
|
|
60
67
|
/**
|
|
61
68
|
* The structured result an adapter returns (issue #111 output contract). Beyond
|
|
@@ -161,4 +168,14 @@ export type ToolAuthorization = {
|
|
|
161
168
|
* evidence bundle. `allowed` is true only when there are no violations. Pure.
|
|
162
169
|
*/
|
|
163
170
|
export declare function authorizeToolInvocation(policy: SafetyPolicy, tool: ToolDefinition, invocation: ToolInvocation): ToolAuthorization;
|
|
171
|
+
/**
|
|
172
|
+
* Authorize one named operation on a tool (issue #P26): allowed only if the
|
|
173
|
+
* tool is enabled for `stage`, `operation` is declared in `tool.operations`,
|
|
174
|
+
* and — when that operation is a write — the invocation also clears
|
|
175
|
+
* {@link authorizeToolInvocation}. Read ops need no invocation-level check
|
|
176
|
+
* once declared. A tool with no `operations` list blocks every operation
|
|
177
|
+
* (nothing is declared), leaving `authorizeToolInvocation` as the only gate
|
|
178
|
+
* for tools that don't opt into per-operation authority. Pure.
|
|
179
|
+
*/
|
|
180
|
+
export declare function authorizeToolOperation(policy: SafetyPolicy, tool: ToolDefinition, config: ToolConfig, stage: string, operation: string, invocation: ToolInvocation): ToolAuthorization;
|
|
164
181
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAUpE;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,+EAA+E;IAC/E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,wFAAwF;IACxF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -57,6 +57,13 @@ export function parseTool(raw) {
|
|
|
57
57
|
if (typeof o.timeoutMs === "number" && Number.isFinite(o.timeoutMs)) {
|
|
58
58
|
tool.timeoutMs = o.timeoutMs;
|
|
59
59
|
}
|
|
60
|
+
if (Array.isArray(o.operations)) {
|
|
61
|
+
tool.operations = o.operations
|
|
62
|
+
.filter((op) => op !== null &&
|
|
63
|
+
typeof op === "object" &&
|
|
64
|
+
typeof op.name === "string")
|
|
65
|
+
.map((op) => ({ name: op.name, write: op.write === true }));
|
|
66
|
+
}
|
|
60
67
|
return tool;
|
|
61
68
|
}
|
|
62
69
|
/**
|
|
@@ -225,4 +232,45 @@ export function authorizeToolInvocation(policy, tool, invocation) {
|
|
|
225
232
|
}));
|
|
226
233
|
return { allowed: violations.length === 0, violations, events };
|
|
227
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Build a blocked {@link ToolAuthorization} for `authorizeToolOperation`'s
|
|
237
|
+
* allowlist checks (an operation the tool hasn't declared, or a stage it isn't
|
|
238
|
+
* enabled for). Mirrors the `PolicyViolation`/`SafetyEvent` field names
|
|
239
|
+
* `authorizeToolInvocation` uses for a blocked call. The event reuses the
|
|
240
|
+
* passed axis `kind` (same as the invocation-level mapping).
|
|
241
|
+
*/
|
|
242
|
+
function blocked(kind, subject, message) {
|
|
243
|
+
const violation = { kind, subject, message };
|
|
244
|
+
const event = {
|
|
245
|
+
category: "policy-violation",
|
|
246
|
+
kind,
|
|
247
|
+
subject,
|
|
248
|
+
message,
|
|
249
|
+
blocked: true,
|
|
250
|
+
};
|
|
251
|
+
return { allowed: false, violations: [violation], events: [event] };
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Authorize one named operation on a tool (issue #P26): allowed only if the
|
|
255
|
+
* tool is enabled for `stage`, `operation` is declared in `tool.operations`,
|
|
256
|
+
* and — when that operation is a write — the invocation also clears
|
|
257
|
+
* {@link authorizeToolInvocation}. Read ops need no invocation-level check
|
|
258
|
+
* once declared. A tool with no `operations` list blocks every operation
|
|
259
|
+
* (nothing is declared), leaving `authorizeToolInvocation` as the only gate
|
|
260
|
+
* for tools that don't opt into per-operation authority. Pure.
|
|
261
|
+
*/
|
|
262
|
+
export function authorizeToolOperation(policy, tool, config, stage, operation, invocation) {
|
|
263
|
+
const stageGate = toolEnabledForStage(tool, config, stage);
|
|
264
|
+
if (!stageGate.enabled) {
|
|
265
|
+
return blocked("approval-required", operation, `tool not enabled for stage ${stage}: ${stageGate.reason}`);
|
|
266
|
+
}
|
|
267
|
+
const op = tool.operations?.find((o) => o.name === operation);
|
|
268
|
+
if (!op) {
|
|
269
|
+
return blocked("approval-required", operation, `operation not in allowlist: ${operation}`);
|
|
270
|
+
}
|
|
271
|
+
// Read ops need no write authority; write ops go through the full intersection.
|
|
272
|
+
if (!op.write)
|
|
273
|
+
return { allowed: true, violations: [], events: [] };
|
|
274
|
+
return authorizeToolInvocation(policy, tool, invocation);
|
|
275
|
+
}
|
|
228
276
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,cAAc,GAGf,MAAM,oBAAoB,CAAC;AA4B5B,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,SAAS;IACT,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;CACN,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/templates/subtask.md
CHANGED
|
@@ -27,6 +27,23 @@ much as you safely can within scope and note the gap in your commit message.
|
|
|
27
27
|
Write the failing test first where it applies, implement, run the relevant
|
|
28
28
|
feedback loop, and make a single focused commit for this task. Do not push.
|
|
29
29
|
|
|
30
|
+
**Mandatory: before finishing, write `handoff.json` at the worktree root** so
|
|
31
|
+
the orchestrator can reconcile your work without re-deriving it. It must be a
|
|
32
|
+
JSON object with these keys:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
{
|
|
36
|
+
"changedFiles": ["path/one.ts", "path/two.ts"],
|
|
37
|
+
"testsRun": [{ "command": "pnpm test", "passed": true }],
|
|
38
|
+
"risks": ["anything the orchestrator or reviewer should double-check"],
|
|
39
|
+
"deferred": ["work you knowingly left out of scope"]
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`testsRun` entries are `{command, passed}` pairs for every feedback-loop
|
|
44
|
+
command you ran. Leave `risks`/`deferred` as empty arrays if there are none —
|
|
45
|
+
do not omit the file or any key.
|
|
46
|
+
|
|
30
47
|
</task>
|
|
31
48
|
|
|
32
49
|
@include:prompt.md
|