@tangle-network/starter-foundry 0.5.2 → 0.5.4

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 (121) hide show
  1. package/README.md +49 -0
  2. package/corpus/ideasai-prompts.json +119 -58
  3. package/dist/cli.js +28 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/lib/agent-context.js +34 -22
  6. package/dist/lib/agent-context.js.map +1 -1
  7. package/dist/lib/build-plan.d.ts +18 -0
  8. package/dist/lib/build-plan.js +72 -0
  9. package/dist/lib/build-plan.js.map +1 -1
  10. package/dist/lib/buildout-traces.d.ts +113 -0
  11. package/dist/lib/buildout-traces.js +83 -0
  12. package/dist/lib/buildout-traces.js.map +1 -0
  13. package/dist/lib/capability-inferrer.d.ts +40 -0
  14. package/dist/lib/capability-inferrer.js +82 -0
  15. package/dist/lib/capability-inferrer.js.map +1 -0
  16. package/dist/lib/context-pack.d.ts +6 -1
  17. package/dist/lib/context-pack.js +9 -3
  18. package/dist/lib/context-pack.js.map +1 -1
  19. package/dist/lib/keywords.js +71 -18
  20. package/dist/lib/keywords.js.map +1 -1
  21. package/dist/lib/llm.d.ts +9 -0
  22. package/dist/lib/llm.js +70 -0
  23. package/dist/lib/llm.js.map +1 -0
  24. package/dist/lib/planner/contracts.d.ts +11 -0
  25. package/dist/lib/planner/contracts.js +119 -0
  26. package/dist/lib/planner/contracts.js.map +1 -0
  27. package/dist/lib/planner/detectors.d.ts +14 -0
  28. package/dist/lib/planner/detectors.js +195 -0
  29. package/dist/lib/planner/detectors.js.map +1 -0
  30. package/dist/lib/planner/helpers.d.ts +2 -0
  31. package/dist/lib/planner/helpers.js +135 -0
  32. package/dist/lib/planner/helpers.js.map +1 -0
  33. package/dist/lib/planner/implicit-caps.d.ts +1 -0
  34. package/dist/lib/planner/implicit-caps.js +91 -0
  35. package/dist/lib/planner/implicit-caps.js.map +1 -0
  36. package/dist/lib/planner/projects.d.ts +13 -0
  37. package/dist/lib/planner/projects.js +181 -0
  38. package/dist/lib/planner/projects.js.map +1 -0
  39. package/dist/lib/planner/signals.d.ts +17 -0
  40. package/dist/lib/planner/signals.js +324 -0
  41. package/dist/lib/planner/signals.js.map +1 -0
  42. package/dist/lib/product-brief.d.ts +25 -0
  43. package/dist/lib/product-brief.js +129 -0
  44. package/dist/lib/product-brief.js.map +1 -0
  45. package/dist/lib/prompt-planner.d.ts +5 -1
  46. package/dist/lib/prompt-planner.js +59 -622
  47. package/dist/lib/prompt-planner.js.map +1 -1
  48. package/dist/lib/prompt-rewriter.d.ts +21 -0
  49. package/dist/lib/prompt-rewriter.js +118 -0
  50. package/dist/lib/prompt-rewriter.js.map +1 -0
  51. package/dist/lib/selection.js +170 -36
  52. package/dist/lib/selection.js.map +1 -1
  53. package/dist/lib/telemetry.d.ts +0 -11
  54. package/dist/lib/telemetry.js +3 -3
  55. package/dist/lib/telemetry.js.map +1 -1
  56. package/dist/lib/vb-outcomes.d.ts +61 -0
  57. package/dist/lib/vb-outcomes.js +88 -0
  58. package/dist/lib/vb-outcomes.js.map +1 -0
  59. package/dist/training/variant_b/brief-loader.d.ts +5 -0
  60. package/dist/training/variant_b/brief-loader.js +263 -0
  61. package/dist/training/variant_b/brief-loader.js.map +1 -0
  62. package/dist/training/variant_b/flow.d.ts +56 -0
  63. package/dist/training/variant_b/flow.js +80 -0
  64. package/dist/training/variant_b/flow.js.map +1 -0
  65. package/dist/training/variant_b/generate.d.ts +7 -0
  66. package/dist/training/variant_b/generate.js +70 -0
  67. package/dist/training/variant_b/generate.js.map +1 -0
  68. package/dist/training/variant_b/judge.d.ts +8 -0
  69. package/dist/training/variant_b/judge.js +24 -0
  70. package/dist/training/variant_b/judge.js.map +1 -0
  71. package/dist/training/variant_b/nodes/collect.d.ts +31 -0
  72. package/dist/training/variant_b/nodes/collect.js +122 -0
  73. package/dist/training/variant_b/nodes/collect.js.map +1 -0
  74. package/dist/training/variant_b/nodes/generate.d.ts +22 -0
  75. package/dist/training/variant_b/nodes/generate.js +171 -0
  76. package/dist/training/variant_b/nodes/generate.js.map +1 -0
  77. package/dist/training/variant_b/nodes/judge.d.ts +26 -0
  78. package/dist/training/variant_b/nodes/judge.js +64 -0
  79. package/dist/training/variant_b/nodes/judge.js.map +1 -0
  80. package/dist/training/variant_b/nodes/promote.d.ts +15 -0
  81. package/dist/training/variant_b/nodes/promote.js +64 -0
  82. package/dist/training/variant_b/nodes/promote.js.map +1 -0
  83. package/dist/training/variant_b/nodes/rank.d.ts +12 -0
  84. package/dist/training/variant_b/nodes/rank.js +46 -0
  85. package/dist/training/variant_b/nodes/rank.js.map +1 -0
  86. package/dist/training/variant_b/nodes/train.d.ts +34 -0
  87. package/dist/training/variant_b/nodes/train.js +209 -0
  88. package/dist/training/variant_b/nodes/train.js.map +1 -0
  89. package/dist/training/variant_b/run-flow.d.ts +11 -0
  90. package/dist/training/variant_b/run-flow.js +21 -0
  91. package/dist/training/variant_b/run-flow.js.map +1 -0
  92. package/dist/training/variant_b/train.d.ts +15 -0
  93. package/dist/training/variant_b/train.js +37 -0
  94. package/dist/training/variant_b/train.js.map +1 -0
  95. package/dist/types.d.ts +16 -0
  96. package/package.json +6 -2
  97. package/registry/families/browser-extension-ts/files/package.json +4 -1
  98. package/registry/families/cli-ts/files/package.json +5 -0
  99. package/registry/families/electron-desktop-ts/files/package.json +3 -1
  100. package/registry/families/expo-react-native-ts/files/package.json +4 -0
  101. package/registry/families/fhenix-contracts/files/package.json +1 -1
  102. package/registry/families/fhevm-contracts/files/package.json +1 -1
  103. package/registry/families/fullstack-ts/files/package.json +3 -1
  104. package/registry/families/hardhat-contracts/files/package.json +3 -1
  105. package/registry/families/nextjs-ts/files/package.json +3 -1
  106. package/registry/families/react-vite-ts/files/package.json +11 -1
  107. package/registry/families/react-vite-ts/files/src/components/ui/badge.tsx +9 -0
  108. package/registry/families/react-vite-ts/files/src/components/ui/button.tsx +18 -0
  109. package/registry/families/react-vite-ts/files/src/components/ui/card.tsx +22 -0
  110. package/registry/families/react-vite-ts/manifest.json +14 -2
  111. package/registry/families/remix-ts/files/package.json +9 -1
  112. package/registry/families/sveltekit-ts/files/package.json +9 -1
  113. package/registry/families/tauri-desktop/files/package.json +3 -1
  114. package/registry/families/vue-ts/files/package.json +9 -1
  115. package/registry/layers/framework/expo-react-native-ts/files/tsconfig.json +2 -1
  116. package/registry/layers/framework/forge-foundation/files/foundry.toml +22 -1
  117. package/registry/layers/framework/fullstack-node-ts/files/personalize.json +5 -5
  118. package/registry/layers/framework/tangle-blueprint/files/TOOLCHAIN.md +16 -0
  119. package/registry/layers/framework/tangle-blueprint/files/rust-toolchain.toml +1 -1
  120. package/registry/layers/framework/tangle-blueprint/manifest.json +4 -0
  121. package/registry/package-to-capability.json +57 -0
