@flumecode/runner 0.12.0 → 0.13.0

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/cli.js CHANGED
@@ -604,14 +604,7 @@ function parseManifest(raw) {
604
604
  if (typeof r.key !== "string" || !r.key) return null;
605
605
  if (r.socket !== "pre-commit") return null;
606
606
  if (typeof r.run !== "string" || !r.run) return null;
607
- const manifest = { key: r.key, socket: r.socket, run: r.run };
608
- if (typeof r.heartbeat === "object" && r.heartbeat !== null) {
609
- const hb = r.heartbeat;
610
- if (typeof hb.url === "string" && typeof hb.token === "string") {
611
- manifest.heartbeat = { url: hb.url, token: hb.token };
612
- }
613
- }
614
- return manifest;
607
+ return { key: r.key, socket: r.socket, run: r.run };
615
608
  }
616
609
 
617
610
  // src/plugins/socket.ts
@@ -863,8 +856,14 @@ var acVerdictSchema = z3.object({
863
856
  });
864
857
  var reportInputSchema = {
865
858
  summary: z3.string().min(1).describe("One or two sentences on what was implemented."),
866
- prose: z3.string().min(1).describe(
867
- "Markdown for the remaining report sections \u2014 Files changed, Build / tests, and Caveats / follow-ups. Use ## headings. Do NOT include the acceptance-criteria section here (that goes in acceptanceCriteria) and do NOT include the PR link (the runner appends it)."
859
+ filesChanged: z3.string().min(1).describe(
860
+ "Markdown: the list of files changed (from the diff). Rendered under '## Files changed'."
861
+ ),
862
+ codeQuality: z3.string().min(1).describe(
863
+ "Markdown: the code-quality review outcome and anything left as nice-to-have. Rendered under '## Code quality'."
864
+ ),
865
+ caveats: z3.string().min(1).describe(
866
+ "Markdown: anything deferred, unmet, or worth a human's eyes, incl. diff hunks that map to no plan AC. Write 'None.' if nothing. Rendered under '## Caveats / follow-ups'."
868
867
  ),
869
868
  acceptanceCriteria: z3.array(acVerdictSchema).min(1).describe(
870
869
  "One entry per acceptance criterion from the plan, in plan order, each with a verdict and the diff evidence behind it."
@@ -874,10 +873,8 @@ var reportSchema = z3.object(reportInputSchema);
874
873
  function renderReport(report) {
875
874
  const lines2 = [];
876
875
  lines2.push(report.summary.trim());
877
- lines2.push("");
878
- lines2.push(report.prose.trim());
879
- lines2.push("");
880
- lines2.push("## Acceptance criteria");
876
+ lines2.push("", "## Files changed", "", report.filesChanged.trim());
877
+ lines2.push("", "## Acceptance criteria");
881
878
  for (const ac of report.acceptanceCriteria) {
882
879
  lines2.push("");
883
880
  lines2.push(`### ${STATUS_ICON[ac.status]} ${ac.criterion}`);
@@ -892,13 +889,15 @@ function renderReport(report) {
892
889
  lines2.push("```");
893
890
  }
894
891
  }
892
+ lines2.push("", "## Code quality", "", report.codeQuality.trim());
893
+ lines2.push("", "## Caveats / follow-ups", "", report.caveats.trim());
895
894
  return lines2.join("\n");
896
895
  }
897
896
  function createReportTooling() {
898
897
  let submittedReport = null;
899
898
  const submitReport = tool3(
900
899
  SUBMIT_REPORT,
901
- "Submit the final implementation report as structured data. Call this exactly once, at the end of the run. `acceptanceCriteria` must contain one entry per plan criterion, each with a met / not_met / unclear verdict and the diff hunk(s) that prove it. `summary` + `prose` are markdown for the rest of the report. Do NOT include a PR link \u2014 the runner appends it.",
900
+ "Submit the final implementation report as structured data. Call this exactly once, at the end of the run. `acceptanceCriteria` must contain one entry per plan criterion, each with a met / not_met / unclear verdict and the diff hunk(s) that prove it. `summary`, `filesChanged`, `codeQuality`, and `caveats` are the four named markdown sections. Do NOT include a PR link \u2014 the runner appends it.",
902
901
  reportInputSchema,
903
902
  async (args) => {
904
903
  submittedReport = reportSchema.parse(args);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flumecode/runner",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "description": "FlumeCode local runner — claims jobs and drives your local Claude Code against a real checkout.",
6
6
  "bin": {
@@ -149,14 +149,9 @@ the next step.
149
149
  The report subagent calls `submit_report` with these fields:
150
150
 
151
151
  - **`summary`** — one or two sentences on what was implemented.
152
- - **`prose`** — markdown for the remaining sections, using `##` headings:
153
- **Code quality** (the quality-review outcome and anything left as
154
- nice-to-have), **Files changed** (the list from the diff), **Build / tests** (lists
155
- each verification command and its final pass/fail result, or explains that no
156
- build/test setup was found), and **Caveats / follow-ups** (anything deferred,
157
- unmet, or worth a human's eyes — including any diff hunks that map to no plan AC,
158
- listed explicitly as unattributed changes). Do **not** put the acceptance-criteria
159
- section in `prose`, and do **not** include a PR link — the runner adds it.
152
+ - **`filesChanged`** — markdown list of files changed (from the diff). Rendered under `## Files changed`.
153
+ - **`codeQuality`** the code-quality review outcome and anything left as nice-to-have. Rendered under `## Code quality`.
154
+ - **`caveats`** — anything deferred, unmet, or worth a human's eyes, including diff hunks that map to no plan AC. Write 'None.' if nothing. Rendered under `## Caveats / follow-ups`.
160
155
  - **`acceptanceCriteria`** — one entry per AC from the plan, in plan order, each:
161
156
  - `criterion` — the AC text verbatim.
162
157
  - `status` — `"met"` / `"not_met"` / `"unclear"`, mirroring the AC review.