@tangle-network/starter-foundry 0.5.4 → 0.7.2
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 +28 -5
- package/corpus/held-out-validation.json +3 -3
- package/corpus/model-rates.json +56 -0
- package/dist/cli.js +7 -4
- package/dist/cli.js.map +1 -1
- package/dist/eval/diagnoser.d.ts +37 -0
- package/dist/eval/diagnoser.js +113 -0
- package/dist/eval/diagnoser.js.map +1 -0
- package/dist/eval/propose.d.ts +20 -0
- package/dist/eval/propose.js +75 -0
- package/dist/eval/propose.js.map +1 -0
- package/dist/eval/replay.d.ts +137 -0
- package/dist/eval/replay.js +392 -0
- package/dist/eval/replay.js.map +1 -0
- package/dist/eval/scaffold-bridge.d.ts +197 -0
- package/dist/eval/scaffold-bridge.js +685 -0
- package/dist/eval/scaffold-bridge.js.map +1 -0
- package/dist/lib/ab.d.ts +61 -0
- package/dist/lib/ab.js +80 -0
- package/dist/lib/ab.js.map +1 -0
- package/dist/lib/batch-export.js +1 -11
- package/dist/lib/batch-export.js.map +1 -1
- package/dist/lib/brand/first-turn-flows.d.ts +10 -0
- package/dist/lib/brand/first-turn-flows.js +114 -0
- package/dist/lib/brand/first-turn-flows.js.map +1 -0
- package/dist/lib/brand/i18n.d.ts +15 -0
- package/dist/lib/brand/i18n.js +100 -0
- package/dist/lib/brand/i18n.js.map +1 -0
- package/dist/lib/brand/index.d.ts +27 -0
- package/dist/lib/brand/index.js +100 -0
- package/dist/lib/brand/index.js.map +1 -0
- package/dist/lib/brand/media-manifest.d.ts +26 -0
- package/dist/lib/brand/media-manifest.js +98 -0
- package/dist/lib/brand/media-manifest.js.map +1 -0
- package/dist/lib/brand/user-segments.d.ts +7 -0
- package/dist/lib/brand/user-segments.js +81 -0
- package/dist/lib/brand/user-segments.js.map +1 -0
- package/dist/lib/brand/voice.d.ts +10 -0
- package/dist/lib/brand/voice.js +92 -0
- package/dist/lib/brand/voice.js.map +1 -0
- package/dist/lib/bridge.d.ts +38 -0
- package/dist/lib/bridge.js +130 -0
- package/dist/lib/bridge.js.map +1 -0
- package/dist/lib/build-plan.d.ts +25 -0
- package/dist/lib/build-plan.js +67 -1
- package/dist/lib/build-plan.js.map +1 -1
- package/dist/lib/buildout-traces.d.ts +70 -1
- package/dist/lib/buildout-traces.js +66 -0
- package/dist/lib/buildout-traces.js.map +1 -1
- package/dist/lib/canary.d.ts +38 -0
- package/dist/lib/canary.js +91 -0
- package/dist/lib/canary.js.map +1 -0
- package/dist/lib/capability-inferrer.d.ts +5 -4
- package/dist/lib/compose-prompt.d.ts +8 -7
- package/dist/lib/compose-prompt.js +30 -7
- package/dist/lib/compose-prompt.js.map +1 -1
- package/dist/lib/compose-seed.d.ts +15 -0
- package/dist/lib/compose-seed.js +44 -0
- package/dist/lib/compose-seed.js.map +1 -0
- package/dist/lib/compose.js +147 -3
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/cost.d.ts +53 -0
- package/dist/lib/cost.js +77 -0
- package/dist/lib/cost.js.map +1 -0
- package/dist/lib/fs.d.ts +1 -0
- package/dist/lib/fs.js +10 -0
- package/dist/lib/fs.js.map +1 -1
- package/dist/lib/index.d.ts +42 -1
- package/dist/lib/index.js +22 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/industry-flows.d.ts +6 -0
- package/dist/lib/industry-flows.js +165 -0
- package/dist/lib/industry-flows.js.map +1 -0
- package/dist/lib/keywords.js +14 -0
- package/dist/lib/keywords.js.map +1 -1
- package/dist/lib/llm.d.ts +7 -2
- package/dist/lib/llm.js +137 -8
- package/dist/lib/llm.js.map +1 -1
- package/dist/lib/planner/contracts.d.ts +2 -1
- package/dist/lib/planner/detectors.js +26 -0
- package/dist/lib/planner/detectors.js.map +1 -1
- package/dist/lib/planner/helpers.js +157 -0
- package/dist/lib/planner/helpers.js.map +1 -1
- package/dist/lib/planner/implicit-caps.js +63 -1
- package/dist/lib/planner/implicit-caps.js.map +1 -1
- package/dist/lib/planner/partner-first.d.ts +31 -0
- package/dist/lib/planner/partner-first.js +137 -0
- package/dist/lib/planner/partner-first.js.map +1 -0
- package/dist/lib/planner/projects.d.ts +2 -2
- package/dist/lib/planner/projects.js +452 -2
- package/dist/lib/planner/projects.js.map +1 -1
- package/dist/lib/planner/signals.d.ts +7 -0
- package/dist/lib/planner/signals.js +203 -1
- package/dist/lib/planner/signals.js.map +1 -1
- package/dist/lib/planner/zk-preferences.d.ts +9 -0
- package/dist/lib/planner/zk-preferences.js +91 -0
- package/dist/lib/planner/zk-preferences.js.map +1 -0
- package/dist/lib/promoter-gates.d.ts +114 -0
- package/dist/lib/promoter-gates.js +426 -0
- package/dist/lib/promoter-gates.js.map +1 -0
- package/dist/lib/prompt-e2e.d.ts +1 -0
- package/dist/lib/prompt-e2e.js +20 -6
- package/dist/lib/prompt-e2e.js.map +1 -1
- package/dist/lib/prompt-planner.js +187 -2
- package/dist/lib/prompt-planner.js.map +1 -1
- package/dist/lib/prompt-rewriter.d.ts +4 -3
- package/dist/lib/prompt-rewriter.js +11 -0
- package/dist/lib/prompt-rewriter.js.map +1 -1
- package/dist/lib/registry-mirror.d.ts +28 -0
- package/dist/lib/registry-mirror.js +64 -0
- package/dist/lib/registry-mirror.js.map +1 -0
- package/dist/lib/release.js +1 -11
- package/dist/lib/release.js.map +1 -1
- package/dist/lib/reproducibility.d.ts +39 -0
- package/dist/lib/reproducibility.js +96 -0
- package/dist/lib/reproducibility.js.map +1 -0
- package/dist/lib/reviewer-route.d.ts +12 -0
- package/dist/lib/reviewer-route.js +99 -0
- package/dist/lib/reviewer-route.js.map +1 -0
- package/dist/lib/safety/license-check.d.ts +9 -0
- package/dist/lib/safety/license-check.js +61 -0
- package/dist/lib/safety/license-check.js.map +1 -0
- package/dist/lib/safety/secret-scan.d.ts +7 -0
- package/dist/lib/safety/secret-scan.js +67 -0
- package/dist/lib/safety/secret-scan.js.map +1 -0
- package/dist/lib/sbom.d.ts +34 -0
- package/dist/lib/sbom.js +89 -0
- package/dist/lib/sbom.js.map +1 -0
- package/dist/lib/selection.d.ts +22 -0
- package/dist/lib/selection.js +56 -1
- package/dist/lib/selection.js.map +1 -1
- package/dist/lib/semantic-router.d.ts +2 -1
- package/dist/lib/synthetic/index.d.ts +45 -0
- package/dist/lib/synthetic/index.js +101 -0
- package/dist/lib/synthetic/index.js.map +1 -0
- package/dist/lib/telemetry/stream.d.ts +52 -0
- package/dist/lib/telemetry/stream.js +153 -0
- package/dist/lib/telemetry/stream.js.map +1 -0
- package/dist/lib/telemetry.d.ts +6 -0
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/template-quality.d.ts +61 -0
- package/dist/lib/template-quality.js +100 -0
- package/dist/lib/template-quality.js.map +1 -0
- package/dist/lib/validate-plan.d.ts +10 -0
- package/dist/lib/validate-plan.js +74 -0
- package/dist/lib/validate-plan.js.map +1 -0
- package/dist/lib/vb-outcomes.d.ts +2 -1
- package/dist/lib/version-history.d.ts +15 -0
- package/dist/lib/version-history.js +40 -0
- package/dist/lib/version-history.js.map +1 -0
- package/dist/lib/visual-regression.d.ts +75 -0
- package/dist/lib/visual-regression.js +125 -0
- package/dist/lib/visual-regression.js.map +1 -0
- package/dist/training/capability_proposer/propose.d.ts +26 -0
- package/dist/training/capability_proposer/propose.js +305 -0
- package/dist/training/capability_proposer/propose.js.map +1 -0
- package/dist/training/family_proposer/propose.d.ts +35 -0
- package/dist/training/family_proposer/propose.js +664 -0
- package/dist/training/family_proposer/propose.js.map +1 -0
- package/dist/training/routing/train.d.ts +49 -0
- package/dist/training/routing/train.js +249 -0
- package/dist/training/routing/train.js.map +1 -0
- package/dist/training/template_v1/audit.d.ts +15 -0
- package/dist/training/template_v1/audit.js +83 -0
- package/dist/training/template_v1/audit.js.map +1 -0
- package/dist/training/template_v1/correctness.d.ts +25 -0
- package/dist/training/template_v1/correctness.js +194 -0
- package/dist/training/template_v1/correctness.js.map +1 -0
- package/dist/training/template_v1/harvest.d.ts +25 -0
- package/dist/training/template_v1/harvest.js +101 -0
- package/dist/training/template_v1/harvest.js.map +1 -0
- package/dist/training/template_v1/judge.d.ts +26 -0
- package/dist/training/template_v1/judge.js +104 -0
- package/dist/training/template_v1/judge.js.map +1 -0
- package/dist/training/template_v1/multi-propose.d.ts +27 -0
- package/dist/training/template_v1/multi-propose.js +34 -0
- package/dist/training/template_v1/multi-propose.js.map +1 -0
- package/dist/training/template_v1/run.d.ts +1 -0
- package/dist/training/template_v1/run.js +369 -0
- package/dist/training/template_v1/run.js.map +1 -0
- package/dist/training/template_v1/synthesize.d.ts +14 -0
- package/dist/training/template_v1/synthesize.js +101 -0
- package/dist/training/template_v1/synthesize.js.map +1 -0
- package/dist/training/variant_b/flow.d.ts +9 -14
- package/dist/training/variant_b/run-flow.d.ts +2 -1
- package/dist/types/registry-schemas.generated.d.ts +105 -0
- package/dist/types/registry-schemas.generated.js +5 -0
- package/dist/types/registry-schemas.generated.js.map +1 -0
- package/dist/types.d.ts +119 -0
- package/package.json +45 -4
- package/registry/_mirrors.json +29 -0
- package/registry/_schemas/buildhints.schema.json +30 -0
- package/registry/_schemas/family.schema.json +92 -0
- package/registry/_schemas/layer.schema.json +59 -0
- package/registry/_schemas/partner.schema.json +27 -0
- package/registry/families/agent-service-py/manifest.json +9 -0
- package/registry/families/agent-service-ts/files/package.json +8 -0
- package/registry/families/agent-service-ts/manifest.json +1 -4
- package/registry/families/agent-swarm-ts/files/package.json +31 -0
- package/registry/families/agent-swarm-ts/files/tsconfig.json +14 -0
- package/registry/families/agent-swarm-ts/files/validate-swarm.mjs +28 -0
- package/registry/families/agent-swarm-ts/manifest.json +174 -0
- package/registry/families/angular-ts/files/package.json +8 -0
- package/registry/families/aptos-move/files/README.md +45 -0
- package/registry/families/aptos-move/files/validate-aptos.mjs +33 -0
- package/registry/families/aptos-move/manifest.json +106 -0
- package/registry/families/arkworks-prover/files/Cargo.toml +25 -0
- package/registry/families/arkworks-prover/files/README.md +77 -0
- package/registry/families/arkworks-prover/files/rust-toolchain.toml +3 -0
- package/registry/families/arkworks-prover/files/src/circuit.rs +39 -0
- package/registry/families/arkworks-prover/files/src/main.rs +31 -0
- package/registry/families/arkworks-prover/files/src/prover.rs +47 -0
- package/registry/families/arkworks-prover/files/validate-arkworks.mjs +25 -0
- package/registry/families/arkworks-prover/manifest.json +84 -0
- package/registry/families/astro-static/files/package.json +28 -0
- package/registry/families/astro-static/files/tsconfig.json +5 -0
- package/registry/families/astro-static/files/validate-astro.mjs +26 -0
- package/registry/families/astro-static/manifest.json +141 -0
- package/registry/families/bevy-web/files/Cargo.toml +27 -0
- package/registry/families/bevy-web/files/Trunk.toml +20 -0
- package/registry/families/bevy-web/files/build.sh +32 -0
- package/registry/families/bevy-web/files/index.html +30 -0
- package/registry/families/bevy-web/files/validate-bevy-web.mjs +46 -0
- package/registry/families/bevy-web/manifest.json +171 -0
- package/registry/families/browser-extension-ts/files/package.json +3 -3
- package/registry/families/bun-http/files/bunfig.toml +9 -0
- package/registry/families/bun-http/files/package.json +23 -0
- package/registry/families/bun-http/files/tsconfig.json +16 -0
- package/registry/families/bun-http/files/validate-bun.mjs +21 -0
- package/registry/families/bun-http/manifest.json +163 -0
- package/registry/families/celestia-da/files/README.md +53 -0
- package/registry/families/celestia-da/files/validate-celestia.mjs +43 -0
- package/registry/families/celestia-da/manifest.json +117 -0
- package/registry/families/cli-ts/files/package.json +10 -2
- package/registry/families/cloudflare-worker-ts/files/package.json +8 -0
- package/registry/families/crm-backend/files/package.json +23 -0
- package/registry/families/crm-backend/files/tsconfig.json +14 -0
- package/registry/families/crm-backend/files/validate-crm.mjs +32 -0
- package/registry/families/crm-backend/manifest.json +132 -0
- package/registry/families/deno-edge/files/deno.json +17 -0
- package/registry/families/deno-edge/files/validate-deno.mjs +21 -0
- package/registry/families/deno-edge/manifest.json +153 -0
- package/registry/families/ecommerce-headless/files/package.json +24 -0
- package/registry/families/ecommerce-headless/files/tsconfig.json +14 -0
- package/registry/families/ecommerce-headless/files/validate-commerce.mjs +37 -0
- package/registry/families/ecommerce-headless/manifest.json +68 -0
- package/registry/families/electron-desktop-ts/files/package.json +10 -2
- package/registry/families/electron-native-os/files/package.json +35 -0
- package/registry/families/electron-native-os/files/preview-server.mjs +34 -0
- package/registry/families/electron-native-os/files/validate-types.mjs +39 -0
- package/registry/families/electron-native-os/manifest.json +200 -0
- package/registry/families/eleventy-static/files/.eleventy.js +16 -0
- package/registry/families/eleventy-static/files/package.json +23 -0
- package/registry/families/eleventy-static/files/validate-eleventy.mjs +25 -0
- package/registry/families/eleventy-static/manifest.json +106 -0
- package/registry/families/esp32-rust/files/Cargo.toml +47 -0
- package/registry/families/esp32-rust/files/build.rs +9 -0
- package/registry/families/esp32-rust/files/cargo-config.toml +22 -0
- package/registry/families/esp32-rust/files/rust-toolchain.toml +10 -0
- package/registry/families/esp32-rust/files/sdkconfig.defaults +28 -0
- package/registry/families/esp32-rust/files/validate-esp32.mjs +54 -0
- package/registry/families/esp32-rust/manifest.json +168 -0
- package/registry/families/expo-react-native-ts/files/package.json +11 -3
- package/registry/families/expo-rn-rich/files/package.json +37 -0
- package/registry/families/expo-rn-rich/files/validate-expo-rn-rich.mjs +43 -0
- package/registry/families/expo-rn-rich/manifest.json +181 -0
- package/registry/families/fintech-ledger-backend/files/package.json +30 -0
- package/registry/families/fintech-ledger-backend/files/tsconfig.json +14 -0
- package/registry/families/fintech-ledger-backend/files/validate-fintech.mjs +43 -0
- package/registry/families/fintech-ledger-backend/manifest.json +138 -0
- package/registry/families/flutter-app/files/analysis_options.yaml +17 -0
- package/registry/families/flutter-app/files/android/app/build.gradle +38 -0
- package/registry/families/flutter-app/files/ios/Runner/Info.plist +49 -0
- package/registry/families/flutter-app/files/pubspec.yaml +24 -0
- package/registry/families/flutter-app/files/validate-flutter.mjs +43 -0
- package/registry/families/flutter-app/manifest.json +189 -0
- package/registry/families/fraud-ops-console/files/.env.example +6 -0
- package/registry/families/fraud-ops-console/files/.gitkeep +0 -0
- package/registry/families/fraud-ops-console/files/README.md +43 -0
- package/registry/families/fraud-ops-console/files/index.html +12 -0
- package/registry/families/fraud-ops-console/files/package.json +37 -0
- package/registry/families/fraud-ops-console/files/src/App.tsx +19 -0
- package/registry/families/fraud-ops-console/files/src/main.tsx +12 -0
- package/registry/families/fraud-ops-console/files/tsconfig.json +12 -0
- package/registry/families/fraud-ops-console/files/validate-node.mjs +49 -0
- package/registry/families/fraud-ops-console/files/vite.config.ts +10 -0
- package/registry/families/fraud-ops-console/manifest.json +134 -0
- package/registry/families/frontend-static/files/package.json +8 -0
- package/registry/families/frontend-static/manifest.json +17 -0
- package/registry/families/fullstack-ts/files/package.json +10 -2
- package/registry/families/fullstack-ts/manifest.json +22 -0
- package/registry/families/gdpr-compliance-pack/files/docs/DPIA-template.md +55 -0
- package/registry/families/gdpr-compliance-pack/files/docs/GDPR-controls.md +65 -0
- package/registry/families/gdpr-compliance-pack/files/package.json +14 -0
- package/registry/families/gdpr-compliance-pack/files/src/components/CookieBanner.tsx +115 -0
- package/registry/families/gdpr-compliance-pack/files/src/consent.ts +71 -0
- package/registry/families/gdpr-compliance-pack/files/src/data-inventory.ts +94 -0
- package/registry/families/gdpr-compliance-pack/files/src/data-subject-rights.ts +98 -0
- package/registry/families/gdpr-compliance-pack/files/tsconfig.json +14 -0
- package/registry/families/gdpr-compliance-pack/files/validate-gdpr-pack.mjs +31 -0
- package/registry/families/gdpr-compliance-pack/manifest.json +56 -0
- package/registry/families/godot-web/files/README.md +71 -0
- package/registry/families/godot-web/files/export_presets.cfg +44 -0
- package/registry/families/godot-web/files/icon.svg +7 -0
- package/registry/families/godot-web/files/project.godot +28 -0
- package/registry/families/godot-web/files/validate-godot-web.mjs +46 -0
- package/registry/families/godot-web/manifest.json +172 -0
- package/registry/families/hardhat-contracts/files/package.json +10 -2
- package/registry/families/healthcare-hipaa-backend/files/package.json +29 -0
- package/registry/families/healthcare-hipaa-backend/files/tsconfig.json +15 -0
- package/registry/families/healthcare-hipaa-backend/files/validate-hipaa.mjs +35 -0
- package/registry/families/healthcare-hipaa-backend/manifest.json +145 -0
- package/registry/families/hipaa-compliance-pack/files/docs/BAA-template.md +60 -0
- package/registry/families/hipaa-compliance-pack/files/docs/HIPAA-controls.md +58 -0
- package/registry/families/hipaa-compliance-pack/files/package.json +14 -0
- package/registry/families/hipaa-compliance-pack/files/src/audit-log.ts +54 -0
- package/registry/families/hipaa-compliance-pack/files/src/encryption.ts +74 -0
- package/registry/families/hipaa-compliance-pack/files/src/phi-access.ts +83 -0
- package/registry/families/hipaa-compliance-pack/files/tsconfig.json +14 -0
- package/registry/families/hipaa-compliance-pack/files/validate-hipaa-pack.mjs +33 -0
- package/registry/families/hipaa-compliance-pack/manifest.json +63 -0
- package/registry/families/hls-origin/files/docker-compose.yml +32 -0
- package/registry/families/hls-origin/files/nginx.conf +68 -0
- package/registry/families/hls-origin/files/package.json +30 -0
- package/registry/families/hls-origin/files/start-stream.sh +58 -0
- package/registry/families/hls-origin/files/tsconfig.json +15 -0
- package/registry/families/hls-origin/files/validate-hls.mjs +50 -0
- package/registry/families/hls-origin/manifest.json +159 -0
- package/registry/families/hugo-static/files/config.toml +12 -0
- package/registry/families/hugo-static/files/validate-hugo.mjs +22 -0
- package/registry/families/hugo-static/manifest.json +99 -0
- package/registry/families/jupyter-book/files/_config.yml +26 -0
- package/registry/families/jupyter-book/files/_toc.yml +4 -0
- package/registry/families/jupyter-book/files/intro.md +16 -0
- package/registry/families/jupyter-book/files/requirements.txt +3 -0
- package/registry/families/jupyter-book/files/validate-jupyter-book.mjs +26 -0
- package/registry/families/jupyter-book/manifest.json +115 -0
- package/registry/families/k12-edtech/files/package.json +23 -0
- package/registry/families/k12-edtech/files/tsconfig.json +14 -0
- package/registry/families/k12-edtech/files/validate-k12.mjs +28 -0
- package/registry/families/k12-edtech/manifest.json +64 -0
- package/registry/families/kotlin-multiplatform/files/build.gradle.kts +67 -0
- package/registry/families/kotlin-multiplatform/files/gradle.properties +12 -0
- package/registry/families/kotlin-multiplatform/files/root-build.gradle.kts +12 -0
- package/registry/families/kotlin-multiplatform/files/settings.gradle.kts +30 -0
- package/registry/families/kotlin-multiplatform/files/validate-kmp.mjs +52 -0
- package/registry/families/kotlin-multiplatform/manifest.json +196 -0
- package/registry/families/kyc-onboarding/files/.env.example +6 -0
- package/registry/families/kyc-onboarding/files/.gitkeep +0 -0
- package/registry/families/kyc-onboarding/files/README.md +23 -0
- package/registry/families/kyc-onboarding/files/index.html +12 -0
- package/registry/families/kyc-onboarding/files/package.json +24 -0
- package/registry/families/kyc-onboarding/files/src/App.tsx +40 -0
- package/registry/families/kyc-onboarding/files/src/main.tsx +12 -0
- package/registry/families/kyc-onboarding/files/tsconfig.json +17 -0
- package/registry/families/kyc-onboarding/files/validate-node.mjs +17 -0
- package/registry/families/kyc-onboarding/files/vite.config.ts +14 -0
- package/registry/families/kyc-onboarding/manifest.json +140 -0
- package/registry/families/legal-case-mgmt/files/package.json +24 -0
- package/registry/families/legal-case-mgmt/files/tsconfig.json +14 -0
- package/registry/families/legal-case-mgmt/files/validate-legal.mjs +12 -0
- package/registry/families/legal-case-mgmt/manifest.json +85 -0
- package/registry/families/livekit-sfu/files/.env.example +8 -0
- package/registry/families/livekit-sfu/files/docker-compose.yml +27 -0
- package/registry/families/livekit-sfu/files/livekit.yaml +30 -0
- package/registry/families/livekit-sfu/files/package.json +31 -0
- package/registry/families/livekit-sfu/files/tsconfig.json +15 -0
- package/registry/families/livekit-sfu/files/validate-livekit.mjs +46 -0
- package/registry/families/livekit-sfu/manifest.json +152 -0
- package/registry/families/lora-training/files/.env.example +8 -0
- package/registry/families/lora-training/files/README-lora.md +71 -0
- package/registry/families/lora-training/files/config/train.yaml +54 -0
- package/registry/families/lora-training/files/data/sample.jsonl +5 -0
- package/registry/families/lora-training/files/pyproject.toml +29 -0
- package/registry/families/lora-training/files/validate-lora.mjs +63 -0
- package/registry/families/lora-training/manifest.json +183 -0
- package/registry/families/move-contracts/files/validate-move.mjs +1 -1
- package/registry/families/move-contracts/manifest.json +0 -1
- package/registry/families/multimodal-agent/files/api/README.md +108 -0
- package/registry/families/multimodal-agent/files/index.html +105 -0
- package/registry/families/multimodal-agent/files/package.json +31 -0
- package/registry/families/multimodal-agent/files/tsconfig.json +15 -0
- package/registry/families/multimodal-agent/files/validate-multimodal.mjs +64 -0
- package/registry/families/multimodal-agent/files/vite.config.ts +15 -0
- package/registry/families/multimodal-agent/manifest.json +143 -0
- package/registry/families/nextjs-ts/files/package.json +15 -7
- package/registry/families/nextjs-ts/manifest.json +35 -0
- package/registry/families/nextjs-ts/prompt-fragment.md +12 -0
- package/registry/families/observable-notebook/files/index.md +23 -0
- package/registry/families/observable-notebook/files/observablehq.config.ts +15 -0
- package/registry/families/observable-notebook/files/package.json +26 -0
- package/registry/families/observable-notebook/files/tsconfig.json +13 -0
- package/registry/families/observable-notebook/files/validate-observable.mjs +24 -0
- package/registry/families/observable-notebook/manifest.json +110 -0
- package/registry/families/ollama-server/files/Modelfile +10 -0
- package/registry/families/ollama-server/files/README.md +32 -0
- package/registry/families/ollama-server/files/docker-compose.yml +23 -0
- package/registry/families/ollama-server/files/package.json +14 -0
- package/registry/families/ollama-server/files/tsconfig.json +13 -0
- package/registry/families/ollama-server/files/validate-ollama.mjs +19 -0
- package/registry/families/ollama-server/manifest.json +101 -0
- package/registry/families/pci-dss-compliance-pack/files/docs/PCI-DSS-controls.md +43 -0
- package/registry/families/pci-dss-compliance-pack/files/package.json +14 -0
- package/registry/families/pci-dss-compliance-pack/files/src/pan-redact.ts +50 -0
- package/registry/families/pci-dss-compliance-pack/files/src/tokenize.ts +39 -0
- package/registry/families/pci-dss-compliance-pack/files/tsconfig.json +14 -0
- package/registry/families/pci-dss-compliance-pack/files/validate-pci-pack.mjs +19 -0
- package/registry/families/pci-dss-compliance-pack/manifest.json +50 -0
- package/registry/families/phaser-game/files/index.html +17 -0
- package/registry/families/phaser-game/files/package.json +18 -0
- package/registry/families/phaser-game/files/tsconfig.json +15 -0
- package/registry/families/phaser-game/files/validate-phaser.mjs +19 -0
- package/registry/families/phaser-game/files/vite.config.ts +11 -0
- package/registry/families/phaser-game/manifest.json +91 -0
- package/registry/families/pixijs-game/files/index.html +16 -0
- package/registry/families/pixijs-game/files/package.json +18 -0
- package/registry/families/pixijs-game/files/tsconfig.json +13 -0
- package/registry/families/pixijs-game/files/validate-pixi.mjs +14 -0
- package/registry/families/pixijs-game/files/vite.config.ts +6 -0
- package/registry/families/pixijs-game/manifest.json +90 -0
- package/registry/families/playwright-worker/files/package.json +8 -0
- package/registry/families/polymarket-portfolio-hedging/files/.env.example +5 -0
- package/registry/families/polymarket-portfolio-hedging/files/.gitkeep +0 -0
- package/registry/families/polymarket-portfolio-hedging/files/README.md +37 -0
- package/registry/families/polymarket-portfolio-hedging/files/index.html +1 -0
- package/registry/families/polymarket-portfolio-hedging/files/package.json +32 -0
- package/registry/families/polymarket-portfolio-hedging/files/src/App.tsx +45 -0
- package/registry/families/polymarket-portfolio-hedging/files/src/main.tsx +12 -0
- package/registry/families/polymarket-portfolio-hedging/files/tsconfig.json +12 -0
- package/registry/families/polymarket-portfolio-hedging/files/validate-node.mjs +1 -0
- package/registry/families/polymarket-portfolio-hedging/files/vite.config.ts +10 -0
- package/registry/families/polymarket-portfolio-hedging/manifest.json +128 -0
- package/registry/families/python-api/manifest.json +1 -3
- package/registry/families/rag-pipeline-py/files/.env.example +20 -0
- package/registry/families/rag-pipeline-py/files/README-rag.md +57 -0
- package/registry/families/rag-pipeline-py/files/docs/sample.md +14 -0
- package/registry/families/rag-pipeline-py/files/pyproject.toml +26 -0
- package/registry/families/rag-pipeline-py/files/validate-rag.mjs +38 -0
- package/registry/families/rag-pipeline-py/manifest.json +174 -0
- package/registry/families/react-vite-ts/files/package.json +7 -7
- package/registry/families/react-vite-ts/manifest.json +31 -0
- package/registry/families/realtime-audio-ts/files/package.json +25 -0
- package/registry/families/realtime-audio-ts/files/validate-realtime-audio.mjs +43 -0
- package/registry/families/realtime-audio-ts/manifest.json +177 -0
- package/registry/families/remix-ts/files/package.json +7 -7
- package/registry/families/remix-ts/manifest.json +30 -0
- package/registry/families/risczero-zkvm/files/Cargo.toml +23 -0
- package/registry/families/risczero-zkvm/files/README.md +66 -0
- package/registry/families/risczero-zkvm/files/host/main.rs +25 -0
- package/registry/families/risczero-zkvm/files/host/prover.rs +48 -0
- package/registry/families/risczero-zkvm/files/host-Cargo.toml +16 -0
- package/registry/families/risczero-zkvm/files/methods/Cargo.toml +11 -0
- package/registry/families/risczero-zkvm/files/methods/build.rs +6 -0
- package/registry/families/risczero-zkvm/files/methods/guest/main.rs +38 -0
- package/registry/families/risczero-zkvm/files/methods/guest-Cargo.toml +12 -0
- package/registry/families/risczero-zkvm/files/methods/src-lib.rs +3 -0
- package/registry/families/risczero-zkvm/files/rust-toolchain.toml +3 -0
- package/registry/families/risczero-zkvm/files/validate-risczero.mjs +41 -0
- package/registry/families/risczero-zkvm/manifest.json +109 -0
- package/registry/families/ros2-node-py/files/README-ros2.md +46 -0
- package/registry/families/ros2-node-py/files/package.xml +28 -0
- package/registry/families/ros2-node-py/files/resource-marker +1 -0
- package/registry/families/ros2-node-py/files/setup.cfg +5 -0
- package/registry/families/ros2-node-py/files/setup.py +32 -0
- package/registry/families/ros2-node-py/files/validate-ros2-py.mjs +96 -0
- package/registry/families/ros2-node-py/manifest.json +197 -0
- package/registry/families/sglang-server/files/.env.example +21 -0
- package/registry/families/sglang-server/files/README-sglang.md +60 -0
- package/registry/families/sglang-server/files/client.py +87 -0
- package/registry/families/sglang-server/files/docker-compose.yml +46 -0
- package/registry/families/sglang-server/files/launch.sh +26 -0
- package/registry/families/sglang-server/files/requirements.txt +5 -0
- package/registry/families/sglang-server/files/validate-sglang.mjs +49 -0
- package/registry/families/sglang-server/manifest.json +182 -0
- package/registry/families/skypilot-serving/files/.env.example +12 -0
- package/registry/families/skypilot-serving/files/README-skypilot.md +73 -0
- package/registry/families/skypilot-serving/files/requirements.txt +5 -0
- package/registry/families/skypilot-serving/files/service.yaml +44 -0
- package/registry/families/skypilot-serving/files/sky-serve.yaml +25 -0
- package/registry/families/skypilot-serving/files/validate-skypilot.mjs +41 -0
- package/registry/families/skypilot-serving/manifest.json +181 -0
- package/registry/families/soc2-compliance-pack/files/docs/SOC2-controls.md +54 -0
- package/registry/families/soc2-compliance-pack/files/docs/incident-response.md +33 -0
- package/registry/families/soc2-compliance-pack/files/docs/vendor-attestations.md +36 -0
- package/registry/families/soc2-compliance-pack/files/package.json +14 -0
- package/registry/families/soc2-compliance-pack/files/src/audit.ts +46 -0
- package/registry/families/soc2-compliance-pack/files/src/change-mgmt.ts +36 -0
- package/registry/families/soc2-compliance-pack/files/tsconfig.json +14 -0
- package/registry/families/soc2-compliance-pack/files/validate-soc2-pack.mjs +25 -0
- package/registry/families/soc2-compliance-pack/manifest.json +60 -0
- package/registry/families/sp1-zkvm/files/Cargo.toml +18 -0
- package/registry/families/sp1-zkvm/files/README.md +68 -0
- package/registry/families/sp1-zkvm/files/program/main.rs +21 -0
- package/registry/families/sp1-zkvm/files/program-Cargo.toml +11 -0
- package/registry/families/sp1-zkvm/files/rust-toolchain.toml +3 -0
- package/registry/families/sp1-zkvm/files/script/main.rs +13 -0
- package/registry/families/sp1-zkvm/files/script/prover.rs +36 -0
- package/registry/families/sp1-zkvm/files/script-Cargo.toml +17 -0
- package/registry/families/sp1-zkvm/files/validate-sp1.mjs +30 -0
- package/registry/families/sp1-zkvm/manifest.json +92 -0
- package/registry/families/stm32-rust/files/Cargo.toml +69 -0
- package/registry/families/stm32-rust/files/Embed.toml +26 -0
- package/registry/families/stm32-rust/files/build.rs +24 -0
- package/registry/families/stm32-rust/files/cargo-config.toml +20 -0
- package/registry/families/stm32-rust/files/memory.x +25 -0
- package/registry/families/stm32-rust/files/validate-stm32.mjs +19 -0
- package/registry/families/stm32-rust/manifest.json +170 -0
- package/registry/families/streamlit-advanced/files/config.toml +12 -0
- package/registry/families/streamlit-advanced/files/requirements.txt +5 -0
- package/registry/families/streamlit-advanced/files/validate-streamlit.mjs +27 -0
- package/registry/families/streamlit-advanced/manifest.json +109 -0
- package/registry/families/tauri-desktop/files/package.json +6 -6
- package/registry/families/tauri-menubar/files/package.json +31 -0
- package/registry/families/tauri-menubar/files/preview-server.mjs +36 -0
- package/registry/families/tauri-menubar/files/validate-types.mjs +31 -0
- package/registry/families/tauri-menubar/manifest.json +174 -0
- package/registry/families/tauri-tray/files/package.json +23 -0
- package/registry/families/tauri-tray/files/preview-server.mjs +63 -0
- package/registry/families/tauri-tray/files/validate-types.mjs +27 -0
- package/registry/families/tauri-tray/manifest.json +174 -0
- package/registry/families/tgi-server/files/.env.example +22 -0
- package/registry/families/tgi-server/files/README-tgi.md +59 -0
- package/registry/families/tgi-server/files/client.py +78 -0
- package/registry/families/tgi-server/files/docker-compose.yml +46 -0
- package/registry/families/tgi-server/files/requirements.txt +3 -0
- package/registry/families/tgi-server/files/validate-tgi.mjs +44 -0
- package/registry/families/tgi-server/manifest.json +178 -0
- package/registry/families/threejs-game/files/index.html +16 -0
- package/registry/families/threejs-game/files/package.json +27 -0
- package/registry/families/threejs-game/files/tsconfig.json +13 -0
- package/registry/families/threejs-game/files/validate-threejs.mjs +32 -0
- package/registry/families/threejs-game/files/vite.config.ts +10 -0
- package/registry/families/threejs-game/manifest.json +164 -0
- package/registry/families/triton-server/files/README-triton.md +65 -0
- package/registry/families/triton-server/files/client.py +54 -0
- package/registry/families/triton-server/files/docker-compose.yml +41 -0
- package/registry/families/triton-server/files/model_repository/identity/1/.gitkeep +9 -0
- package/registry/families/triton-server/files/model_repository/identity/config.pbtxt +43 -0
- package/registry/families/triton-server/files/requirements.txt +2 -0
- package/registry/families/triton-server/files/validate-triton.mjs +53 -0
- package/registry/families/triton-server/manifest.json +190 -0
- package/registry/families/unity-web-proxy/files/Build/.gitkeep +17 -0
- package/registry/families/unity-web-proxy/files/README.md +68 -0
- package/registry/families/unity-web-proxy/files/package.json +24 -0
- package/registry/families/unity-web-proxy/files/scripts/build-webgl.sh +62 -0
- package/registry/families/unity-web-proxy/files/tsconfig.json +13 -0
- package/registry/families/unity-web-proxy/files/validate-unity.mjs +60 -0
- package/registry/families/unity-web-proxy/files/vite.config.ts +32 -0
- package/registry/families/unity-web-proxy/manifest.json +175 -0
- package/registry/families/vision-first-agent/files/api/README.md +92 -0
- package/registry/families/vision-first-agent/files/index.html +67 -0
- package/registry/families/vision-first-agent/files/package.json +24 -0
- package/registry/families/vision-first-agent/files/tsconfig.json +13 -0
- package/registry/families/vision-first-agent/files/validate-vision.mjs +48 -0
- package/registry/families/vision-first-agent/files/vite.config.ts +13 -0
- package/registry/families/vision-first-agent/manifest.json +142 -0
- package/registry/families/vllm-server/files/README-serving.md +60 -0
- package/registry/families/vllm-server/files/config.yaml +26 -0
- package/registry/families/vllm-server/files/requirements.txt +6 -0
- package/registry/families/vllm-server/files/validate-vllm.mjs +30 -0
- package/registry/families/vllm-server/manifest.json +165 -0
- package/registry/families/voice-first-agent/files/api/README.md +83 -0
- package/registry/families/voice-first-agent/files/index.html +59 -0
- package/registry/families/voice-first-agent/files/package.json +24 -0
- package/registry/families/voice-first-agent/files/tsconfig.json +13 -0
- package/registry/families/voice-first-agent/files/validate-voice.mjs +46 -0
- package/registry/families/voice-first-agent/files/vite.config.ts +16 -0
- package/registry/families/voice-first-agent/manifest.json +140 -0
- package/registry/families/wasm-rust/files/Cargo.toml +20 -0
- package/registry/families/wasm-rust/files/build-wasm.mjs +22 -0
- package/registry/families/wasm-rust/files/package.json +27 -0
- package/registry/families/wasm-rust/files/tsconfig.json +14 -0
- package/registry/families/wasm-rust/files/validate-wasm.mjs +30 -0
- package/registry/families/wasm-rust/files/vite.config.ts +11 -0
- package/registry/families/wasm-rust/manifest.json +156 -0
- package/registry/families/webgpu-inference/files/index.html +25 -0
- package/registry/families/webgpu-inference/files/package.json +24 -0
- package/registry/families/webgpu-inference/files/tsconfig.json +14 -0
- package/registry/families/webgpu-inference/files/validate-webgpu-inference.mjs +52 -0
- package/registry/families/webgpu-inference/files/vite.config.ts +13 -0
- package/registry/families/webgpu-inference/manifest.json +173 -0
- package/registry/families/webgpu-render/files/index.html +19 -0
- package/registry/families/webgpu-render/files/package.json +24 -0
- package/registry/families/webgpu-render/files/tsconfig.json +14 -0
- package/registry/families/webgpu-render/files/validate-webgpu-render.mjs +58 -0
- package/registry/families/webgpu-render/files/vite.config.ts +11 -0
- package/registry/families/webgpu-render/manifest.json +171 -0
- package/registry/families/zk-prover-service/manifest.json +2 -6
- package/registry/families/zola-static/files/config.toml +13 -0
- package/registry/families/zola-static/files/validate-zola.mjs +23 -0
- package/registry/families/zola-static/manifest.json +96 -0
- package/registry/layers/auth/better-auth/manifest.json +40 -18
- package/registry/layers/auth/clerk/manifest.json +40 -18
- package/registry/layers/auth/none/manifest.json +42 -18
- package/registry/layers/auth/supabase-auth/manifest.json +29 -18
- package/registry/layers/capability/agent-eval/files/.github/workflows/eval.yml +60 -0
- package/registry/layers/capability/agent-eval/files/scripts/eval-baseline.mjs +87 -0
- package/registry/layers/capability/agent-eval/files/tests/eval/README.md +76 -0
- package/registry/layers/capability/agent-eval/files/tests/eval/judge.mjs +35 -0
- package/registry/layers/capability/agent-eval/files/tests/eval/run-eval.mjs +204 -0
- package/registry/layers/capability/agent-eval/files/tests/eval/scenarios.json +47 -0
- package/registry/layers/capability/agent-eval/manifest.json +73 -0
- package/registry/layers/capability/agent-multi-agent/manifest.json +9 -9
- package/registry/layers/capability/ai-chat-ui/manifest.json +112 -1
- package/registry/layers/capability/banking-baas/files/banking-config.json +25 -0
- package/registry/layers/capability/banking-baas/files/banking.ts +125 -0
- package/registry/layers/capability/banking-baas/manifest.json +59 -0
- package/registry/layers/capability/chart-widget/manifest.json +69 -3
- package/registry/layers/capability/code-editor/files/code-editor.tsx +82 -0
- package/registry/layers/capability/code-editor/manifest.json +90 -0
- package/registry/layers/capability/date-utils/manifest.json +64 -0
- package/registry/layers/capability/evm-nft-mint-page/files/.gitkeep +0 -0
- package/registry/layers/capability/evm-nft-mint-page/files/evm-nft-mint.md +21 -0
- package/registry/layers/capability/evm-nft-mint-page/files/src/components/MintPage.tsx +38 -0
- package/registry/layers/capability/evm-nft-mint-page/files/src/mint-page-config.json +1 -0
- package/registry/layers/capability/evm-nft-mint-page/manifest.json +75 -0
- package/registry/layers/capability/evm-wallet-dashboard/manifest.json +6 -1
- package/registry/layers/capability/layout-admin/manifest.json +84 -14
- package/registry/layers/capability/layout-auth/manifest.json +12 -0
- package/registry/layers/capability/layout-chat/manifest.json +100 -14
- package/registry/layers/capability/layout-dashboard/manifest.json +0 -1
- package/registry/layers/capability/logging/manifest.json +10 -14
- package/registry/layers/capability/multi-tenancy/manifest.json +60 -0
- package/registry/layers/capability/passkey-onboarding/files/.gitkeep +0 -0
- package/registry/layers/capability/passkey-onboarding/files/passkey-onboarding.md +37 -0
- package/registry/layers/capability/passkey-onboarding/files/src/components/PasskeyRegister.tsx +25 -0
- package/registry/layers/capability/passkey-onboarding/files/src/components/PasskeySignIn.tsx +84 -0
- package/registry/layers/capability/passkey-onboarding/files/src/passkey-onboarding-config.json +1 -0
- package/registry/layers/capability/passkey-onboarding/manifest.json +78 -0
- package/registry/layers/capability/routing/files/router.tsx +63 -0
- package/registry/layers/capability/routing/files/routing-notes.md +33 -0
- package/registry/layers/capability/routing/manifest.json +66 -0
- package/registry/layers/capability/saas-billing/manifest.json +5 -0
- package/registry/layers/capability/shadcn/files/breadcrumb.tsx +1 -1
- package/registry/layers/capability/shadcn/files/collapsible.tsx +50 -0
- package/registry/layers/capability/shadcn/files/popover.tsx +54 -0
- package/registry/layers/capability/shadcn/manifest.json +22 -1
- package/registry/layers/capability/stripe-checkout-onetime/files/checkout.ts +60 -0
- package/registry/layers/capability/stripe-checkout-onetime/manifest.json +36 -0
- package/registry/layers/capability/stripe-connect/files/connect-api.ts +57 -0
- package/registry/layers/capability/stripe-connect/files/connect-config.json +8 -0
- package/registry/layers/capability/stripe-connect/manifest.json +40 -0
- package/registry/layers/capability/stripe-metered/files/metered.ts +43 -0
- package/registry/layers/capability/stripe-metered/manifest.json +35 -0
- package/registry/layers/capability/tailwind/manifest.json +13 -1
- package/registry/layers/capability/tangle-gpu-provider/files/gpu-config.json +14 -0
- package/registry/layers/capability/tangle-gpu-provider/manifest.json +34 -0
- package/registry/layers/capability/tangle-mpp/files/mpp-config.json +18 -0
- package/registry/layers/capability/tangle-mpp/manifest.json +30 -0
- package/registry/layers/capability/tangle-remote-provider/files/remote-config.json +28 -0
- package/registry/layers/capability/tangle-remote-provider/manifest.json +29 -0
- package/registry/layers/capability/tangle-tee/files/tee-config.json +20 -0
- package/registry/layers/capability/tangle-tee/manifest.json +31 -0
- package/registry/layers/capability/tangle-x402/files/x402-config.json +11 -0
- package/registry/layers/capability/tangle-x402/manifest.json +24 -0
- package/registry/layers/capability/webhook-processor/manifest.json +10 -14
- package/registry/layers/capability/webrtc/manifest.json +79 -10
- package/registry/layers/capability/zk-browser/files/mixer-deposit-panel.tsx +64 -0
- package/registry/layers/capability/zk-browser/files/mixer-merkle-panel.tsx +41 -0
- package/registry/layers/capability/zk-browser/files/mixer-note.ts +90 -0
- package/registry/layers/capability/zk-browser/files/mixer-verify-panel.tsx +66 -0
- package/registry/layers/capability/zk-browser/files/mixer-withdraw-panel.tsx +105 -0
- package/registry/layers/capability/zk-browser/files/zk-circuits.md +73 -0
- package/registry/layers/capability/zk-browser/files/zkproof.ts +94 -0
- package/registry/layers/capability/zk-browser/manifest.json +112 -0
- package/registry/layers/capability/zk-gnark/files/circuit.go +28 -0
- package/registry/layers/capability/zk-gnark/files/gnark-notes.md +80 -0
- package/registry/layers/capability/zk-gnark/files/prover.go +70 -0
- package/registry/layers/capability/zk-gnark/manifest.json +63 -0
- package/registry/layers/capability/zk-noir/files/circuits/Nargo.toml +7 -0
- package/registry/layers/capability/zk-noir/files/circuits/main.nr +22 -0
- package/registry/layers/capability/zk-noir/files/noir-notes.md +72 -0
- package/registry/layers/capability/zk-noir/files/prover.ts +53 -0
- package/registry/layers/capability/zk-noir/manifest.json +72 -0
- package/registry/layers/database/convex/manifest.json +12 -9
- package/registry/layers/database/mongodb/manifest.json +12 -9
- package/registry/layers/database/postgres/manifest.json +18 -9
- package/registry/layers/database/sqlite/manifest.json +18 -9
- package/registry/layers/framework/agent-swarm-ts/files/researcher.ts +30 -0
- package/registry/layers/framework/agent-swarm-ts/files/server.ts +35 -0
- package/registry/layers/framework/agent-swarm-ts/files/state.ts +33 -0
- package/registry/layers/framework/agent-swarm-ts/files/supervisor.ts +31 -0
- package/registry/layers/framework/agent-swarm-ts/files/writer.ts +27 -0
- package/registry/layers/framework/agent-swarm-ts/manifest.json +27 -0
- package/registry/layers/framework/aptos-move/files/AGENTS.md +58 -0
- package/registry/layers/framework/aptos-move/files/Move.toml +10 -0
- package/registry/layers/framework/aptos-move/files/module.move +46 -0
- package/registry/layers/framework/aptos-move/files/package.json +9 -0
- package/registry/layers/framework/aptos-move/files/scripts/deploy.sh +21 -0
- package/registry/layers/framework/aptos-move/files/test.move +30 -0
- package/registry/layers/framework/aptos-move/manifest.json +88 -0
- package/registry/layers/framework/arkworks-prover/manifest.json +6 -0
- package/registry/layers/framework/astro-static/files/astro.config.mjs +9 -0
- package/registry/layers/framework/astro-static/files/src/env.d.ts +1 -0
- package/registry/layers/framework/astro-static/files/src/layouts/Base.astro +33 -0
- package/registry/layers/framework/astro-static/files/src/pages/index.astro +18 -0
- package/registry/layers/framework/astro-static/manifest.json +75 -0
- package/registry/layers/framework/bevy-web/files/src/main.rs +79 -0
- package/registry/layers/framework/bevy-web/manifest.json +48 -0
- package/registry/layers/framework/bun-http/files/handlers.ts +25 -0
- package/registry/layers/framework/bun-http/files/server.ts +15 -0
- package/registry/layers/framework/bun-http/manifest.json +15 -0
- package/registry/layers/framework/celestia-da/files/AGENTS.md +70 -0
- package/registry/layers/framework/celestia-da/files/cmd/celestia-node/main.go +146 -0
- package/registry/layers/framework/celestia-da/files/config.toml +32 -0
- package/registry/layers/framework/celestia-da/files/docker-compose.yml +30 -0
- package/registry/layers/framework/celestia-da/files/go.mod +3 -0
- package/registry/layers/framework/celestia-da/files/go.sum +0 -0
- package/registry/layers/framework/celestia-da/files/submit-blob.sh +54 -0
- package/registry/layers/framework/celestia-da/manifest.json +65 -0
- package/registry/layers/framework/crm-backend/files/contacts.ts +93 -0
- package/registry/layers/framework/crm-backend/files/db.ts +8 -0
- package/registry/layers/framework/crm-backend/files/drizzle.config.ts +9 -0
- package/registry/layers/framework/crm-backend/files/package.json +22 -0
- package/registry/layers/framework/crm-backend/files/pipeline.ts +158 -0
- package/registry/layers/framework/crm-backend/files/reporting.ts +69 -0
- package/registry/layers/framework/crm-backend/files/schema.ts +146 -0
- package/registry/layers/framework/crm-backend/files/server.ts +42 -0
- package/registry/layers/framework/crm-backend/manifest.json +89 -0
- package/registry/layers/framework/deno-edge/files/handlers.ts +24 -0
- package/registry/layers/framework/deno-edge/files/server.ts +12 -0
- package/registry/layers/framework/deno-edge/manifest.json +15 -0
- package/registry/layers/framework/ecommerce-headless/files/.env.example +12 -0
- package/registry/layers/framework/ecommerce-headless/files/AGENTS.md +57 -0
- package/registry/layers/framework/ecommerce-headless/files/cart.ts +119 -0
- package/registry/layers/framework/ecommerce-headless/files/checkout.ts +113 -0
- package/registry/layers/framework/ecommerce-headless/files/db.ts +8 -0
- package/registry/layers/framework/ecommerce-headless/files/drizzle.config.ts +9 -0
- package/registry/layers/framework/ecommerce-headless/files/package.json +23 -0
- package/registry/layers/framework/ecommerce-headless/files/products.ts +33 -0
- package/registry/layers/framework/ecommerce-headless/files/schema.ts +160 -0
- package/registry/layers/framework/ecommerce-headless/files/server.ts +43 -0
- package/registry/layers/framework/ecommerce-headless/files/stripe-webhook.ts +148 -0
- package/registry/layers/framework/ecommerce-headless/files/tsconfig.json +14 -0
- package/registry/layers/framework/ecommerce-headless/manifest.json +81 -0
- package/registry/layers/framework/electron-native-os/files/App.tsx +87 -0
- package/registry/layers/framework/electron-native-os/files/deeplinks.ts +59 -0
- package/registry/layers/framework/electron-native-os/files/electron-builder.json +39 -0
- package/registry/layers/framework/electron-native-os/files/electron.vite.config.ts +14 -0
- package/registry/layers/framework/electron-native-os/files/index.ts +119 -0
- package/registry/layers/framework/electron-native-os/files/menu.ts +99 -0
- package/registry/layers/framework/electron-native-os/files/package.json +30 -0
- package/registry/layers/framework/electron-native-os/files/preload.ts +33 -0
- package/registry/layers/framework/electron-native-os/files/protocol.ts +56 -0
- package/registry/layers/framework/electron-native-os/files/renderer-index.html +14 -0
- package/registry/layers/framework/electron-native-os/files/renderer-main.tsx +12 -0
- package/registry/layers/framework/electron-native-os/files/styles.css +72 -0
- package/registry/layers/framework/electron-native-os/files/tsconfig.json +14 -0
- package/registry/layers/framework/electron-native-os/files/updater.ts +29 -0
- package/registry/layers/framework/electron-native-os/manifest.json +121 -0
- package/registry/layers/framework/eleventy-static/files/base.njk +23 -0
- package/registry/layers/framework/eleventy-static/files/index.md +11 -0
- package/registry/layers/framework/eleventy-static/files/src/assets/.gitkeep +0 -0
- package/registry/layers/framework/eleventy-static/manifest.json +75 -0
- package/registry/layers/framework/esp32-rust/files/.cargo/config.toml +3 -0
- package/registry/layers/framework/esp32-rust/files/Cargo.toml +11 -0
- package/registry/layers/framework/esp32-rust/files/README.md +51 -0
- package/registry/layers/framework/esp32-rust/files/build.rs +1 -0
- package/registry/layers/framework/esp32-rust/files/rust-toolchain.toml +2 -0
- package/registry/layers/framework/esp32-rust/files/src/main.rs +16 -0
- package/registry/layers/framework/esp32-rust/manifest.json +48 -0
- package/registry/layers/framework/expo-rn-rich/files/App.tsx +28 -0
- package/registry/layers/framework/expo-rn-rich/files/CanvasScreen.tsx +84 -0
- package/registry/layers/framework/expo-rn-rich/files/HomeScreen.tsx +43 -0
- package/registry/layers/framework/expo-rn-rich/files/RootNavigator.tsx +37 -0
- package/registry/layers/framework/expo-rn-rich/files/app.json +27 -0
- package/registry/layers/framework/expo-rn-rich/files/babel.config.js +10 -0
- package/registry/layers/framework/expo-rn-rich/files/metro.config.cjs +9 -0
- package/registry/layers/framework/expo-rn-rich/files/metro.config.js +14 -0
- package/registry/layers/framework/expo-rn-rich/files/tsconfig.json +12 -0
- package/registry/layers/framework/expo-rn-rich/manifest.json +101 -0
- package/registry/layers/framework/fintech-ledger-backend/files/db.ts +10 -0
- package/registry/layers/framework/fintech-ledger-backend/files/drizzle.config.ts +9 -0
- package/registry/layers/framework/fintech-ledger-backend/files/ledger/query.ts +66 -0
- package/registry/layers/framework/fintech-ledger-backend/files/money.ts +32 -0
- package/registry/layers/framework/fintech-ledger-backend/files/post.ts +141 -0
- package/registry/layers/framework/fintech-ledger-backend/files/schema.ts +87 -0
- package/registry/layers/framework/fintech-ledger-backend/files/server.ts +26 -0
- package/registry/layers/framework/fintech-ledger-backend/files/transactions-api.ts +59 -0
- package/registry/layers/framework/fintech-ledger-backend/files/tsconfig.json +17 -0
- package/registry/layers/framework/fintech-ledger-backend/manifest.json +82 -0
- package/registry/layers/framework/flutter-app/files/main.dart +189 -0
- package/registry/layers/framework/flutter-app/manifest.json +15 -0
- package/registry/layers/framework/forge-foundation/files/foundry.toml +17 -14
- package/registry/layers/framework/fraud-ops-console/manifest.json +8 -0
- package/registry/layers/framework/gdpr-compliance-pack/files/AGENTS.md +40 -0
- package/registry/layers/framework/gdpr-compliance-pack/files/package.json +19 -0
- package/registry/layers/framework/gdpr-compliance-pack/files/tsconfig.json +14 -0
- package/registry/layers/framework/gdpr-compliance-pack/manifest.json +60 -0
- package/registry/layers/framework/godot-web/files/export/web/.gitkeep +0 -0
- package/registry/layers/framework/godot-web/files/export_presets.cfg +5 -0
- package/registry/layers/framework/godot-web/files/exports/web/.gitkeep +0 -0
- package/registry/layers/framework/godot-web/files/package.json +15 -0
- package/registry/layers/framework/godot-web/files/project.godot +5 -0
- package/registry/layers/framework/godot-web/files/scenes/main.tscn +19 -0
- package/registry/layers/framework/godot-web/files/scripts/main.gd +29 -0
- package/registry/layers/framework/godot-web/files/src/main.ts +2 -0
- package/registry/layers/framework/godot-web/files/tsconfig.json +11 -0
- package/registry/layers/framework/godot-web/manifest.json +62 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/db.ts +13 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/drizzle.config.ts +11 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/encounters.ts +89 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/encryption.ts +69 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/hipaa.md +65 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/package.json +22 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/patients.ts +86 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/phi-access.ts +85 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/schema.ts +82 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/server.ts +43 -0
- package/registry/layers/framework/healthcare-hipaa-backend/files/tsconfig.json +15 -0
- package/registry/layers/framework/healthcare-hipaa-backend/manifest.json +138 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/AGENTS.md +39 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/docs/BAA-template.md +60 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/docs/HIPAA-controls.md +58 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/package.json +14 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/src/audit-log.ts +54 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/src/encryption.ts +74 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/src/phi-access.ts +83 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/tsconfig.json +14 -0
- package/registry/layers/framework/hipaa-compliance-pack/files/validate-hipaa-pack.mjs +33 -0
- package/registry/layers/framework/hipaa-compliance-pack/manifest.json +56 -0
- package/registry/layers/framework/hls-origin/files/server.ts +83 -0
- package/registry/layers/framework/hls-origin/manifest.json +72 -0
- package/registry/layers/framework/hugo-static/files/_index.md +18 -0
- package/registry/layers/framework/hugo-static/files/baseof.html +22 -0
- package/registry/layers/framework/hugo-static/files/index.html +13 -0
- package/registry/layers/framework/hugo-static/files/package.json +13 -0
- package/registry/layers/framework/hugo-static/manifest.json +70 -0
- package/registry/layers/framework/jupyter-book/files/chapter-1.md +30 -0
- package/registry/layers/framework/jupyter-book/manifest.json +63 -0
- package/registry/layers/framework/k12-edtech/files/README.md +79 -0
- package/registry/layers/framework/k12-edtech/files/classroom.ts +119 -0
- package/registry/layers/framework/k12-edtech/files/db.ts +8 -0
- package/registry/layers/framework/k12-edtech/files/drizzle.config.ts +9 -0
- package/registry/layers/framework/k12-edtech/files/gradebook.ts +161 -0
- package/registry/layers/framework/k12-edtech/files/schema.ts +171 -0
- package/registry/layers/framework/k12-edtech/files/server.ts +58 -0
- package/registry/layers/framework/k12-edtech/files/tsconfig.json +15 -0
- package/registry/layers/framework/k12-edtech/manifest.json +105 -0
- package/registry/layers/framework/kotlin-multiplatform/files/AGENTS.md +67 -0
- package/registry/layers/framework/kotlin-multiplatform/files/App.kt +46 -0
- package/registry/layers/framework/kotlin-multiplatform/files/Platform.android.kt +5 -0
- package/registry/layers/framework/kotlin-multiplatform/files/Platform.ios.kt +6 -0
- package/registry/layers/framework/kotlin-multiplatform/files/build.gradle.kts +3 -0
- package/registry/layers/framework/kotlin-multiplatform/files/pom.xml +38 -0
- package/registry/layers/framework/kotlin-multiplatform/files/settings.gradle.kts +7 -0
- package/registry/layers/framework/kotlin-multiplatform/files/src/commonMain/kotlin/App.kt +3 -0
- package/registry/layers/framework/kotlin-multiplatform/manifest.json +74 -0
- package/registry/layers/framework/kyc-onboarding/manifest.json +8 -0
- package/registry/layers/framework/legal-case-mgmt/files/.env.example +5 -0
- package/registry/layers/framework/legal-case-mgmt/files/AGENTS.md +62 -0
- package/registry/layers/framework/legal-case-mgmt/files/billing.ts +130 -0
- package/registry/layers/framework/legal-case-mgmt/files/db.ts +8 -0
- package/registry/layers/framework/legal-case-mgmt/files/drizzle.config.ts +9 -0
- package/registry/layers/framework/legal-case-mgmt/files/matter.ts +111 -0
- package/registry/layers/framework/legal-case-mgmt/files/package.json +23 -0
- package/registry/layers/framework/legal-case-mgmt/files/schema.ts +148 -0
- package/registry/layers/framework/legal-case-mgmt/files/server.ts +50 -0
- package/registry/layers/framework/legal-case-mgmt/files/tsconfig.json +16 -0
- package/registry/layers/framework/legal-case-mgmt/files/validate-legal.mjs +26 -0
- package/registry/layers/framework/legal-case-mgmt/manifest.json +79 -0
- package/registry/layers/framework/livekit-sfu/files/AGENTS.md +76 -0
- package/registry/layers/framework/livekit-sfu/files/server.ts +84 -0
- package/registry/layers/framework/livekit-sfu/manifest.json +67 -0
- package/registry/layers/framework/lora-training/files/infer.py +102 -0
- package/registry/layers/framework/lora-training/files/pyrightconfig.json +8 -0
- package/registry/layers/framework/lora-training/files/train.py +174 -0
- package/registry/layers/framework/lora-training/manifest.json +78 -0
- package/registry/layers/framework/move-package/files/Move.toml +20 -1
- package/registry/layers/framework/move-package/files/module.move +1 -1
- package/registry/layers/framework/move-package/files/test.move +4 -6
- package/registry/layers/framework/multimodal-agent/files/App.tsx +219 -0
- package/registry/layers/framework/multimodal-agent/files/main.tsx +12 -0
- package/registry/layers/framework/multimodal-agent/manifest.json +60 -0
- package/registry/layers/framework/observable-notebook/files/data/rows.json.ts +11 -0
- package/registry/layers/framework/observable-notebook/files/overview.md +28 -0
- package/registry/layers/framework/observable-notebook/files/src/observablehq.d.ts +12 -0
- package/registry/layers/framework/observable-notebook/files/tsconfig.json +13 -0
- package/registry/layers/framework/observable-notebook/manifest.json +55 -0
- package/registry/layers/framework/ollama-server/files/.env.example +6 -0
- package/registry/layers/framework/ollama-server/files/src/client.ts +52 -0
- package/registry/layers/framework/ollama-server/manifest.json +52 -0
- package/registry/layers/framework/pci-dss-compliance-pack/files/AGENTS.md +52 -0
- package/registry/layers/framework/pci-dss-compliance-pack/files/README.md +51 -0
- package/registry/layers/framework/pci-dss-compliance-pack/files/src/index.ts +3 -0
- package/registry/layers/framework/pci-dss-compliance-pack/manifest.json +50 -0
- package/registry/layers/framework/phaser-game/files/src/main.ts +19 -0
- package/registry/layers/framework/phaser-game/files/src/scenes/MainScene.ts +38 -0
- package/registry/layers/framework/phaser-game/manifest.json +55 -0
- package/registry/layers/framework/pixijs-game/files/src/main.ts +49 -0
- package/registry/layers/framework/pixijs-game/files/src/vite-env.d.ts +1 -0
- package/registry/layers/framework/pixijs-game/manifest.json +51 -0
- package/registry/layers/framework/polymarket-portfolio-hedging/manifest.json +8 -0
- package/registry/layers/framework/rag-pipeline-py/files/AGENTS.md +55 -0
- package/registry/layers/framework/rag-pipeline-py/files/__init__.py +1 -0
- package/registry/layers/framework/rag-pipeline-py/files/pipeline.py +220 -0
- package/registry/layers/framework/rag-pipeline-py/manifest.json +56 -0
- package/registry/layers/framework/react-vite-ts/files/App.tsx +9 -72
- package/registry/layers/framework/realtime-audio-ts/files/audio.ts +75 -0
- package/registry/layers/framework/realtime-audio-ts/files/index.html +34 -0
- package/registry/layers/framework/realtime-audio-ts/files/main.ts +93 -0
- package/registry/layers/framework/realtime-audio-ts/files/peer.ts +68 -0
- package/registry/layers/framework/realtime-audio-ts/files/styles.css +59 -0
- package/registry/layers/framework/realtime-audio-ts/files/tsconfig.json +12 -0
- package/registry/layers/framework/realtime-audio-ts/files/visualizer.ts +59 -0
- package/registry/layers/framework/realtime-audio-ts/files/vite.config.ts +16 -0
- package/registry/layers/framework/realtime-audio-ts/manifest.json +54 -0
- package/registry/layers/framework/risczero-zkvm/manifest.json +6 -0
- package/registry/layers/framework/ros2-node-py/files/AGENTS.md +58 -0
- package/registry/layers/framework/ros2-node-py/files/__init__.py +0 -0
- package/registry/layers/framework/ros2-node-py/files/bringup.launch.py +23 -0
- package/registry/layers/framework/ros2-node-py/files/minimal_publisher.py +43 -0
- package/registry/layers/framework/ros2-node-py/files/minimal_subscriber.py +36 -0
- package/registry/layers/framework/ros2-node-py/files/my_node.py +24 -0
- package/registry/layers/framework/ros2-node-py/files/setup.py +28 -0
- package/registry/layers/framework/ros2-node-py/manifest.json +90 -0
- package/registry/layers/framework/sglang-server/files/Makefile +22 -0
- package/registry/layers/framework/sglang-server/files/README.md +56 -0
- package/registry/layers/framework/sglang-server/files/__init__.py +1 -0
- package/registry/layers/framework/sglang-server/files/pyproject.toml +30 -0
- package/registry/layers/framework/sglang-server/manifest.json +62 -0
- package/registry/layers/framework/skypilot-serving/files/AGENTS.md +85 -0
- package/registry/layers/framework/skypilot-serving/manifest.json +68 -0
- package/registry/layers/framework/soc2-compliance-pack/files/AGENTS.md +46 -0
- package/registry/layers/framework/soc2-compliance-pack/files/README.md +61 -0
- package/registry/layers/framework/soc2-compliance-pack/files/src/index.ts +3 -0
- package/registry/layers/framework/soc2-compliance-pack/manifest.json +52 -0
- package/registry/layers/framework/sp1-zkvm/manifest.json +6 -0
- package/registry/layers/framework/stm32-rust/files/.cargo/config.toml +9 -0
- package/registry/layers/framework/stm32-rust/files/Embed.toml +27 -0
- package/registry/layers/framework/stm32-rust/files/rust-toolchain.toml +3 -0
- package/registry/layers/framework/stm32-rust/files/src/main.rs +54 -0
- package/registry/layers/framework/stm32-rust/manifest.json +66 -0
- package/registry/layers/framework/streamlit-advanced/files/.env.example +3 -0
- package/registry/layers/framework/streamlit-advanced/files/README.md +58 -0
- package/registry/layers/framework/streamlit-advanced/files/analysis.py +40 -0
- package/registry/layers/framework/streamlit-advanced/files/app.py +76 -0
- package/registry/layers/framework/streamlit-advanced/manifest.json +60 -0
- package/registry/layers/framework/tangle-blueprint/files/foundry.toml +8 -0
- package/registry/layers/framework/tangle-blueprint/files/lib.rs +29 -15
- package/registry/layers/framework/tauri-menubar/README.md +54 -0
- package/registry/layers/framework/tauri-menubar/files/App.tsx +65 -0
- package/registry/layers/framework/tauri-menubar/files/Cargo.toml +18 -0
- package/registry/layers/framework/tauri-menubar/files/build.rs +3 -0
- package/registry/layers/framework/tauri-menubar/files/index.html +13 -0
- package/registry/layers/framework/tauri-menubar/files/lib.rs +75 -0
- package/registry/layers/framework/tauri-menubar/files/main.rs +7 -0
- package/registry/layers/framework/tauri-menubar/files/main.tsx +14 -0
- package/registry/layers/framework/tauri-menubar/files/styles.css +112 -0
- package/registry/layers/framework/tauri-menubar/files/tauri.conf.json +45 -0
- package/registry/layers/framework/tauri-menubar/files/tsconfig.json +13 -0
- package/registry/layers/framework/tauri-menubar/files/vite.config.ts +18 -0
- package/registry/layers/framework/tauri-menubar/manifest.json +92 -0
- package/registry/layers/framework/tauri-tray/files/Cargo.toml +19 -0
- package/registry/layers/framework/tauri-tray/files/build.rs +3 -0
- package/registry/layers/framework/tauri-tray/files/lib.rs +89 -0
- package/registry/layers/framework/tauri-tray/files/main.rs +5 -0
- package/registry/layers/framework/tauri-tray/files/src/main.ts +1 -0
- package/registry/layers/framework/tauri-tray/files/src/tray.ts +5 -0
- package/registry/layers/framework/tauri-tray/files/tauri.conf.json +28 -0
- package/registry/layers/framework/tauri-tray/files/tsconfig.json +11 -0
- package/registry/layers/framework/tauri-tray/manifest.json +80 -0
- package/registry/layers/framework/tgi-server/files/pyproject.toml +20 -0
- package/registry/layers/framework/tgi-server/files/src/__init__.py +1 -0
- package/registry/layers/framework/tgi-server/files/src/main.py +50 -0
- package/registry/layers/framework/tgi-server/manifest.json +41 -0
- package/registry/layers/framework/threejs-game/files/src/main.ts +62 -0
- package/registry/layers/framework/threejs-game/files/src/vite-env.d.ts +1 -0
- package/registry/layers/framework/threejs-game/manifest.json +50 -0
- package/registry/layers/framework/triton-server/files/AGENTS.md +71 -0
- package/registry/layers/framework/triton-server/files/Makefile +25 -0
- package/registry/layers/framework/triton-server/files/__init__.py +1 -0
- package/registry/layers/framework/triton-server/files/pyproject.toml +33 -0
- package/registry/layers/framework/triton-server/manifest.json +70 -0
- package/registry/layers/framework/unity-web-proxy/files/index.html +104 -0
- package/registry/layers/framework/unity-web-proxy/manifest.json +63 -0
- package/registry/layers/framework/vision-first-agent/files/main.ts +143 -0
- package/registry/layers/framework/vision-first-agent/files/vite-env.d.ts +1 -0
- package/registry/layers/framework/vision-first-agent/manifest.json +47 -0
- package/registry/layers/framework/vllm-server/files/__init__.py +0 -0
- package/registry/layers/framework/vllm-server/files/server.py +134 -0
- package/registry/layers/framework/vllm-server/manifest.json +15 -0
- package/registry/layers/framework/voice-first-agent/files/main.ts +160 -0
- package/registry/layers/framework/voice-first-agent/files/vite-env.d.ts +1 -0
- package/registry/layers/framework/voice-first-agent/manifest.json +48 -0
- package/registry/layers/framework/wasm-rust/files/index.html +12 -0
- package/registry/layers/framework/wasm-rust/files/lib.rs +43 -0
- package/registry/layers/framework/wasm-rust/files/main.ts +24 -0
- package/registry/layers/framework/wasm-rust/files/pkg/starter_foundry_wasm.d.ts +7 -0
- package/registry/layers/framework/wasm-rust/manifest.json +23 -0
- package/registry/layers/framework/webgpu-inference/files/src/main.ts +167 -0
- package/registry/layers/framework/webgpu-inference/files/src/shaders/matmul.wgsl +30 -0
- package/registry/layers/framework/webgpu-inference/manifest.json +55 -0
- package/registry/layers/framework/webgpu-render/files/src/main.ts +113 -0
- package/registry/layers/framework/webgpu-render/files/src/shaders/main.wgsl +37 -0
- package/registry/layers/framework/webgpu-render/files/src/vite-env.d.ts +1 -0
- package/registry/layers/framework/webgpu-render/manifest.json +56 -0
- package/registry/layers/framework/zola-static/files/_index.md +10 -0
- package/registry/layers/framework/zola-static/files/base.html +12 -0
- package/registry/layers/framework/zola-static/files/gitignore +3 -0
- package/registry/layers/framework/zola-static/files/index.html +26 -0
- package/registry/layers/framework/zola-static/files/main.scss +21 -0
- package/registry/layers/framework/zola-static/files/package.json +12 -0
- package/registry/layers/framework/zola-static/files/static.gitkeep +0 -0
- package/registry/layers/framework/zola-static/manifest.json +72 -0
- package/registry/layers/payments/coinbase-commerce/manifest.json +26 -17
- package/registry/layers/payments/none/manifest.json +28 -17
- package/registry/layers/payments/stripe/manifest.json +27 -17
- package/registry/layers/queue/bullmq/manifest.json +15 -13
- package/registry/layers/queue/none/manifest.json +15 -13
- package/registry/layers/queue/trigger-dev/manifest.json +15 -13
- package/registry/layers/sdk/coinbase-cdp/manifest.json +24 -17
- package/registry/layers/sdk/evm-wallet/manifest.json +24 -17
- package/registry/layers/sdk/none/manifest.json +26 -17
- package/registry/layers/sdk/solana-web3/manifest.json +24 -17
- package/registry/package-to-capability.json +16 -10
- package/registry/partners/avalanche/files/partner-config.json +14 -0
- package/registry/partners/avalanche/files/starter-brand.json +5 -0
- package/registry/partners/avalanche/manifest.json +46 -0
- package/registry/partners/chainlink/files/chainlink-config.json +29 -0
- package/registry/partners/chainlink/manifest.json +43 -0
- package/registry/partners/farcaster/files/partner-config.json +10 -0
- package/registry/partners/farcaster/files/starter-brand.json +5 -0
- package/registry/partners/farcaster/manifest.json +44 -0
- package/registry/partners/hyperliquid/files/partner-config.json +12 -0
- package/registry/partners/hyperliquid/files/starter-brand.json +5 -0
- package/registry/partners/hyperliquid/manifest.json +46 -0
- package/registry/partners/lens/files/partner-config.json +12 -0
- package/registry/partners/lens/files/starter-brand.json +5 -0
- package/registry/partners/lens/manifest.json +44 -0
- package/registry/partners/linea/files/partner-config.json +13 -0
- package/registry/partners/linea/files/starter-brand.json +5 -0
- package/registry/partners/linea/manifest.json +45 -0
- package/registry/partners/monad/files/partner-config.json +10 -0
- package/registry/partners/monad/files/starter-brand.json +5 -0
- package/registry/partners/monad/manifest.json +46 -0
- package/registry/partners/polygon/files/partner-config.json +16 -0
- package/registry/partners/polygon/files/starter-brand.json +5 -0
- package/registry/partners/polygon/manifest.json +46 -0
- package/registry/partners/sei-evm/files/partner-config.json +12 -0
- package/registry/partners/sei-evm/files/starter-brand.json +5 -0
- package/registry/partners/sei-evm/manifest.json +45 -0
- package/registry/partners/sui/files/sui-config.json +18 -0
- package/registry/partners/sui/manifest.json +41 -0
- package/registry/partners/tempo/files/tempo-config.json +26 -0
- package/registry/partners/tempo/manifest.json +46 -0
- package/registry/partners/tether/files/partner-config.json +17 -0
- package/registry/partners/tether/files/starter-brand.json +5 -0
- package/registry/partners/tether/manifest.json +49 -0
- package/registry/partners/usdc-circle/files/partner-config.json +25 -0
- package/registry/partners/usdc-circle/files/starter-brand.json +5 -0
- package/registry/partners/usdc-circle/manifest.json +50 -0
|
@@ -0,0 +1,685 @@
|
|
|
1
|
+
// Scaffold-bridge — adapts starter-foundry's compose surface to
|
|
2
|
+
// agent-eval's BuilderSession + SandboxHarness. Given a spec (family +
|
|
3
|
+
// layers + variables), this module:
|
|
4
|
+
//
|
|
5
|
+
// 1. composes the scaffold to a tempdir
|
|
6
|
+
// 2. returns a HarnessConfig tuned for the family's build toolchain
|
|
7
|
+
// (pnpm / cargo / go / aptos / node — dispatch on taxonomy.language)
|
|
8
|
+
// 3. registers family-aware judges that grade meta_score against the
|
|
9
|
+
// composed output (manifest compliance, idiomatic layout, deps
|
|
10
|
+
// resolved)
|
|
11
|
+
//
|
|
12
|
+
// The glue is deliberately thin. Every primitive (sandbox driver, judge
|
|
13
|
+
// factory, workspace assertions) comes from agent-eval. Nothing new here
|
|
14
|
+
// lives in starter-foundry except the composition adapter + family
|
|
15
|
+
// dispatch table.
|
|
16
|
+
import { readFileSync, mkdtempSync, rmSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { tmpdir } from 'node:os';
|
|
19
|
+
import { spawnSync } from 'node:child_process';
|
|
20
|
+
import { fileExists } from '@tangle-network/agent-eval';
|
|
21
|
+
// ──────────────────────────────────────────────────────────────────
|
|
22
|
+
// Per-family harness dispatch
|
|
23
|
+
// ──────────────────────────────────────────────────────────────────
|
|
24
|
+
/**
|
|
25
|
+
* Per-language harness config table. Single source of truth — the
|
|
26
|
+
* promoters (scripts/promote-family-proposal.mjs,
|
|
27
|
+
* scripts/promote-capability-proposal.mjs) import this table rather
|
|
28
|
+
* than redefining it. Gen 8b shipped when only two of three copies
|
|
29
|
+
* got the strict-gate fix; centralizing removes the drift surface.
|
|
30
|
+
*
|
|
31
|
+
* Keys are `taxonomy.language` values. New languages must be added
|
|
32
|
+
* here — `makeHarnessConfig` THROWS on unknown languages rather than
|
|
33
|
+
* silently returning a no-op (which was the muffled-gate shape where
|
|
34
|
+
* a Zig family silent-passed the build phase).
|
|
35
|
+
*
|
|
36
|
+
* `muffle-ok:` annotations mark places where a non-strict command
|
|
37
|
+
* is intentional and documented.
|
|
38
|
+
*/
|
|
39
|
+
export const HARNESS_CONFIGS = {
|
|
40
|
+
typescript: {
|
|
41
|
+
setupCommand: 'pnpm install --prefer-offline',
|
|
42
|
+
// Strict: tsc --noEmit fails loud on type errors. The previous
|
|
43
|
+
// `pnpm run validate || pnpm run build || true` swallowed exit
|
|
44
|
+
// codes and silent-passed broken React 17 / .ts-JSX scaffolds —
|
|
45
|
+
// the Gen 8 Goodhart bug that triggered the compile-gate work.
|
|
46
|
+
testCommand: 'pnpm exec tsc --noEmit',
|
|
47
|
+
timeoutMs: 180_000,
|
|
48
|
+
},
|
|
49
|
+
javascript: {
|
|
50
|
+
setupCommand: 'pnpm install --prefer-offline',
|
|
51
|
+
// No tsc for JS; fall back to the build script. If a family lacks
|
|
52
|
+
// a build script it must declare a validationCheck instead.
|
|
53
|
+
testCommand: 'pnpm run build',
|
|
54
|
+
timeoutMs: 180_000,
|
|
55
|
+
},
|
|
56
|
+
rust: {
|
|
57
|
+
setupCommand: 'cargo fetch',
|
|
58
|
+
// muffle-ok: `|| cargo check` is a narrower-scope retry for
|
|
59
|
+
// non-workspace crates, not a pass-through. Both branches still
|
|
60
|
+
// fail-loud on type errors.
|
|
61
|
+
testCommand: 'cargo check --workspace || cargo check',
|
|
62
|
+
timeoutMs: 300_000,
|
|
63
|
+
},
|
|
64
|
+
go: {
|
|
65
|
+
setupCommand: 'go mod tidy',
|
|
66
|
+
testCommand: 'go build ./... && go vet ./...',
|
|
67
|
+
timeoutMs: 180_000,
|
|
68
|
+
},
|
|
69
|
+
python: {
|
|
70
|
+
// muffle-ok: setup is best-effort — if requirements.txt is
|
|
71
|
+
// absent, skip install. The testCommand (compileall) still
|
|
72
|
+
// fail-louds on syntax errors regardless of install outcome.
|
|
73
|
+
setupCommand: '[ -f requirements.txt ] && pip install -r requirements.txt || true', // muffle-ok: best-effort install; compileall is the real gate
|
|
74
|
+
testCommand: 'python -m compileall -q .',
|
|
75
|
+
timeoutMs: 120_000,
|
|
76
|
+
},
|
|
77
|
+
solidity: {
|
|
78
|
+
// muffle-ok: forge install is best-effort; if deps are vendored
|
|
79
|
+
// it may not be needed. `forge build` is the real gate.
|
|
80
|
+
setupCommand: 'forge install --no-git || true', // muffle-ok: setup is best-effort; forge build is the real gate
|
|
81
|
+
testCommand: 'forge build',
|
|
82
|
+
timeoutMs: 180_000,
|
|
83
|
+
},
|
|
84
|
+
move: {
|
|
85
|
+
setupCommand: '',
|
|
86
|
+
testCommand: 'aptos move compile --dev',
|
|
87
|
+
timeoutMs: 300_000,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Build the harness config for a family based on its taxonomy.language.
|
|
92
|
+
* The resolved setup/test commands run inside the composed tempdir, so
|
|
93
|
+
* the agent-eval SandboxHarness can subprocess-invoke them.
|
|
94
|
+
*
|
|
95
|
+
* Throws on unknown language — the previous fallback (`testCommand:
|
|
96
|
+
* 'true'`) silent-passed any family whose language wasn't in the
|
|
97
|
+
* dispatch, which is the muffled-gate shape Gen 9 closes. Callers
|
|
98
|
+
* that want to tolerate unknown languages must handle the throw
|
|
99
|
+
* explicitly.
|
|
100
|
+
*/
|
|
101
|
+
export function makeHarnessConfig(components) {
|
|
102
|
+
const language = components.family.taxonomy?.language ?? 'unknown';
|
|
103
|
+
const config = HARNESS_CONFIGS[language];
|
|
104
|
+
if (!config) {
|
|
105
|
+
throw new Error(`makeHarnessConfig: unsupported taxonomy.language '${language}'. ` +
|
|
106
|
+
`Add it to HARNESS_CONFIGS in src/eval/scaffold-bridge.ts with a ` +
|
|
107
|
+
`strict (fail-loud) testCommand before composing a scaffold for it.`);
|
|
108
|
+
}
|
|
109
|
+
return config;
|
|
110
|
+
}
|
|
111
|
+
// ──────────────────────────────────────────────────────────────────
|
|
112
|
+
// Workspace assertions — manifest.files → real files on disk
|
|
113
|
+
// ──────────────────────────────────────────────────────────────────
|
|
114
|
+
/**
|
|
115
|
+
* Generate workspace assertions from a resolved component tree. Every
|
|
116
|
+
* file the manifest declares must exist after compose. This is the
|
|
117
|
+
* structural correctness floor — no LLM needed.
|
|
118
|
+
*
|
|
119
|
+
* Uses agent-eval's `fileExists(path)` helper which returns a
|
|
120
|
+
* WorkspaceAssertion whose `.check(snapshot)` resolves against the
|
|
121
|
+
* snapshot's `files` record at eval time.
|
|
122
|
+
*/
|
|
123
|
+
export function manifestComplianceAssertions(components) {
|
|
124
|
+
const assertions = [];
|
|
125
|
+
const seen = new Set();
|
|
126
|
+
const addFile = (target) => {
|
|
127
|
+
if (seen.has(target))
|
|
128
|
+
return;
|
|
129
|
+
seen.add(target);
|
|
130
|
+
assertions.push(fileExists(target));
|
|
131
|
+
};
|
|
132
|
+
for (const file of components.family.files ?? [])
|
|
133
|
+
addFile(file.target);
|
|
134
|
+
for (const layer of components.layers) {
|
|
135
|
+
for (const file of layer.files ?? [])
|
|
136
|
+
addFile(file.target);
|
|
137
|
+
}
|
|
138
|
+
return assertions;
|
|
139
|
+
}
|
|
140
|
+
// ──────────────────────────────────────────────────────────────────
|
|
141
|
+
// Snapshot helper — reads a composed scaffold into a WorkspaceSnapshot
|
|
142
|
+
// ──────────────────────────────────────────────────────────────────
|
|
143
|
+
/**
|
|
144
|
+
* Walk the composed scaffold directory, return a WorkspaceSnapshot the
|
|
145
|
+
* agent-eval `InMemoryWorkspaceInspector` + `runAssertions` understand.
|
|
146
|
+
*
|
|
147
|
+
* Content handling:
|
|
148
|
+
* - UTF-8-valid text of any size → `files[path] = content` (full).
|
|
149
|
+
* Assertions like `fileContains(path, needle)` work against the
|
|
150
|
+
* complete file regardless of size. No arbitrary truncation.
|
|
151
|
+
* - Binary / non-UTF-8 files → `blobs[path] = { size, hash, mimeType }`.
|
|
152
|
+
* This is exactly what agent-eval's blob channel is for — keeps the
|
|
153
|
+
* snapshot small while preserving "this file exists and is binary"
|
|
154
|
+
* for file-exists-style assertions.
|
|
155
|
+
*
|
|
156
|
+
* Excluded: node_modules, target (cargo), .git, dist — noise that
|
|
157
|
+
* would 10× the snapshot with no value for eval.
|
|
158
|
+
*/
|
|
159
|
+
export function snapshotScaffold(scaffoldDir) {
|
|
160
|
+
const files = {};
|
|
161
|
+
const blobs = {};
|
|
162
|
+
const res = spawnSync('find', [scaffoldDir, '-type', 'f', '-not', '-path', '*/node_modules/*', '-not', '-path', '*/target/*', '-not', '-path', '*/.git/*', '-not', '-path', '*/dist/*'], { encoding: 'utf8' });
|
|
163
|
+
if (res.status === 0) {
|
|
164
|
+
for (const absPath of res.stdout.trim().split('\n').filter(Boolean)) {
|
|
165
|
+
const relPath = absPath.startsWith(scaffoldDir + '/') ? absPath.slice(scaffoldDir.length + 1) : absPath;
|
|
166
|
+
try {
|
|
167
|
+
const buf = readFileSync(absPath);
|
|
168
|
+
if (isProbablyText(buf)) {
|
|
169
|
+
files[relPath] = buf.toString('utf8');
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
blobs[relPath] = {
|
|
173
|
+
size: buf.length,
|
|
174
|
+
// Don't compute hash here — it's O(size) on every eval; caller
|
|
175
|
+
// adds it selectively when assertions need it.
|
|
176
|
+
mimeType: guessMimeType(relPath),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Read error (permissions, broken symlink): record as empty text
|
|
182
|
+
// so file-exists assertions still resolve truthy while read-
|
|
183
|
+
// dependent assertions fail with an empty content mismatch.
|
|
184
|
+
files[relPath] = '';
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return { files, rows: {}, kv: {}, blobs: Object.keys(blobs).length ? blobs : undefined };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Heuristic: a file is "probably text" if the first 4KB contains no
|
|
192
|
+
* NUL byte and is decodable as UTF-8 without replacement chars. This
|
|
193
|
+
* catches the common cases (source code, configs, markdown, json) and
|
|
194
|
+
* correctly diverts binaries (wasm, .zkey, images, compiled elf) to
|
|
195
|
+
* the blob channel.
|
|
196
|
+
*/
|
|
197
|
+
function isProbablyText(buf) {
|
|
198
|
+
const head = buf.subarray(0, Math.min(4096, buf.length));
|
|
199
|
+
if (head.includes(0))
|
|
200
|
+
return false;
|
|
201
|
+
// Attempt strict decode — if the bytes form invalid UTF-8, TextDecoder
|
|
202
|
+
// with `fatal: true` throws.
|
|
203
|
+
try {
|
|
204
|
+
new TextDecoder('utf-8', { fatal: true }).decode(head);
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function guessMimeType(path) {
|
|
212
|
+
const ext = path.toLowerCase().split('.').pop() ?? '';
|
|
213
|
+
switch (ext) {
|
|
214
|
+
case 'wasm': return 'application/wasm';
|
|
215
|
+
case 'zkey': return 'application/octet-stream+zkey';
|
|
216
|
+
case 'png': return 'image/png';
|
|
217
|
+
case 'jpg':
|
|
218
|
+
case 'jpeg': return 'image/jpeg';
|
|
219
|
+
case 'webp': return 'image/webp';
|
|
220
|
+
case 'woff':
|
|
221
|
+
case 'woff2': return 'font/woff2';
|
|
222
|
+
case 'pdf': return 'application/pdf';
|
|
223
|
+
default: return undefined;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// ──────────────────────────────────────────────────────────────────
|
|
227
|
+
// Judge factory — scaffold meta_score rubric
|
|
228
|
+
// ──────────────────────────────────────────────────────────────────
|
|
229
|
+
/**
|
|
230
|
+
* Build a JudgeFn that grades a composed scaffold on five dimensions:
|
|
231
|
+
* 1. correctness — imports resolve, build recipe valid
|
|
232
|
+
* 2. completeness — all manifest-declared files present
|
|
233
|
+
* 3. idiomatic — workspace layout matches family convention
|
|
234
|
+
* 4. production-ready — env vars documented, secrets not in source
|
|
235
|
+
* 5. over-scaffold — no extraneous layers attached for the prompt
|
|
236
|
+
*
|
|
237
|
+
* The judge is meant to be plugged into agent-eval's BuilderSession via
|
|
238
|
+
* `recordMetaScore(await judge(...))`. The fn itself doesn't call an LLM
|
|
239
|
+
* — it builds the prompt and expects the caller (driver script) to hand
|
|
240
|
+
* off to `createLlmReviewer`.
|
|
241
|
+
*
|
|
242
|
+
* Why this shape: agent-eval's JudgeFn takes a context object with
|
|
243
|
+
* scenario+artifacts; the scaffold eval's "scenario" IS the user prompt,
|
|
244
|
+
* and "artifacts" are the composed files. This adapter packs them up.
|
|
245
|
+
*/
|
|
246
|
+
export function buildScaffoldMetaPrompt(args) {
|
|
247
|
+
const { userPrompt, composedSpec, snapshot } = args;
|
|
248
|
+
const paths = Object.keys(snapshot.files).sort();
|
|
249
|
+
const fileList = paths
|
|
250
|
+
.slice(0, 80) // cap prompt length
|
|
251
|
+
.join('\n ');
|
|
252
|
+
const keyFiles = pickKeyFiles(snapshot);
|
|
253
|
+
// Prompt-budget truncation (distinct from snapshot completeness —
|
|
254
|
+
// the snapshot has the full file; this is render-only).
|
|
255
|
+
const PROMPT_FILE_CAP = 4000;
|
|
256
|
+
const keyFilesSection = keyFiles
|
|
257
|
+
.map((f) => {
|
|
258
|
+
const truncated = f.content.length > PROMPT_FILE_CAP;
|
|
259
|
+
const body = truncated
|
|
260
|
+
? `${f.content.slice(0, PROMPT_FILE_CAP)}\n\n[... ${f.content.length - PROMPT_FILE_CAP} more characters truncated for prompt budget — full content is in the snapshot ...]`
|
|
261
|
+
: f.content;
|
|
262
|
+
return `\n### ${f.path}${truncated ? ' (truncated for prompt)' : ''}\n\`\`\`\n${body}\n\`\`\``;
|
|
263
|
+
})
|
|
264
|
+
.join('\n');
|
|
265
|
+
return [
|
|
266
|
+
'# Scaffold quality assessment',
|
|
267
|
+
'',
|
|
268
|
+
'You are grading a composed project scaffold. The user gave a prompt and the',
|
|
269
|
+
'planner selected a family + capability layers + variables. After composition,',
|
|
270
|
+
'these files are on disk:',
|
|
271
|
+
'',
|
|
272
|
+
'## User prompt',
|
|
273
|
+
userPrompt,
|
|
274
|
+
'',
|
|
275
|
+
'## Resolved composition',
|
|
276
|
+
`- family: ${composedSpec.family}`,
|
|
277
|
+
`- layers: ${(composedSpec.layers ?? []).join(', ')}`,
|
|
278
|
+
`- partner: ${composedSpec.partner ?? '(none)'}`,
|
|
279
|
+
'',
|
|
280
|
+
'## File list',
|
|
281
|
+
' ' + fileList,
|
|
282
|
+
...(paths.length > 80 ? [` ... ${paths.length - 80} more`] : []),
|
|
283
|
+
'',
|
|
284
|
+
'## Key files',
|
|
285
|
+
keyFilesSection,
|
|
286
|
+
'',
|
|
287
|
+
'## Rubric (0-1 per dimension, 1 = perfect)',
|
|
288
|
+
'',
|
|
289
|
+
'1. **correctness** — do imports resolve? Is the build recipe plausible? Any obvious typos or broken references?',
|
|
290
|
+
'2. **completeness** — does the scaffold cover the prompt\'s stated surfaces? (if prompt says "ZK prover + frontend", do both exist?)',
|
|
291
|
+
'3. **idiomatic** — does the layout match the framework\'s canonical pattern? (risczero has methods/guest+host; SP1 has program/+script/)',
|
|
292
|
+
'4. **production-ready** — are env vars documented? secrets NOT in source? build caching hints present?',
|
|
293
|
+
'5. **over-scaffold** — score 1 if ZERO layers are extraneous; lower if capabilities are attached that the prompt doesn\'t justify.',
|
|
294
|
+
'',
|
|
295
|
+
'## Output',
|
|
296
|
+
'',
|
|
297
|
+
'Return a single JSON object:',
|
|
298
|
+
'```json',
|
|
299
|
+
'{',
|
|
300
|
+
' "correctness": 0.9,',
|
|
301
|
+
' "completeness": 0.95,',
|
|
302
|
+
' "idiomatic": 0.85,',
|
|
303
|
+
' "productionReady": 0.8,',
|
|
304
|
+
' "overScaffold": 1.0,',
|
|
305
|
+
' "overall": 0.9,',
|
|
306
|
+
' "issues": [{"dimension": "...", "severity": "low|medium|high", "description": "..."}],',
|
|
307
|
+
' "verdict": "pass | fail | borderline"',
|
|
308
|
+
'}',
|
|
309
|
+
'```',
|
|
310
|
+
].join('\n');
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Pick the "key files" agent-eval's judge should see in full. We don't
|
|
314
|
+
* want to ship the entire scaffold into the prompt (token explosion);
|
|
315
|
+
* instead surface the files that carry the scaffold's signal.
|
|
316
|
+
*/
|
|
317
|
+
function pickKeyFiles(snapshot) {
|
|
318
|
+
const priorities = [
|
|
319
|
+
/^package\.json$/,
|
|
320
|
+
/^Cargo\.toml$/,
|
|
321
|
+
/^go\.mod$/,
|
|
322
|
+
/^Move\.toml$/,
|
|
323
|
+
/^foundry\.toml$/,
|
|
324
|
+
/^requirements\.txt$/,
|
|
325
|
+
/^pyproject\.toml$/,
|
|
326
|
+
/^README\.md$/,
|
|
327
|
+
/^tsconfig\.json$/,
|
|
328
|
+
/^src\/main\.(ts|rs|py|go)$/,
|
|
329
|
+
/^src\/App\.tsx$/,
|
|
330
|
+
/^src\/index\.(ts|tsx)$/,
|
|
331
|
+
/^methods\/guest\/src\/main\.rs$/,
|
|
332
|
+
/^program\/src\/main\.rs$/,
|
|
333
|
+
/^host\/src\/main\.rs$/,
|
|
334
|
+
];
|
|
335
|
+
const paths = Object.keys(snapshot.files);
|
|
336
|
+
const out = [];
|
|
337
|
+
for (const pattern of priorities) {
|
|
338
|
+
const match = paths.find((p) => pattern.test(p));
|
|
339
|
+
if (match)
|
|
340
|
+
out.push({ path: match, content: snapshot.files[match] });
|
|
341
|
+
if (out.length >= 6)
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
return out;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Compose a spec to a tempdir + package up everything the driver needs
|
|
348
|
+
* to run agent-eval's BuilderSession: sandbox config, file snapshot,
|
|
349
|
+
* structural assertions, cleanup thunk.
|
|
350
|
+
*
|
|
351
|
+
* Compose failure throws. Caller handles by scoring the build_score as
|
|
352
|
+
* 0 and proceeding with a failed-compose meta judgment.
|
|
353
|
+
*/
|
|
354
|
+
export async function prepareScaffoldForEval(args) {
|
|
355
|
+
const scaffoldDir = mkdtempSync(join(tmpdir(), 'scaffold-eval-'));
|
|
356
|
+
// Invoke the compose CLI. Runs against the live `dist/` so the bridge
|
|
357
|
+
// stays registry-version-agnostic; no in-process coupling to compose.
|
|
358
|
+
const specPath = join(scaffoldDir, 'spec.json');
|
|
359
|
+
const { writeFileSync } = await import('node:fs');
|
|
360
|
+
writeFileSync(specPath, JSON.stringify(args.spec));
|
|
361
|
+
const res = spawnSync('node', ['dist/cli.js', 'compose', '--spec', specPath, '--out', scaffoldDir, '--json'], {
|
|
362
|
+
cwd: process.cwd(),
|
|
363
|
+
encoding: 'utf8',
|
|
364
|
+
});
|
|
365
|
+
if (res.status !== 0) {
|
|
366
|
+
rmSync(scaffoldDir, { recursive: true, force: true });
|
|
367
|
+
throw new Error(`compose failed (exit ${res.status}): ${res.stderr.slice(-500)}`);
|
|
368
|
+
}
|
|
369
|
+
const snapshot = snapshotScaffold(scaffoldDir);
|
|
370
|
+
// cwd MUST be baked into the harness at preparation time. agent-eval's
|
|
371
|
+
// SubprocessSandboxDriver.exec reads cwd from the per-call HarnessConfig,
|
|
372
|
+
// NOT from the driver constructor (see agent-eval@0.7.0 — Gen 8b bug).
|
|
373
|
+
// Returning the harness without cwd forces every caller to remember to
|
|
374
|
+
// spread it in, and historical evidence says that fails — the runtime
|
|
375
|
+
// eval path in scripts/agent-eval-scaffold.mjs (pre-Round-0) had the
|
|
376
|
+
// same construct-vs-call bug Gen 8b fixed in the promoters. Bake it in
|
|
377
|
+
// here so the muffled gate is structurally impossible at this seam.
|
|
378
|
+
const harness = { ...makeHarnessConfig(args.components), cwd: scaffoldDir };
|
|
379
|
+
const assertions = manifestComplianceAssertions(args.components);
|
|
380
|
+
return {
|
|
381
|
+
scaffoldDir,
|
|
382
|
+
harness,
|
|
383
|
+
snapshot,
|
|
384
|
+
assertions,
|
|
385
|
+
cleanup: () => {
|
|
386
|
+
try {
|
|
387
|
+
rmSync(scaffoldDir, { recursive: true, force: true });
|
|
388
|
+
}
|
|
389
|
+
catch { /* noop */ }
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Meta judge — Ax-structured scaffold quality assessment.
|
|
395
|
+
*
|
|
396
|
+
* Uses AxSignature + AxGen so the output schema is enforced at the library
|
|
397
|
+
* layer, not via my hand-rolled regex-JSON-parse. Ax handles:
|
|
398
|
+
* - retries on malformed output
|
|
399
|
+
* - field-type coercion (number fields get numbers, not strings)
|
|
400
|
+
* - structured error reporting when the LLM refuses schema compliance
|
|
401
|
+
*
|
|
402
|
+
* Routes through `createLLM` which uses router.tangle.tools when
|
|
403
|
+
* TANGLE_ROUTER_USER_KEY is set (preferred — centralized spend + governance),
|
|
404
|
+
* else falls back to direct provider keys.
|
|
405
|
+
*/
|
|
406
|
+
// AxSignature DSL: '"<instruction>" input1:type, ... -> output1:type, ...'
|
|
407
|
+
// Each field can have a ':string' / ':number' / ':string[]' / ':boolean' type
|
|
408
|
+
// annotation. Ax coerces output into the declared type and retries if the
|
|
409
|
+
// model returns something uncoercible.
|
|
410
|
+
const META_JUDGE_SIGNATURE = '"Grade a freshly-composed project STARTER SCAFFOLD on five rubric dimensions (0..1 each, 1=perfect). ' +
|
|
411
|
+
'CRITICAL CALIBRATION: a starter scaffold is a SKELETON the agent extends. ' +
|
|
412
|
+
'Do NOT penalize for missing business logic, missing API client implementations, or missing domain-specific code. ' +
|
|
413
|
+
'The scaffold\'s job is to give the agent a buildable floor — extension is the agent\'s job. ' +
|
|
414
|
+
'Judge ONLY what is given; do not hallucinate missing files. ' +
|
|
415
|
+
'correctness = imports resolve, build recipe plausible, no obvious taxonomy/implementation mismatches (e.g. frontend surface with Node HTTP server in main.ts). ' +
|
|
416
|
+
'completeness = scaffold has the expected slot files for its (language, runtime, surface) — e.g. frontend TS needs package.json + vite.config + index.html + entrypoint + README. Does NOT require business-logic implementation. ' +
|
|
417
|
+
'idiomatic = layout + configs + dep versions match the framework\'s current canonical pattern (e.g. vite+react with TS5, not jest+TS4). ' +
|
|
418
|
+
'productionReady = env vars documented via .env.example or README Environment section, no secrets in source, scripts are the conventional ones for the runtime. ' +
|
|
419
|
+
'overScaffold = 1 if zero extraneous dependencies or capabilities beyond what the surface justifies. ' +
|
|
420
|
+
'overall = weighted aggregate; a SKELETON-COMPLETE scaffold with no taxonomy mismatches should score ≥ 0.8 and verdict=pass. ' +
|
|
421
|
+
'verdict = pass | fail | borderline. issues = concrete defects ONLY (not missing business logic)." ' +
|
|
422
|
+
'userPrompt:string, family:string, layers:string, fileList:string, keyFiles:string -> ' +
|
|
423
|
+
'correctness:number, completeness:number, idiomatic:number, productionReady:number, overScaffold:number, ' +
|
|
424
|
+
'overall:number, verdict:string, issues:string[], rationale:string';
|
|
425
|
+
export async function invokeMetaJudge(args) {
|
|
426
|
+
// Compile-gate short-circuit. If the caller already ran the build and it
|
|
427
|
+
// failed, return fail immediately. Saves the LLM call AND closes the
|
|
428
|
+
// Goodhart loop where fidelity passes scaffolds the build would reject.
|
|
429
|
+
if (args.buildOutcome && args.buildOutcome.passed === false) {
|
|
430
|
+
const phase = args.buildOutcome.phase ?? 'build';
|
|
431
|
+
const stderrTail = (args.buildOutcome.stderr ?? args.buildOutcome.stdout ?? '').slice(-500);
|
|
432
|
+
return {
|
|
433
|
+
correctness: 0,
|
|
434
|
+
completeness: 0,
|
|
435
|
+
idiomatic: 0,
|
|
436
|
+
productionReady: 0,
|
|
437
|
+
overScaffold: 0,
|
|
438
|
+
overall: 0,
|
|
439
|
+
issues: [
|
|
440
|
+
{
|
|
441
|
+
dimension: 'correctness',
|
|
442
|
+
severity: 'high',
|
|
443
|
+
description: `${phase} failed: ${stderrTail.replace(/\s+/g, ' ').trim().slice(0, 400)}`,
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
verdict: 'fail',
|
|
447
|
+
rationale: `Build/typecheck failed at ${phase} — scaffold cannot run. LLM scoring skipped (compile-gate).`,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
const { createLLM } = await import('../lib/llm.js');
|
|
451
|
+
const { ax } = await import('@ax-llm/ax');
|
|
452
|
+
const { estimateTokens } = await import('@tangle-network/agent-eval');
|
|
453
|
+
// Don't pin a router-specific model slug like "anthropic/claude-sonnet-4-6" —
|
|
454
|
+
// it 404s on non-router providers in the fallback chain. createLLM() picks
|
|
455
|
+
// each provider's default (Claude Haiku on Anthropic, Llama 3.3 on Together,
|
|
456
|
+
// gpt-4o-mini on OpenAI, Haiku via router when the router key is present).
|
|
457
|
+
// Any of these are capable enough to run a 5-dimensional rubric judge.
|
|
458
|
+
const llm = createLLM();
|
|
459
|
+
const judge = ax(META_JUDGE_SIGNATURE);
|
|
460
|
+
const paths = Object.keys(args.snapshot.files).sort();
|
|
461
|
+
const fileList = paths.slice(0, 80).join('\n') + (paths.length > 80 ? `\n[+${paths.length - 80} more]` : '');
|
|
462
|
+
const keyFiles = renderKeyFilesForSignature(args.snapshot);
|
|
463
|
+
const raw = (await judge.forward(llm, {
|
|
464
|
+
userPrompt: args.userPrompt,
|
|
465
|
+
family: args.composedSpec.family ?? 'unknown',
|
|
466
|
+
layers: (args.composedSpec.layers ?? []).join(', ') || '(none)',
|
|
467
|
+
fileList,
|
|
468
|
+
keyFiles,
|
|
469
|
+
}, { stream: false }));
|
|
470
|
+
const num = (v, fallback = 0) => {
|
|
471
|
+
if (typeof v !== 'number' || Number.isNaN(v))
|
|
472
|
+
return fallback;
|
|
473
|
+
if (v > 1 && v <= 10)
|
|
474
|
+
return v / 10; // defensive: tolerate 0-10 scale drift
|
|
475
|
+
return Math.max(0, Math.min(1, v));
|
|
476
|
+
};
|
|
477
|
+
const issues = normalizeIssues(raw.issues);
|
|
478
|
+
const correctness = num(raw.correctness);
|
|
479
|
+
const completeness = num(raw.completeness);
|
|
480
|
+
const idiomatic = num(raw.idiomatic);
|
|
481
|
+
const productionReady = num(raw.productionReady);
|
|
482
|
+
const overScaffold = num(raw.overScaffold, 1);
|
|
483
|
+
const overallFallback = correctness * 0.3 + completeness * 0.3 + idiomatic * 0.2 + productionReady * 0.1 + overScaffold * 0.1;
|
|
484
|
+
const verdict = raw.verdict === 'pass' || raw.verdict === 'fail' || raw.verdict === 'borderline' ? raw.verdict : 'borderline';
|
|
485
|
+
// Estimate token usage for cost tracking. AxGen.forward doesn't surface
|
|
486
|
+
// provider usage stats in a stable shape across backends (router vs
|
|
487
|
+
// Anthropic vs Together vs OpenAI), so estimate from the rendered
|
|
488
|
+
// prompt + output text via agent-eval's char-based heuristic. Under-
|
|
489
|
+
// estimates for structured-output heavy responses by <15%, good enough
|
|
490
|
+
// for scorecard-level cost visibility. Replace with live usage if ax
|
|
491
|
+
// exposes it via the AxAIService in a later version.
|
|
492
|
+
const promptText = `${META_JUDGE_SIGNATURE}\n${args.userPrompt}\n${args.composedSpec.family ?? ''}\n${(args.composedSpec.layers ?? []).join(',')}\n${fileList}\n${keyFiles}`;
|
|
493
|
+
const outputText = JSON.stringify(raw);
|
|
494
|
+
const usage = {
|
|
495
|
+
inputTokens: estimateTokens(promptText),
|
|
496
|
+
outputTokens: estimateTokens(outputText),
|
|
497
|
+
// createLLM's model is provider-picked — record what the signature
|
|
498
|
+
// most-closely corresponds to in MODEL_PRICING. Override in future
|
|
499
|
+
// if createLLM exposes the resolved model name.
|
|
500
|
+
model: 'claude-sonnet-4-20250514',
|
|
501
|
+
};
|
|
502
|
+
return {
|
|
503
|
+
correctness,
|
|
504
|
+
completeness,
|
|
505
|
+
idiomatic,
|
|
506
|
+
productionReady,
|
|
507
|
+
overScaffold,
|
|
508
|
+
overall: num(raw.overall, overallFallback),
|
|
509
|
+
issues,
|
|
510
|
+
verdict,
|
|
511
|
+
rationale: raw.rationale,
|
|
512
|
+
usage,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Per-language fleet config table. Each language maps to a set of
|
|
517
|
+
* sandbox commands the four mechanical judges will run. New languages
|
|
518
|
+
* must be added here; absent languages skip the fleet (return
|
|
519
|
+
* empty-pass) since we have no defensible commands to run.
|
|
520
|
+
*
|
|
521
|
+
* Why these specific commands:
|
|
522
|
+
* compiler: same testCommand from HARNESS_CONFIGS — it's the
|
|
523
|
+
* authoritative typecheck. Reusing keeps fleet aligned with the
|
|
524
|
+
* existing build gate.
|
|
525
|
+
* test: family-canonical test runner if the language convention
|
|
526
|
+
* has one (vitest for TS, pytest for Python, cargo test for Rust).
|
|
527
|
+
* For families that ship no test fixtures, test judge is a no-op
|
|
528
|
+
* pass — this is honest (we have nothing to validate against)
|
|
529
|
+
* rather than fabricating green.
|
|
530
|
+
* linter: forge-lint for solidity (Gen R1 cluster-fix), eslint for
|
|
531
|
+
* TS where configured, ruff for Python. No command = honest skip.
|
|
532
|
+
* security: a deps-vuln scan via `pnpm audit --audit-level high` for
|
|
533
|
+
* pnpm projects, `cargo audit` for Rust. Skip otherwise.
|
|
534
|
+
*/
|
|
535
|
+
function fleetCommandsForLanguage(language, surface) {
|
|
536
|
+
switch (language) {
|
|
537
|
+
case 'typescript':
|
|
538
|
+
case 'javascript':
|
|
539
|
+
return {
|
|
540
|
+
compiler: 'pnpm exec tsc --noEmit',
|
|
541
|
+
// Gracefully skip when no test script defined; vitest --run hard
|
|
542
|
+
// fails if vitest absent. The `pnpm test` form respects whatever
|
|
543
|
+
// test command the family/package declares — including the
|
|
544
|
+
// muffle-ok'd `echo no tests` patterns where applicable.
|
|
545
|
+
test: 'pnpm test --run --passWithNoTests 2>&1 || true', // muffle-ok: test judge tolerates absent suites — it scores 1 only when tests exist AND pass; absent suites score honest-null
|
|
546
|
+
linter: 'pnpm lint 2>&1 || true', // muffle-ok: linter score reflects exit 0/non-zero; absent lint script honest-skips
|
|
547
|
+
security: 'pnpm audit --audit-level high --json 2>&1 || true', // muffle-ok: parsed by score function below; non-zero on real vulns
|
|
548
|
+
};
|
|
549
|
+
case 'rust':
|
|
550
|
+
return {
|
|
551
|
+
compiler: 'cargo check --workspace || cargo check',
|
|
552
|
+
test: 'cargo test --workspace --no-run 2>&1 || true', // muffle-ok: compile-only test detection; test execution costly + flaky
|
|
553
|
+
};
|
|
554
|
+
case 'solidity':
|
|
555
|
+
return {
|
|
556
|
+
compiler: 'forge build',
|
|
557
|
+
test: 'forge test --no-match-test "Skip" 2>&1 || true', // muffle-ok: many forge tests need fork-block setup; absent → score honest-null
|
|
558
|
+
linter: 'forge lint 2>&1 || true', // muffle-ok: lint score reflects exit; absent foundry.toml [lint] section → honest-pass per Gen R1 fix
|
|
559
|
+
};
|
|
560
|
+
default:
|
|
561
|
+
return {};
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Score a fleet judge result. SandboxJudgeResult.score from agent-eval
|
|
566
|
+
* is testsPassed/testsTotal where parsers exist; we override for cases
|
|
567
|
+
* where the raw exit-code semantics need interpretation (e.g. lint
|
|
568
|
+
* exit-2 means warnings-only on some toolchains, exit-non-zero means
|
|
569
|
+
* security findings on pnpm audit).
|
|
570
|
+
*/
|
|
571
|
+
function interpretFleetResult(kind, exitCode, stdout) {
|
|
572
|
+
if (kind === 'security') {
|
|
573
|
+
// pnpm audit exits non-zero on findings; parse JSON for high+ count.
|
|
574
|
+
try {
|
|
575
|
+
const j = JSON.parse(stdout || '{}');
|
|
576
|
+
const high = (j.metadata?.vulnerabilities?.high ?? 0) + (j.metadata?.vulnerabilities?.critical ?? 0);
|
|
577
|
+
return { passed: high === 0, score: high === 0 ? 1 : 0, summary: high === 0 ? 'no high/critical vulns' : `${high} high+ vulns` };
|
|
578
|
+
}
|
|
579
|
+
catch {
|
|
580
|
+
return { passed: exitCode === 0, score: exitCode === 0 ? 1 : 0, summary: `audit exit=${exitCode}` };
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
return {
|
|
584
|
+
passed: exitCode === 0,
|
|
585
|
+
score: exitCode === 0 ? 1 : 0,
|
|
586
|
+
summary: exitCode === 0 ? `${kind} pass` : `${kind} exit=${exitCode}`,
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* Invoke the judge fleet against a composed scaffold's harness config.
|
|
591
|
+
*
|
|
592
|
+
* Returns a `FleetVerdict` aggregating per-judge results. Unanimous
|
|
593
|
+
* pass is the new strictness bar — replaces "single LLM judge said
|
|
594
|
+
* 0.85" as the validation gate.
|
|
595
|
+
*
|
|
596
|
+
* Reuses `BuilderSession`'s harness machinery for sandbox isolation;
|
|
597
|
+
* each judge runs in its own subprocess with the language-specific
|
|
598
|
+
* command. Skipped judges (no command for the language) score
|
|
599
|
+
* honest-null and are excluded from `unanimousPass` math.
|
|
600
|
+
*/
|
|
601
|
+
export async function invokeJudgeFleet(args) {
|
|
602
|
+
const { runJudgeFleet, compilerJudge, testJudge, linterJudge, securityJudge } = await import('@tangle-network/agent-eval');
|
|
603
|
+
const language = args.components.family.taxonomy?.language ?? 'unknown';
|
|
604
|
+
const surface = args.components.family.taxonomy?.surface ?? 'unknown';
|
|
605
|
+
const cmds = fleetCommandsForLanguage(language, surface);
|
|
606
|
+
const specs = [];
|
|
607
|
+
if (cmds.compiler)
|
|
608
|
+
specs.push(compilerJudge('fleet:compiler', { ...args.harness, testCommand: cmds.compiler }));
|
|
609
|
+
if (cmds.test)
|
|
610
|
+
specs.push(testJudge('fleet:test', { ...args.harness, testCommand: cmds.test }));
|
|
611
|
+
if (cmds.linter)
|
|
612
|
+
specs.push(linterJudge('fleet:linter', { ...args.harness, testCommand: cmds.linter }));
|
|
613
|
+
if (cmds.security)
|
|
614
|
+
specs.push(securityJudge('fleet:security', { ...args.harness, testCommand: cmds.security }));
|
|
615
|
+
if (specs.length === 0) {
|
|
616
|
+
return { unanimousPass: false, byJudge: [], overall: 0, wallMs: 0 };
|
|
617
|
+
}
|
|
618
|
+
const start = Date.now();
|
|
619
|
+
const results = await runJudgeFleet(specs, { parallel: true });
|
|
620
|
+
const wallMs = Date.now() - start;
|
|
621
|
+
const byJudge = results.map((r) => {
|
|
622
|
+
const exit = r.detail?.test?.exitCode ?? r.detail?.run?.exitCode ?? r.detail?.setup?.exitCode ?? 1;
|
|
623
|
+
const stdout = r.detail?.test?.stdout ?? r.detail?.run?.stdout ?? '';
|
|
624
|
+
const interp = interpretFleetResult(r.kind, exit, stdout);
|
|
625
|
+
return {
|
|
626
|
+
id: r.id,
|
|
627
|
+
kind: r.kind,
|
|
628
|
+
passed: interp.passed,
|
|
629
|
+
score: interp.score,
|
|
630
|
+
summary: interp.summary,
|
|
631
|
+
durationMs: r.detail?.totalWallMs ?? 0,
|
|
632
|
+
};
|
|
633
|
+
});
|
|
634
|
+
const unanimousPass = byJudge.length > 0 && byJudge.every((j) => j.passed);
|
|
635
|
+
const overall = byJudge.length > 0 ? byJudge.reduce((a, j) => a + j.score, 0) / byJudge.length : 0;
|
|
636
|
+
return { unanimousPass, byJudge, overall, wallMs };
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* Normalize the LLM's `issues` output into our typed shape. The AxSignature
|
|
640
|
+
* declares issues:string[] (simple list of concerns). We then parse each
|
|
641
|
+
* line for a "dimension: severity: description" pattern; if it doesn't
|
|
642
|
+
* match, treat the whole line as a medium-severity unscoped issue. This
|
|
643
|
+
* lets the judge use free-form language while giving the scorecard
|
|
644
|
+
* consumer a structured shape.
|
|
645
|
+
*/
|
|
646
|
+
function normalizeIssues(raw) {
|
|
647
|
+
if (!Array.isArray(raw))
|
|
648
|
+
return [];
|
|
649
|
+
const out = [];
|
|
650
|
+
for (const item of raw) {
|
|
651
|
+
if (typeof item === 'string') {
|
|
652
|
+
const m = item.match(/^\s*(\w[\w-]*)\s*:\s*(low|medium|high)\s*:\s*(.+)$/i);
|
|
653
|
+
if (m) {
|
|
654
|
+
out.push({ dimension: m[1], severity: m[2].toLowerCase(), description: m[3].trim() });
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
out.push({ dimension: 'general', severity: 'medium', description: item.trim() });
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
else if (item && typeof item === 'object') {
|
|
661
|
+
const o = item;
|
|
662
|
+
const sev = (o.severity === 'low' || o.severity === 'high') ? o.severity : 'medium';
|
|
663
|
+
out.push({
|
|
664
|
+
dimension: typeof o.dimension === 'string' ? o.dimension : 'general',
|
|
665
|
+
severity: sev,
|
|
666
|
+
description: typeof o.description === 'string' ? o.description : JSON.stringify(o),
|
|
667
|
+
});
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
return out;
|
|
671
|
+
}
|
|
672
|
+
function renderKeyFilesForSignature(snapshot) {
|
|
673
|
+
const keyFiles = pickKeyFiles(snapshot);
|
|
674
|
+
const PROMPT_FILE_CAP = 4000;
|
|
675
|
+
return keyFiles
|
|
676
|
+
.map((f) => {
|
|
677
|
+
const truncated = f.content.length > PROMPT_FILE_CAP;
|
|
678
|
+
const body = truncated
|
|
679
|
+
? `${f.content.slice(0, PROMPT_FILE_CAP)}\n[... ${f.content.length - PROMPT_FILE_CAP} more chars truncated for prompt — full content is in the snapshot ...]`
|
|
680
|
+
: f.content;
|
|
681
|
+
return `### ${f.path}${truncated ? ' (truncated for prompt)' : ''}\n${body}`;
|
|
682
|
+
})
|
|
683
|
+
.join('\n\n---\n\n');
|
|
684
|
+
}
|
|
685
|
+
//# sourceMappingURL=scaffold-bridge.js.map
|