@@ -22,9 +22,11 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@tailwindcss/postcss": "latest",
25
+ "@types/node": "^20.0.0",
25
26
  "@types/react": "latest",
26
27
  "@types/react-dom": "latest",
27
28
  "postcss": "^8.4.49",
28
- "tailwindcss": "latest"
29
+ "tailwindcss": "latest",
30
+ "typescript": "^5.7.0"
29
31
  }
30
32
  }
@@ -21,10 +21,20 @@
21
21
  },
22
22
  "devDependencies": {
23
23
  "@tailwindcss/vite": "latest",
24
+ "@types/node": "^20.0.0",
24
25
  "@types/react": "latest",
25
26
  "@types/react-dom": "latest",
26
27
  "@vitejs/plugin-react": "^4.4.0",
27
28
  "tailwindcss": "latest",
28
- "vite": "^6.2.0"
29
+ "typescript": "^5.7.0",
30
+ "vite": "^6.4.2"
31
+ },
32
+ "overrides": {
33
+ "vite": "^6.4.2"
34
+ },
35
+ "pnpm": {
36
+ "overrides": {
37
+ "vite": "^6.4.2"
38
+ }
29
39
  }
30
40
  }
@@ -0,0 +1,9 @@
1
+ import * as React from 'react'
2
+
3
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
4
+ variant?: 'default' | 'secondary' | 'outline' | 'destructive'
5
+ }
6
+
7
+ export const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(function Badge(props, ref) {
8
+ return <span ref={ref} {...props} />
9
+ })
@@ -0,0 +1,18 @@
1
+ import * as React from 'react'
2
+
3
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
+ variant?: 'default' | 'outline' | 'ghost' | 'secondary' | 'link' | 'destructive'
5
+ size?: 'default' | 'sm' | 'lg' | 'icon'
6
+ asChild?: boolean
7
+ }
8
+
9
+ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(
10
+ { children, ...props },
11
+ ref,
12
+ ) {
13
+ return (
14
+ <button ref={ref} {...props}>
15
+ {children}
16
+ </button>
17
+ )
18
+ })
@@ -0,0 +1,22 @@
1
+ import * as React from 'react'
2
+
3
+ type DivProps = React.HTMLAttributes<HTMLDivElement>
4
+
5
+ export const Card = React.forwardRef<HTMLDivElement, DivProps>(function Card(props, ref) {
6
+ return <div ref={ref} {...props} />
7
+ })
8
+ export const CardHeader = React.forwardRef<HTMLDivElement, DivProps>(function CardHeader(props, ref) {
9
+ return <div ref={ref} {...props} />
10
+ })
11
+ export const CardTitle = React.forwardRef<HTMLDivElement, DivProps>(function CardTitle(props, ref) {
12
+ return <div ref={ref} {...props} />
13
+ })
14
+ export const CardDescription = React.forwardRef<HTMLDivElement, DivProps>(function CardDescription(props, ref) {
15
+ return <div ref={ref} {...props} />
16
+ })
17
+ export const CardContent = React.forwardRef<HTMLDivElement, DivProps>(function CardContent(props, ref) {
18
+ return <div ref={ref} {...props} />
19
+ })
20
+ export const CardFooter = React.forwardRef<HTMLDivElement, DivProps>(function CardFooter(props, ref) {
21
+ return <div ref={ref} {...props} />
22
+ })
@@ -59,6 +59,18 @@
59
59
  {
60
60
  "source": "files/validate-types.mjs",
61
61
  "target": "validate-types.mjs"
62
+ },
63
+ {
64
+ "source": "files/src/components/ui/button.tsx",
65
+ "target": "src/components/ui/button.tsx"
66
+ },
67
+ {
68
+ "source": "files/src/components/ui/card.tsx",
69
+ "target": "src/components/ui/card.tsx"
70
+ },
71
+ {
72
+ "source": "files/src/components/ui/badge.tsx",
73
+ "target": "src/components/ui/badge.tsx"
62
74
  }
