moflo 4.8.81 → 4.8.82

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moflo",
3
- "version": "4.8.81",
3
+ "version": "4.8.82",
4
4
  "description": "MoFlo — AI agent orchestration for Claude Code. Forked from ruflo/claude-flow with patches applied to source, plus feature-level orchestration.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -117,7 +117,7 @@
117
117
  "@types/node": "^24.12.2",
118
118
  "@xenova/transformers": "^2.17.0",
119
119
  "eslint": "^8.0.0",
120
- "moflo": "^4.8.80",
120
+ "moflo": "^4.8.81",
121
121
  "tsx": "^4.21.0",
122
122
  "typescript": "^5.9.3",
123
123
  "vitest": "^4.0.0"
@@ -116,15 +116,40 @@ steps:
116
116
  timeout: 600000
117
117
  failOnError: true
118
118
 
119
- # 2b: Check off story in epic body
119
+ # 2b: Flip `- [ ] #<story>` to `- [x] #<story>` on the epic body.
120
+ # The github `comment` action only appends a comment — it does NOT
121
+ # touch the task-list checkboxes. We read the body, substitute, and
122
+ # write it back so the epic reflects progress at a glance.
120
123
  - id: check-off-story
121
- type: github
124
+ type: bash
125
+ permissionLevel: elevated
126
+ config:
127
+ command: |
128
+ set -e
129
+ STORY={loop.story_number}
130
+ EPIC={args.epic_number}
131
+ BODY=$(gh issue view "$EPIC" --json body -q .body)
132
+ UPDATED=$(printf '%s' "$BODY" | sed -E "s/- \[ \] #${STORY}\b/- [x] #${STORY}/")
133
+ if [ "$BODY" != "$UPDATED" ]; then
134
+ printf '%s' "$UPDATED" | gh issue edit "$EPIC" --body-file -
135
+ fi
136
+ timeout: 60000
137
+ failOnError: true
138
+
139
+ # 2c: Close the story issue explicitly. Single-branch defers to the
140
+ # consolidated PR's Closes-keywords on merge; if the PR never lands,
141
+ # stories would stay OPEN forever. Closing here makes the issue state
142
+ # track the commit, not the eventual merge.
143
+ - id: close-story
144
+ type: bash
145
+ permissionLevel: elevated
122
146
  config:
123
- action: "comment"
124
- issue: "{args.epic_number}"
125
- body: "Story #{loop.story_number} committed to epic branch"
147
+ command: |
148
+ gh issue close {loop.story_number} --reason completed --comment "Closed by epic #{args.epic_number}: commits landed on epic branch."
149
+ timeout: 60000
150
+ failOnError: true
126
151
 
127
- # 2c: Record completion in memory
152
+ # 2d: Record completion in memory
128
153
  - id: record-completion
129
154
  type: memory
130
155
  config:
@@ -149,17 +174,29 @@ steps:
149
174
  timeout: 120000
150
175
  failOnError: true
151
176
 
152
- # Step 4: Create consolidated PR
177
+ # Step 4: Build the 'Closes #<story>' fragment for the PR body so that
178
+ # merging the consolidated PR auto-closes each individual story issue,
179
+ # not just the epic. Without this, only the epic would close on merge
180
+ # and story issues would linger open indefinitely.
181
+ - id: build-closes-list
182
+ type: bash
183
+ config:
184
+ command: |
185
+ echo {args.stories} | tr ',' '\n' | awk 'NF {printf "Closes #%s ", $0}'
186
+ timeout: 30000
187
+ failOnError: true
188
+
189
+ # Step 5: Create consolidated PR
153
190
  - id: create-pr
154
191
  type: github
155
192
  config:
156
193
  action: "pr-create"
157
194
  title: "epic(#{args.epic_number}): consolidated epic PR"
158
- body: "## Epic #{args.epic_number}\n\nConsolidated PR for all stories.\n\nCloses #{args.epic_number}"
195
+ body: "## Epic #{args.epic_number}\n\nConsolidated PR for all stories.\n\n{build-closes-list.stdout} Closes #{args.epic_number}"
159
196
  base: "{args.base_branch}"
160
197
  head: "epic/{args.epic_number}-{args.epic_slug}"
161
198
 
162
- # Step 5: Mark epic as completed in memory
199
+ # Step 6: Mark epic as completed in memory
163
200
  - id: finalize-state
164
201
  type: memory
165
202
  config:
@@ -2,5 +2,5 @@
2
2
  * Auto-generated by build. Do not edit manually.
3
3
  * Source of truth: root package.json → scripts/sync-version.mjs
4
4
  */
5
- export const VERSION = '4.8.81';
5
+ export const VERSION = '4.8.82';
6
6
  //# sourceMappingURL=version.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moflo/cli",
3
- "version": "4.8.81",
3
+ "version": "4.8.82",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",