@tangle-network/starter-foundry 0.5.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1038) hide show
  1. package/README.md +28 -5
  2. package/corpus/held-out-validation.json +1 -1
  3. package/corpus/model-rates.json +56 -0
  4. package/dist/cli.js +7 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/eval/diagnoser.d.ts +37 -0
  7. package/dist/eval/diagnoser.js +113 -0
  8. package/dist/eval/diagnoser.js.map +1 -0
  9. package/dist/eval/propose.d.ts +20 -0
  10. package/dist/eval/propose.js +75 -0
  11. package/dist/eval/propose.js.map +1 -0
  12. package/dist/eval/replay.d.ts +137 -0
  13. package/dist/eval/replay.js +392 -0
  14. package/dist/eval/replay.js.map +1 -0
  15. package/dist/eval/scaffold-bridge.d.ts +100 -0
  16. package/dist/eval/scaffold-bridge.js +492 -0
  17. package/dist/eval/scaffold-bridge.js.map +1 -0
  18. package/dist/lib/ab.d.ts +61 -0
  19. package/dist/lib/ab.js +80 -0
  20. package/dist/lib/ab.js.map +1 -0
  21. package/dist/lib/batch-export.js +1 -11
  22. package/dist/lib/batch-export.js.map +1 -1
  23. package/dist/lib/brand/first-turn-flows.d.ts +10 -0
  24. package/dist/lib/brand/first-turn-flows.js +114 -0
  25. package/dist/lib/brand/first-turn-flows.js.map +1 -0
  26. package/dist/lib/brand/i18n.d.ts +15 -0
  27. package/dist/lib/brand/i18n.js +100 -0
  28. package/dist/lib/brand/i18n.js.map +1 -0
  29. package/dist/lib/brand/index.d.ts +27 -0
  30. package/dist/lib/brand/index.js +100 -0
  31. package/dist/lib/brand/index.js.map +1 -0
  32. package/dist/lib/brand/media-manifest.d.ts +26 -0
  33. package/dist/lib/brand/media-manifest.js +98 -0
  34. package/dist/lib/brand/media-manifest.js.map +1 -0
  35. package/dist/lib/brand/user-segments.d.ts +7 -0
  36. package/dist/lib/brand/user-segments.js +81 -0
  37. package/dist/lib/brand/user-segments.js.map +1 -0
  38. package/dist/lib/brand/voice.d.ts +10 -0
  39. package/dist/lib/brand/voice.js +92 -0
  40. package/dist/lib/brand/voice.js.map +1 -0
  41. package/dist/lib/bridge.d.ts +38 -0
  42. package/dist/lib/bridge.js +130 -0
  43. package/dist/lib/bridge.js.map +1 -0
  44. package/dist/lib/build-plan.d.ts +25 -0
  45. package/dist/lib/build-plan.js +67 -1
  46. package/dist/lib/build-plan.js.map +1 -1
  47. package/dist/lib/buildout-traces.d.ts +70 -1
  48. package/dist/lib/buildout-traces.js +66 -0
  49. package/dist/lib/buildout-traces.js.map +1 -1
  50. package/dist/lib/canary.d.ts +38 -0
  51. package/dist/lib/canary.js +91 -0
  52. package/dist/lib/canary.js.map +1 -0
  53. package/dist/lib/capability-inferrer.d.ts +5 -4
  54. package/dist/lib/compose-prompt.d.ts +8 -7
  55. package/dist/lib/compose-prompt.js +30 -7
  56. package/dist/lib/compose-prompt.js.map +1 -1
  57. package/dist/lib/compose-seed.d.ts +15 -0
  58. package/dist/lib/compose-seed.js +44 -0
  59. package/dist/lib/compose-seed.js.map +1 -0
  60. package/dist/lib/compose.js +106 -1
  61. package/dist/lib/compose.js.map +1 -1
  62. package/dist/lib/cost.d.ts +53 -0
  63. package/dist/lib/cost.js +77 -0
  64. package/dist/lib/cost.js.map +1 -0
  65. package/dist/lib/fs.d.ts +1 -0
  66. package/dist/lib/fs.js +10 -0
  67. package/dist/lib/fs.js.map +1 -1
  68. package/dist/lib/index.d.ts +42 -1
  69. package/dist/lib/index.js +22 -1
  70. package/dist/lib/index.js.map +1 -1
  71. package/dist/lib/industry-flows.d.ts +6 -0
  72. package/dist/lib/industry-flows.js +165 -0
  73. package/dist/lib/industry-flows.js.map +1 -0
  74. package/dist/lib/keywords.js +14 -0
  75. package/dist/lib/keywords.js.map +1 -1
  76. package/dist/lib/llm.d.ts +7 -2
  77. package/dist/lib/llm.js +137 -8
  78. package/dist/lib/llm.js.map +1 -1
  79. package/dist/lib/planner/contracts.d.ts +2 -1
  80. package/dist/lib/planner/detectors.js +26 -0
  81. package/dist/lib/planner/detectors.js.map +1 -1
  82. package/dist/lib/planner/helpers.js +157 -0
  83. package/dist/lib/planner/helpers.js.map +1 -1
  84. package/dist/lib/planner/implicit-caps.js +63 -1
  85. package/dist/lib/planner/implicit-caps.js.map +1 -1
  86. package/dist/lib/planner/partner-first.d.ts +31 -0
  87. package/dist/lib/planner/partner-first.js +137 -0
  88. package/dist/lib/planner/partner-first.js.map +1 -0
  89. package/dist/lib/planner/projects.d.ts +2 -2
  90. package/dist/lib/planner/projects.js +452 -2
  91. package/dist/lib/planner/projects.js.map +1 -1
  92. package/dist/lib/planner/signals.d.ts +7 -0
  93. package/dist/lib/planner/signals.js +203 -1
  94. package/dist/lib/planner/signals.js.map +1 -1
  95. package/dist/lib/planner/zk-preferences.d.ts +9 -0
  96. package/dist/lib/planner/zk-preferences.js +91 -0
  97. package/dist/lib/planner/zk-preferences.js.map +1 -0
  98. package/dist/lib/prompt-planner.js +187 -2
  99. package/dist/lib/prompt-planner.js.map +1 -1
  100. package/dist/lib/prompt-rewriter.d.ts +4 -3
  101. package/dist/lib/prompt-rewriter.js +11 -0
  102. package/dist/lib/prompt-rewriter.js.map +1 -1
  103. package/dist/lib/registry-mirror.d.ts +28 -0
  104. package/dist/lib/registry-mirror.js +64 -0
  105. package/dist/lib/registry-mirror.js.map +1 -0
  106. package/dist/lib/release.js +1 -11
  107. package/dist/lib/release.js.map +1 -1
  108. package/dist/lib/reproducibility.d.ts +39 -0
  109. package/dist/lib/reproducibility.js +96 -0
  110. package/dist/lib/reproducibility.js.map +1 -0
  111. package/dist/lib/reviewer-route.d.ts +12 -0
  112. package/dist/lib/reviewer-route.js +99 -0
  113. package/dist/lib/reviewer-route.js.map +1 -0
  114. package/dist/lib/safety/license-check.d.ts +9 -0
  115. package/dist/lib/safety/license-check.js +61 -0
  116. package/dist/lib/safety/license-check.js.map +1 -0
  117. package/dist/lib/safety/secret-scan.d.ts +7 -0
  118. package/dist/lib/safety/secret-scan.js +67 -0
  119. package/dist/lib/safety/secret-scan.js.map +1 -0
  120. package/dist/lib/sbom.d.ts +34 -0
  121. package/dist/lib/sbom.js +89 -0
  122. package/dist/lib/sbom.js.map +1 -0
  123. package/dist/lib/selection.d.ts +22 -0
  124. package/dist/lib/selection.js +56 -1
  125. package/dist/lib/selection.js.map +1 -1
  126. package/dist/lib/semantic-router.d.ts +2 -1
  127. package/dist/lib/synthetic/index.d.ts +45 -0
  128. package/dist/lib/synthetic/index.js +101 -0
  129. package/dist/lib/synthetic/index.js.map +1 -0
  130. package/dist/lib/telemetry/stream.d.ts +52 -0
  131. package/dist/lib/telemetry/stream.js +153 -0
  132. package/dist/lib/telemetry/stream.js.map +1 -0
  133. package/dist/lib/telemetry.d.ts +6 -0
  134. package/dist/lib/telemetry.js.map +1 -1
  135. package/dist/lib/template-quality.d.ts +61 -0
  136. package/dist/lib/template-quality.js +84 -0
  137. package/dist/lib/template-quality.js.map +1 -0
  138. package/dist/lib/validate-plan.d.ts +10 -0
  139. package/dist/lib/validate-plan.js +74 -0
  140. package/dist/lib/validate-plan.js.map +1 -0
  141. package/dist/lib/vb-outcomes.d.ts +2 -1
  142. package/dist/lib/version-history.d.ts +15 -0
  143. package/dist/lib/version-history.js +40 -0
  144. package/dist/lib/version-history.js.map +1 -0
  145. package/dist/lib/visual-regression.d.ts +75 -0
  146. package/dist/lib/visual-regression.js +125 -0
  147. package/dist/lib/visual-regression.js.map +1 -0
  148. package/dist/training/capability_proposer/propose.d.ts +26 -0
  149. package/dist/training/capability_proposer/propose.js +305 -0
  150. package/dist/training/capability_proposer/propose.js.map +1 -0
  151. package/dist/training/family_proposer/propose.d.ts +35 -0
  152. package/dist/training/family_proposer/propose.js +664 -0
  153. package/dist/training/family_proposer/propose.js.map +1 -0
  154. package/dist/training/routing/train.d.ts +49 -0
  155. package/dist/training/routing/train.js +249 -0
  156. package/dist/training/routing/train.js.map +1 -0
  157. package/dist/training/template_v1/audit.d.ts +15 -0
  158. package/dist/training/template_v1/audit.js +83 -0
  159. package/dist/training/template_v1/audit.js.map +1 -0
  160. package/dist/training/template_v1/correctness.d.ts +25 -0
  161. package/dist/training/template_v1/correctness.js +194 -0
  162. package/dist/training/template_v1/correctness.js.map +1 -0
  163. package/dist/training/template_v1/harvest.d.ts +25 -0
  164. package/dist/training/template_v1/harvest.js +101 -0
  165. package/dist/training/template_v1/harvest.js.map +1 -0
  166. package/dist/training/template_v1/judge.d.ts +26 -0
  167. package/dist/training/template_v1/judge.js +104 -0
  168. package/dist/training/template_v1/judge.js.map +1 -0
  169. package/dist/training/template_v1/multi-propose.d.ts +27 -0
  170. package/dist/training/template_v1/multi-propose.js +34 -0
  171. package/dist/training/template_v1/multi-propose.js.map +1 -0
  172. package/dist/training/template_v1/run.d.ts +1 -0
  173. package/dist/training/template_v1/run.js +369 -0
  174. package/dist/training/template_v1/run.js.map +1 -0
  175. package/dist/training/template_v1/synthesize.d.ts +14 -0
  176. package/dist/training/template_v1/synthesize.js +101 -0
  177. package/dist/training/template_v1/synthesize.js.map +1 -0
  178. package/dist/training/variant_b/flow.d.ts +9 -14
  179. package/dist/training/variant_b/run-flow.d.ts +2 -1
  180. package/dist/types/registry-schemas.generated.d.ts +105 -0
  181. package/dist/types/registry-schemas.generated.js +5 -0
  182. package/dist/types/registry-schemas.generated.js.map +1 -0
  183. package/dist/types.d.ts +119 -0
  184. package/package.json +57 -18
  185. package/registry/_mirrors.json +29 -0
  186. package/registry/_schemas/buildhints.schema.json +30 -0
  187. package/registry/_schemas/family.schema.json +92 -0
  188. package/registry/_schemas/layer.schema.json +59 -0
  189. package/registry/_schemas/partner.schema.json +27 -0
  190. package/registry/families/agent-service-py/manifest.json +9 -0
  191. package/registry/families/agent-service-ts/files/package.json +8 -0
  192. package/registry/families/agent-service-ts/manifest.json +1 -4
  193. package/registry/families/agent-swarm-ts/files/package.json +31 -0
  194. package/registry/families/agent-swarm-ts/files/tsconfig.json +14 -0
  195. package/registry/families/agent-swarm-ts/files/validate-swarm.mjs +28 -0
  196. package/registry/families/agent-swarm-ts/manifest.json +174 -0
  197. package/registry/families/angular-ts/files/package.json +8 -0
  198. package/registry/families/aptos-move/files/README.md +45 -0
  199. package/registry/families/aptos-move/files/validate-aptos.mjs +33 -0
  200. package/registry/families/aptos-move/manifest.json +106 -0
  201. package/registry/families/arkworks-prover/files/Cargo.toml +25 -0
  202. package/registry/families/arkworks-prover/files/README.md +77 -0
  203. package/registry/families/arkworks-prover/files/rust-toolchain.toml +3 -0
  204. package/registry/families/arkworks-prover/files/src/circuit.rs +39 -0
  205. package/registry/families/arkworks-prover/files/src/main.rs +31 -0
  206. package/registry/families/arkworks-prover/files/src/prover.rs +47 -0
  207. package/registry/families/arkworks-prover/files/validate-arkworks.mjs +25 -0
  208. package/registry/families/arkworks-prover/manifest.json +84 -0
  209. package/registry/families/astro-static/files/package.json +28 -0
  210. package/registry/families/astro-static/files/tsconfig.json +5 -0
  211. package/registry/families/astro-static/files/validate-astro.mjs +26 -0
  212. package/registry/families/astro-static/manifest.json +141 -0
  213. package/registry/families/bevy-web/files/Cargo.toml +27 -0
  214. package/registry/families/bevy-web/files/Trunk.toml +20 -0
  215. package/registry/families/bevy-web/files/build.sh +32 -0
  216. package/registry/families/bevy-web/files/index.html +30 -0
  217. package/registry/families/bevy-web/files/validate-bevy-web.mjs +46 -0
  218. package/registry/families/bevy-web/manifest.json +171 -0
  219. package/registry/families/browser-extension-ts/files/package.json +3 -3
  220. package/registry/families/bun-http/files/bunfig.toml +9 -0
  221. package/registry/families/bun-http/files/package.json +23 -0
  222. package/registry/families/bun-http/files/tsconfig.json +16 -0
  223. package/registry/families/bun-http/files/validate-bun.mjs +21 -0
  224. package/registry/families/bun-http/manifest.json +163 -0
  225. package/registry/families/celestia-da/files/README.md +53 -0
  226. package/registry/families/celestia-da/files/validate-celestia.mjs +43 -0
  227. package/registry/families/celestia-da/manifest.json +117 -0
  228. package/registry/families/cli-ts/files/package.json +10 -2
  229. package/registry/families/cloudflare-worker-ts/files/package.json +8 -0
  230. package/registry/families/crm-backend/files/package.json +23 -0
  231. package/registry/families/crm-backend/files/tsconfig.json +14 -0
  232. package/registry/families/crm-backend/files/validate-crm.mjs +32 -0
  233. package/registry/families/crm-backend/manifest.json +132 -0
  234. package/registry/families/deno-edge/files/deno.json +17 -0
  235. package/registry/families/deno-edge/files/validate-deno.mjs +21 -0
  236. package/registry/families/deno-edge/manifest.json +153 -0
  237. package/registry/families/ecommerce-headless/files/package.json +24 -0
  238. package/registry/families/ecommerce-headless/files/tsconfig.json +14 -0
  239. package/registry/families/ecommerce-headless/files/validate-commerce.mjs +37 -0
  240. package/registry/families/ecommerce-headless/manifest.json +68 -0
  241. package/registry/families/electron-desktop-ts/files/package.json +10 -2
  242. package/registry/families/electron-native-os/files/package.json +35 -0
  243. package/registry/families/electron-native-os/files/preview-server.mjs +34 -0
  244. package/registry/families/electron-native-os/files/validate-types.mjs +39 -0
  245. package/registry/families/electron-native-os/manifest.json +200 -0
  246. package/registry/families/eleventy-static/files/.eleventy.js +16 -0
  247. package/registry/families/eleventy-static/files/package.json +23 -0
  248. package/registry/families/eleventy-static/files/validate-eleventy.mjs +25 -0
  249. package/registry/families/eleventy-static/manifest.json +106 -0
  250. package/registry/families/esp32-rust/files/Cargo.toml +47 -0
  251. package/registry/families/esp32-rust/files/build.rs +9 -0
  252. package/registry/families/esp32-rust/files/cargo-config.toml +22 -0
  253. package/registry/families/esp32-rust/files/rust-toolchain.toml +10 -0
  254. package/registry/families/esp32-rust/files/sdkconfig.defaults +28 -0
  255. package/registry/families/esp32-rust/files/validate-esp32.mjs +54 -0
  256. package/registry/families/esp32-rust/manifest.json +168 -0
  257. package/registry/families/expo-react-native-ts/files/package.json +11 -3
  258. package/registry/families/expo-rn-rich/files/package.json +37 -0
  259. package/registry/families/expo-rn-rich/files/validate-expo-rn-rich.mjs +43 -0
  260. package/registry/families/expo-rn-rich/manifest.json +181 -0
  261. package/registry/families/fintech-ledger-backend/files/package.json +30 -0
  262. package/registry/families/fintech-ledger-backend/files/tsconfig.json +14 -0
  263. package/registry/families/fintech-ledger-backend/files/validate-fintech.mjs +43 -0
  264. package/registry/families/fintech-ledger-backend/manifest.json +138 -0
  265. package/registry/families/flutter-app/files/analysis_options.yaml +17 -0
  266. package/registry/families/flutter-app/files/android/app/build.gradle +38 -0
  267. package/registry/families/flutter-app/files/ios/Runner/Info.plist +49 -0
  268. package/registry/families/flutter-app/files/pubspec.yaml +24 -0
  269. package/registry/families/flutter-app/files/validate-flutter.mjs +43 -0
  270. package/registry/families/flutter-app/manifest.json +189 -0
  271. package/registry/families/fraud-ops-console/files/.env.example +6 -0
  272. package/registry/families/fraud-ops-console/files/.gitkeep +0 -0
  273. package/registry/families/fraud-ops-console/files/README.md +43 -0
  274. package/registry/families/fraud-ops-console/files/index.html +12 -0
  275. package/registry/families/fraud-ops-console/files/package.json +37 -0
  276. package/registry/families/fraud-ops-console/files/src/App.tsx +19 -0
  277. package/registry/families/fraud-ops-console/files/src/main.tsx +9 -0
  278. package/registry/families/fraud-ops-console/files/tsconfig.json +12 -0
  279. package/registry/families/fraud-ops-console/files/validate-node.mjs +49 -0
  280. package/registry/families/fraud-ops-console/files/vite.config.ts +10 -0
  281. package/registry/families/fraud-ops-console/manifest.json +138 -0
  282. package/registry/families/frontend-static/files/package.json +8 -0
  283. package/registry/families/frontend-static/manifest.json +17 -0
  284. package/registry/families/fullstack-ts/files/package.json +10 -2
  285. package/registry/families/fullstack-ts/manifest.json +22 -0
  286. package/registry/families/gdpr-compliance-pack/files/docs/DPIA-template.md +55 -0
  287. package/registry/families/gdpr-compliance-pack/files/docs/GDPR-controls.md +65 -0
  288. package/registry/families/gdpr-compliance-pack/files/package.json +14 -0
  289. package/registry/families/gdpr-compliance-pack/files/src/components/CookieBanner.tsx +115 -0
  290. package/registry/families/gdpr-compliance-pack/files/src/consent.ts +71 -0
  291. package/registry/families/gdpr-compliance-pack/files/src/data-inventory.ts +94 -0
  292. package/registry/families/gdpr-compliance-pack/files/src/data-subject-rights.ts +98 -0
  293. package/registry/families/gdpr-compliance-pack/files/tsconfig.json +14 -0
  294. package/registry/families/gdpr-compliance-pack/files/validate-gdpr-pack.mjs +31 -0
  295. package/registry/families/gdpr-compliance-pack/manifest.json +56 -0
  296. package/registry/families/godot-web/files/README.md +71 -0
  297. package/registry/families/godot-web/files/export_presets.cfg +44 -0
  298. package/registry/families/godot-web/files/icon.svg +7 -0
  299. package/registry/families/godot-web/files/project.godot +28 -0
  300. package/registry/families/godot-web/files/validate-godot-web.mjs +46 -0
  301. package/registry/families/godot-web/manifest.json +172 -0
  302. package/registry/families/hardhat-contracts/files/package.json +10 -2
  303. package/registry/families/healthcare-hipaa-backend/files/package.json +29 -0
  304. package/registry/families/healthcare-hipaa-backend/files/tsconfig.json +15 -0
  305. package/registry/families/healthcare-hipaa-backend/files/validate-hipaa.mjs +35 -0
  306. package/registry/families/healthcare-hipaa-backend/manifest.json +145 -0
  307. package/registry/families/hipaa-compliance-pack/files/docs/BAA-template.md +60 -0
  308. package/registry/families/hipaa-compliance-pack/files/docs/HIPAA-controls.md +58 -0
  309. package/registry/families/hipaa-compliance-pack/files/package.json +14 -0
  310. package/registry/families/hipaa-compliance-pack/files/src/audit-log.ts +54 -0
  311. package/registry/families/hipaa-compliance-pack/files/src/encryption.ts +74 -0
  312. package/registry/families/hipaa-compliance-pack/files/src/phi-access.ts +83 -0
  313. package/registry/families/hipaa-compliance-pack/files/tsconfig.json +14 -0
  314. package/registry/families/hipaa-compliance-pack/files/validate-hipaa-pack.mjs +33 -0
  315. package/registry/families/hipaa-compliance-pack/manifest.json +63 -0
  316. package/registry/families/hls-origin/files/docker-compose.yml +32 -0
  317. package/registry/families/hls-origin/files/nginx.conf +68 -0
  318. package/registry/families/hls-origin/files/package.json +30 -0
  319. package/registry/families/hls-origin/files/start-stream.sh +58 -0
  320. package/registry/families/hls-origin/files/tsconfig.json +15 -0
  321. package/registry/families/hls-origin/files/validate-hls.mjs +50 -0
  322. package/registry/families/hls-origin/manifest.json +159 -0
  323. package/registry/families/hugo-static/files/config.toml +12 -0
  324. package/registry/families/hugo-static/files/validate-hugo.mjs +22 -0
  325. package/registry/families/hugo-static/manifest.json +99 -0
  326. package/registry/families/jupyter-book/files/_config.yml +26 -0
  327. package/registry/families/jupyter-book/files/_toc.yml +4 -0
  328. package/registry/families/jupyter-book/files/intro.md +16 -0
  329. package/registry/families/jupyter-book/files/requirements.txt +3 -0
  330. package/registry/families/jupyter-book/files/validate-jupyter-book.mjs +26 -0
  331. package/registry/families/jupyter-book/manifest.json +115 -0
  332. package/registry/families/k12-edtech/files/package.json +23 -0
  333. package/registry/families/k12-edtech/files/tsconfig.json +14 -0
  334. package/registry/families/k12-edtech/files/validate-k12.mjs +28 -0
  335. package/registry/families/k12-edtech/manifest.json +64 -0
  336. package/registry/families/kotlin-multiplatform/files/build.gradle.kts +67 -0
  337. package/registry/families/kotlin-multiplatform/files/gradle.properties +12 -0
  338. package/registry/families/kotlin-multiplatform/files/root-build.gradle.kts +12 -0
  339. package/registry/families/kotlin-multiplatform/files/settings.gradle.kts +30 -0
  340. package/registry/families/kotlin-multiplatform/files/validate-kmp.mjs +52 -0
  341. package/registry/families/kotlin-multiplatform/manifest.json +196 -0
  342. package/registry/families/kyc-onboarding/files/.env.example +6 -0
  343. package/registry/families/kyc-onboarding/files/.gitkeep +0 -0
  344. package/registry/families/kyc-onboarding/files/README.md +23 -0
  345. package/registry/families/kyc-onboarding/files/index.html +12 -0
  346. package/registry/families/kyc-onboarding/files/package.json +24 -0
  347. package/registry/families/kyc-onboarding/files/src/App.tsx +40 -0
  348. package/registry/families/kyc-onboarding/files/src/main.ts +12 -0
  349. package/registry/families/kyc-onboarding/files/tsconfig.json +17 -0
  350. package/registry/families/kyc-onboarding/files/validate-node.mjs +17 -0
  351. package/registry/families/kyc-onboarding/files/vite.config.ts +15 -0
  352. package/registry/families/kyc-onboarding/manifest.json +140 -0
  353. package/registry/families/legal-case-mgmt/files/package.json +24 -0
  354. package/registry/families/legal-case-mgmt/files/tsconfig.json +14 -0
  355. package/registry/families/legal-case-mgmt/files/validate-legal.mjs +12 -0
  356. package/registry/families/legal-case-mgmt/manifest.json +85 -0
  357. package/registry/families/livekit-sfu/files/.env.example +8 -0
  358. package/registry/families/livekit-sfu/files/docker-compose.yml +27 -0
  359. package/registry/families/livekit-sfu/files/livekit.yaml +30 -0
  360. package/registry/families/livekit-sfu/files/package.json +31 -0
  361. package/registry/families/livekit-sfu/files/tsconfig.json +15 -0
  362. package/registry/families/livekit-sfu/files/validate-livekit.mjs +46 -0
  363. package/registry/families/livekit-sfu/manifest.json +152 -0
  364. package/registry/families/lora-training/files/.env.example +8 -0
  365. package/registry/families/lora-training/files/README-lora.md +71 -0
  366. package/registry/families/lora-training/files/config/train.yaml +54 -0
  367. package/registry/families/lora-training/files/data/sample.jsonl +5 -0
  368. package/registry/families/lora-training/files/pyproject.toml +29 -0
  369. package/registry/families/lora-training/files/validate-lora.mjs +63 -0
  370. package/registry/families/lora-training/manifest.json +183 -0
  371. package/registry/families/move-contracts/files/validate-move.mjs +1 -1
  372. package/registry/families/move-contracts/manifest.json +0 -1
  373. package/registry/families/multimodal-agent/files/api/README.md +108 -0
  374. package/registry/families/multimodal-agent/files/index.html +105 -0
  375. package/registry/families/multimodal-agent/files/package.json +31 -0
  376. package/registry/families/multimodal-agent/files/tsconfig.json +15 -0
  377. package/registry/families/multimodal-agent/files/validate-multimodal.mjs +64 -0
  378. package/registry/families/multimodal-agent/files/vite.config.ts +15 -0
  379. package/registry/families/multimodal-agent/manifest.json +143 -0
  380. package/registry/families/nextjs-ts/files/package.json +15 -7
  381. package/registry/families/nextjs-ts/manifest.json +35 -0
  382. package/registry/families/nextjs-ts/prompt-fragment.md +12 -0
  383. package/registry/families/observable-notebook/files/index.md +23 -0
  384. package/registry/families/observable-notebook/files/observablehq.config.ts +15 -0
  385. package/registry/families/observable-notebook/files/package.json +26 -0
  386. package/registry/families/observable-notebook/files/tsconfig.json +13 -0
  387. package/registry/families/observable-notebook/files/validate-observable.mjs +24 -0
  388. package/registry/families/observable-notebook/manifest.json +110 -0
  389. package/registry/families/ollama-server/files/Modelfile +10 -0
  390. package/registry/families/ollama-server/files/README.md +32 -0
  391. package/registry/families/ollama-server/files/docker-compose.yml +23 -0
  392. package/registry/families/ollama-server/files/package.json +14 -0
  393. package/registry/families/ollama-server/files/tsconfig.json +13 -0
  394. package/registry/families/ollama-server/files/validate-ollama.mjs +19 -0
  395. package/registry/families/ollama-server/manifest.json +101 -0
  396. package/registry/families/pci-dss-compliance-pack/files/docs/PCI-DSS-controls.md +43 -0
  397. package/registry/families/pci-dss-compliance-pack/files/package.json +14 -0
  398. package/registry/families/pci-dss-compliance-pack/files/src/pan-redact.ts +50 -0
  399. package/registry/families/pci-dss-compliance-pack/files/src/tokenize.ts +39 -0
  400. package/registry/families/pci-dss-compliance-pack/files/tsconfig.json +14 -0
  401. package/registry/families/pci-dss-compliance-pack/files/validate-pci-pack.mjs +19 -0
  402. package/registry/families/pci-dss-compliance-pack/manifest.json +50 -0
  403. package/registry/families/phaser-game/files/index.html +17 -0
  404. package/registry/families/phaser-game/files/package.json +18 -0
  405. package/registry/families/phaser-game/files/tsconfig.json +15 -0
  406. package/registry/families/phaser-game/files/validate-phaser.mjs +19 -0
  407. package/registry/families/phaser-game/files/vite.config.ts +11 -0
  408. package/registry/families/phaser-game/manifest.json +91 -0
  409. package/registry/families/pixijs-game/files/index.html +16 -0
  410. package/registry/families/pixijs-game/files/package.json +18 -0
  411. package/registry/families/pixijs-game/files/tsconfig.json +13 -0
  412. package/registry/families/pixijs-game/files/validate-pixi.mjs +14 -0
  413. package/registry/families/pixijs-game/files/vite.config.ts +6 -0
  414. package/registry/families/pixijs-game/manifest.json +90 -0
  415. package/registry/families/playwright-worker/files/package.json +8 -0
  416. package/registry/families/polymarket-portfolio-hedging/files/.env.example +5 -0
  417. package/registry/families/polymarket-portfolio-hedging/files/.gitkeep +0 -0
  418. package/registry/families/polymarket-portfolio-hedging/files/README.md +37 -0
  419. package/registry/families/polymarket-portfolio-hedging/files/index.html +1 -0
  420. package/registry/families/polymarket-portfolio-hedging/files/package.json +32 -0
  421. package/registry/families/polymarket-portfolio-hedging/files/src/App.tsx +45 -0
  422. package/registry/families/polymarket-portfolio-hedging/files/src/main.tsx +9 -0
  423. package/registry/families/polymarket-portfolio-hedging/files/tsconfig.json +12 -0
  424. package/registry/families/polymarket-portfolio-hedging/files/validate-node.mjs +1 -0
  425. package/registry/families/polymarket-portfolio-hedging/files/vite.config.ts +10 -0
  426. package/registry/families/polymarket-portfolio-hedging/manifest.json +127 -0
  427. package/registry/families/python-api/manifest.json +1 -3
  428. package/registry/families/rag-pipeline-py/files/.env.example +20 -0
  429. package/registry/families/rag-pipeline-py/files/README-rag.md +57 -0
  430. package/registry/families/rag-pipeline-py/files/docs/sample.md +14 -0
  431. package/registry/families/rag-pipeline-py/files/pyproject.toml +26 -0
  432. package/registry/families/rag-pipeline-py/files/validate-rag.mjs +38 -0
  433. package/registry/families/rag-pipeline-py/manifest.json +174 -0
  434. package/registry/families/react-vite-ts/files/package.json +7 -7
  435. package/registry/families/react-vite-ts/manifest.json +31 -0
  436. package/registry/families/realtime-audio-ts/files/package.json +25 -0
  437. package/registry/families/realtime-audio-ts/files/validate-realtime-audio.mjs +43 -0
  438. package/registry/families/realtime-audio-ts/manifest.json +177 -0
  439. package/registry/families/remix-ts/files/package.json +7 -7
  440. package/registry/families/remix-ts/manifest.json +30 -0
  441. package/registry/families/risczero-zkvm/files/Cargo.toml +23 -0
  442. package/registry/families/risczero-zkvm/files/README.md +66 -0
  443. package/registry/families/risczero-zkvm/files/host/main.rs +25 -0
  444. package/registry/families/risczero-zkvm/files/host/prover.rs +48 -0
  445. package/registry/families/risczero-zkvm/files/host-Cargo.toml +16 -0
  446. package/registry/families/risczero-zkvm/files/methods/Cargo.toml +11 -0
  447. package/registry/families/risczero-zkvm/files/methods/build.rs +6 -0
  448. package/registry/families/risczero-zkvm/files/methods/guest/main.rs +38 -0
  449. package/registry/families/risczero-zkvm/files/methods/guest-Cargo.toml +12 -0
  450. package/registry/families/risczero-zkvm/files/methods/src-lib.rs +3 -0
  451. package/registry/families/risczero-zkvm/files/rust-toolchain.toml +3 -0
  452. package/registry/families/risczero-zkvm/files/validate-risczero.mjs +41 -0
  453. package/registry/families/risczero-zkvm/manifest.json +109 -0
  454. package/registry/families/ros2-node-py/files/README-ros2.md +46 -0
  455. package/registry/families/ros2-node-py/files/package.xml +28 -0
  456. package/registry/families/ros2-node-py/files/resource-marker +1 -0
  457. package/registry/families/ros2-node-py/files/setup.cfg +5 -0
  458. package/registry/families/ros2-node-py/files/setup.py +32 -0
  459. package/registry/families/ros2-node-py/files/validate-ros2-py.mjs +96 -0
  460. package/registry/families/ros2-node-py/manifest.json +197 -0
  461. package/registry/families/sglang-server/files/.env.example +21 -0
  462. package/registry/families/sglang-server/files/README-sglang.md +60 -0
  463. package/registry/families/sglang-server/files/client.py +87 -0
  464. package/registry/families/sglang-server/files/docker-compose.yml +46 -0
  465. package/registry/families/sglang-server/files/launch.sh +26 -0
  466. package/registry/families/sglang-server/files/requirements.txt +5 -0
  467. package/registry/families/sglang-server/files/validate-sglang.mjs +49 -0
  468. package/registry/families/sglang-server/manifest.json +182 -0
  469. package/registry/families/skypilot-serving/files/.env.example +12 -0
  470. package/registry/families/skypilot-serving/files/README-skypilot.md +73 -0
  471. package/registry/families/skypilot-serving/files/requirements.txt +5 -0
  472. package/registry/families/skypilot-serving/files/service.yaml +44 -0
  473. package/registry/families/skypilot-serving/files/sky-serve.yaml +25 -0
  474. package/registry/families/skypilot-serving/files/validate-skypilot.mjs +41 -0
  475. package/registry/families/skypilot-serving/manifest.json +181 -0
  476. package/registry/families/soc2-compliance-pack/files/docs/SOC2-controls.md +54 -0
  477. package/registry/families/soc2-compliance-pack/files/docs/incident-response.md +33 -0
  478. package/registry/families/soc2-compliance-pack/files/docs/vendor-attestations.md +36 -0
  479. package/registry/families/soc2-compliance-pack/files/package.json +14 -0
  480. package/registry/families/soc2-compliance-pack/files/src/audit.ts +46 -0
  481. package/registry/families/soc2-compliance-pack/files/src/change-mgmt.ts +36 -0
  482. package/registry/families/soc2-compliance-pack/files/tsconfig.json +14 -0
  483. package/registry/families/soc2-compliance-pack/files/validate-soc2-pack.mjs +25 -0
  484. package/registry/families/soc2-compliance-pack/manifest.json +60 -0
  485. package/registry/families/sp1-zkvm/files/Cargo.toml +18 -0
  486. package/registry/families/sp1-zkvm/files/README.md +68 -0
  487. package/registry/families/sp1-zkvm/files/program/main.rs +21 -0
  488. package/registry/families/sp1-zkvm/files/program-Cargo.toml +11 -0
  489. package/registry/families/sp1-zkvm/files/rust-toolchain.toml +3 -0
  490. package/registry/families/sp1-zkvm/files/script/main.rs +13 -0
  491. package/registry/families/sp1-zkvm/files/script/prover.rs +36 -0
  492. package/registry/families/sp1-zkvm/files/script-Cargo.toml +17 -0
  493. package/registry/families/sp1-zkvm/files/validate-sp1.mjs +30 -0
  494. package/registry/families/sp1-zkvm/manifest.json +92 -0
  495. package/registry/families/stm32-rust/files/Cargo.toml +69 -0
  496. package/registry/families/stm32-rust/files/Embed.toml +26 -0
  497. package/registry/families/stm32-rust/files/build.rs +24 -0
  498. package/registry/families/stm32-rust/files/cargo-config.toml +20 -0
  499. package/registry/families/stm32-rust/files/memory.x +25 -0
  500. package/registry/families/stm32-rust/files/validate-stm32.mjs +19 -0
  501. package/registry/families/stm32-rust/manifest.json +170 -0
  502. package/registry/families/streamlit-advanced/files/config.toml +12 -0
  503. package/registry/families/streamlit-advanced/files/requirements.txt +5 -0
  504. package/registry/families/streamlit-advanced/files/validate-streamlit.mjs +27 -0
  505. package/registry/families/streamlit-advanced/manifest.json +109 -0
  506. package/registry/families/tauri-desktop/files/package.json +6 -6
  507. package/registry/families/tauri-menubar/files/package.json +31 -0
  508. package/registry/families/tauri-menubar/files/preview-server.mjs +36 -0
  509. package/registry/families/tauri-menubar/files/validate-types.mjs +31 -0
  510. package/registry/families/tauri-menubar/manifest.json +174 -0
  511. package/registry/families/tauri-tray/files/package.json +23 -0
  512. package/registry/families/tauri-tray/files/preview-server.mjs +63 -0
  513. package/registry/families/tauri-tray/files/validate-types.mjs +27 -0
  514. package/registry/families/tauri-tray/manifest.json +174 -0
  515. package/registry/families/tgi-server/files/.env.example +22 -0
  516. package/registry/families/tgi-server/files/README-tgi.md +59 -0
  517. package/registry/families/tgi-server/files/client.py +78 -0
  518. package/registry/families/tgi-server/files/docker-compose.yml +46 -0
  519. package/registry/families/tgi-server/files/requirements.txt +3 -0
  520. package/registry/families/tgi-server/files/validate-tgi.mjs +44 -0
  521. package/registry/families/tgi-server/manifest.json +178 -0
  522. package/registry/families/threejs-game/files/index.html +16 -0
  523. package/registry/families/threejs-game/files/package.json +27 -0
  524. package/registry/families/threejs-game/files/tsconfig.json +13 -0
  525. package/registry/families/threejs-game/files/validate-threejs.mjs +32 -0
  526. package/registry/families/threejs-game/files/vite.config.ts +10 -0
  527. package/registry/families/threejs-game/manifest.json +164 -0
  528. package/registry/families/triton-server/files/README-triton.md +65 -0
  529. package/registry/families/triton-server/files/client.py +54 -0
  530. package/registry/families/triton-server/files/docker-compose.yml +41 -0
  531. package/registry/families/triton-server/files/model_repository/identity/1/.gitkeep +9 -0
  532. package/registry/families/triton-server/files/model_repository/identity/config.pbtxt +43 -0
  533. package/registry/families/triton-server/files/requirements.txt +2 -0
  534. package/registry/families/triton-server/files/validate-triton.mjs +53 -0
  535. package/registry/families/triton-server/manifest.json +190 -0
  536. package/registry/families/unity-web-proxy/files/Build/.gitkeep +17 -0
  537. package/registry/families/unity-web-proxy/files/README.md +68 -0
  538. package/registry/families/unity-web-proxy/files/package.json +24 -0
  539. package/registry/families/unity-web-proxy/files/scripts/build-webgl.sh +62 -0
  540. package/registry/families/unity-web-proxy/files/tsconfig.json +13 -0
  541. package/registry/families/unity-web-proxy/files/validate-unity.mjs +60 -0
  542. package/registry/families/unity-web-proxy/files/vite.config.ts +32 -0
  543. package/registry/families/unity-web-proxy/manifest.json +175 -0
  544. package/registry/families/vision-first-agent/files/api/README.md +92 -0
  545. package/registry/families/vision-first-agent/files/index.html +67 -0
  546. package/registry/families/vision-first-agent/files/package.json +24 -0
  547. package/registry/families/vision-first-agent/files/tsconfig.json +13 -0
  548. package/registry/families/vision-first-agent/files/validate-vision.mjs +48 -0
  549. package/registry/families/vision-first-agent/files/vite.config.ts +13 -0
  550. package/registry/families/vision-first-agent/manifest.json +142 -0
  551. package/registry/families/vllm-server/files/README-serving.md +60 -0
  552. package/registry/families/vllm-server/files/config.yaml +26 -0
  553. package/registry/families/vllm-server/files/requirements.txt +6 -0
  554. package/registry/families/vllm-server/files/validate-vllm.mjs +30 -0
  555. package/registry/families/vllm-server/manifest.json +165 -0
  556. package/registry/families/voice-first-agent/files/api/README.md +83 -0
  557. package/registry/families/voice-first-agent/files/index.html +59 -0
  558. package/registry/families/voice-first-agent/files/package.json +24 -0
  559. package/registry/families/voice-first-agent/files/tsconfig.json +13 -0
  560. package/registry/families/voice-first-agent/files/validate-voice.mjs +46 -0
  561. package/registry/families/voice-first-agent/files/vite.config.ts +16 -0
  562. package/registry/families/voice-first-agent/manifest.json +140 -0
  563. package/registry/families/wasm-rust/files/Cargo.toml +20 -0
  564. package/registry/families/wasm-rust/files/build-wasm.mjs +22 -0
  565. package/registry/families/wasm-rust/files/package.json +27 -0
  566. package/registry/families/wasm-rust/files/tsconfig.json +14 -0
  567. package/registry/families/wasm-rust/files/validate-wasm.mjs +30 -0
  568. package/registry/families/wasm-rust/files/vite.config.ts +11 -0
  569. package/registry/families/wasm-rust/manifest.json +156 -0
  570. package/registry/families/webgpu-inference/files/index.html +25 -0
  571. package/registry/families/webgpu-inference/files/package.json +24 -0
  572. package/registry/families/webgpu-inference/files/tsconfig.json +14 -0
  573. package/registry/families/webgpu-inference/files/validate-webgpu-inference.mjs +52 -0
  574. package/registry/families/webgpu-inference/files/vite.config.ts +13 -0
  575. package/registry/families/webgpu-inference/manifest.json +173 -0
  576. package/registry/families/webgpu-render/files/index.html +19 -0
  577. package/registry/families/webgpu-render/files/package.json +24 -0
  578. package/registry/families/webgpu-render/files/tsconfig.json +14 -0
  579. package/registry/families/webgpu-render/files/validate-webgpu-render.mjs +58 -0
  580. package/registry/families/webgpu-render/files/vite.config.ts +11 -0
  581. package/registry/families/webgpu-render/manifest.json +171 -0
  582. package/registry/families/zk-prover-service/manifest.json +2 -6
  583. package/registry/families/zola-static/files/config.toml +13 -0
  584. package/registry/families/zola-static/files/validate-zola.mjs +23 -0
  585. package/registry/families/zola-static/manifest.json +96 -0
  586. package/registry/layers/auth/better-auth/manifest.json +40 -18
  587. package/registry/layers/auth/clerk/manifest.json +40 -18
  588. package/registry/layers/auth/none/manifest.json +42 -18
  589. package/registry/layers/auth/supabase-auth/manifest.json +29 -18
  590. package/registry/layers/capability/agent-multi-agent/manifest.json +9 -9
  591. package/registry/layers/capability/ai-chat-ui/manifest.json +112 -1
  592. package/registry/layers/capability/banking-baas/files/banking-config.json +25 -0
  593. package/registry/layers/capability/banking-baas/files/banking.ts +125 -0
  594. package/registry/layers/capability/banking-baas/manifest.json +59 -0
  595. package/registry/layers/capability/chart-widget/manifest.json +69 -3
  596. package/registry/layers/capability/code-editor/files/code-editor.tsx +82 -0
  597. package/registry/layers/capability/code-editor/manifest.json +90 -0
  598. package/registry/layers/capability/date-utils/manifest.json +64 -0
  599. package/registry/layers/capability/evm-nft-mint-page/files/.gitkeep +0 -0
  600. package/registry/layers/capability/evm-nft-mint-page/files/evm-nft-mint.md +21 -0
  601. package/registry/layers/capability/evm-nft-mint-page/files/src/components/MintPage.tsx +38 -0
  602. package/registry/layers/capability/evm-nft-mint-page/files/src/mint-page-config.json +1 -0
  603. package/registry/layers/capability/evm-nft-mint-page/manifest.json +75 -0
  604. package/registry/layers/capability/evm-wallet-dashboard/manifest.json +6 -1
  605. package/registry/layers/capability/layout-admin/manifest.json +84 -14
  606. package/registry/layers/capability/layout-auth/manifest.json +12 -0
  607. package/registry/layers/capability/layout-chat/manifest.json +100 -14
  608. package/registry/layers/capability/layout-dashboard/manifest.json +0 -1
  609. package/registry/layers/capability/logging/manifest.json +10 -14
  610. package/registry/layers/capability/multi-tenancy/manifest.json +60 -0
  611. package/registry/layers/capability/passkey-onboarding/files/.gitkeep +0 -0
  612. package/registry/layers/capability/passkey-onboarding/files/passkey-onboarding.md +37 -0
  613. package/registry/layers/capability/passkey-onboarding/files/src/components/PasskeyRegister.tsx +25 -0
  614. package/registry/layers/capability/passkey-onboarding/files/src/components/PasskeySignIn.tsx +84 -0
  615. package/registry/layers/capability/passkey-onboarding/files/src/passkey-onboarding-config.json +1 -0
  616. package/registry/layers/capability/passkey-onboarding/manifest.json +78 -0
  617. package/registry/layers/capability/routing/files/router.tsx +63 -0
  618. package/registry/layers/capability/routing/files/routing-notes.md +33 -0
  619. package/registry/layers/capability/routing/manifest.json +66 -0
  620. package/registry/layers/capability/saas-billing/manifest.json +5 -0
  621. package/registry/layers/capability/shadcn/files/breadcrumb.tsx +1 -1
  622. package/registry/layers/capability/shadcn/files/collapsible.tsx +50 -0
  623. package/registry/layers/capability/shadcn/files/popover.tsx +54 -0
  624. package/registry/layers/capability/shadcn/manifest.json +22 -1
  625. package/registry/layers/capability/stripe-checkout-onetime/files/checkout.ts +60 -0
  626. package/registry/layers/capability/stripe-checkout-onetime/manifest.json +36 -0
  627. package/registry/layers/capability/stripe-connect/files/connect-api.ts +57 -0
  628. package/registry/layers/capability/stripe-connect/files/connect-config.json +8 -0
  629. package/registry/layers/capability/stripe-connect/manifest.json +40 -0
  630. package/registry/layers/capability/stripe-metered/files/metered.ts +43 -0
  631. package/registry/layers/capability/stripe-metered/manifest.json +35 -0
  632. package/registry/layers/capability/tailwind/manifest.json +13 -1
  633. package/registry/layers/capability/tangle-gpu-provider/files/gpu-config.json +14 -0
  634. package/registry/layers/capability/tangle-gpu-provider/manifest.json +34 -0
  635. package/registry/layers/capability/tangle-mpp/files/mpp-config.json +18 -0
  636. package/registry/layers/capability/tangle-mpp/manifest.json +30 -0
  637. package/registry/layers/capability/tangle-remote-provider/files/remote-config.json +28 -0
  638. package/registry/layers/capability/tangle-remote-provider/manifest.json +29 -0
  639. package/registry/layers/capability/tangle-tee/files/tee-config.json +20 -0
  640. package/registry/layers/capability/tangle-tee/manifest.json +31 -0
  641. package/registry/layers/capability/tangle-x402/files/x402-config.json +11 -0
  642. package/registry/layers/capability/tangle-x402/manifest.json +24 -0
  643. package/registry/layers/capability/webhook-processor/manifest.json +10 -14
  644. package/registry/layers/capability/webrtc/manifest.json +79 -10
  645. package/registry/layers/capability/zk-browser/files/mixer-deposit-panel.tsx +64 -0
  646. package/registry/layers/capability/zk-browser/files/mixer-merkle-panel.tsx +41 -0
  647. package/registry/layers/capability/zk-browser/files/mixer-note.ts +90 -0
  648. package/registry/layers/capability/zk-browser/files/mixer-verify-panel.tsx +66 -0
  649. package/registry/layers/capability/zk-browser/files/mixer-withdraw-panel.tsx +105 -0
  650. package/registry/layers/capability/zk-browser/files/zk-circuits.md +73 -0
  651. package/registry/layers/capability/zk-browser/files/zkproof.ts +94 -0
  652. package/registry/layers/capability/zk-browser/manifest.json +112 -0
  653. package/registry/layers/capability/zk-gnark/files/circuit.go +28 -0
  654. package/registry/layers/capability/zk-gnark/files/gnark-notes.md +80 -0
  655. package/registry/layers/capability/zk-gnark/files/prover.go +70 -0
  656. package/registry/layers/capability/zk-gnark/manifest.json +63 -0
  657. package/registry/layers/capability/zk-noir/files/circuits/Nargo.toml +7 -0
  658. package/registry/layers/capability/zk-noir/files/circuits/main.nr +22 -0
  659. package/registry/layers/capability/zk-noir/files/noir-notes.md +72 -0
  660. package/registry/layers/capability/zk-noir/files/prover.ts +53 -0
  661. package/registry/layers/capability/zk-noir/manifest.json +72 -0
  662. package/registry/layers/database/convex/manifest.json +12 -9
  663. package/registry/layers/database/mongodb/manifest.json +12 -9
  664. package/registry/layers/database/postgres/manifest.json +18 -9
  665. package/registry/layers/database/sqlite/manifest.json +18 -9
  666. package/registry/layers/framework/agent-swarm-ts/files/researcher.ts +30 -0
  667. package/registry/layers/framework/agent-swarm-ts/files/server.ts +35 -0
  668. package/registry/layers/framework/agent-swarm-ts/files/state.ts +33 -0
  669. package/registry/layers/framework/agent-swarm-ts/files/supervisor.ts +31 -0
  670. package/registry/layers/framework/agent-swarm-ts/files/writer.ts +27 -0
  671. package/registry/layers/framework/agent-swarm-ts/manifest.json +27 -0
  672. package/registry/layers/framework/aptos-move/files/AGENTS.md +58 -0
  673. package/registry/layers/framework/aptos-move/files/Move.toml +10 -0
  674. package/registry/layers/framework/aptos-move/files/module.move +46 -0
  675. package/registry/layers/framework/aptos-move/files/package.json +9 -0
  676. package/registry/layers/framework/aptos-move/files/scripts/deploy.sh +21 -0
  677. package/registry/layers/framework/aptos-move/files/test.move +30 -0
  678. package/registry/layers/framework/aptos-move/manifest.json +88 -0
  679. package/registry/layers/framework/arkworks-prover/manifest.json +6 -0
  680. package/registry/layers/framework/astro-static/files/astro.config.mjs +9 -0
  681. package/registry/layers/framework/astro-static/files/src/env.d.ts +1 -0
  682. package/registry/layers/framework/astro-static/files/src/layouts/Base.astro +33 -0
  683. package/registry/layers/framework/astro-static/files/src/pages/index.astro +18 -0
  684. package/registry/layers/framework/astro-static/manifest.json +75 -0
  685. package/registry/layers/framework/bevy-web/files/src/main.rs +79 -0
  686. package/registry/layers/framework/bevy-web/manifest.json +48 -0
  687. package/registry/layers/framework/bun-http/files/handlers.ts +25 -0
  688. package/registry/layers/framework/bun-http/files/server.ts +15 -0
  689. package/registry/layers/framework/bun-http/manifest.json +15 -0
  690. package/registry/layers/framework/celestia-da/files/AGENTS.md +70 -0
  691. package/registry/layers/framework/celestia-da/files/cmd/celestia-node/main.go +146 -0
  692. package/registry/layers/framework/celestia-da/files/config.toml +32 -0
  693. package/registry/layers/framework/celestia-da/files/docker-compose.yml +30 -0
  694. package/registry/layers/framework/celestia-da/files/go.mod +3 -0
  695. package/registry/layers/framework/celestia-da/files/go.sum +0 -0
  696. package/registry/layers/framework/celestia-da/files/submit-blob.sh +54 -0
  697. package/registry/layers/framework/celestia-da/manifest.json +65 -0
  698. package/registry/layers/framework/crm-backend/files/contacts.ts +93 -0
  699. package/registry/layers/framework/crm-backend/files/db.ts +8 -0
  700. package/registry/layers/framework/crm-backend/files/drizzle.config.ts +9 -0
  701. package/registry/layers/framework/crm-backend/files/package.json +22 -0
  702. package/registry/layers/framework/crm-backend/files/pipeline.ts +158 -0
  703. package/registry/layers/framework/crm-backend/files/reporting.ts +69 -0
  704. package/registry/layers/framework/crm-backend/files/schema.ts +146 -0
  705. package/registry/layers/framework/crm-backend/files/server.ts +42 -0
  706. package/registry/layers/framework/crm-backend/manifest.json +89 -0
  707. package/registry/layers/framework/deno-edge/files/handlers.ts +24 -0
  708. package/registry/layers/framework/deno-edge/files/server.ts +12 -0
  709. package/registry/layers/framework/deno-edge/manifest.json +15 -0
  710. package/registry/layers/framework/ecommerce-headless/files/.env.example +12 -0
  711. package/registry/layers/framework/ecommerce-headless/files/AGENTS.md +57 -0
  712. package/registry/layers/framework/ecommerce-headless/files/cart.ts +119 -0
  713. package/registry/layers/framework/ecommerce-headless/files/checkout.ts +113 -0
  714. package/registry/layers/framework/ecommerce-headless/files/db.ts +8 -0
  715. package/registry/layers/framework/ecommerce-headless/files/drizzle.config.ts +9 -0
  716. package/registry/layers/framework/ecommerce-headless/files/package.json +23 -0
  717. package/registry/layers/framework/ecommerce-headless/files/products.ts +33 -0
  718. package/registry/layers/framework/ecommerce-headless/files/schema.ts +160 -0
  719. package/registry/layers/framework/ecommerce-headless/files/server.ts +43 -0
  720. package/registry/layers/framework/ecommerce-headless/files/stripe-webhook.ts +148 -0
  721. package/registry/layers/framework/ecommerce-headless/files/tsconfig.json +14 -0
  722. package/registry/layers/framework/ecommerce-headless/manifest.json +81 -0
  723. package/registry/layers/framework/electron-native-os/files/App.tsx +87 -0
  724. package/registry/layers/framework/electron-native-os/files/deeplinks.ts +59 -0
  725. package/registry/layers/framework/electron-native-os/files/electron-builder.json +39 -0
  726. package/registry/layers/framework/electron-native-os/files/electron.vite.config.ts +14 -0
  727. package/registry/layers/framework/electron-native-os/files/index.ts +119 -0
  728. package/registry/layers/framework/electron-native-os/files/menu.ts +99 -0
  729. package/registry/layers/framework/electron-native-os/files/package.json +30 -0
  730. package/registry/layers/framework/electron-native-os/files/preload.ts +33 -0
  731. package/registry/layers/framework/electron-native-os/files/protocol.ts +56 -0
  732. package/registry/layers/framework/electron-native-os/files/renderer-index.html +14 -0
  733. package/registry/layers/framework/electron-native-os/files/renderer-main.tsx +12 -0
  734. package/registry/layers/framework/electron-native-os/files/styles.css +72 -0
  735. package/registry/layers/framework/electron-native-os/files/tsconfig.json +14 -0
  736. package/registry/layers/framework/electron-native-os/files/updater.ts +29 -0
  737. package/registry/layers/framework/electron-native-os/manifest.json +121 -0
  738. package/registry/layers/framework/eleventy-static/files/base.njk +23 -0
  739. package/registry/layers/framework/eleventy-static/files/index.md +11 -0
  740. package/registry/layers/framework/eleventy-static/files/src/assets/.gitkeep +0 -0
  741. package/registry/layers/framework/eleventy-static/manifest.json +75 -0
  742. package/registry/layers/framework/esp32-rust/files/.cargo/config.toml +3 -0
  743. package/registry/layers/framework/esp32-rust/files/Cargo.toml +11 -0
  744. package/registry/layers/framework/esp32-rust/files/README.md +51 -0
  745. package/registry/layers/framework/esp32-rust/files/build.rs +1 -0
  746. package/registry/layers/framework/esp32-rust/files/rust-toolchain.toml +2 -0
  747. package/registry/layers/framework/esp32-rust/files/src/main.rs +16 -0
  748. package/registry/layers/framework/esp32-rust/manifest.json +48 -0
  749. package/registry/layers/framework/expo-rn-rich/files/App.tsx +28 -0
  750. package/registry/layers/framework/expo-rn-rich/files/CanvasScreen.tsx +84 -0
  751. package/registry/layers/framework/expo-rn-rich/files/HomeScreen.tsx +43 -0
  752. package/registry/layers/framework/expo-rn-rich/files/RootNavigator.tsx +37 -0
  753. package/registry/layers/framework/expo-rn-rich/files/app.json +27 -0
  754. package/registry/layers/framework/expo-rn-rich/files/babel.config.js +10 -0
  755. package/registry/layers/framework/expo-rn-rich/files/metro.config.cjs +9 -0
  756. package/registry/layers/framework/expo-rn-rich/files/metro.config.js +14 -0
  757. package/registry/layers/framework/expo-rn-rich/files/tsconfig.json +12 -0
  758. package/registry/layers/framework/expo-rn-rich/manifest.json +101 -0
  759. package/registry/layers/framework/fintech-ledger-backend/files/db.ts +10 -0
  760. package/registry/layers/framework/fintech-ledger-backend/files/drizzle.config.ts +9 -0
  761. package/registry/layers/framework/fintech-ledger-backend/files/ledger/query.ts +66 -0
  762. package/registry/layers/framework/fintech-ledger-backend/files/money.ts +32 -0
  763. package/registry/layers/framework/fintech-ledger-backend/files/post.ts +141 -0
  764. package/registry/layers/framework/fintech-ledger-backend/files/schema.ts +87 -0
  765. package/registry/layers/framework/fintech-ledger-backend/files/server.ts +26 -0
  766. package/registry/layers/framework/fintech-ledger-backend/files/transactions-api.ts +59 -0
  767. package/registry/layers/framework/fintech-ledger-backend/files/tsconfig.json +17 -0
  768. package/registry/layers/framework/fintech-ledger-backend/manifest.json +82 -0
  769. package/registry/layers/framework/flutter-app/files/main.dart +189 -0
  770. package/registry/layers/framework/flutter-app/manifest.json +15 -0
  771. package/registry/layers/framework/forge-foundation/files/foundry.toml +4 -15
  772. package/registry/layers/framework/fraud-ops-console/manifest.json +8 -0
  773. package/registry/layers/framework/gdpr-compliance-pack/files/AGENTS.md +40 -0
  774. package/registry/layers/framework/gdpr-compliance-pack/files/package.json +19 -0
  775. package/registry/layers/framework/gdpr-compliance-pack/files/tsconfig.json +14 -0
  776. package/registry/layers/framework/gdpr-compliance-pack/manifest.json +60 -0
  777. package/registry/layers/framework/godot-web/files/export/web/.gitkeep +0 -0
  778. package/registry/layers/framework/godot-web/files/export_presets.cfg +5 -0
  779. package/registry/layers/framework/godot-web/files/exports/web/.gitkeep +0 -0
  780. package/registry/layers/framework/godot-web/files/package.json +15 -0
  781. package/registry/layers/framework/godot-web/files/project.godot +5 -0
  782. package/registry/layers/framework/godot-web/files/scenes/main.tscn +19 -0
  783. package/registry/layers/framework/godot-web/files/scripts/main.gd +29 -0
  784. package/registry/layers/framework/godot-web/files/src/main.ts +2 -0
  785. package/registry/layers/framework/godot-web/files/tsconfig.json +11 -0
  786. package/registry/layers/framework/godot-web/manifest.json +62 -0
  787. package/registry/layers/framework/healthcare-hipaa-backend/files/db.ts +13 -0
  788. package/registry/layers/framework/healthcare-hipaa-backend/files/drizzle.config.ts +11 -0
  789. package/registry/layers/framework/healthcare-hipaa-backend/files/encounters.ts +89 -0
  790. package/registry/layers/framework/healthcare-hipaa-backend/files/encryption.ts +69 -0
  791. package/registry/layers/framework/healthcare-hipaa-backend/files/hipaa.md +65 -0
  792. package/registry/layers/framework/healthcare-hipaa-backend/files/package.json +22 -0
  793. package/registry/layers/framework/healthcare-hipaa-backend/files/patients.ts +86 -0
  794. package/registry/layers/framework/healthcare-hipaa-backend/files/phi-access.ts +85 -0
  795. package/registry/layers/framework/healthcare-hipaa-backend/files/schema.ts +82 -0
  796. package/registry/layers/framework/healthcare-hipaa-backend/files/server.ts +43 -0
  797. package/registry/layers/framework/healthcare-hipaa-backend/files/tsconfig.json +15 -0
  798. package/registry/layers/framework/healthcare-hipaa-backend/manifest.json +138 -0
  799. package/registry/layers/framework/hipaa-compliance-pack/files/AGENTS.md +39 -0
  800. package/registry/layers/framework/hipaa-compliance-pack/files/docs/BAA-template.md +60 -0
  801. package/registry/layers/framework/hipaa-compliance-pack/files/docs/HIPAA-controls.md +58 -0
  802. package/registry/layers/framework/hipaa-compliance-pack/files/package.json +14 -0
  803. package/registry/layers/framework/hipaa-compliance-pack/files/src/audit-log.ts +54 -0
  804. package/registry/layers/framework/hipaa-compliance-pack/files/src/encryption.ts +74 -0
  805. package/registry/layers/framework/hipaa-compliance-pack/files/src/phi-access.ts +83 -0
  806. package/registry/layers/framework/hipaa-compliance-pack/files/tsconfig.json +14 -0
  807. package/registry/layers/framework/hipaa-compliance-pack/files/validate-hipaa-pack.mjs +33 -0
  808. package/registry/layers/framework/hipaa-compliance-pack/manifest.json +56 -0
  809. package/registry/layers/framework/hls-origin/files/server.ts +83 -0
  810. package/registry/layers/framework/hls-origin/manifest.json +72 -0
  811. package/registry/layers/framework/hugo-static/files/_index.md +18 -0
  812. package/registry/layers/framework/hugo-static/files/baseof.html +22 -0
  813. package/registry/layers/framework/hugo-static/files/index.html +13 -0
  814. package/registry/layers/framework/hugo-static/files/package.json +13 -0
  815. package/registry/layers/framework/hugo-static/manifest.json +70 -0
  816. package/registry/layers/framework/jupyter-book/files/chapter-1.md +30 -0
  817. package/registry/layers/framework/jupyter-book/manifest.json +63 -0
  818. package/registry/layers/framework/k12-edtech/files/README.md +79 -0
  819. package/registry/layers/framework/k12-edtech/files/classroom.ts +119 -0
  820. package/registry/layers/framework/k12-edtech/files/db.ts +8 -0
  821. package/registry/layers/framework/k12-edtech/files/drizzle.config.ts +9 -0
  822. package/registry/layers/framework/k12-edtech/files/gradebook.ts +161 -0
  823. package/registry/layers/framework/k12-edtech/files/schema.ts +171 -0
  824. package/registry/layers/framework/k12-edtech/files/server.ts +58 -0
  825. package/registry/layers/framework/k12-edtech/files/tsconfig.json +15 -0
  826. package/registry/layers/framework/k12-edtech/manifest.json +105 -0
  827. package/registry/layers/framework/kotlin-multiplatform/files/AGENTS.md +67 -0
  828. package/registry/layers/framework/kotlin-multiplatform/files/App.kt +46 -0
  829. package/registry/layers/framework/kotlin-multiplatform/files/Platform.android.kt +5 -0
  830. package/registry/layers/framework/kotlin-multiplatform/files/Platform.ios.kt +6 -0
  831. package/registry/layers/framework/kotlin-multiplatform/files/build.gradle.kts +3 -0
  832. package/registry/layers/framework/kotlin-multiplatform/files/pom.xml +38 -0
  833. package/registry/layers/framework/kotlin-multiplatform/files/settings.gradle.kts +7 -0
  834. package/registry/layers/framework/kotlin-multiplatform/files/src/commonMain/kotlin/App.kt +3 -0
  835. package/registry/layers/framework/kotlin-multiplatform/manifest.json +74 -0
  836. package/registry/layers/framework/kyc-onboarding/manifest.json +8 -0
  837. package/registry/layers/framework/legal-case-mgmt/files/.env.example +5 -0
  838. package/registry/layers/framework/legal-case-mgmt/files/AGENTS.md +62 -0
  839. package/registry/layers/framework/legal-case-mgmt/files/billing.ts +130 -0
  840. package/registry/layers/framework/legal-case-mgmt/files/db.ts +8 -0
  841. package/registry/layers/framework/legal-case-mgmt/files/drizzle.config.ts +9 -0
  842. package/registry/layers/framework/legal-case-mgmt/files/matter.ts +111 -0
  843. package/registry/layers/framework/legal-case-mgmt/files/package.json +23 -0
  844. package/registry/layers/framework/legal-case-mgmt/files/schema.ts +148 -0
  845. package/registry/layers/framework/legal-case-mgmt/files/server.ts +50 -0
  846. package/registry/layers/framework/legal-case-mgmt/files/tsconfig.json +16 -0
  847. package/registry/layers/framework/legal-case-mgmt/files/validate-legal.mjs +26 -0
  848. package/registry/layers/framework/legal-case-mgmt/manifest.json +79 -0
  849. package/registry/layers/framework/livekit-sfu/files/AGENTS.md +76 -0
  850. package/registry/layers/framework/livekit-sfu/files/server.ts +84 -0
  851. package/registry/layers/framework/livekit-sfu/manifest.json +67 -0
  852. package/registry/layers/framework/lora-training/files/infer.py +102 -0
  853. package/registry/layers/framework/lora-training/files/pyrightconfig.json +8 -0
  854. package/registry/layers/framework/lora-training/files/train.py +174 -0
  855. package/registry/layers/framework/lora-training/manifest.json +78 -0
  856. package/registry/layers/framework/move-package/files/Move.toml +20 -1
  857. package/registry/layers/framework/move-package/files/module.move +1 -1
  858. package/registry/layers/framework/move-package/files/test.move +4 -6
  859. package/registry/layers/framework/multimodal-agent/files/App.tsx +219 -0
  860. package/registry/layers/framework/multimodal-agent/files/main.tsx +12 -0
  861. package/registry/layers/framework/multimodal-agent/manifest.json +60 -0
  862. package/registry/layers/framework/observable-notebook/files/data/rows.json.ts +11 -0
  863. package/registry/layers/framework/observable-notebook/files/overview.md +28 -0
  864. package/registry/layers/framework/observable-notebook/files/src/observablehq.d.ts +12 -0
  865. package/registry/layers/framework/observable-notebook/files/tsconfig.json +13 -0
  866. package/registry/layers/framework/observable-notebook/manifest.json +55 -0
  867. package/registry/layers/framework/ollama-server/files/.env.example +6 -0
  868. package/registry/layers/framework/ollama-server/files/src/client.ts +52 -0
  869. package/registry/layers/framework/ollama-server/manifest.json +52 -0
  870. package/registry/layers/framework/pci-dss-compliance-pack/files/AGENTS.md +52 -0
  871. package/registry/layers/framework/pci-dss-compliance-pack/files/README.md +51 -0
  872. package/registry/layers/framework/pci-dss-compliance-pack/files/src/index.ts +3 -0
  873. package/registry/layers/framework/pci-dss-compliance-pack/manifest.json +50 -0
  874. package/registry/layers/framework/phaser-game/files/src/main.ts +19 -0
  875. package/registry/layers/framework/phaser-game/files/src/scenes/MainScene.ts +38 -0
  876. package/registry/layers/framework/phaser-game/manifest.json +55 -0
  877. package/registry/layers/framework/pixijs-game/files/src/main.ts +49 -0
  878. package/registry/layers/framework/pixijs-game/files/src/vite-env.d.ts +1 -0
  879. package/registry/layers/framework/pixijs-game/manifest.json +51 -0
  880. package/registry/layers/framework/polymarket-portfolio-hedging/manifest.json +8 -0
  881. package/registry/layers/framework/rag-pipeline-py/files/AGENTS.md +55 -0
  882. package/registry/layers/framework/rag-pipeline-py/files/__init__.py +1 -0
  883. package/registry/layers/framework/rag-pipeline-py/files/pipeline.py +220 -0
  884. package/registry/layers/framework/rag-pipeline-py/manifest.json +56 -0
  885. package/registry/layers/framework/react-vite-ts/files/App.tsx +9 -72
  886. package/registry/layers/framework/realtime-audio-ts/files/audio.ts +75 -0
  887. package/registry/layers/framework/realtime-audio-ts/files/index.html +34 -0
  888. package/registry/layers/framework/realtime-audio-ts/files/main.ts +93 -0
  889. package/registry/layers/framework/realtime-audio-ts/files/peer.ts +68 -0
  890. package/registry/layers/framework/realtime-audio-ts/files/styles.css +59 -0
  891. package/registry/layers/framework/realtime-audio-ts/files/tsconfig.json +12 -0
  892. package/registry/layers/framework/realtime-audio-ts/files/visualizer.ts +59 -0
  893. package/registry/layers/framework/realtime-audio-ts/files/vite.config.ts +16 -0
  894. package/registry/layers/framework/realtime-audio-ts/manifest.json +54 -0
  895. package/registry/layers/framework/risczero-zkvm/manifest.json +6 -0
  896. package/registry/layers/framework/ros2-node-py/files/AGENTS.md +58 -0
  897. package/registry/layers/framework/ros2-node-py/files/__init__.py +0 -0
  898. package/registry/layers/framework/ros2-node-py/files/bringup.launch.py +23 -0
  899. package/registry/layers/framework/ros2-node-py/files/minimal_publisher.py +43 -0
  900. package/registry/layers/framework/ros2-node-py/files/minimal_subscriber.py +36 -0
  901. package/registry/layers/framework/ros2-node-py/files/my_node.py +24 -0
  902. package/registry/layers/framework/ros2-node-py/files/setup.py +28 -0
  903. package/registry/layers/framework/ros2-node-py/manifest.json +90 -0
  904. package/registry/layers/framework/sglang-server/files/Makefile +22 -0
  905. package/registry/layers/framework/sglang-server/files/README.md +56 -0
  906. package/registry/layers/framework/sglang-server/files/__init__.py +1 -0
  907. package/registry/layers/framework/sglang-server/files/pyproject.toml +30 -0
  908. package/registry/layers/framework/sglang-server/manifest.json +62 -0
  909. package/registry/layers/framework/skypilot-serving/files/AGENTS.md +85 -0
  910. package/registry/layers/framework/skypilot-serving/manifest.json +68 -0
  911. package/registry/layers/framework/soc2-compliance-pack/files/AGENTS.md +46 -0
  912. package/registry/layers/framework/soc2-compliance-pack/files/README.md +61 -0
  913. package/registry/layers/framework/soc2-compliance-pack/files/src/index.ts +3 -0
  914. package/registry/layers/framework/soc2-compliance-pack/manifest.json +52 -0
  915. package/registry/layers/framework/sp1-zkvm/manifest.json +6 -0
  916. package/registry/layers/framework/stm32-rust/files/.cargo/config.toml +9 -0
  917. package/registry/layers/framework/stm32-rust/files/Embed.toml +27 -0
  918. package/registry/layers/framework/stm32-rust/files/rust-toolchain.toml +3 -0
  919. package/registry/layers/framework/stm32-rust/files/src/main.rs +54 -0
  920. package/registry/layers/framework/stm32-rust/manifest.json +66 -0
  921. package/registry/layers/framework/streamlit-advanced/files/.env.example +3 -0
  922. package/registry/layers/framework/streamlit-advanced/files/README.md +58 -0
  923. package/registry/layers/framework/streamlit-advanced/files/analysis.py +40 -0
  924. package/registry/layers/framework/streamlit-advanced/files/app.py +76 -0
  925. package/registry/layers/framework/streamlit-advanced/manifest.json +60 -0
  926. package/registry/layers/framework/tangle-blueprint/files/lib.rs +29 -15
  927. package/registry/layers/framework/tauri-menubar/README.md +54 -0
  928. package/registry/layers/framework/tauri-menubar/files/App.tsx +65 -0
  929. package/registry/layers/framework/tauri-menubar/files/Cargo.toml +18 -0
  930. package/registry/layers/framework/tauri-menubar/files/build.rs +3 -0
  931. package/registry/layers/framework/tauri-menubar/files/index.html +13 -0
  932. package/registry/layers/framework/tauri-menubar/files/lib.rs +75 -0
  933. package/registry/layers/framework/tauri-menubar/files/main.rs +7 -0
  934. package/registry/layers/framework/tauri-menubar/files/main.tsx +14 -0
  935. package/registry/layers/framework/tauri-menubar/files/styles.css +112 -0
  936. package/registry/layers/framework/tauri-menubar/files/tauri.conf.json +45 -0
  937. package/registry/layers/framework/tauri-menubar/files/tsconfig.json +13 -0
  938. package/registry/layers/framework/tauri-menubar/files/vite.config.ts +18 -0
  939. package/registry/layers/framework/tauri-menubar/manifest.json +92 -0
  940. package/registry/layers/framework/tauri-tray/files/Cargo.toml +19 -0
  941. package/registry/layers/framework/tauri-tray/files/build.rs +3 -0
  942. package/registry/layers/framework/tauri-tray/files/lib.rs +89 -0
  943. package/registry/layers/framework/tauri-tray/files/main.rs +5 -0
  944. package/registry/layers/framework/tauri-tray/files/src/main.ts +1 -0
  945. package/registry/layers/framework/tauri-tray/files/src/tray.ts +5 -0
  946. package/registry/layers/framework/tauri-tray/files/tauri.conf.json +28 -0
  947. package/registry/layers/framework/tauri-tray/files/tsconfig.json +11 -0
  948. package/registry/layers/framework/tauri-tray/manifest.json +80 -0
  949. package/registry/layers/framework/tgi-server/files/pyproject.toml +20 -0
  950. package/registry/layers/framework/tgi-server/files/src/__init__.py +1 -0
  951. package/registry/layers/framework/tgi-server/files/src/main.py +50 -0
  952. package/registry/layers/framework/tgi-server/manifest.json +41 -0
  953. package/registry/layers/framework/threejs-game/files/src/main.ts +62 -0
  954. package/registry/layers/framework/threejs-game/files/src/vite-env.d.ts +1 -0
  955. package/registry/layers/framework/threejs-game/manifest.json +50 -0
  956. package/registry/layers/framework/triton-server/files/AGENTS.md +71 -0
  957. package/registry/layers/framework/triton-server/files/Makefile +25 -0
  958. package/registry/layers/framework/triton-server/files/__init__.py +1 -0
  959. package/registry/layers/framework/triton-server/files/pyproject.toml +33 -0
  960. package/registry/layers/framework/triton-server/manifest.json +70 -0
  961. package/registry/layers/framework/unity-web-proxy/files/index.html +104 -0
  962. package/registry/layers/framework/unity-web-proxy/manifest.json +63 -0
  963. package/registry/layers/framework/vision-first-agent/files/main.ts +143 -0
  964. package/registry/layers/framework/vision-first-agent/files/vite-env.d.ts +1 -0
  965. package/registry/layers/framework/vision-first-agent/manifest.json +47 -0
  966. package/registry/layers/framework/vllm-server/files/__init__.py +0 -0
  967. package/registry/layers/framework/vllm-server/files/server.py +134 -0
  968. package/registry/layers/framework/vllm-server/manifest.json +15 -0
  969. package/registry/layers/framework/voice-first-agent/files/main.ts +160 -0
  970. package/registry/layers/framework/voice-first-agent/files/vite-env.d.ts +1 -0
  971. package/registry/layers/framework/voice-first-agent/manifest.json +48 -0
  972. package/registry/layers/framework/wasm-rust/files/index.html +12 -0
  973. package/registry/layers/framework/wasm-rust/files/lib.rs +43 -0
  974. package/registry/layers/framework/wasm-rust/files/main.ts +24 -0
  975. package/registry/layers/framework/wasm-rust/files/pkg/starter_foundry_wasm.d.ts +7 -0
  976. package/registry/layers/framework/wasm-rust/manifest.json +23 -0
  977. package/registry/layers/framework/webgpu-inference/files/src/main.ts +167 -0
  978. package/registry/layers/framework/webgpu-inference/files/src/shaders/matmul.wgsl +30 -0
  979. package/registry/layers/framework/webgpu-inference/manifest.json +55 -0
  980. package/registry/layers/framework/webgpu-render/files/src/main.ts +113 -0
  981. package/registry/layers/framework/webgpu-render/files/src/shaders/main.wgsl +37 -0
  982. package/registry/layers/framework/webgpu-render/files/src/vite-env.d.ts +1 -0
  983. package/registry/layers/framework/webgpu-render/manifest.json +56 -0
  984. package/registry/layers/framework/zola-static/files/_index.md +10 -0
  985. package/registry/layers/framework/zola-static/files/base.html +12 -0
  986. package/registry/layers/framework/zola-static/files/gitignore +3 -0
  987. package/registry/layers/framework/zola-static/files/index.html +26 -0
  988. package/registry/layers/framework/zola-static/files/main.scss +21 -0
  989. package/registry/layers/framework/zola-static/files/package.json +12 -0
  990. package/registry/layers/framework/zola-static/files/static.gitkeep +0 -0
  991. package/registry/layers/framework/zola-static/manifest.json +72 -0
  992. package/registry/layers/payments/coinbase-commerce/manifest.json +26 -17
  993. package/registry/layers/payments/none/manifest.json +28 -17
  994. package/registry/layers/payments/stripe/manifest.json +27 -17
  995. package/registry/layers/queue/bullmq/manifest.json +15 -13
  996. package/registry/layers/queue/none/manifest.json +15 -13
  997. package/registry/layers/queue/trigger-dev/manifest.json +15 -13
  998. package/registry/layers/sdk/coinbase-cdp/manifest.json +24 -17
  999. package/registry/layers/sdk/evm-wallet/manifest.json +24 -17
  1000. package/registry/layers/sdk/none/manifest.json +26 -17
  1001. package/registry/layers/sdk/solana-web3/manifest.json +24 -17
  1002. package/registry/package-to-capability.json +16 -10
  1003. package/registry/partners/avalanche/files/partner-config.json +14 -0
  1004. package/registry/partners/avalanche/files/starter-brand.json +5 -0
  1005. package/registry/partners/avalanche/manifest.json +46 -0
  1006. package/registry/partners/chainlink/files/chainlink-config.json +29 -0
  1007. package/registry/partners/chainlink/manifest.json +43 -0
  1008. package/registry/partners/farcaster/files/partner-config.json +10 -0
  1009. package/registry/partners/farcaster/files/starter-brand.json +5 -0
  1010. package/registry/partners/farcaster/manifest.json +44 -0
  1011. package/registry/partners/hyperliquid/files/partner-config.json +12 -0
  1012. package/registry/partners/hyperliquid/files/starter-brand.json +5 -0
  1013. package/registry/partners/hyperliquid/manifest.json +46 -0
  1014. package/registry/partners/lens/files/partner-config.json +12 -0
  1015. package/registry/partners/lens/files/starter-brand.json +5 -0
  1016. package/registry/partners/lens/manifest.json +44 -0
  1017. package/registry/partners/linea/files/partner-config.json +13 -0
  1018. package/registry/partners/linea/files/starter-brand.json +5 -0
  1019. package/registry/partners/linea/manifest.json +45 -0
  1020. package/registry/partners/monad/files/partner-config.json +10 -0
  1021. package/registry/partners/monad/files/starter-brand.json +5 -0
  1022. package/registry/partners/monad/manifest.json +46 -0
  1023. package/registry/partners/polygon/files/partner-config.json +16 -0
  1024. package/registry/partners/polygon/files/starter-brand.json +5 -0
  1025. package/registry/partners/polygon/manifest.json +46 -0
  1026. package/registry/partners/sei-evm/files/partner-config.json +12 -0
  1027. package/registry/partners/sei-evm/files/starter-brand.json +5 -0
  1028. package/registry/partners/sei-evm/manifest.json +45 -0
  1029. package/registry/partners/sui/files/sui-config.json +18 -0
  1030. package/registry/partners/sui/manifest.json +41 -0
  1031. package/registry/partners/tempo/files/tempo-config.json +26 -0
  1032. package/registry/partners/tempo/manifest.json +46 -0
  1033. package/registry/partners/tether/files/partner-config.json +17 -0
  1034. package/registry/partners/tether/files/starter-brand.json +5 -0
  1035. package/registry/partners/tether/manifest.json +49 -0
  1036. package/registry/partners/usdc-circle/files/partner-config.json +25 -0
  1037. package/registry/partners/usdc-circle/files/starter-brand.json +5 -0
  1038. package/registry/partners/usdc-circle/manifest.json +50 -0