63
75
  ],
64
76
  "validationChecks": [
@@ -68,7 +80,7 @@
68
80
  },
69
81
  {
70
82
  "type": "file-exists",
71
- "path": "src/main.tsx"
83
+ "path": "src/main.ts"
72
84
  },
73
85
  {
74
86
  "type": "file-exists",
@@ -100,7 +112,7 @@
100
112
  ],
101
113
  "entrypoints": [
102
114
  "index.html",
103
- "src/main.tsx",
115
+ "src/main.ts",
104
116
  "src/App.tsx",
105
117
  "vite.config.ts"
106
118
  ],
@@ -22,7 +22,15 @@
22
22
  "@types/react": "latest",
23
23
  "@types/react-dom": "latest",
24
24
  "tailwindcss": "latest",
25
- "vite": "^6.2.0",
25
+ "vite": "^6.4.2",
26
26
  "@remix-run/dev": "^2.0.0"
27
+ },
28
+ "overrides": {
29
+ "vite": "^6.4.2"
30
+ },
31
+ "pnpm": {
32
+ "overrides": {
33
+ "vite": "^6.4.2"
34
+ }
27
35
  }
28
36
  }
@@ -12,8 +12,16 @@
12
12
  "svelte": "^5.0.0"
13
13
  },
14
14
  "devDependencies": {
15
- "vite": "^6.2.0",
15
+ "vite": "^6.4.2",
16
16
  "@sveltejs/adapter-auto": "^4.0.0",
17
17
  "@sveltejs/vite-plugin-svelte": "^5.0.0"
18
+ },
19
+ "overrides": {
20
+ "vite": "^6.4.2"
21
+ },
22
+ "pnpm": {
23
+ "overrides": {
24
+ "vite": "^6.4.2"
25
+ }
18
26
  }
