vibe-coding-master 0.2.13 → 0.3.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/backend/api/codex-review-routes.js +54 -0
- package/dist/backend/cli/install-vcm-harness.js +55 -0
- package/dist/backend/server.js +15 -0
- package/dist/backend/services/codex-review-service.js +765 -0
- package/dist/backend/services/harness-service.js +63 -3
- package/dist/backend/services/task-service.js +2 -0
- package/dist/backend/templates/harness/claude-root.js +2 -0
- package/dist/backend/templates/harness/codex-review.js +574 -0
- package/dist/backend/templates/harness/project-manager-agent.js +13 -3
- package/dist/backend/templates/harness/vcm-final-acceptance-skill.js +6 -1
- package/dist/shared/types/codex-review.js +5 -0
- package/dist-frontend/assets/index-C9l94uxA.js +92 -0
- package/dist-frontend/assets/index-D6jWo6Jd.css +32 -0
- package/dist-frontend/index.html +2 -2
- package/docs/codex-review-gates.md +515 -0
- package/docs/product-design.md +31 -2
- package/package.json +1 -1
- package/scripts/verify-package.mjs +4 -0
- package/dist-frontend/assets/index-CT20u9Fk.js +0 -92
- package/dist-frontend/assets/index-DC9-SB7F.css +0 -32
|
@@ -4,6 +4,7 @@ import path from "node:path";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { renderArchitectHarnessRules } from "../templates/harness/architect-agent.js";
|
|
6
6
|
import { renderCoderHarnessRules } from "../templates/harness/coder-agent.js";
|
|
7
|
+
import { renderCodexAgentsHarnessRules, renderCodexArchitecturePlanPrompt, renderCodexConfigHarnessRules, renderCodexFinalDiffPrompt, renderCodexReviewResultSchema, renderCodexValidationAdequacyPrompt, renderRequestCodexReviewTool, renderVcmCodexReviewGateSkillRules } from "../templates/harness/codex-review.js";
|
|
7
8
|
import { renderRootClaudeHarnessRules } from "../templates/harness/claude-root.js";
|
|
8
9
|
import { renderGitignoreHarnessRules } from "../templates/harness/gitignore.js";
|
|
9
10
|
import { renderProjectManagerHarnessRules } from "../templates/harness/project-manager-agent.js";
|
|
@@ -88,6 +89,62 @@ const HARNESS_FILES = [
|
|
|
88
89
|
ownership: "whole-file",
|
|
89
90
|
renderRules: renderVcmLongRunningValidationSkillRules
|
|
90
91
|
},
|
|
92
|
+
{
|
|
93
|
+
kind: "skill-vcm-codex-review-gate",
|
|
94
|
+
path: ".claude/skills/vcm-codex-review-gate/SKILL.md",
|
|
95
|
+
title: "VCM Codex Review Gate Skill",
|
|
96
|
+
frontmatter: renderSkillFrontmatter("vcm-codex-review-gate", "Use when project-manager reaches a Codex Review Gate or receives a VCM Codex Review callback."),
|
|
97
|
+
ownership: "whole-file",
|
|
98
|
+
renderRules: renderVcmCodexReviewGateSkillRules
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
kind: "codex-agents",
|
|
102
|
+
path: ".ai/codex/AGENTS.md",
|
|
103
|
+
title: "VCM Codex Reviewer",
|
|
104
|
+
renderRules: renderCodexAgentsHarnessRules
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
kind: "codex-config",
|
|
108
|
+
path: ".ai/codex/config.toml",
|
|
109
|
+
title: "VCM Codex Config",
|
|
110
|
+
ownership: "raw-file",
|
|
111
|
+
renderRules: renderCodexConfigHarnessRules
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
kind: "codex-prompt-architecture-plan",
|
|
115
|
+
path: ".ai/codex/prompts/architecture-plan-gate.md",
|
|
116
|
+
title: "Codex Architecture Plan Gate Prompt",
|
|
117
|
+
ownership: "raw-file",
|
|
118
|
+
renderRules: renderCodexArchitecturePlanPrompt
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
kind: "codex-prompt-validation-adequacy",
|
|
122
|
+
path: ".ai/codex/prompts/validation-adequacy-gate.md",
|
|
123
|
+
title: "Codex Validation Adequacy Gate Prompt",
|
|
124
|
+
ownership: "raw-file",
|
|
125
|
+
renderRules: renderCodexValidationAdequacyPrompt
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
kind: "codex-prompt-final-diff",
|
|
129
|
+
path: ".ai/codex/prompts/final-diff-gate.md",
|
|
130
|
+
title: "Codex Final Diff Gate Prompt",
|
|
131
|
+
ownership: "raw-file",
|
|
132
|
+
renderRules: renderCodexFinalDiffPrompt
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
kind: "codex-review-schema",
|
|
136
|
+
path: ".ai/codex/schemas/codex-review-result.schema.json",
|
|
137
|
+
title: "Codex Review Result Schema",
|
|
138
|
+
ownership: "raw-file",
|
|
139
|
+
renderRules: renderCodexReviewResultSchema
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
kind: "tool-request-codex-review",
|
|
143
|
+
path: ".ai/tools/request-codex-review",
|
|
144
|
+
title: "Request Codex Review Tool",
|
|
145
|
+
ownership: "raw-file",
|
|
146
|
+
renderRules: renderRequestCodexReviewTool
|
|
147
|
+
},
|
|
91
148
|
{
|
|
92
149
|
kind: "agent-project-manager",
|
|
93
150
|
path: ".claude/agents/project-manager.md",
|
|
@@ -232,13 +289,13 @@ async function analyzeHarnessFiles(fs, repoRoot) {
|
|
|
232
289
|
}
|
|
233
290
|
async function analyzeHarnessFile(fs, repoRoot, definition) {
|
|
234
291
|
const absolutePath = resolveHarnessPath(repoRoot, definition.path);
|
|
235
|
-
const expectedContent = definition.ownership === "whole-file"
|
|
292
|
+
const expectedContent = definition.ownership === "whole-file" || definition.ownership === "raw-file"
|
|
236
293
|
? renderWholeHarnessFile(definition)
|
|
237
294
|
: undefined;
|
|
238
|
-
const expectedBlock = definition.ownership === "whole-file"
|
|
295
|
+
const expectedBlock = definition.ownership === "whole-file" || definition.ownership === "raw-file"
|
|
239
296
|
? undefined
|
|
240
297
|
: renderManagedBlock(definition, definition.renderRules());
|
|
241
|
-
const managedBlockPattern = definition.ownership === "whole-file"
|
|
298
|
+
const managedBlockPattern = definition.ownership === "whole-file" || definition.ownership === "raw-file"
|
|
242
299
|
? undefined
|
|
243
300
|
: getManagedBlockPattern(definition);
|
|
244
301
|
const exists = await fs.pathExists(absolutePath);
|
|
@@ -365,6 +422,9 @@ function renderNewHarnessFile(definition, block) {
|
|
|
365
422
|
return `${frontmatter}# ${definition.title}\n\n${block}\n`;
|
|
366
423
|
}
|
|
367
424
|
function renderWholeHarnessFile(definition) {
|
|
425
|
+
if (definition.ownership === "raw-file") {
|
|
426
|
+
return ensureTrailingNewline(definition.renderRules().trimEnd());
|
|
427
|
+
}
|
|
368
428
|
return ensureTrailingNewline(renderNewHarnessFile(definition, definition.renderRules().trimEnd()));
|
|
369
429
|
}
|
|
370
430
|
async function analyzeClaudeSettingsFile(fs, repoRoot) {
|
|
@@ -204,6 +204,7 @@ async function ensureTaskRuntimeStateDirs(fs, taskRepoRoot, stateRoot) {
|
|
|
204
204
|
await fs.ensureDir(path.join(taskRepoRoot, stateRoot, "messages"));
|
|
205
205
|
await fs.ensureDir(path.join(taskRepoRoot, stateRoot, "orchestration"));
|
|
206
206
|
await fs.ensureDir(path.join(taskRepoRoot, stateRoot, "translation"));
|
|
207
|
+
await fs.ensureDir(path.join(taskRepoRoot, stateRoot, "codex-reviews"));
|
|
207
208
|
}
|
|
208
209
|
async function findActiveInlineTask(fs, taskStoreRoot) {
|
|
209
210
|
const tasksDir = path.join(taskStoreRoot, "tasks");
|
|
@@ -255,6 +256,7 @@ function getTaskStatePaths(taskStoreRoot, taskRepoRoot, stateRoot, handoffRoot,
|
|
|
255
256
|
path.join(taskRepoRoot, stateRoot, "messages", `${taskSlug}.jsonl`),
|
|
256
257
|
path.join(taskRepoRoot, stateRoot, "orchestration", `${taskSlug}.json`),
|
|
257
258
|
path.join(taskRepoRoot, stateRoot, "translation", taskSlug),
|
|
259
|
+
path.join(taskRepoRoot, stateRoot, "codex-reviews"),
|
|
258
260
|
path.join(taskRepoRoot, handoffRoot)
|
|
259
261
|
];
|
|
260
262
|
}
|
|
@@ -5,6 +5,7 @@ export function renderRootClaudeHarnessRules() {
|
|
|
5
5
|
- Read module-local \`CLAUDE.md\` before editing a subdirectory if one exists.
|
|
6
6
|
- Use \`vcm-route-message\` whenever a VCM role hands off work, asks another role a question, reports a result, reports a blocker, or raises a finding. Follow its write-then-stop rule.
|
|
7
7
|
- Use \`vcm-long-running-validation\` for long-running validation. Follow the background job limits below.
|
|
8
|
+
- Project-manager uses \`vcm-codex-review-gate\` at enabled Codex Review Gate trigger points and on VCM Codex review callbacks.
|
|
8
9
|
|
|
9
10
|
## VCM Background Jobs
|
|
10
11
|
|
|
@@ -31,6 +32,7 @@ export function renderRootClaudeHarnessRules() {
|
|
|
31
32
|
- Test-only or validation-only work may use: \`project-manager -> reviewer -> project-manager final acceptance\`.
|
|
32
33
|
- If a docs/test/validation-only task reveals required code, architecture, public contract, dependency, durable-doc, or test-strategy changes, route back through the full code-change flow.
|
|
33
34
|
- Keep role outputs under \`.ai/vcm/handoffs/\`.
|
|
35
|
+
- Codex Review Gate reports live under \`.ai/vcm/codex-reviews/\` and are VCM-managed task evidence.
|
|
34
36
|
- Runtime task records and handoffs under \`.ai/vcm/\` are temporary. Durable facts must move into code, tests, PR text, commit history, or long-term docs.
|
|
35
37
|
- Record current-task unresolved findings in \`.ai/vcm/handoffs/known-issues.md\`.
|
|
36
38
|
|