@flumecode/runner 0.14.0 → 0.15.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
@@ -746,7 +746,9 @@ var pseudoCodeEntrySchema = z2.object({
746
746
  });
747
747
  var stepSchema = z2.object({
748
748
  title: z2.string().min(1).describe("A concise imperative title for this step."),
749
- description: z2.string().min(1).describe("What changes and why \u2014 the rationale for this step. " + INLINE_CODE_HINT),
749
+ description: z2.array(z2.string().min(1)).min(1).describe(
750
+ "Bullet points that explain this step's change so a reviewer can judge whether the design is correct. Each array item is one short, self-contained bullet \u2014 not a single paragraph, and not a restatement of the pseudo code. " + INLINE_CODE_HINT
751
+ ),
750
752
  pseudoCode: z2.array(pseudoCodeEntrySchema).optional().describe(
751
753
  "Per-file pseudo code. Provide an entry for every non-documentation file this step touches. Each entry contains the file path and pseudo code describing the changes to that file."
752
754
  )
@@ -786,7 +788,9 @@ function renderPlan(plan) {
786
788
  lines2.push("");
787
789
  lines2.push(`### ${i + 1}. ${step.title}`);
788
790
  lines2.push("");
789
- lines2.push(step.description);
791
+ for (const bullet of step.description) {
792
+ lines2.push(`- ${bullet}`);
793
+ }
790
794
  if (step.pseudoCode && step.pseudoCode.length > 0) {
791
795
  for (const entry of step.pseudoCode) {
792
796
  lines2.push("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flumecode/runner",
3
- "version": "0.14.0",
3
+ "version": "0.15.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": {
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: format-code-plugin-generator
3
+ description: >-
4
+ Generate a concrete plan to install the FlumeCode Format plugin for THIS repo —
5
+ a .flumecode/plugins/format-code/ manifest wired to the pre-commit socket that
6
+ auto-formats code (prettier --write) so changes ride into the commit.
7
+ ---
8
+
9
+ # format-code-plugin-generator
10
+
11
+ You generate a concrete, repo-specific plan to install the FlumeCode Format
12
+ plugin. You work **read-only**: inspect the repo and produce a plan via
13
+ `submit_plan`; never edit files.
14
+
15
+ ## Orient yourself first
16
+
17
+ Before producing the plan, inspect:
18
+
19
+ 1. `.flumecode/wiki/README.md` and `components/plugins.md` (if present) for context.
20
+ 2. `package.json` `scripts` — look for `format`, `format:write`, `prettier` references.
21
+ 3. `.prettierrc*` — confirm Prettier is configured.
22
+ 4. `.husky/pre-commit` — find the existing formatting step this plugin replaces.
23
+
24
+ From this, determine the **exact shell command** the `run` script should execute
25
+ (e.g. `pnpm format`). Do not hard-code — derive from the repo.
26
+
27
+ ## Produce the plan
28
+
29
+ Call `submit_plan` **once**, passing a `plans` array with one entry whose steps
30
+ instruct the implementer to create:
31
+
32
+ ### Artifact — `.flumecode/plugins/format-code/plugin.json`
33
+
34
+ ```json
35
+ {
36
+ "key": "format-code",
37
+ "socket": "pre-commit",
38
+ "run": "<detected format write command>"
39
+ }
40
+ ```
41
+
42
+ Derive `run` from the repo's detected commands (e.g. `pnpm format`). Do not hard-code — include the actual commands discovered in the Orient step.
43
+
44
+ ### Manifest shape
45
+
46
+ The manifest `plugin.json` must have exactly these fields:
47
+
48
+ ```
49
+ { key, socket, run }
50
+ ```
51
+
52
+ This is the shape the FlumeCode plugin loader expects.
53
+
54
+ ### Acceptance criteria the plan must include
55
+
56
+ - `.flumecode/plugins/format-code/plugin.json` exists with `key: "format-code"`, `socket: "pre-commit"`, and `run` set to the detected write-format command.
57
+ - The `run` command reformats files in place and exits 0; reformatted files are staged and included in the commit.
58
+
59
+ ## Always
60
+
61
+ - Stay read-only. Produce the plan via `submit_plan`; never edit files.
62
+ - The plan must be specific enough for an `implement-plan` run to execute
63
+ without re-deriving the commands — include the actual detected commands in
64
+ the step descriptions and artifact content.
@@ -68,7 +68,7 @@ Field-by-field guidance:
68
68
  unanswered defaults from Phase 1).
69
69
  - **`steps`** — an ordered list. For each step provide:
70
70
  - **`title`** — a concise imperative phrase naming the step (e.g. "Add submit_plan schema to plan.ts").
71
- - **`description`** — what changes and why: the concrete change being made and the rationale for it. Use concrete file references (`path/to/file.ts`) and name the functions/symbols involved.
71
+ - **`description`** — an array of bullet points that help the reviewer understand the upcoming `pseudoCode` and decide whether the plan and design are correct. Each item is a distinct, self-contained point about what is changing and why not a single paragraph, and not a line-by-line restatement of the pseudo code. Use concrete file references (`path/to/file.ts`) and name the functions/symbols involved. Apply inline-code formatting to all identifiers.
72
72
  - **`pseudoCode`** — an array of `{ file, pseudoCode }` entries. Provide an entry for every file the step touches **except** documentation files (SKILL.md, README.md, wiki pages, etc.). `pseudoCode` is optional in the schema but expected for all non-documentation files. Each entry names the file path and contains pseudo code that precisely describes the changes to make in that file.
73
73
  - **`acceptanceCriteria`** — **required; at least 2 items.** Each criterion must
74
74
  be a concrete, deterministically-checkable condition that a third party can verify