19
27
  }
@@ -14,6 +14,8 @@
14
14
  "devDependencies": {
15
15
  "vite": "^6.2.0",
16
16
  "@vitejs/plugin-react": "^4.4.0",
17
- "@tauri-apps/cli": "^2.0.0"
17
+ "@tauri-apps/cli": "^2.0.0",
18
+ "typescript": "^5.7.0",
19
+ "@types/node": "^20.0.0"
18
20
  }
19
21
  }
@@ -10,8 +10,16 @@
10
10
  "vue": "^3.5.0"
11
11
  },
12
12
  "devDependencies": {
13
- "vite": "^6.2.0",
13
+ "vite": "^6.4.2",
14
14
  "@vitejs/plugin-vue": "^5.0.0",
15
15
  "vue-tsc": "^2.0.0"
16
+ },
17
+ "overrides": {
18
+ "vite": "^6.4.2"
19
+ },
20
+ "pnpm": {
21
+ "overrides": {
22
+ "vite": "^6.4.2"
23
+ }
16
24
  }
17
25
  }
@@ -4,6 +4,7 @@
4
4
  "module": "ESNext",
5
5
  "jsx": "react-jsx",
6
6
  "moduleResolution": "Bundler",
7
- "strict": true
7
+ "strict": true,
8
+ "skipLibCheck": true
8
9
  }
9
10
  }
@@ -1,6 +1,27 @@
1
1
  [profile.default]
2
2
  src = "src"
3
3
  out = "out"
4
- libs = []
4
+ libs = ["lib"]
5
5
  test = "test"
6
6
  script = "script"