@@ -80,4 +80,70 @@ export const VERTICAL_TO_PARTNER = {
80
80
  export function isBuildoutSlug(slug) {
81
81
  return slug.startsWith('-private-var-folders-') && slug.includes('factory-local-phase2-');
82
82
  }
83
+ /**
84
+ * Append a BuildoutEvent to the pipeline. Atomic (O_APPEND) — safe to call
85
+ * from multiple concurrent processes. Creates the containing directory on
86
+ * first call.
87
+ *
88
+ * Example (blueprint-agent):
89
+ *
90
+ * ```ts
91
+ * import { emitBuildoutEvent } from '@tangle-network/starter-foundry'
92
+ *
93
+ * await emitBuildoutEvent({
94
+ * sessionId: run.id,
95
+ * sourceModel: 'blueprint-agent-vb',
96
+ * sourcePath: run.manifestPath,
97
+ * scenarioId: run.scenarioId,
98
+ * partnerGuess: run.verticalId,
99
+ * replayRound: run.round,
100
+ * initialPrompt: run.prompt,
101
+ * addedPackages: run.packagesInstalled.map((n) => ({ pm: 'pnpm', name: n })),
102
+ * addedDirs: run.dirsCreated,
103
+ * rewrittenFiles: run.filesEdited,
104
+ * outcome: {
105
+ * source: 'vb-execution',
106
+ * allPass: run.verification.allPass,
107
+ * blendedScore: run.verification.blendedScore,
108
+ * failingLayers: run.verification.failingLayers,
109
+ * shotsRun: run.verification.shotsRun,
110
+ * shotsToConvergence: run.verification.shotsToConvergence,
111
+ * wallMs: run.wallMs,
112
+ * toolCallsTotal: run.toolCallsTotal,
113
+ * },
114
+ * })
115
+ * ```
116
+ *
117
+ * Downstream: our capability-gap detector, template-rewrite analyzer, and
118
+ * meta-harness training data will pick up these events on the next
119
+ * `run-buildout-pipeline.mjs` invocation.
120
+ */
121
+ export async function emitBuildoutEvent(input, options = {}) {
122
+ if (!input.sessionId)
123
+ throw new Error('emitBuildoutEvent: sessionId is required');
124
+ if (!input.sourceModel)
125
+ throw new Error('emitBuildoutEvent: sourceModel is required');
126
+ const event = {
127
+ schemaVersion: BUILDOUT_SCHEMA_VERSION,
128
+ sessionId: input.sessionId,
129
+ sourcePath: input.sourcePath ?? '',
130
+ sourceModel: input.sourceModel,
131
+ scenarioId: input.scenarioId ?? null,
132
+ partnerGuess: input.partnerGuess ?? null,
133
+ replayRound: input.replayRound ?? null,
134
+ firstTs: input.firstTs ?? null,
135
+ lastTs: input.lastTs ?? null,
136
+ initialPrompt: input.initialPrompt ?? null,
137
+ addedPackages: input.addedPackages ?? [],
138
+ addedDirs: input.addedDirs ?? [],
139
+ rewrittenFiles: input.rewrittenFiles ?? [],
140
+ outcome: input.outcome ?? null,
141
+ };
142
+ const { mkdir, appendFile } = await import('node:fs/promises');
143
+ const { dirname } = await import('node:path');
144
+ const targetPath = options.path ?? DEFAULT_PATHS.buildoutsJsonl;
145
+ await mkdir(dirname(targetPath), { recursive: true });
146
+ await appendFile(targetPath, `${JSON.stringify(event)}\n`, 'utf8');
147
+ return event;
148
+ }
83
149
  //# sourceMappingURL=buildout-traces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildout-traces.js","sourceRoot":"","sources":["../../src/lib/buildout-traces.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qDAAqD;AACrD,EAAE;AACF,uEAAuE;AACvE,8DAA8D;AAC9D,EAAE;AACF,6CAA6C;AAC7C,6CAA6C;AAC7C,gEAAgE;AAChE,EAAE;AACF,8DAA8D;AAC9D,6CAA6C;AAC7C,0DAA0D;AAC1D,EAAE;AACF,gCAAgC;AAChC,wCAAwC;AACxC,uEAAuE;AACvE,EAAE;AACF,uDAAuD;AACvD,uEAAuE;AACvE,yEAAyE;AACzE,wEAAwE;AACxE,qBAAqB;AACrB,0DAA0D;AAC1D,0DAA0D;AAC1D,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,yCAAyC;AAEzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAgFxC,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,cAAc,EAAE,gCAAgC;IAChD,UAAU,EAAE,4CAA4C;IACxD,WAAW,EAAE,wCAAwC;IACrD,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,gCAAgC;CAC/C,CAAA;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,aAAa,EAAE,uBAAuB;QACtC,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IAKpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAA;IAC5F,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC1E,OAAO;QACL,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;QAC1B,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;QACxB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI;KACtD,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,aAAa,EAAE,qBAAqB;IACpC,iBAAiB,EAAE,qBAAqB;IACxC,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,gBAAgB;IAC7B,uBAAuB,EAAE,mBAAmB;IAC5C,uBAAuB,EAAE,mBAAmB;CAC7C,CAAA;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;AAC3F,CAAC"}
1
+ {"version":3,"file":"buildout-traces.js","sourceRoot":"","sources":["../../src/lib/buildout-traces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface CanaryExperiment {
2
+ name: string;
3
+ /** 0..1 — fraction of consumers routed to canary */
4
+ percent: number;
5
+ /** ISO timestamp after which the experiment is considered inactive */
6
+ expiresAt?: string | null;
7
+ /** Optional explicit consumer key allowlist (always routed to canary) */
8
+ force?: string[];
9
+ /** Optional explicit consumer key denylist (always routed to main) */
10
+ exclude?: string[];
11
+ }
12
+ export type CanaryBucket = 'canary' | 'main';
13
+ /**
14
+ * Core A/B decision primitive. Given a consumer key and an experiment,
15
+ * returns which bucket the consumer lands in.
16
+ *
17
+ * Deterministic: the same `(consumerKey, experiment.name)` tuple always
18
+ * produces the same bucket. Change the experiment name (not just the
19
+ * percentage) to re-randomize.
20
+ */
21
+ export declare function decideCanaryBucket(consumerKey: string, experiment: CanaryExperiment): CanaryBucket;
22
+ /**
23
+ * Select the registry version (canary vs main) for a given consumer.
24
+ * Returns an absolute path the composer should use as its registry root.
25
+ *
26
+ * Falls back to `registry/` if:
27
+ * - experiment routes the consumer to main
28
+ * - `registry-canary/` doesn't exist on disk (guard against missing dir)
29
+ */
30
+ export declare function selectCanaryVersion(consumerKey: string, experiment: CanaryExperiment): Promise<{
31
+ bucket: CanaryBucket;
32
+ registryRoot: string;
33
+ }>;
34
+ /**
35
+ * Default 5%-canary experiment the CI/CD pipeline promotes by name.
36
+ * Tests import this to exercise the canonical config.
37
+ */
38
+ export declare const DEFAULT_CANARY_EXPERIMENT: CanaryExperiment;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Canary release routing.
3
+ *
4
+ * Routes a configurable fraction of compose requests to a canary registry
5
+ * (parallel to `registry/` at `registry-canary/`). Decision is deterministic
6
+ * given a `consumerKey`, so the same consumer always lands in the same bucket
7
+ * for the lifetime of an experiment — no session-affinity store needed.
8
+ *
9
+ * Hash function: FNV-1a 32-bit over `experiment:consumerKey`. The output is
10
+ * uniformly distributed so `mod 10000 < pct*100` gives the target split to
11
+ * within ±0.5pp over any reasonable sample of consumer keys.
12
+ */
13
+ import fs from 'node:fs/promises';
14
+ import path from 'node:path';
15
+ import { resolveRepoRoot } from './fs.js';
16
+ const FNV_OFFSET_32 = 0x811c9dc5;
17
+ const FNV_PRIME_32 = 0x01000193;
18
+ /**
19
+ * FNV-1a 32-bit. Deterministic and dependency-free. Output is [0, 2^32).
20
+ * Multiplication is force-truncated with Math.imul to avoid 53-bit float drift
21
+ * on strings > ~6 chars where the running product silently overflows.
22
+ */
23
+ function fnv1a32(input) {
24
+ let hash = FNV_OFFSET_32;
25
+ for (let i = 0; i < input.length; i++) {
26
+ hash ^= input.charCodeAt(i);
27
+ hash = Math.imul(hash, FNV_PRIME_32);
28
+ }
29
+ return hash >>> 0;
30
+ }
31
+ /**
32
+ * Core A/B decision primitive. Given a consumer key and an experiment,
33
+ * returns which bucket the consumer lands in.
34
+ *
35
+ * Deterministic: the same `(consumerKey, experiment.name)` tuple always
36
+ * produces the same bucket. Change the experiment name (not just the
37
+ * percentage) to re-randomize.
38
+ */
39
+ export function decideCanaryBucket(consumerKey, experiment) {
40
+ if (experiment.exclude?.includes(consumerKey))
41
+ return 'main';
42
+ if (experiment.force?.includes(consumerKey))
43
+ return 'canary';
44
+ if (experiment.expiresAt) {
45
+ const expires = Date.parse(experiment.expiresAt);
46
+ if (!Number.isNaN(expires) && Date.now() > expires)
47
+ return 'main';
48
+ }
49
+ const pct = Math.max(0, Math.min(1, experiment.percent));
50
+ if (pct <= 0)
51
+ return 'main';
52
+ if (pct >= 1)
53
+ return 'canary';
54
+ // 4-digit resolution — 0.01% granularity is plenty for 5% rollouts.
55
+ const bucket = fnv1a32(`${experiment.name}:${consumerKey}`) % 10000;
56
+ return bucket < Math.floor(pct * 10000) ? 'canary' : 'main';
57
+ }
58
+ /**
59
+ * Select the registry version (canary vs main) for a given consumer.
60
+ * Returns an absolute path the composer should use as its registry root.
61
+ *
62
+ * Falls back to `registry/` if:
63
+ * - experiment routes the consumer to main
64
+ * - `registry-canary/` doesn't exist on disk (guard against missing dir)
65
+ */
66
+ export async function selectCanaryVersion(consumerKey, experiment) {
67
+ const repoRoot = await resolveRepoRoot();
68
+ const mainRoot = path.join(repoRoot, 'registry');
69
+ const canaryRoot = path.join(repoRoot, 'registry-canary');
70
+ const bucket = decideCanaryBucket(consumerKey, experiment);
71
+ if (bucket === 'main')
72
+ return { bucket, registryRoot: mainRoot };
73
+ try {
74
+ const stat = await fs.stat(canaryRoot);
75
+ if (!stat.isDirectory())
76
+ return { bucket: 'main', registryRoot: mainRoot };
77
+ }
78
+ catch {
79
+ return { bucket: 'main', registryRoot: mainRoot };
80
+ }
81
+ return { bucket: 'canary', registryRoot: canaryRoot };
82
+ }
83
+ /**
84
+ * Default 5%-canary experiment the CI/CD pipeline promotes by name.
85
+ * Tests import this to exercise the canonical config.
86
+ */
87
+ export const DEFAULT_CANARY_EXPERIMENT = {
88
+ name: 'registry-canary-v1',
89
+ percent: 0.05,
90
+ };
91
+ //# sourceMappingURL=canary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary.js","sourceRoot":"","sources":["../../src/lib/canary.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export interface PackageCapabilityMap {
1
+ interface PackageCapabilityMap {
2
2
  schemaVersion: 1;
3
3
  mapping: Record<string, {
4
4
  capability: string | null;
@@ -6,7 +6,7 @@ export interface PackageCapabilityMap {
6
6
  note?: string;
7
7
  }>;
8
8
  }
9
- export interface BuildoutLike {
9
+ interface BuildoutLike {
10
10
  sessionId: string;
11
11
  initialPrompt: string | null;
12
12
  scenarioId: string | null;
@@ -20,13 +20,13 @@ export interface BuildoutLike {
20
20
  blendedScore: number;
21
21
  } | null;
22
22
  }
23
- export interface InferredCapability {
23
+ interface InferredCapability {
24
24
  capability: string;
25
25
  confidence: number;
26
26
  source: 'package' | 'dir';
27
27
  sourceToken: string;
28
28
  }
29
- export interface CapabilityMapSummary {
29
+ interface CapabilityMapSummary {
30
30
  distinctPackages: number;
31
31
  mappedPackages: number;
32
32
  unmappedPackages: number;
@@ -38,3 +38,4 @@ export declare function loadCapabilityMap(path?: string): PackageCapabilityMap;
38
38
  export declare function inferCapabilities(buildout: BuildoutLike, map: PackageCapabilityMap): InferredCapability[];
39
39
  /** Summary stats over a mapping (for diagnostic CLIs / tests). */
40
40
  export declare function summarizeMap(map: PackageCapabilityMap): CapabilityMapSummary;
41
+ export {};
@@ -16,7 +16,8 @@
16
16
  * are React-flavored) and made them duplicate the canonical agent instruction
17
17
  * wording across their codebase. This function is the single supported entrypoint.
18
18
  */
19
- import type { ComposeResult, ComposeSpec } from '../types.js';
19
+ import { type ComposeWorkspaceResult } from './workspace.js';
20
+ import type { ComposeResult, ComposeSpec, WorkspaceSpec } from '../types.js';
20
21
  export interface ComposeFromPromptOptions {
21
22
  /** Free-text user prompt — drives family routing and industry detection. */
22
23
  prompt: string;
@@ -34,17 +35,17 @@ export type ComposeFromPromptResult = {
34
35
  contextMessage: string;
35
36
  } | {
36
37
  kind: 'workspace';
37
- reason: string;
38
+ spec: WorkspaceSpec;
39
+ result: ComposeWorkspaceResult;
40
+ contextMessage: string;
38
41
  } | {
39
42
  kind: 'error';
40
43
  error: string;
41
44
  };
42
45
  /**
43
- * Compose a scaffold from a free-text prompt. Returns a discriminated union
44
- * so callers handle workspace and error cases explicitly.
46
+ * Compose a scaffold from a free-text prompt. Returns a discriminated union.
45
47
  *
46
- * Workspace prompts (multi-project) are not composed automatically they
47
- * need a workspace spec, and the caller should fall through to from-scratch
48
- * agent build or call composeWorkspace directly.
48
+ * Auto-dispatches to composeStarter or composeWorkspace based on the plan
49
+ * kind downstream callers don't need to branch on plan.kind themselves.
49
50
  */
50
51
  export declare function composeFromPrompt(options: ComposeFromPromptOptions): Promise<ComposeFromPromptResult>;
@@ -18,14 +18,13 @@
18
18
  */
19
19
  import { composeStarter } from './compose.js';
20
20
  import { planPrompt } from './prompt-planner.js';
21
+ import { composeWorkspace } from './workspace.js';
21
22
  import { getComposedScaffoldContext } from './agent-context.js';
22
23
  /**
23
- * Compose a scaffold from a free-text prompt. Returns a discriminated union
24
- * so callers handle workspace and error cases explicitly.
24
+ * Compose a scaffold from a free-text prompt. Returns a discriminated union.
25
25
  *
26
- * Workspace prompts (multi-project) are not composed automatically they
27
- * need a workspace spec, and the caller should fall through to from-scratch
28
- * agent build or call composeWorkspace directly.
26
+ * Auto-dispatches to composeStarter or composeWorkspace based on the plan
27
+ * kind downstream callers don't need to branch on plan.kind themselves.
29
28
  */
30
29
  export async function composeFromPrompt(options) {
31
30
  const { prompt, outDir, partner = null, projectName = 'scaffold' } = options;
@@ -39,12 +38,25 @@ export async function composeFromPrompt(options) {
39
38
  catch (err) {
40
39
  return { kind: 'error', error: `planPrompt failed: ${err.message}` };
41
40
  }
42
- if (plan.kind !== 'starter') {
41
+ if (plan.kind === 'workspace') {
42
+ const spec = plan.spec;
43
+ let result;
44
+ try {
45
+ result = await composeWorkspace({ spec, outDir });
46
+ }
47
+ catch (err) {
48
+ return { kind: 'error', error: `composeWorkspace failed: ${err.message}` };
49
+ }
43
50
  return {
44
51
  kind: 'workspace',
45
- reason: 'multi-project workspace prompts are not auto-composed; caller should compose each project explicitly',
52
+ spec,
53
+ result,
54
+ contextMessage: getComposedWorkspaceContext(result),
46
55
  };
47
56
  }
57
+ if (plan.kind !== 'starter') {
58
+ return { kind: 'error', error: `planPrompt returned unexpected kind: ${plan.kind}` };
59
+ }
48
60
  // planPrompt has already attached capabilities, industry, and family-default
49
61
  // capabilities (tailwind + shadcn for React families). The spec is ready to compose.
50
62
  const spec = {
@@ -65,4 +77,15 @@ export async function composeFromPrompt(options) {
65
77
  contextMessage: getComposedScaffoldContext(result),
66
78
  };
67
79
  }
80
+ function getComposedWorkspaceContext(result) {
81
+ const lines = [
82
+ `Composed workspace with ${result.projectCount} project(s) at ${result.outDir}.`,
83
+ `Launch plan written to ${result.launchPlanPath}.`,
84
+ `Workspace report written to ${result.workspaceReportPath}.`,
85
+ '',
86
+ 'Projects:',
87
+ ...result.projects.map((p) => ` - ${p.id} (${p.components.family}) → ${p.path}`),
88
+ ];
89
+ return lines.join('\n');
90
+ }
68
91
  //# sourceMappingURL=compose-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose-prompt.js","sourceRoot":"","sources":["../../src/lib/compose-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AA8B/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC;IAEjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,GAAG,UAAU,EAAE,GAAG,OAAO,CAAA;IAE5E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IAED,IAAI,IAAI,CAAA;IACR,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAuB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAA;IACjF,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,sGAAsG;SAC/G,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,qFAAqF;IACrF,MAAM,IAAI,GAAgB;QACxB,GAAG,IAAI,CAAC,IAAI;QACZ,WAAW;KACZ,CAAA;IAED,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAA;IACrF,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,MAAM;QACN,cAAc,EAAE,0BAA0B,CAAC,MAAM,CAAC;KACnD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"compose-prompt.js","sourceRoot":"","sources":["../../src/lib/compose-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ComposeSpec } from '../types.js';
2
+ /**
3
+ * Derive the 32-byte replay seed for a compose spec. Pure function of
4
+ * the spec shape — not of time, random, or env unless the operator
5
+ * explicitly overrides via STARTER_FOUNDRY_SEED.
6
+ */
7
+ export declare function deriveComposeSeed(spec: ComposeSpec, envSeed?: string): Buffer;
8
+ /**
9
+ * Convenience: first 4 bytes as uint32 (for modulo picks).
10
+ */
11
+ export declare function seedToUint32(seed: Buffer): number;
12
+ /**
13
+ * Convenience: hex-encoded seed for logging + audit trails.
14
+ */
15
+ export declare function seedToHex(seed: Buffer): string;
@@ -0,0 +1,44 @@
1
+ // compose-seed.ts — deterministic seed for bit-identical replay of
2
+ // composeStarter(). Every component of the compose result that's
3
+ // seed-dependent (variant picks, library version picks, brand-tokens
4
+ // hash fallback) reads a single 32-byte seed derived from:
5
+ //
6
+ // SHA-256(projectName + "|" + family + "|" + sorted(layers).join(",") + "|" + partnerId)
7
+ //
8
+ // Plus an optional STARTER_FOUNDRY_SEED env override for testing or
9
+ // explicit replay. Passing the same spec + same seed to composeStarter
10
+ // must produce byte-identical output — the reproducibility guarantee
11
+ // consumers need for signed audit trails + supply-chain provenance.
12
+ import { createHash } from 'node:crypto';
13
+ /**
14
+ * Derive the 32-byte replay seed for a compose spec. Pure function of
15
+ * the spec shape — not of time, random, or env unless the operator
16
+ * explicitly overrides via STARTER_FOUNDRY_SEED.
17
+ */
18
+ export function deriveComposeSeed(spec, envSeed) {
19
+ const override = envSeed ?? process.env['STARTER_FOUNDRY_SEED'];
20
+ if (override && /^[a-f0-9]{64}$/i.test(override)) {
21
+ return Buffer.from(override, 'hex');
22
+ }
23
+ const layers = [...(spec.layers ?? [])].sort().join(',');
24
+ const parts = [
25
+ spec.projectName,
26
+ spec.family,
27
+ layers,
28
+ spec.partner ?? '',
29
+ ];
30
+ return createHash('sha256').update(parts.join('|')).digest();
31
+ }
32
+ /**
33
+ * Convenience: first 4 bytes as uint32 (for modulo picks).
34
+ */
35
+ export function seedToUint32(seed) {
36
+ return seed.readUInt32BE(0);
37
+ }
38
+ /**
39
+ * Convenience: hex-encoded seed for logging + audit trails.
40
+ */
41
+ export function seedToHex(seed) {
42
+ return seed.toString('hex');
43
+ }
44
+ //# sourceMappingURL=compose-seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-seed.js","sourceRoot":"","sources":["../../src/lib/compose-seed.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,iEAAiE;AACjE,qEAAqE;AACrE,2DAA2D;AAC3D,EAAE;AACF,2FAA2F;AAC3F,EAAE;AACF,oEAAoE;AACpE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB,EAAE,OAAgB;IACnE,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAC/D,IAAI,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,MAAM;QACN,IAAI,CAAC,OAAO,IAAI,EAAE;KACnB,CAAA;IACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
@@ -2,7 +2,9 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { generateBuildPlan } from './build-plan.js';
4
4
  import { ensureDir, sanitizePackageName, writeJson } from './fs.js';
5
+ import { renderIndustryFirstTurn } from './industry-flows.js';
5
6
  import { buildVariables, resolveComponents, resolveTemplateObject } from './registry.js';
7
+ import { selectTemplateVersion } from './selection.js';
6
8
  import { emit, traced } from './telemetry.js';
7
9
  const HTML_LIKE_EXTS = new Set(['.tsx', '.jsx', '.html']);
8
10
  function escapeHtmlChars(value) {
@@ -84,6 +86,11 @@ export async function composeStarter({ spec, outDir }) {
84
86
  });
85
87
  const layers = result.components.layers;
86
88
  const industry = layers.find((l) => l.startsWith('industry:')) ?? null;
89
+ // Observe what diverse-serve would pick from the template-library for
90
+ // this compose. Doesn't change file resolution (registry/ is still the
91
+ // canonical serve path); purely a telemetry signal so we can see the
92
+ // env flag wiring in production traces before we flip default behavior.
93
+ const diverseVersion = selectTemplateVersion(spec.family, spec.projectName);
87
94
  emit('compose', {
88
95
  family: spec.family,
89
96
  layers,
@@ -91,6 +98,8 @@ export async function composeStarter({ spec, outDir }) {
91
98
  partner: spec.partner ?? null,
92
99
  industry,
93
100
  durationMs,
101
+ templateVersion: diverseVersion,
102
+ diverseServe: process.env['STARTER_FOUNDRY_DIVERSE_SERVE'] === '1' || process.env['STARTER_FOUNDRY_DIVERSE_SERVE'] === 'true',
94
103
  });
95
104
  return result;
96
105
  }
@@ -115,6 +124,39 @@ async function mergeMediaManifests(outDir) {
115
124
  await fs.writeFile(manifestPath, `${JSON.stringify(merged, null, 2)}\n`, 'utf8');
116
125
  return merged.slots;
117
126
  }
127
+ // Merge each applied layer's declared packageDeps into the composed
128
+ // package.json. Runs after every file is written so the family's package.json
129
+ // is on disk; we read it, merge, write back. No-op if the family has no
130
+ // package.json (Rust/Go/Python scaffolds).
131
+ async function mergeLayerPackageDeps(outDir, layers) {
132
+ const pkgPath = path.join(outDir, 'package.json');
133
+ let pkg;
134
+ try {
135
+ pkg = JSON.parse(await fs.readFile(pkgPath, 'utf8'));
136
+ }
137
+ catch {
138
+ return;
139
+ }
140
+ let touched = false;
141
+ for (const layer of layers) {
142
+ const deps = layer.packageDeps;
143
+ if (!deps)
144
+ continue;
145
+ if (deps.dependencies) {
146
+ const existing = (pkg.dependencies ?? {});
147
+ pkg.dependencies = { ...existing, ...deps.dependencies };
148
+ touched = true;
149
+ }
150
+ if (deps.devDependencies) {
151
+ const existing = (pkg.devDependencies ?? {});
152
+ pkg.devDependencies = { ...existing, ...deps.devDependencies };
153
+ touched = true;
154
+ }
155
+ }
156
+ if (!touched)
157
+ return;
158
+ await fs.writeFile(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf8');
159
+ }
118
160
  async function composeStarterInner(spec, outDir) {
119
161
  const components = await resolveComponents(spec);
120
162
  const variables = buildVariables({
@@ -141,6 +183,7 @@ async function composeStarterInner(spec, outDir) {
141
183
  filesWritten.push(resolvedTarget);
142
184
  }
143
185
  }
186
+ await mergeLayerPackageDeps(outDir, components.layers);
144
187
  const composeReport = {
145
188
  spec,
146
189
  components: {
@@ -166,13 +209,40 @@ async function composeStarterInner(spec, outDir) {
166
209
  // Generate llms.txt — machine-readable project description for AI agents
167
210
  const llmsTxt = buildLlmsTxt(spec, components, composeReport.contextHints);
168
211
  await fs.writeFile(path.join(outDir, 'llms.txt'), `${llmsTxt}\n`, 'utf8');
212
+ // Generate SBOM (CycloneDX) from the composed scaffold's dep manifest.
213
+ const { writeSbom } = await import('./sbom.js');
214
+ const sbomPath = await writeSbom(outDir, spec.projectName);
215
+ // Collect optional prompt-fragment.md files from family + partner.
216
+ const promptFragment = await collectPromptFragment(components);
169
217
  return {
170
218
  outDir,
171
219
  filesWritten: [...new Set([...filesWritten, 'AGENTS.md', 'CLAUDE.md', 'llms.txt'])].sort(),
172
220
  composeReportPath: path.join(outDir, '.starter-foundry', 'compose-report.json'),
173
221
  components: composeReport.components,
222
+ promptFragment,
223
+ sbomPath,
174
224
  };
175
225
  }
226
+ async function collectPromptFragment(components) {
227
+ const fragments = [];
228
+ const familyFrag = path.join(components.family.baseDir, 'prompt-fragment.md');
229
+ try {
230
+ fragments.push(await fs.readFile(familyFrag, 'utf8'));
231
+ }
232
+ catch {
233
+ // Optional file — absence is fine.
234
+ }
235
+ if (components.partner) {
236
+ const partnerFrag = path.join(components.partner.baseDir, 'prompt-fragment.md');
237
+ try {
238
+ fragments.push(await fs.readFile(partnerFrag, 'utf8'));
239
+ }
240
+ catch {
241
+ // Optional.
242
+ }
243
+ }
244
+ return fragments.join('\n\n---\n\n').trim();
245
+ }
176
246
  function buildLlmsTxt(spec, components, contextHints) {
177
247
  const lines = [
178
248
  `# ${spec.projectName}`,
@@ -211,7 +281,12 @@ function buildAgentsMd(spec, components, contextHints, mediaSlots = []) {
211
281
  // bare `pnpm install`/`pnpm dev` calls (they race the agent's edits, have
212
282
  // no error taxonomy, and aren't tracked by the runtime).
213
283
  lines.push('## Step 0 — Start the dev server (do this FIRST)', '', 'Before reading anything else in this file, run this command in `bash` to start the dev server. The user is waiting for a preview. This is idempotent — safe to call multiple times (returns the same pid). It auto-installs dependencies on first call, so you do NOT need to run `pnpm install` separately. Subsequent edits hot-reload via HMR; do NOT call this again to restart unless the response says you should.', '', '```bash', 'curl -fsS -X POST "http://localhost:${SIDECAR_PORT:-9000}/process/ensure-dev-server" -H "Content-Type: application/json" -H "Authorization: Bearer ${SIDECAR_AUTH_TOKEN}" -d \'{}\'', '```', '', 'The `SIDECAR_PORT` and `SIDECAR_AUTH_TOKEN` env vars are pre-set in your bash environment — you do NOT need to look them up.', '', 'CRITICAL: Do NOT run `pnpm install`, `pnpm dev`, `npm install`, `npm run dev`, `next dev`, `vite`, `cargo run`, or any other dev/install command via `bash` directly. The command above handles all of that AND tracks the dev process for the runtime so the user\'s preview pane wires up automatically. Running them directly bypasses the runtime tracking and the user will not see a preview.', '', 'The response is JSON: `{ "success": true, "data": { "pid": ..., "family": "node-pnpm", "command": "...", "startedNow": true|false, "installRan": true|false } }`. On error: `{ "success": false, "error": { "code": "...", "message": "..." } }` with codes `WORKSPACE_NOT_FOUND | NO_RUNNABLE_PROJECT | INSTALL_FAILED | DEV_COMMAND_NOT_FOUND | DEV_PROCESS_EXITED | PORT_BIND_FAILED`. React to each: `INSTALL_FAILED` → read the `log` field, fix `package.json`, call again; `DEV_COMMAND_NOT_FOUND` → add a `dev` script to `package.json`, call again; `DEV_PROCESS_EXITED` → read `log`, fix the bug in `src/`, call again.', '');
214
- lines.push('## What\'s here', '', `This project was scaffolded by starter-foundry. The user\'s prompt drove the choices below read their prompt first, it takes priority over everything in this file.`, '', `- **Family:** \`${spec.family}\``, `- **Layers:** ${components.layers.map((l) => `\`${l.group}:${l.id}\``).join(', ')}`);
284
+ // User's prompt — echo it near the top so the agent sees its brief
285
+ // before the scaffold's default behavior.
286
+ if (spec.userPrompt) {
287
+ lines.push('## User\'s brief (takes priority over everything else in this file)', '', `> ${spec.userPrompt.replace(/\n/g, '\n> ')}`, '');
288
+ }
289
+ lines.push('## What\'s here', '', `This project was scaffolded by starter-foundry. The choices below were made deterministically from the user's brief.`, '', `- **Family:** \`${spec.family}\``, `- **Layers:** ${components.layers.map((l) => `\`${l.group}:${l.id}\``).join(', ')}`);
215
290
  if (components.partner) {
216
291
  lines.push(`- **Partner:** \`${components.partner.id}\``);
217
292
  }
@@ -241,6 +316,34 @@ function buildAgentsMd(spec, components, contextHints, mediaSlots = []) {
241
316
  lines.push(`- **Integrations:** ${buildPlan.integrations.join(', ')}`);
242
317
  lines.push('');
243
318
  }
319
+ if (buildPlan.placeholders.length > 0) {
320
+ lines.push('## Placeholders — MUST replace', '', 'These files ship DEFAULT content so the preview renders before your first edit. You MUST replace them with product-specific behavior for the user\'s brief. Rewriting `personalize.json` updates brand strings only — it does NOT replace the content in these files. Treat this list as required-to-rewrite.', '');
321
+ for (const { source, path, description } of buildPlan.placeholders) {
322
+ lines.push(`- \`${path}\` — ${description} _(${source})_`);
323
+ }
324
+ lines.push('');
325
+ }
326
+ // Industry first-turn flow — steers the agent toward the right first
327
+ // feature for the product archetype. Empty string when no industry:*
328
+ // layer is attached or the industry isn't in the known map.
329
+ const industryBlock = renderIndustryFirstTurn(components.layers.map((l) => `${l.group}:${l.id}`));
330
+ if (industryBlock) {
331
+ lines.push(industryBlock);
332
+ }
333
+ if (buildPlan.domainFirstSteps.length > 0) {
334
+ lines.push('## Domain first moves', '', 'Runtime-specific actions declared by the selected family + layers + partner. Do these before generic setup — they prevent the most common class of first-turn mistakes for this stack.', '');
335
+ for (const { source, step } of buildPlan.domainFirstSteps) {
336
+ lines.push(`- **[${source}]** ${step}`);
337
+ }
338
+ lines.push('');
339
+ }
340
+ if (buildPlan.domainGotchas.length > 0) {
341
+ lines.push('## Gotchas', '', 'Traps specific to this stack — read before you hit them.', '');
342
+ for (const { source, note } of buildPlan.domainGotchas) {
343
+ lines.push(`- **[${source}]** ${note}`);
344
+ }
345
+ lines.push('');
346
+ }
244
347
  if (buildPlan.designDirective) {
245
348
  lines.push('## Design', '', buildPlan.designDirective, '');
246
349
  }
@@ -251,6 +354,8 @@ function buildAgentsMd(spec, components, contextHints, mediaSlots = []) {
251
354
  }
252
355
  lines.push('', 'Skip any slots that don\'t apply. Add new ones if the product needs them.', '');
253
356
  }
357
+ // Progressive disclosure — turn-order sections agents pattern-match on.
358
+ lines.push('## Turn 1 (do these before writing features)', '', '1. Call the dev-server route from Step 0 (above). Wait for success.', '2. Read the user\'s brief (above) and the Placeholders section.', '3. Rewrite `personalize.json` + `personalize.css` (brand strings + palette). These are render-time — preview updates on next refresh, no rebuild.', '4. Delete or rewrite EVERY file in the Placeholders list. Not optional.', '5. Only after (3) + (4) do you start feature work.', '', '## Before first preview screenshot', '', '- Confirm the landing surface renders the user\'s product (no default KPI cards from a dashboard template).', '- Brand strings in `personalize.json` are product-specific, not the scaffold default.', '- Any placeholder file in the list above has been replaced or deleted.', '', '## Before shipping', '', '- Run the family\'s validate script (see Key files above).', '- Re-check Gotchas (above) against what you built — those traps bite most at ship time.', '- If you added deps, they\'re in `package.json`; if you added routes/pages, they\'re reachable.', '');
254
359
  lines.push('## How to use this scaffold', '', 'This is a starting point, not a contract. You own every file.', '', '- **Customize freely.** Replace components, change the layout, swap the color scheme — whatever fits the user\'s product.', '- **The scaffold saves you setup time** — Tailwind, shadcn/ui, path aliases, and framework config are ready. Don\'t redo them.', '- **Check `.starter-foundry/compose-report.json`** if you want to see which layer wrote which file.', '- **Update this file** as the project evolves. Delete sections that no longer apply.');
255
360
  return lines.join('\n');
256
361
  }