vibe-coding-master 0.3.2 → 0.3.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.
- package/dist/backend/adapters/claude-adapter.js +4 -1
- package/dist/backend/api/round-routes.js +1 -0
- package/dist/backend/server.js +10 -7
- package/dist/backend/services/app-settings-service.js +56 -1
- package/dist/backend/services/codex-review-service.js +45 -107
- package/dist/backend/services/round-service.js +78 -3
- package/dist/backend/services/session-service.js +43 -20
- package/dist/backend/templates/harness/codex-review.js +7 -30
- package/dist/shared/types/session.js +10 -1
- package/dist-frontend/assets/{index-BavJjWQY.js → index-OPkFuHRf.js} +29 -29
- package/dist-frontend/index.html +1 -1
- package/docs/codex-file-translation-plan.md +618 -0
- package/docs/codex-review-gates.md +30 -16
- package/package.json +1 -1
|
@@ -93,15 +93,11 @@ Summary: <one or two sentences>
|
|
|
93
93
|
- Do not request broader filesystem or network permissions.`;
|
|
94
94
|
}
|
|
95
95
|
export function renderCodexConfigHarnessRules() {
|
|
96
|
-
return
|
|
97
|
-
|
|
96
|
+
return `# VCM reads this file before launching the Codex Reviewer terminal.
|
|
97
|
+
# Codex CLI project hooks live in .ai/codex/.codex/.
|
|
98
98
|
approval_policy = "never"
|
|
99
99
|
default_permissions = "vcm_codex_reviewer"
|
|
100
100
|
|
|
101
|
-
[vcm.codex_review]
|
|
102
|
-
enabled = false
|
|
103
|
-
required_gates = []
|
|
104
|
-
|
|
105
101
|
[permissions.vcm_codex_reviewer.workspace_roots]
|
|
106
102
|
"../.." = true
|
|
107
103
|
|
|
@@ -115,7 +111,7 @@ required_gates = []
|
|
|
115
111
|
"**/*.env" = "deny"
|
|
116
112
|
|
|
117
113
|
[permissions.vcm_codex_reviewer.network]
|
|
118
|
-
enabled =
|
|
114
|
+
enabled = true`;
|
|
119
115
|
}
|
|
120
116
|
export function renderCodexCliConfigHarnessRules() {
|
|
121
117
|
return `[features]
|
|
@@ -366,11 +362,6 @@ import uuid
|
|
|
366
362
|
from datetime import datetime, timezone
|
|
367
363
|
from pathlib import Path
|
|
368
364
|
|
|
369
|
-
try:
|
|
370
|
-
import tomllib
|
|
371
|
-
except ModuleNotFoundError:
|
|
372
|
-
tomllib = None
|
|
373
|
-
|
|
374
365
|
|
|
375
366
|
GATES = ("architecture-plan", "validation-adequacy", "final-diff")
|
|
376
367
|
REPORTS = {
|
|
@@ -468,20 +459,6 @@ def write_json(path: Path, data: dict) -> None:
|
|
|
468
459
|
tmp.replace(path)
|
|
469
460
|
|
|
470
461
|
|
|
471
|
-
def load_config(root: Path) -> dict:
|
|
472
|
-
path = root / ".ai/codex/config.toml"
|
|
473
|
-
if not path.is_file() or tomllib is None:
|
|
474
|
-
return {}
|
|
475
|
-
return tomllib.loads(path.read_text())
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
def codex_review_config(root: Path) -> dict:
|
|
479
|
-
config = load_config(root)
|
|
480
|
-
vcm = config.get("vcm", {})
|
|
481
|
-
review = vcm.get("codex_review", {}) if isinstance(vcm, dict) else {}
|
|
482
|
-
return review if isinstance(review, dict) else {}
|
|
483
|
-
|
|
484
|
-
|
|
485
462
|
def command_output(root: Path, command: list[str]) -> bytes:
|
|
486
463
|
result = subprocess.run(
|
|
487
464
|
command,
|
|
@@ -522,11 +499,11 @@ def request_id(gate: str) -> str:
|
|
|
522
499
|
|
|
523
500
|
def local_request(gate: str) -> int:
|
|
524
501
|
root = root_dir()
|
|
525
|
-
review_config = codex_review_config(root)
|
|
526
|
-
enabled = bool(review_config.get("enabled", False))
|
|
527
|
-
required = set(review_config.get("required_gates", []))
|
|
528
502
|
index_path = root / ".ai/vcm/codex-reviews/index.json"
|
|
529
503
|
index = read_json(index_path)
|
|
504
|
+
enabled = bool(index.get("enabled", False))
|
|
505
|
+
gate_record = index.get("gates", {}).get(gate, {}) if isinstance(index.get("gates"), dict) else {}
|
|
506
|
+
required = bool(gate_record.get("required", False)) if isinstance(gate_record, dict) else False
|
|
530
507
|
index.update({"version": 1, "enabled": enabled})
|
|
531
508
|
index.setdefault("gates", {})
|
|
532
509
|
|
|
@@ -536,7 +513,7 @@ def local_request(gate: str) -> int:
|
|
|
536
513
|
print_result("disabled", gate=gate)
|
|
537
514
|
return 0
|
|
538
515
|
|
|
539
|
-
if
|
|
516
|
+
if not required:
|
|
540
517
|
gate_record = index["gates"].setdefault(gate, {})
|
|
541
518
|
gate_record.update({"required": False, "status": "not_required", "updatedAt": now_iso()})
|
|
542
519
|
write_json(index_path, index)
|
|
@@ -47,7 +47,7 @@ export const CODEX_MODEL_OPTIONS = [
|
|
|
47
47
|
description: "Codex account default"
|
|
48
48
|
}
|
|
49
49
|
];
|
|
50
|
-
export const
|
|
50
|
+
export const CODEX_EFFORT_OPTIONS = [
|
|
51
51
|
{
|
|
52
52
|
value: "default",
|
|
53
53
|
label: "Default",
|
|
@@ -79,3 +79,12 @@ export const SESSION_EFFORT_OPTIONS = [
|
|
|
79
79
|
description: "Maximum reasoning"
|
|
80
80
|
}
|
|
81
81
|
];
|
|
82
|
+
export const CLAUDE_EFFORT_OPTIONS = [
|
|
83
|
+
...CODEX_EFFORT_OPTIONS,
|
|
84
|
+
{
|
|
85
|
+
value: "ultracode",
|
|
86
|
+
label: "Ultracode",
|
|
87
|
+
description: "Claude Code dynamic workflows with xhigh reasoning"
|
|
88
|
+
}
|
|
89
|
+
];
|
|
90
|
+
export const SESSION_EFFORT_OPTIONS = CLAUDE_EFFORT_OPTIONS;
|