Some checks failed
ci/woodpecker/pr/ci Pipeline was canceled
Upstreams the pr-review.sh -r/--repo and -H/--host override family from the host-local tooling-patches kit (patch 5 + 5c), adapted to the framework's current REST-native review/comment implementation: - -r/--repo <owner/repo>: explicit slug override, skipping git-remote slug inference, for reviewer worktrees whose origin is nonstandard or missing. Mirrors the established -r convention of the sibling wrappers (pr-view.sh, pr-diff.sh, pr-ci-wait.sh; #867). detect_platform is now tolerant of a missing/foreign git origin when -r is given (assumes gitea), matching the same sibling-wrapper convention. - -H/--host <host>: explicit Gitea host override, skipping remote-host inference, so ambient CWD/remote state cannot cross-wire a review/comment to the wrong instance. - Repo-exists preflight: when -r is used, GET .../repos/<slug> BEFORE any write. A wrong-host cross-wire now surfaces as a clear preflight error instead of an opaque write-404. - `User-Agent: mosaic-pr-review` header added to every Gitea curl call (write, read-back, /user, PR-head read, preflight) — some Cloudflare-fronted Gitea hosts intermittently reject curl's default User-Agent. Reproduce-first evidence (against origin/main baseline, fresh clone): - -r/-H: `./pr-review.sh -n 1 -a comment -c x -r foo/bar` / `-H example.test` both failed with "Unknown option" pre-patch; both parse post-patch. - User-Agent: `grep -c User-Agent pr-review.sh` was 0 pre-patch. - New regression test (test-pr-review-repo-host-override.sh) fails against the baseline file and passes against the patched file (red-first confirmed). Scope note — two sub-changes from the source kit's patch family (5b: an issue_url-empty html_url readback fallback; 5d: REST-native reviews replacing `tea approve/reject`) were investigated and found ALREADY SUPERSEDED on this baseline by a more robust, already-tested implementation: - 5d: the current gitea_submit_review_verified() already POSTs to /pulls/{n}/reviews (no `tea pr approve/reject` call exists in this file — `grep -c 'tea pr' pr-review.sh` is 0), with additional hardening (identity binding, PR-head commit pinning, current-head TOCTOU close-out) beyond what the source patch describes. - 5b: comment verification already keys off `pull_request_url` (not `issue_url`) with full origin+path pinning (see gitea_create_comment_verified / test-pr-review-gitea-comment.sh cases 15b, 17), which already handles the Gitea empty-issue_url-on-PR-comments behavior the source patch targets, via a stricter mechanism than a bare html_url fallback would provide. Porting the source kit's simpler fallback verbatim would have been a regression. Per HALT-on-no-repro discipline, only the two sub-changes that actually reproduced against baseline (5, 5c) are included here. Part of #891
72 lines
3.0 KiB
JSON
72 lines
3.0 KiB
JSON
{
|
|
"name": "@mosaicstack/mosaic",
|
|
"version": "0.0.48",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
|
|
"directory": "packages/mosaic"
|
|
},
|
|
"description": "Mosaic agent framework — installation wizard and meta package",
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"types": "dist/index.d.ts",
|
|
"bin": {
|
|
"mosaic": "dist/cli.js",
|
|
"mosaic-wizard": "dist/index.js"
|
|
},
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.js"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"build": "tsc",
|
|
"lint": "eslint src",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run --passWithNoTests && pnpm run test:framework-shell",
|
|
"test:framework-shell": "python3 src/lease-broker/daemon_deadline_unittest.py && python3 src/lease-broker/normative_fragments_unittest.py && python3 src/lease-broker/receipt_challenge_unittest.py && python3 src/lease-broker/context_recovery_unittest.py && python3 src/lease-broker/recovery_runtime_unittest.py && python3 src/lease-broker/recovery_b1_adversarial_unittest.py && python3 src/lease-broker/framework_skill_portability_unittest.py && python3 src/mutator-gate/runtime_tools_unittest.py && python3 src/mutator-gate/runtime_launch_guard_unittest.py && python3 src/mutator-gate/version_coupling_unittest.py && python3 framework/tools/lease-broker/check-runtime-launches.py --root ../.. && bash framework/tools/codex/test-pr-diff-context.sh && bash framework/tools/qa/test-deps-preflight.sh && bash framework/tools/git/test-pr-review-gitea-comment.sh && bash framework/tools/git/test-pr-review-repo-host-override.sh && bash framework/tools/git/test-ci-queue-wait-branch-absent.sh && bash framework/tools/git/test-git-credential-mosaic.sh && bash framework/tools/git/test-gitea-token-identity.sh && bash framework/tools/_scripts/test-install-ordering-guard.sh"
|
|
},
|
|
"dependencies": {
|
|
"@mosaicstack/brain": "workspace:*",
|
|
"@mosaicstack/config": "workspace:*",
|
|
"@mosaicstack/db": "workspace:*",
|
|
"@mosaicstack/forge": "workspace:*",
|
|
"@mosaicstack/log": "workspace:*",
|
|
"@mosaicstack/macp": "workspace:*",
|
|
"@mosaicstack/memory": "workspace:*",
|
|
"@mosaicstack/prdy": "workspace:*",
|
|
"@mosaicstack/quality-rails": "workspace:*",
|
|
"@mosaicstack/queue": "workspace:*",
|
|
"@mosaicstack/storage": "workspace:*",
|
|
"@mosaicstack/types": "workspace:*",
|
|
"@clack/prompts": "^0.9.1",
|
|
"commander": "^13.0.0",
|
|
"ink": "^5.0.0",
|
|
"ink-spinner": "^5.0.0",
|
|
"ink-text-input": "^6.0.0",
|
|
"picocolors": "^1.1.1",
|
|
"react": "^18.3.0",
|
|
"socket.io-client": "^4.8.0",
|
|
"yaml": "^2.6.1",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.0.0",
|
|
"@vitest/coverage-v8": "^2.0.0",
|
|
"@types/react": "^18.3.0",
|
|
"tsx": "^4.0.0",
|
|
"typescript": "^5.8.0",
|
|
"vitest": "^2.0.0"
|
|
},
|
|
"publishConfig": {
|
|
"registry": "https://git.mosaicstack.dev/api/packages/mosaicstack/npm/",
|
|
"access": "public"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"framework"
|
|
],
|
|
"license": "MIT"
|
|
}
|