@caseyharalson/orrery 0.14.4 → 0.15.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/HELP.md CHANGED
@@ -266,8 +266,9 @@ export ORRERY_REVIEW_ENABLED=true
266
266
  ```
267
267
 
268
268
  The review agent inspects changes after each step. If issues are found, an edit
269
- agent applies fixes and verification re-runs, repeating until approval or the
270
- max iteration limit is reached (default: 3).
269
+ agent applies fixes and verification re-runs, repeating until approval. If the
270
+ max iteration limit is reached without approval, the step is blocked (default:
271
+ 3).
271
272
 
272
273
  ### Background Execution
273
274
 
@@ -1,9 +1,11 @@
1
1
  ---
2
2
  name: discovery
3
3
  description: >
4
- Create executable plans for building systems, features, or modules. Use for
5
- planning requests, architectural decisions, or when decomposing big ideas
6
- into concrete implementation steps.
4
+ Author an orrery plan a YAML file under the orrery plans directory that
5
+ the orrery CLI executes step-by-step. Use ONLY when the user explicitly
6
+ asks to create an orrery plan (e.g., "make an orrery plan", "use orrery
7
+ discovery", "/discovery"). Do NOT use for general planning, architectural
8
+ discussion, or decomposing ideas unless the output is an orrery plan file.
7
9
  hooks:
8
10
  PostToolUse:
9
11
  - matcher: "Write"
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: orrery-execute
3
3
  description: >
4
- Write or modify code according to a plan step. Handle implementation.
4
+ Implement a single step from an orrery plan (YAML file under the orrery
5
+ plans directory) when invoked by the orrery orchestrator. Do NOT use for
6
+ general coding, bug fixes, or implementation work outside of an orrery
7
+ plan run.
5
8
  user-invocable: false
6
9
  ---
7
10
 
@@ -1,9 +1,11 @@
1
1
  ---
2
2
  name: orrery-report
3
3
  description: >
4
- Final reporting phase for the orrery workflow. Outputs structured JSON
5
- summarizing execution results, test outcomes, and status. Use after
6
- orrery-verify completes or when reporting blocked status.
4
+ Final reporting phase for a single step of an orrery plan, invoked by the
5
+ orrery orchestrator after orrery-verify completes (or when reporting blocked
6
+ status). Outputs structured JSON consumed by the orrery orchestrator. Do
7
+ NOT use for general status summaries or reports outside of an orrery plan
8
+ run.
7
9
  user-invocable: false
8
10
  ---
9
11
 
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: orrery-review
3
3
  description: >
4
- Review code changes after each step execution and provide structured feedback.
4
+ Review changes made for a single step of an orrery plan (YAML file under
5
+ the orrery plans directory) when invoked by the orrery orchestrator, and
6
+ produce structured feedback for the editor agent. Do NOT use for general
7
+ code review outside of an orrery plan run.
5
8
  user-invocable: false
6
9
  ---
7
10
 
@@ -1,9 +1,11 @@
1
1
  ---
2
2
  name: orrery-verify
3
3
  description: >
4
- Run tests, linting, and validation to verify changes work correctly.
5
- Use after implementation to check acceptance criteria, run test suites,
6
- and ensure nothing is broken.
4
+ Verify a single step from an orrery plan (YAML file under the orrery plans
5
+ directory) when invoked by the orrery orchestrator after orrery-execute.
6
+ Runs the plan step's acceptance criteria, tests, and linting. Do NOT use
7
+ for general test runs, linting, or verification work outside of an orrery
8
+ plan run.
7
9
  user-invocable: false
8
10
  ---
9
11
 
@@ -1,10 +1,12 @@
1
1
  ---
2
2
  name: refine-plan
3
3
  description: >
4
- Analyze and improve an existing plan file. Reviews plan structure, dependencies,
5
- context quality, and acceptance criteria, then implements improvements directly.
6
- Requires a plan file argument (e.g., /refine-plan my-plan.yaml).
7
- Run `orrery plans-dir` to find the plans directory.
4
+ Analyze and improve an existing orrery plan (YAML file under the orrery
5
+ plans directory). Reviews plan structure, dependencies, context quality,
6
+ and acceptance criteria, then edits the plan file directly. Use ONLY when
7
+ the user explicitly asks to refine an orrery plan and provides a plan file
8
+ argument (e.g., /refine-plan my-plan.yaml). Run `orrery plans-dir` to find
9
+ the plans directory. Do NOT use for general plan or design-doc review.
8
10
  hooks:
9
11
  PostToolUse:
10
12
  - matcher: "Write"
@@ -1,10 +1,12 @@
1
1
  ---
2
2
  name: simulate-plan
3
3
  description: >
4
- Explore a plan through conversational dialogue before committing to execution.
5
- Requires a plan file argument (e.g., /simulate-plan my-plan.yaml, /simulate-plan my-plan).
6
- Run `orrery plans-dir` to find the plans directory.
7
- Ask "what if" questions, trace dependencies, and build intuition about what you're building.
4
+ Explore an existing orrery plan (YAML file under the orrery plans directory)
5
+ through conversational dialogue before committing to execution. Use ONLY
6
+ when the user explicitly asks to simulate an orrery plan and provides a
7
+ plan file argument (e.g., /simulate-plan my-plan.yaml, /simulate-plan
8
+ my-plan). Run `orrery plans-dir` to find the plans directory. Do NOT use
9
+ for general "what if" brainstorming outside of an orrery plan.
8
10
  ---
9
11
 
10
12
  # Simulate Skill
@@ -80,6 +80,8 @@ const { acquireLock, releaseLock } = require("../utils/lock");
80
80
  const { isStopRequested, clearStopSignal } = require("../utils/stop-signal");
81
81
 
82
82
  const REPO_ROOT = process.cwd();
83
+ const REVIEW_MAX_ITERATIONS_BLOCKED_REASON =
84
+ "Review max iterations reached without approval.";
83
85
 
84
86
  function parseArgs(argv) {
85
87
  const options = {
@@ -210,6 +212,17 @@ function resolvePlanFile(planArg, plansDir) {
210
212
  return null;
211
213
  }
212
214
 
215
+ function blockStepAfterReviewMaxIterations(stepResult) {
216
+ return {
217
+ ...stepResult,
218
+ status: "blocked",
219
+ summary:
220
+ stepResult.summary ||
221
+ "Step blocked because review did not approve the changes.",
222
+ blockedReason: REVIEW_MAX_ITERATIONS_BLOCKED_REASON
223
+ };
224
+ }
225
+
213
226
  function logDryRunSummary(planFiles) {
214
227
  console.log("Dry run: no changes will be made.");
215
228
  if (planFiles.length === 0) {
@@ -1762,8 +1775,9 @@ async function waitForAgentCompletion(
1762
1775
 
1763
1776
  if (!approved && currentResult.status === "complete") {
1764
1777
  console.log(
1765
- `[WARN] Review max iterations reached for step ${stepId}. Proceeding without approval.`
1778
+ `[WARN] Review max iterations reached for step ${stepId}. Blocking step without approval.`
1766
1779
  );
1780
+ currentResult = blockStepAfterReviewMaxIterations(currentResult);
1767
1781
  }
1768
1782
 
1769
1783
  stepResult = currentResult;
@@ -2033,4 +2047,9 @@ if (require.main === module) {
2033
2047
  });
2034
2048
  }
2035
2049
 
2036
- module.exports = { orchestrate, runOnCompleteHook };
2050
+ module.exports = {
2051
+ orchestrate,
2052
+ runOnCompleteHook,
2053
+ blockStepAfterReviewMaxIterations,
2054
+ REVIEW_MAX_ITERATIONS_BLOCKED_REASON
2055
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caseyharalson/orrery",
3
- "version": "0.14.4",
3
+ "version": "0.15.1",
4
4
  "description": "Workflow planning and orchestration CLI for AI agents",
5
5
  "license": "MIT",
6
6
  "author": "Casey Haralson",