7
+ solc_version = "0.8.28"
8
+ optimizer = true
9
+ optimizer_runs = 200
10
+ via_ir = false
11
+ auto_detect_solc = false
12
+ fs_permissions = [{ access = "read-write", path = "./" }]
13
+ gas_reports = ["*"]
14
+ verbosity = 2
15
+
16
+ [profile.ci]
17
+ verbosity = 4
18
+ fuzz = { runs = 1000 }
19
+ invariant = { runs = 256 }
20
+
21
+ [fmt]
22
+ line_length = 100
23
+ tab_width = 4
24
+ bracket_spacing = false
25
+ int_types = "long"
26
+
27
+ # See more at https://book.getfoundry.sh/reference/config/overview
@@ -4,13 +4,13 @@
4
4
  "version": 1
5
5
  },
6
6
  "brand": {
7
- "name": "Starter Foundry",
8
- "tagline": "A fullstack starter you can personalize."
7
+ "name": "{{projectName}}",
8
+ "tagline": "{{subheadline}}"
9
9
  },
10
10
  "hero": {
11
- "eyebrow": "scaffold",
12
- "headline": "Starter Foundry Fullstack App",
13
- "subheadline": "A live web shell plus a typed API seam for the agent to extend."
11
+ "eyebrow": "{{projectName}}",
12
+ "headline": "{{headline}}",
13
+ "subheadline": "{{subheadline}}"
14
14
  },
15
15
  "theme": {
16
16
  "_doc": "Optional accent color for the page. Read by personalize.css via CSS custom properties. Use HSL space-separated values for compatibility with hsl() consumers.",
@@ -0,0 +1,16 @@
1
+ # Toolchain requirements
2
+
3
+ This blueprint pins **rustc 1.91+** via `rust-toolchain.toml` (blueprint-sdk
4
+ 0.2.0-alpha.2 and later require it).
5
+
6
+ If your system rustc is older, install 1.91 before running `cargo build`:
7
+
8
+ ```bash
9
+ rustup install 1.91
10
+ # From the project root, rustup auto-selects 1.91 due to rust-toolchain.toml
11
+ cargo build --workspace
12
+ ```
13
+
14
+ Common rustup setups auto-install the pinned toolchain on the first
15
+ `cargo` invocation — no manual step needed. If your CI skips rustup
16
+ provisioning, ensure the runner has 1.91 available.
@@ -1,4 +1,4 @@
1
1
  [toolchain]
2
- channel = "1.88"
2
+ channel = "1.91"
3
3
  components = ["rustfmt", "clippy"]
4
4
  profile = "minimal"
@@ -42,6 +42,10 @@
42
42
  {
43
43
  "source": "files/foundry.toml",
44
44
  "target": "foundry.toml"
45
+ },
46
+ {
47
+ "source": "files/TOOLCHAIN.md",
48
+ "target": "TOOLCHAIN.md"
45
49
  }
46
50
  ]
47
51
  }
