Spec of record: docs/plans/2026-08-23_repo-structure-declaration.md (brain repo) sections 4 (consumption contract), 5.1/5.3/5.4, 1.2a. New shared lib repo-decl.sh: one consumption surface for the wrappers. Loads .mosaic/repo.json, classifies absent/invalid/valid via the WP1 validator (5.1: ALL consumers invoke the same script; 5.4 point 1: invalid = ABSENT + loud error naming file/key/reason), extracts the consumed fields, normalizes origin for 5.3 comparisons, validates transitions per 4.2 (a CLI flag is input, not authority), and resolves host:/ paths FAIL-CLOSED while MOSAIC_HOST_ROOT is unset (1.2a — no WP5b consumer resolves a path today; the helper exists so the first that needs one cannot guess). v1 declarations validate but carry no consumable fields: legacy behavior with a note. pr-create.sh: base precedence -B (validated as an allowed transition) -> declared integration_trunk -> legacy WP5a forge-default floor (unmanaged/absent/v1 per 4.3 reversible class, warn + legacy). Remote mismatch vs canonical_remote refuses (write path, 5.3). pr-merge.sh: transition validation per declared flow; the hardcoded main/next target check survives only for undeclared repos during the rollout window (4.3 irreversible class, loud warning). Remote mismatch refuses. ci-queue-wait.sh: ROUTE CONTEXT only (4.1, C4/jarvis F8/DR2 R9) — branch-selection semantics untouched, absence silent, invalid reported per 5.4. mosaic-worktree.sh: staged rule 4.4 — invalid declaration fails branch-creation loud, absent warns and proceeds, valid contributes policy ADVICE only (4.5: placement stays derived; the advisory worktree_root comparison runs only when MOSAIC_HOST_ROOT is set, per 1.2a warn-and-omit). Consuming via a self-located source line and set -u-safe env access. mutate-push-guard.sh: NO change — spec 4.1 names it for push-to-trunk protection, but the tool as shipped is a mutation-coverage meta-tool for push-guard.sh with no trunk-protection logic to consult; the disposition is documented in #1413 rather than force-feeding a fake consumption. All wrappers degrade SILENTLY to legacy behavior when repo-decl.sh is absent from a copied tool subset (a legal deployment shape; a note there broke single-line diagnostic contracts in test-pr-merge-message-field). test-repo-decl-consumption.sh: 67 assertions, green x2, hermetic; runs RED against pre-change tools via WP5B_TOOLS (49 red there — red-first evidence). Covers every 5.4 hostile-input class applicable to consumed fields (missing, malformed, unknown schema_version, v1, unknown key, bad refs, cross-field, userinfo URL, remote mismatch) plus transition validation, base precedence, absence policies, staged worktree rule, route context, and 1.2a fail-closed. Enumerated on the S1 surface (enumeration guard green: population 71, enumerated 57). Neighbor suites green: WP5a fallback suite, all six pr-merge suites, worktree large-repo, help/login/interactive suites. S1 chain failures (fleet-units systemd bus, invariant_r host Pi version, pr-edit credential-helper env) reproduce identically at origin/next — environmental, untouched by this diff. No TS/vitest lane touched (shell tools only).
72 lines
5.7 KiB
JSON
72 lines
5.7 KiB
JSON
{
|
|
"name": "@mosaicstack/mosaic",
|
|
"version": "0.0.49",
|
|
"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": "bash framework/tools/quality/scripts/check-test-enumeration.sh && bash framework/tools/quality/scripts/test-check-test-enumeration.sh && python3 framework/tools/quality/scripts/test-framework-drift-check.py && bash framework/tools/quality/scripts/test-framework-drift-doctor.sh && bash framework/systemd/user/test-fleet-units.sh && python3 src/lease-broker/daemon_deadline_unittest.py && python3 src/lease-broker/normative_fragments_unittest.py && python3 src/lease-broker/promotion_binding_unittest.py && python3 src/lease-broker/promotion_trigger_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/receipt_observer_client_unittest.py && python3 src/lease-broker/invariant_r_unittest.py && python3 src/lease-broker/framework_skill_portability_unittest.py && python3 src/lease-broker/revoke_noop_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-edit.sh && bash framework/tools/git/test-pr-create-fallback-default-base.sh && bash framework/tools/git/test-repo-decl-consumption.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-no-status.sh && bash framework/tools/git/test-ci-queue-wait-branch-absent.sh && bash framework/tools/git/test-ci-queue-wait-tristate.sh && bash framework/tools/git/test-ci-queue-wait-github-checks.sh && bash framework/tools/git/test-ci-queue-wait-no-ci-expected.sh && bash framework/tools/git/test-pr-merge-queue-branch.sh && bash framework/tools/git/test-pr-merge-no-ci-expected.sh && bash framework/tools/git/test-pr-merge-fork-ci-status.sh && bash framework/tools/git/test-pr-merge-head-pin.sh && bash framework/tools/git/test-pr-merge-message-field.sh && bash framework/tools/git/test-git-credential-mosaic.sh && bash framework/tools/git/test-gitea-token-identity.sh && bash framework/tools/git/test-explain-diagnostic-status-neutral.sh && bash framework/tools/git/test-detect-platform-outside-repo.sh && bash framework/tools/woodpecker/test-terminal-green-contract.sh && bash framework/tools/_scripts/test-install-ordering-guard.sh && bash framework/tools/_scripts/test-mosaic-init-rce.sh && bash framework/tools/tmux/agent-send.test.sh && bash framework/tools/wake/test-wake-store-ack.sh && bash framework/tools/wake/test-wake-store-enqueue-race.sh && bash framework/tools/wake/test-wake-digest-hmac.sh && bash framework/tools/wake/test-wake-digest-quarantine.sh && bash framework/tools/wake/test-wake-detector.sh && bash framework/tools/wake/test-wake-fn-oracle.sh && bash framework/tools/wake/test-wake-reconcile.sh && bash framework/tools/wake/test-wake-beacon.sh && bash framework/tools/wake/test-wake-preimage.sh && bash framework/tools/wake/test-wake-install.sh && bash framework/tools/glpi/test-list-http-status.sh && bash framework/tools/orchestrator/test-board-roll.sh && bash framework/tools/woodpecker/test-ci-wait-exit-matrix.sh && bash framework/tools/_scripts/test-fleet-transport-check.sh && bash framework/tools/_scripts/test-brain-home-check.sh && bash framework/tools/_scripts/test-structure-anchor-check.sh && bash framework/tools/fleet/test-agent-session-broker-preflight.sh && bash framework/tools/fleet/test-agent-session-legacy-socket-guard.sh && bash framework/tools/git/test-grant-reviewer.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"
|
|
}
|