pi-better-harness 0.15.2 → 0.15.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-better-plan",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Structured execution plans with persistent progress for Pi.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,7 +40,7 @@ const PlanStepSchema = Type.Object({
40
40
  });
41
41
 
42
42
  const WorkflowRowChangeSchema = Type.Object({
43
- id: Type.Optional(Type.String({ description: "Unit id, component id (e.g. C1), or fleet stage (explore, combine, canary, review, cicd). Omit for run-level fields." })),
43
+ id: Type.Optional(Type.String({ description: "Unit id, component id (e.g. C1), or fleet stage (explore, implement, review, ci, canary). Omit for run-level fields." })),
44
44
  target: Type.Optional(StringEnum(["unit", "component", "fleet", "run"] as const, { description: "Required with add. Otherwise only needed when the same id names two kinds of row." })),
45
45
  set: Type.Optional(Type.Object({}, {
46
46
  additionalProperties: true,
@@ -43,7 +43,7 @@ export interface RushPlanUpdateResult {
43
43
  /** Contract values from rush-issues references/task-plan.md. */
44
44
  export const RUSH_UNIT_STATUSES = ["pending", "in-flight", "diagnosing", "succeeded", "blocked", "cancelled"] as const;
45
45
  export const RUSH_UNIT_STAGES = ["pending", "implement", "validate", "self-review", "diagnose", "done"] as const;
46
- export const RUSH_COMPONENT_STATUSES = ["building", "combining", "review", "cicd", "merged", "blocked"] as const;
46
+ export const RUSH_COMPONENT_STATUSES = ["building", "combining", "review", "ci", "cicd", "merged", "blocked"] as const;
47
47
  export const RUSH_FLEET_STATUSES = [
48
48
  "pending", "in-flight", "diagnosing", "succeeded", "failed", "blocked", "cancelled", "not-applicable", "merged",
49
49
  ] as const;
@@ -91,7 +91,9 @@ export function projectRushPlan(data: unknown, runId: string): RushPlan {
91
91
  planRevision: data.planRevision as number,
92
92
  issues,
93
93
  fleet,
94
- warehouseCanaryRequired: data.warehouseCanaryRequired === true,
94
+ // The skill marks canary work per unit (`warehouseCanary`); older plans set a run-level flag.
95
+ warehouseCanaryRequired: data.warehouseCanaryRequired === true ||
96
+ persistedUnits.some((unit: unknown) => isRecord(unit) && unit.warehouseCanary != null && unit.warehouseCanary !== false),
95
97
  spec: isRecord(data.spec) && typeof data.spec.title === "string" ? { title: data.spec.title } : undefined,
96
98
  };
97
99
  }
@@ -132,9 +134,10 @@ function workflowStatus(status: string): DisplayStatus {
132
134
  }
133
135
 
134
136
  function presentRushPlan(plan: RushPlan): PlanPresentation {
135
- const fleet = ["explore", "combine", "canary", "review", "cicd"].map((stage) => {
136
- const status = stage === "canary" && !plan.warehouseCanaryRequired
137
- ? "not-applicable" : plan.fleet[stage]?.status ?? "pending";
137
+ // The warehouse canary only applies to data work; hide it otherwise.
138
+ const stages = ["explore", "implement", "review", "ci", ...(plan.warehouseCanaryRequired ? ["canary"] : [])];
139
+ const fleet = stages.map((stage) => {
140
+ const status = plan.fleet[stage]?.status ?? "pending";
138
141
  const display = workflowStatus(status);
139
142
  const style = statusStyle(display);
140
143
  return { color: style.color, text: ` ${stage} ${style.glyph}${display === "unknown" ? ` ${planText(status)}` : ""}` };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-better-harness",
3
- "version": "0.15.2",
3
+ "version": "0.15.3",
4
4
  "description": "Pi extension bundle for a write sandbox, subagents, background tasks, SSH, goals, and structured plans.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -54,7 +54,7 @@
54
54
  "dependencies": {
55
55
  "pi-better-background-tasks": "0.6.3",
56
56
  "pi-better-goal": "0.6.0",
57
- "pi-better-plan": "0.5.1",
57
+ "pi-better-plan": "0.5.2",
58
58
  "pi-better-sandbox": "0.8.1",
59
59
  "pi-better-ssh": "0.1.1",
60
60
  "pi-better-subagents": "0.11.0",