@@ -0,0 +1,57 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "note": "Hand-curated map from npm/cargo/pip packages to starter-foundry capability IDs. Consumed by scripts/analyze-buildouts.mjs and the capability-inferrer. When an agent installs package X mid-buildout, it's signal we should have attached the mapped capability. Confidence values: 1.0 = unique identifier (e.g. @stripe/stripe-js → saas-billing). 0.5 = strong hint but context-dependent. 0.3 = weak, probably just an incidental dep.",
4
+ "mapping": {
5
+ "lucide-react": { "capability": "capability:shadcn", "confidence": 0.8 },
6
+ "clsx": { "capability": "capability:shadcn", "confidence": 0.7 },
7
+ "class-variance-authority": { "capability": "capability:shadcn", "confidence": 0.95 },
8
+ "tailwind-merge": { "capability": "capability:shadcn", "confidence": 0.9 },
9
+ "@radix-ui/react-slot": { "capability": "capability:shadcn", "confidence": 0.95 },
10
+ "@radix-ui/react-dialog": { "capability": "capability:shadcn", "confidence": 0.9 },
11
+ "@radix-ui/react-dropdown-menu": { "capability": "capability:shadcn", "confidence": 0.9 },
12
+
13
+ "tailwindcss": { "capability": "capability:tailwind", "confidence": 0.98 },
14
+ "@tailwindcss/vite": { "capability": "capability:tailwind", "confidence": 0.98 },
15
+ "@tailwindcss/postcss": { "capability": "capability:tailwind", "confidence": 0.98 },
16
+ "postcss": { "capability": "capability:tailwind", "confidence": 0.4 },
17
+
18
+ "recharts": { "capability": "capability:chart-widget", "confidence": 0.95 },
19
+ "@tanstack/react-table": { "capability": "capability:layout-admin", "confidence": 0.85 },
20
+
21
+ "stripe": { "capability": "capability:saas-billing", "confidence": 0.95 },
22
+ "@stripe/stripe-js": { "capability": "capability:saas-billing", "confidence": 0.98 },
23
+ "@stripe/react-stripe-js": { "capability": "capability:saas-billing", "confidence": 0.98 },
24
+
25
+ "@clerk/nextjs": { "capability": "capability:layout-auth", "confidence": 0.95 },
26
+ "@clerk/clerk-react": { "capability": "capability:layout-auth", "confidence": 0.95 },
27
+
28
+ "ai": { "capability": "capability:ai-chat-ui", "confidence": 0.7 },
29
+ "@ai-sdk/react": { "capability": "capability:ai-chat-ui", "confidence": 0.9 },
30
+ "@ai-sdk/openai": { "capability": "capability:ai-agent-dashboard", "confidence": 0.6 },
31
+
32
+ "@openzeppelin/contracts": { "capability": "capability:evm-deploy-foundry", "confidence": 0.85 },
33
+ "viem": { "capability": "capability:evm-wallet-dashboard", "confidence": 0.7 },
34
+ "wagmi": { "capability": "capability:evm-wallet-dashboard", "confidence": 0.85 },
35
+ "ethers": { "capability": "capability:evm-wallet-dashboard", "confidence": 0.65 },
36
+ "@rainbow-me/rainbowkit": { "capability": "capability:evm-wallet-dashboard", "confidence": 0.9 },
37
+
38
+ "snarkjs": { "capability": null, "confidence": 0, "note": "JS-based zk tooling, low priority. Real zk path is Rust (sp1/risc0). If an agent reaches for snarkjs, route them to framework:zk-prover-service instead." },
39
+ "circomlibjs": { "capability": null, "confidence": 0, "note": "same as snarkjs" },
40
+ "sp1": { "capability": null, "confidence": 0, "note": "Rust crate, not npm. Framework-level signal for framework:zk-prover-service." },
41
+ "risc0": { "capability": null, "confidence": 0, "note": "Rust crate, not npm. Framework-level signal for framework:zk-prover-service." },
42
+ "risc0-zkvm": { "capability": null, "confidence": 0, "note": "Rust crate; same." },
43
+
44
+ "@solana/web3.js": { "capability": "capability:solana-amm", "confidence": 0.4 },
45
+ "@solana/wallet-adapter-react": { "capability": "capability:solana-amm", "confidence": 0.5 },
46
+
47
+ "@codemirror/view": { "capability": "capability:ai-agent-dashboard", "confidence": 0.5 },
48
+ "@codemirror/state": { "capability": "capability:ai-agent-dashboard", "confidence": 0.5 },
49
+ "@codemirror/lang-javascript": { "capability": "capability:ai-agent-dashboard", "confidence": 0.5 },
50
+
51
+ "date-fns": { "capability": null, "confidence": 0, "note": "utility, no capability mapping" },
52
+ "zod": { "capability": null, "confidence": 0, "note": "schema library, used everywhere" },
53
+
54
+ "axios": { "capability": null, "confidence": 0, "note": "http client, used everywhere" },
55
+ "dotenv": { "capability": null, "confidence": 0, "note": "env loader, infra-level" }
56
+ }
57
+ }