vibe-coding-master 0.7.6 → 0.7.7
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/README.md +22 -1
- package/dist/backend/api/harness-routes.js +7 -0
- package/dist/backend/services/harness-feedback-service.js +28 -0
- package/dist-frontend/assets/{index-BO2AuF-q.js → index-42EpETgd.js} +24 -24
- package/dist-frontend/assets/{index-C2etsYlK.css → index-D65x2x0F.css} +1 -1
- package/dist-frontend/index.html +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -181,6 +181,12 @@ By default:
|
|
|
181
181
|
Roles for the same task share the same task worktree. VCM does not create one
|
|
182
182
|
worktree per role.
|
|
183
183
|
|
|
184
|
+
Project Manager may record an advisory task checkpoint under
|
|
185
|
+
`.ai/vcm/workflow/state.json`. VCM restores and displays this context after a
|
|
186
|
+
restart, but it does not infer transitions or choose the next role. Current
|
|
187
|
+
artifacts, Gate Review state, Round/Turn state, and the role rules remain
|
|
188
|
+
authoritative.
|
|
189
|
+
|
|
184
190
|
Typical flow:
|
|
185
191
|
|
|
186
192
|
```text
|
|
@@ -412,10 +418,16 @@ Post-task processing is ordered by the backend:
|
|
|
412
418
|
```text
|
|
413
419
|
Final Acceptance
|
|
414
420
|
-> Review Task Harness
|
|
415
|
-
->
|
|
421
|
+
-> Workflow-role memory proposals, when Auto Memory is enabled
|
|
422
|
+
-> Harness Engineer memory review, when Auto Memory is enabled
|
|
416
423
|
-> Task Harness Retrospective
|
|
417
424
|
```
|
|
418
425
|
|
|
426
|
+
Memory proposal prompts sent to Project Manager, Architect, Coder, Tester, and
|
|
427
|
+
an enabled Gate Reviewer use their normal task sessions and participate in
|
|
428
|
+
Round/Turn tracking. Harness Engineer review and retrospective work remain tool
|
|
429
|
+
role activity and do not participate in Round completion.
|
|
430
|
+
|
|
419
431
|
When Auto Memory is disabled, Review Task Harness does not collect proposals or
|
|
420
432
|
ask Harness Engineer to update memory. When enabled, both automatic and manual
|
|
421
433
|
review requests complete the memory phase before retrospective analysis. A
|
|
@@ -430,6 +442,11 @@ It stops every running session owned by the task, including Translator and
|
|
|
430
442
|
Harness Engineer, then removes task-owned worktree/branch state. Commit or
|
|
431
443
|
preserve anything important before closing.
|
|
432
444
|
|
|
445
|
+
Uncommitted changes, unmerged commits, and cleanup failures are reported as
|
|
446
|
+
warnings; they do not block logical task closure. VCM may discard the task
|
|
447
|
+
worktree and task branch even when they contain commits that are not present on
|
|
448
|
+
the connected repository branch.
|
|
449
|
+
|
|
433
450
|
## Troubleshooting
|
|
434
451
|
|
|
435
452
|
### The page does not open
|
|
@@ -517,7 +534,11 @@ npm start
|
|
|
517
534
|
## Documentation
|
|
518
535
|
|
|
519
536
|
- `docs/ARCHITECTURE.md`: repository architecture
|
|
537
|
+
- `docs/CODING_STANDARDS.md`: shared implementation and test standards
|
|
538
|
+
- `docs/GLOSSARY.md`: allowed durable abbreviations
|
|
520
539
|
- `docs/TESTING.md`: validation strategy
|
|
540
|
+
- `docs/known-issues.md`: current unresolved durable issues
|
|
541
|
+
- `src/backend/gateway/ARCHITECTURE.md`: mobile gateway sub-area architecture
|
|
521
542
|
- `docs/vcm-cc-best-practices.md`: current VCM Claude Code harness practice
|
|
522
543
|
- `docs/v0.5-custom-workflow-plan.md`: deferred custom workflow proposal
|
|
523
544
|
- `docs/cc-best-practices.md`: archived generic Claude Code harness notes
|
|
@@ -142,6 +142,13 @@ export function registerHarnessRoutes(app, deps) {
|
|
|
142
142
|
const taskSlug = await normalizeOptionalTaskSlug(deps, project.repoRoot, request.query.taskSlug);
|
|
143
143
|
return deps.harnessFeedbackService.getState(project.repoRoot, taskSlug);
|
|
144
144
|
});
|
|
145
|
+
app.post("/api/projects/harness/feedback/send", async (request) => {
|
|
146
|
+
const { project, task } = await requireHarnessTaskContext(deps, request.body?.taskSlug);
|
|
147
|
+
return deps.harnessFeedbackService.sendPendingFeedback(project.repoRoot, {
|
|
148
|
+
taskSlug: task.taskSlug,
|
|
149
|
+
feedbackPath: request.body?.feedbackPath ?? ""
|
|
150
|
+
});
|
|
151
|
+
});
|
|
145
152
|
app.post("/api/projects/harness/task-retrospective", async (request) => {
|
|
146
153
|
const { project, task } = await requireHarnessTaskContext(deps, request.body?.taskSlug);
|
|
147
154
|
const trigger = request.body?.trigger === "auto" ? "auto" : "manual";
|
|
@@ -21,6 +21,23 @@ export function createHarnessFeedbackService(deps) {
|
|
|
21
21
|
warnings: []
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
+
async function sendPendingFeedback(repoRoot, input) {
|
|
25
|
+
await cleanupLegacyState(repoRoot);
|
|
26
|
+
const feedbackPath = input.feedbackPath.trim();
|
|
27
|
+
const pending = await listPendingFeedback(repoRoot);
|
|
28
|
+
const feedback = pending.find((item) => item.path === feedbackPath);
|
|
29
|
+
if (!feedback) {
|
|
30
|
+
throw new VcmError({
|
|
31
|
+
code: "HARNESS_FEEDBACK_NOT_PENDING",
|
|
32
|
+
message: "The selected Harness Feedback is no longer pending.",
|
|
33
|
+
statusCode: 404,
|
|
34
|
+
hint: "Refresh Harness Studio and select a feedback item that is still listed in the Inbox."
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const session = await ensureIdleHarnessEngineer(repoRoot, input.taskSlug);
|
|
38
|
+
await submitTerminalInput(deps.runtime, session.id, buildPendingFeedbackPrompt(repoRoot, feedback.path));
|
|
39
|
+
return session;
|
|
40
|
+
}
|
|
24
41
|
async function startTaskRetrospective(repoRoot, input) {
|
|
25
42
|
await cleanupLegacyState(repoRoot);
|
|
26
43
|
const taskSlug = input.taskSlug.trim();
|
|
@@ -155,6 +172,16 @@ export function createHarnessFeedbackService(deps) {
|
|
|
155
172
|
"End your turn after writing the result."
|
|
156
173
|
].join("\n");
|
|
157
174
|
}
|
|
175
|
+
function buildPendingFeedbackPrompt(repoRoot, feedbackPath) {
|
|
176
|
+
return [
|
|
177
|
+
"[VCM Harness Feedback]",
|
|
178
|
+
"",
|
|
179
|
+
"Review this feedback:",
|
|
180
|
+
resolveRepoPath(repoRoot, feedbackPath),
|
|
181
|
+
"",
|
|
182
|
+
"Verify the issue against the current harness and project evidence. Report your findings and proposed changes to the user."
|
|
183
|
+
].join("\n");
|
|
184
|
+
}
|
|
158
185
|
async function loadTaskRetrospectiveMarker(repoRoot, taskSlug) {
|
|
159
186
|
const markerPath = resolveRepoPath(repoRoot, getTaskRetrospectiveMarkerPath(taskSlug));
|
|
160
187
|
if (!(await deps.fs.pathExists(markerPath))) {
|
|
@@ -185,6 +212,7 @@ export function createHarnessFeedbackService(deps) {
|
|
|
185
212
|
}
|
|
186
213
|
return {
|
|
187
214
|
getState,
|
|
215
|
+
sendPendingFeedback,
|
|
188
216
|
startTaskRetrospective,
|
|
189
217
|
assertHarnessEngineerAvailable
|
|
190
218
|
};
|