@tangle-network/starter-foundry 0.3.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,14 +18,42 @@ export declare const PERSONALIZATION_CSS_INSTRUCTION = "Before adding features,
18
18
  * Tells an agent how to use the personalize.json mechanism — single source of
19
19
  * truth for brand, hero copy, feature names/descriptions, pricing tiers, and
20
20
  * footer content. Inject into agent system prompts when the scaffold contains
21
- * layout layers that ship a personalize.json (currently layout-landing).
21
+ * layout layers that ship a personalize.json (layout-landing) OR a framework
22
+ * layer that ships one (fullstack-node-ts as of 0.4.6).
23
+ *
24
+ * The instruction is intentionally MANDATORY — "REQUIRED FIRST EDIT", not
25
+ * "if it exists, rewrite it" — because this is the single highest-leverage
26
+ * edit the agent can make. Without it the served preview is the scaffold
27
+ * default and the user sees nothing of their request. Path is intentionally
28
+ * vague ("personalize.json in the workspace") to cover both `personalize.json`
29
+ * at the workspace root (fullstack-ts) and `src/personalize.json` (vite-react).
22
30
  */
23
- export declare const PERSONALIZATION_JSON_INSTRUCTION = "If src/personalize.json exists, rewrite it before adding features. It is the single source of truth for brand name, hero copy, feature names and descriptions, pricing tiers, and footer content \u2014 every user-visible string on the landing page reads from this file. Replace the placeholder content (Acme, \"Build something people want\", \"Lightning fast\", etc.) with copy specific to the user's product. Keep the schema shape unchanged.";
31
+ export declare const PERSONALIZATION_JSON_INSTRUCTION = "REQUIRED FIRST EDIT after Step 0: locate and rewrite personalize.json (in the workspace root or under src/, depending on family). It is the SINGLE SOURCE OF TRUTH for brand name, brand tagline, hero eyebrow, hero headline, hero subheadline, and (where present) feature names, pricing tiers, and footer content. The dev server templates the served HTML from this file at request time, so editing it makes the user's preview update on the next browser refresh \u2014 no restart, no build step. Replace the placeholder content (\"Starter Foundry\", \"Acme\", \"Build something people want\", \"Lightning fast\", etc.) with copy specific to the user's actual product. Keep the schema shape unchanged. This is the single highest-leverage edit you can make in turn 1; do it before writing any new files or features.";
24
32
  /**
25
33
  * Combined personalization instruction. Use this when injecting scaffold
26
34
  * context unless you have a reason to use one mechanism but not the other.
27
35
  */
28
- export declare const PERSONALIZATION_INSTRUCTION = "If src/personalize.json exists, rewrite it before adding features. It is the single source of truth for brand name, hero copy, feature names and descriptions, pricing tiers, and footer content \u2014 every user-visible string on the landing page reads from this file. Replace the placeholder content (Acme, \"Build something people want\", \"Lightning fast\", etc.) with copy specific to the user's product. Keep the schema shape unchanged. Before adding features, open src/personalize.css (or app/personalize.css for Next.js) and rewrite it with a color palette that fits the user's product. Use HSL CSS custom properties on :root and .dark \u2014 see the existing content for format. The cascade overrides Tailwind v4 @theme defaults.";
36
+ export declare const PERSONALIZATION_INSTRUCTION = "REQUIRED FIRST EDIT after Step 0: locate and rewrite personalize.json (in the workspace root or under src/, depending on family). It is the SINGLE SOURCE OF TRUTH for brand name, brand tagline, hero eyebrow, hero headline, hero subheadline, and (where present) feature names, pricing tiers, and footer content. The dev server templates the served HTML from this file at request time, so editing it makes the user's preview update on the next browser refresh \u2014 no restart, no build step. Replace the placeholder content (\"Starter Foundry\", \"Acme\", \"Build something people want\", \"Lightning fast\", etc.) with copy specific to the user's actual product. Keep the schema shape unchanged. This is the single highest-leverage edit you can make in turn 1; do it before writing any new files or features. Before adding features, open src/personalize.css (or app/personalize.css for Next.js) and rewrite it with a color palette that fits the user's product. Use HSL CSS custom properties on :root and .dark \u2014 see the existing content for format. The cascade overrides Tailwind v4 @theme defaults.";
37
+ /**
38
+ * Tells the agent to start the dev server via the runtime's
39
+ * `ensure_dev_server` route as STEP 0 — before reading anything else, before
40
+ * making any edits, before polishing. The runtime exposes an idempotent
41
+ * route that auto-installs and starts the dev server in one call; the
42
+ * agent's only job is to fire the route immediately.
43
+ *
44
+ * This instruction has to land in the context message itself (not just in
45
+ * AGENTS.md) and has to be FRONT-LOADED (first instruction, not buried)
46
+ * because:
47
+ * 1. The agent's default tool-use prompt tells it to run package-manager
48
+ * commands directly, which races the runtime and skips the typed error
49
+ * path. The framing has to be loud enough to override that default.
50
+ * 2. Reasoning models (e.g. zai/glm-5.1) tend to over-deliberate. If the
51
+ * instruction is buried, they polish files for many turns before
52
+ * starting the server, and the user sees nothing.
53
+ * 3. Without runtime tracking the user's preview pane never wires up,
54
+ * regardless of whether the dev server is technically running.
55
+ */
56
+ export declare const ENSURE_DEV_SERVER_INSTRUCTION = "STEP 0 (do this BEFORE anything else, BEFORE reading other files, BEFORE editing): start the dev server. Run this exact command in `bash` immediately: `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 '{}'`. It is idempotent (safe to call multiple times \u2014 returns the same pid), auto-installs dependencies on first call, and surfaces typed error codes (`WORKSPACE_NOT_FOUND`, `NO_RUNNABLE_PROJECT`, `INSTALL_FAILED`, `DEV_COMMAND_NOT_FOUND`, `DEV_PROCESS_EXITED`, `PORT_BIND_FAILED`) you can react to. The `SIDECAR_PORT` and `SIDECAR_AUTH_TOKEN` environment variables are pre-set in your bash environment \u2014 you do NOT need to look them up or set them. 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 \u2014 those bypass the runtime tracking and the user's preview pane will not wire up. After Step 0 returns success, then you can read files and start editing. Subsequent edits hot-reload via HMR; do NOT call this again to restart unless the response says you should.";
29
57
  /**
30
58
  * Returns a canonical agent-context message for a freshly composed scaffold.
31
59
  * Consumers (blueprint-agent etc.) inject this into the agent's first system
@@ -17,14 +17,42 @@ export const PERSONALIZATION_CSS_INSTRUCTION = 'Before adding features, open src
17
17
  * Tells an agent how to use the personalize.json mechanism — single source of
18
18
  * truth for brand, hero copy, feature names/descriptions, pricing tiers, and
19
19
  * footer content. Inject into agent system prompts when the scaffold contains
20
- * layout layers that ship a personalize.json (currently layout-landing).
20
+ * layout layers that ship a personalize.json (layout-landing) OR a framework
21
+ * layer that ships one (fullstack-node-ts as of 0.4.6).
22
+ *
23
+ * The instruction is intentionally MANDATORY — "REQUIRED FIRST EDIT", not
24
+ * "if it exists, rewrite it" — because this is the single highest-leverage
25
+ * edit the agent can make. Without it the served preview is the scaffold
26
+ * default and the user sees nothing of their request. Path is intentionally
27
+ * vague ("personalize.json in the workspace") to cover both `personalize.json`
28
+ * at the workspace root (fullstack-ts) and `src/personalize.json` (vite-react).
21
29
  */
22
- export const PERSONALIZATION_JSON_INSTRUCTION = 'If src/personalize.json exists, rewrite it before adding features. It is the single source of truth for brand name, hero copy, feature names and descriptions, pricing tiers, and footer content every user-visible string on the landing page reads from this file. Replace the placeholder content (Acme, "Build something people want", "Lightning fast", etc.) with copy specific to the user\'s product. Keep the schema shape unchanged.';
30
+ export const PERSONALIZATION_JSON_INSTRUCTION = 'REQUIRED FIRST EDIT after Step 0: locate and rewrite personalize.json (in the workspace root or under src/, depending on family). It is the SINGLE SOURCE OF TRUTH for brand name, brand tagline, hero eyebrow, hero headline, hero subheadline, and (where present) feature names, pricing tiers, and footer content. The dev server templates the served HTML from this file at request time, so editing it makes the user\'s preview update on the next browser refresh no restart, no build step. Replace the placeholder content ("Starter Foundry", "Acme", "Build something people want", "Lightning fast", etc.) with copy specific to the user\'s actual product. Keep the schema shape unchanged. This is the single highest-leverage edit you can make in turn 1; do it before writing any new files or features.';
23
31
  /**
24
32
  * Combined personalization instruction. Use this when injecting scaffold
25
33
  * context unless you have a reason to use one mechanism but not the other.
26
34
  */
27
35
  export const PERSONALIZATION_INSTRUCTION = `${PERSONALIZATION_JSON_INSTRUCTION} ${PERSONALIZATION_CSS_INSTRUCTION}`;
36
+ /**
37
+ * Tells the agent to start the dev server via the runtime's
38
+ * `ensure_dev_server` route as STEP 0 — before reading anything else, before
39
+ * making any edits, before polishing. The runtime exposes an idempotent
40
+ * route that auto-installs and starts the dev server in one call; the
41
+ * agent's only job is to fire the route immediately.
42
+ *
43
+ * This instruction has to land in the context message itself (not just in
44
+ * AGENTS.md) and has to be FRONT-LOADED (first instruction, not buried)
45
+ * because:
46
+ * 1. The agent's default tool-use prompt tells it to run package-manager
47
+ * commands directly, which races the runtime and skips the typed error
48
+ * path. The framing has to be loud enough to override that default.
49
+ * 2. Reasoning models (e.g. zai/glm-5.1) tend to over-deliberate. If the
50
+ * instruction is buried, they polish files for many turns before
51
+ * starting the server, and the user sees nothing.
52
+ * 3. Without runtime tracking the user's preview pane never wires up,
53
+ * regardless of whether the dev server is technically running.
54
+ */
55
+ export const ENSURE_DEV_SERVER_INSTRUCTION = 'STEP 0 (do this BEFORE anything else, BEFORE reading other files, BEFORE editing): start the dev server. Run this exact command in `bash` immediately: `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 \'{}\'`. It is idempotent (safe to call multiple times — returns the same pid), auto-installs dependencies on first call, and surfaces typed error codes (`WORKSPACE_NOT_FOUND`, `NO_RUNNABLE_PROJECT`, `INSTALL_FAILED`, `DEV_COMMAND_NOT_FOUND`, `DEV_PROCESS_EXITED`, `PORT_BIND_FAILED`) you can react to. The `SIDECAR_PORT` and `SIDECAR_AUTH_TOKEN` environment variables are pre-set in your bash environment — you do NOT need to look them up or set them. 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 — those bypass the runtime tracking and the user\'s preview pane will not wire up. After Step 0 returns success, then you can read files and start editing. Subsequent edits hot-reload via HMR; do NOT call this again to restart unless the response says you should.';
28
56
  /**
29
57
  * Returns a canonical agent-context message for a freshly composed scaffold.
30
58
  * Consumers (blueprint-agent etc.) inject this into the agent's first system
@@ -36,7 +64,11 @@ export function getComposedScaffoldContext(result) {
36
64
  const family = result.components.family;
37
65
  return [
38
66
  `A working project scaffold has been composed in /home/agent by starter-foundry (family: ${family}).`,
39
- 'Read /home/agent/AGENTS.md first it contains the architecture notes, build commands, suggested pages and components, design rules, and personalization instructions.',
67
+ // Step 0: dev server. Front-loaded BEFORE any other instruction so the
68
+ // agent's first action is "make the user see a preview ASAP", not
69
+ // "polish files for 5 minutes then forget to start the server".
70
+ ENSURE_DEV_SERVER_INSTRUCTION,
71
+ 'After Step 0, read /home/agent/AGENTS.md — it contains the architecture notes, suggested pages and components, design rules, and personalization instructions.',
40
72
  PERSONALIZATION_INSTRUCTION,
41
73
  'If shadcn/ui components are present in src/components/ui/, use them instead of raw HTML.',
42
74
  'Make targeted edits to extend the scaffold for the user request — do NOT recreate files that already exist.',
@@ -52,7 +84,10 @@ export function getComposedScaffoldContext(result) {
52
84
  export function getCuratedScaffoldContext() {
53
85
  return [
54
86
  'A working project scaffold is set up in /home/agent.',
55
- 'Read /home/agent/AGENTS.md first if present it contains the build plan and personalization instructions.',
87
+ // Step 0: dev server. Front-loaded BEFORE any other instruction so the
88
+ // agent's first action is "make the user see a preview ASAP".
89
+ ENSURE_DEV_SERVER_INSTRUCTION,
90
+ 'After Step 0, read /home/agent/AGENTS.md if present — it contains the build plan and personalization instructions.',
56
91
  PERSONALIZATION_INSTRUCTION,
57
92
  'Make the minimum set of file edits needed to satisfy the user request.',
58
93
  'Do not spend time on broad repo exploration.',
@@ -1 +1 @@
1
- {"version":3,"file":"agent-context.js","sourceRoot":"","sources":["../../src/lib/agent-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,qSAAqS,CAAA;AAEvS;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,kbAAkb,CAAA;AAEpb;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,GAAG,gCAAgC,IAAI,+BAA+B,EAAE,CAAA;AAE1E;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAqB;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAA;IACvC,OAAO;QACL,2FAA2F,MAAM,IAAI;QACrG,wKAAwK;QACxK,2BAA2B;QAC3B,0FAA0F;QAC1F,6GAA6G;QAC7G,+EAA+E;KAChF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,sDAAsD;QACtD,4GAA4G;QAC5G,2BAA2B;QAC3B,wEAAwE;QACxE,8CAA8C;QAC9C,2FAA2F;QAC3F,4HAA4H;KAC7H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"agent-context.js","sourceRoot":"","sources":["../../src/lib/agent-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,qSAAqS,CAAA;AAEvS;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,gyBAAgyB,CAAA;AAElyB;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,GAAG,gCAAgC,IAAI,+BAA+B,EAAE,CAAA;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,wrCAAwrC,CAAA;AAE1rC;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAqB;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAA;IACvC,OAAO;QACL,2FAA2F,MAAM,IAAI;QACrG,uEAAuE;QACvE,kEAAkE;QAClE,gEAAgE;QAChE,6BAA6B;QAC7B,gKAAgK;QAChK,2BAA2B;QAC3B,0FAA0F;QAC1F,6GAA6G;QAC7G,+EAA+E;KAChF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,sDAAsD;QACtD,uEAAuE;QACvE,8DAA8D;QAC9D,6BAA6B;QAC7B,oHAAoH;QACpH,2BAA2B;QAC3B,wEAAwE;QACxE,8CAA8C;QAC9C,2FAA2F;QAC3F,4HAA4H;KAC7H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC"}
@@ -4,11 +4,18 @@ import { generateBuildPlan } from './build-plan.js';
4
4
  import { ensureDir, sanitizePackageName, writeJson } from './fs.js';
5
5
  import { buildVariables, resolveComponents, resolveTemplateObject } from './registry.js';
6
6
  import { emit, traced } from './telemetry.js';
7
+ const HTML_LIKE_EXTS = new Set(['.tsx', '.jsx', '.html']);
8
+ function escapeHtmlChars(value) {
9
+ return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
10
+ }
7
11
  async function renderFile(sourcePath, targetPath, variables) {
8
12
  const raw = await fs.readFile(sourcePath, 'utf8');
13
+ const ext = path.extname(targetPath).toLowerCase();
14
+ const needsEscape = HTML_LIKE_EXTS.has(ext);
9
15
  const rendered = raw.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
10
16
  if (key in variables) {
11
- return String(variables[key]);
17
+ const val = String(variables[key]);
18
+ return needsEscape ? escapeHtmlChars(val) : val;
12
19
  }
13
20
  return '';
14
21
  });
@@ -151,15 +158,17 @@ async function composeStarterInner(spec, outDir) {
151
158
  await writeJson(path.join(outDir, '.starter-foundry', 'compose-report.json'), composeReport);
152
159
  // Merge media manifests from all layers into a single root manifest
153
160
  const mediaSlots = await mergeMediaManifests(outDir);
154
- // Generate AGENTS.md — per-project agent instructions
161
+ // Generate AGENTS.md — per-project agent instructions (OpenCode, Codex, etc.)
155
162
  const agentsMd = buildAgentsMd(spec, components, composeReport.contextHints, mediaSlots);
156
163
  await fs.writeFile(path.join(outDir, 'AGENTS.md'), `${agentsMd}\n`, 'utf8');
164
+ // Generate CLAUDE.md — Claude Code specific instructions (same content, different filename)
165
+ await fs.writeFile(path.join(outDir, 'CLAUDE.md'), `${agentsMd}\n`, 'utf8');
157
166
  // Generate llms.txt — machine-readable project description for AI agents
158
167
  const llmsTxt = buildLlmsTxt(spec, components, composeReport.contextHints);
159
168
  await fs.writeFile(path.join(outDir, 'llms.txt'), `${llmsTxt}\n`, 'utf8');
160
169
  return {
161
170
  outDir,
162
- filesWritten: [...new Set([...filesWritten, 'AGENTS.md', 'llms.txt'])].sort(),
171
+ filesWritten: [...new Set([...filesWritten, 'AGENTS.md', 'CLAUDE.md', 'llms.txt'])].sort(),
163
172
  composeReportPath: path.join(outDir, '.starter-foundry', 'compose-report.json'),
164
173
  components: composeReport.components,
165
174
  };
@@ -195,6 +204,13 @@ function buildAgentsMd(spec, components, contextHints, mediaSlots = []) {
195
204
  if (buildPlan.goal) {
196
205
  lines.push(buildPlan.goal, '');
197
206
  }
207
+ // STEP 0 — Start the dev server. This MUST be the first H2 in AGENTS.md
208
+ // because agents that pattern-match on "find the run command" stop reading
209
+ // after the first thing that looks like one. The runtime exposes a single
210
+ // canonical idempotent route for this; do not let the agent improvise with
211
+ // bare `pnpm install`/`pnpm dev` calls (they race the agent's edits, have
212
+ // no error taxonomy, and aren't tracked by the runtime).
213
+ 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.', '');
198
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(', ')}`);
199
215
  if (components.partner) {
200
216
  lines.push(`- **Partner:** \`${components.partner.id}\``);
@@ -205,14 +221,11 @@ function buildAgentsMd(spec, components, contextHints, mediaSlots = []) {
205
221
  buildPlan.architecture.forEach((a) => lines.push(`- ${a}`));
206
222
  lines.push('');
207
223
  }
208
- lines.push('## Getting started', '');
209
- if (contextHints.commands.length > 0) {
210
- lines.push('```bash');
211
- contextHints.commands.forEach((c) => lines.push(c));
212
- lines.push('```', '');
213
- }
224
+ // Key files only — no install/dev commands here, those are handled by
225
+ // Step 0 above. Listing them in a "Getting started" block was creating
226
+ // a competing recipe the agent followed instead of the runtime route.
214
227
  if (contextHints.entrypoints.length > 0) {
215
- lines.push(`Key files: ${contextHints.entrypoints.map((e) => `\`${e}\``).join(', ')}`, '');
228
+ lines.push('## Key files', '', contextHints.entrypoints.map((e) => `- \`${e}\``).join('\n'), '');
216
229
  }
217
230
  if (buildPlan.pages.length > 0 || buildPlan.apiRoutes.length > 0 || buildPlan.components.length > 0) {
218
231
  lines.push('## Suggested build plan', '', 'These are starting points — adapt them to the user\'s actual needs.', '');
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/lib/compose.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,21 @@ function buildAgentsMd(workspaceReport) {
38
38
  return [
39
39
  `# AGENTS.md`,
40
40
  '',
41
- 'Read `PROJECT.md` first.',
41
+ '## Step 0 — Start the dev server (do this FIRST)',
42
+ '',
43
+ 'Before reading anything else in this file, run this command in `bash` to start the primary project\'s 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.',
44
+ '',
45
+ '```bash',
46
+ '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 \'{}\'',
47
+ '```',
48
+ '',
49
+ 'The `SIDECAR_PORT` and `SIDECAR_AUTH_TOKEN` env vars are pre-set in your bash environment — you do NOT need to look them up.',
50
+ '',
51
+ '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.',
52
+ '',
53
+ 'The response is JSON with `{ success, data: { pid, family, command, startedNow, installRan } }` on success or `{ success: false, error: { code, message, log? } }` on failure. Error codes: `WORKSPACE_NOT_FOUND | NO_RUNNABLE_PROJECT | INSTALL_FAILED | DEV_COMMAND_NOT_FOUND | DEV_PROCESS_EXITED | PORT_BIND_FAILED`. Read the `log` field on failure to find what to fix, then call again.',
54
+ '',
55
+ 'Read `PROJECT.md` first after Step 0.',
42
56
  `Primary project is \`${workspaceReport.launchPlan.primaryProjectId}\`. Start there unless blocked.`,
43
57
  'Build on top of the prepared workspace. Do not replace architecture from zero without a concrete blocker.',
44
58
  'Prefer validated commands and known entrypoints before broad repo exploration.',
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/starter-foundry",
3
- "version": "0.3.0",
3
+ "version": "0.5.2",
4
4
  "description": "Deterministic project scaffold engine for AI coding platforms",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -8,6 +8,10 @@
8
8
  "type": "git",
9
9
  "url": "https://github.com/tangle-network/starter-foundry.git"
10
10
  },
11
+ "publishConfig": {
12
+ "access": "public",
13
+ "registry": "https://registry.npmjs.org/"
14
+ },
11
15
  "exports": {
12
16
  ".": "./dist/lib/index.js",
13
17
  "./planner": "./dist/lib/prompt-planner.js",
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "type": "module",
5
5
  "scripts": {
6
- "dev": "node --experimental-strip-types src/server.ts",
6
+ "dev": "node --watch --experimental-strip-types src/server.ts",
7
7
  "validate": "node validate-types.mjs"
8
8
  },
9
9
  "dependencies": {
@@ -124,6 +124,8 @@
124
124
  "path": "/"
125
125
  },
126
126
  "extensionPoints": [
127
+ "personalize.json",
128
+ "personalize.css",
127
129
  "database-config.json",
128
130
  "auth-config.json",
129
131
  "payments-config.json",
@@ -68,7 +68,7 @@
68
68
  },
69
69
  {
70
70
  "type": "file-exists",
71
- "path": "src/main.ts"
71
+ "path": "src/main.tsx"
72
72
  },
73
73
  {
74
74
  "type": "file-exists",
@@ -100,7 +100,7 @@
100
100
  ],
101
101
  "entrypoints": [
102
102
  "index.html",
103
- "src/main.ts",
103
+ "src/main.tsx",
104
104
  "src/App.tsx",
105
105
  "vite.config.ts"
106
106
  ],
@@ -3,15 +3,16 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>{{headline}}</title>
6
+ <title>{{brand.name}} — {{hero.headline}}</title>
7
+ <link rel="stylesheet" href="/personalize.css">
7
8
  <link rel="stylesheet" href="/styles.css">
8
9
  </head>
9
10
  <body>
10
11
  <main class="shell">
11
12
  <section class="hero">
12
- <p class="eyebrow">{{projectName}}</p>
13
- <h1>{{headline}}</h1>
14
- <p class="subheadline">{{subheadline}}</p>
13
+ <p class="eyebrow">{{hero.eyebrow}}</p>
14
+ <h1>{{hero.headline}}</h1>
15
+ <p class="subheadline">{{hero.subheadline}}</p>
15
16
  </section>
16
17
  <section class="api-panel">
17
18
  <h2>Live API Probe</h2>
@@ -0,0 +1,36 @@
1
+ /*
2
+ * personalize.css — runtime branding
3
+ * ----------------------------------
4
+ *
5
+ * This file is loaded by web/index.html via a plain <link> tag. The dev
6
+ * server serves it as a static asset; the browser fetches the latest
7
+ * version on every page load, so edits show up on the next refresh
8
+ * without needing the Node process to restart.
9
+ *
10
+ * Edit the HSL color tokens below to rebrand the served page. The values
11
+ * here intentionally mirror the `theme.*` block in personalize.json so
12
+ * tools that prefer JSON can drive both files from one source. Keep both
13
+ * in sync if you edit by hand.
14
+ */
15
+
16
+ :root {
17
+ --color-primary: hsl(210 90% 56%);
18
+ --color-primary-foreground: hsl(0 0% 100%);
19
+ --color-background: hsl(0 0% 100%);
20
+ --color-foreground: hsl(222 47% 11%);
21
+ --color-accent: hsl(210 90% 96%);
22
+ --color-border: hsl(220 13% 91%);
23
+ --color-muted: hsl(210 16% 95%);
24
+ --color-muted-foreground: hsl(215 16% 47%);
25
+ }
26
+
27
+ .dark {
28
+ --color-primary: hsl(210 90% 62%);
29
+ --color-primary-foreground: hsl(222 47% 11%);
30
+ --color-background: hsl(222 47% 11%);
31
+ --color-foreground: hsl(210 40% 98%);
32
+ --color-accent: hsl(217 33% 17%);
33
+ --color-border: hsl(217 33% 17%);
34
+ --color-muted: hsl(217 33% 17%);
35
+ --color-muted-foreground: hsl(215 20% 65%);
36
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "_meta": {
3
+ "doc": "Edit this file to customize all branding and hero copy on the served page. The dev server reads this file fresh on every request to /, substitutes the values into web/index.html, and returns the rendered HTML. No restart needed — your edits are visible on the next browser refresh. Agents personalizing the scaffold should rewrite this file based on the user's actual product.",
4
+ "version": 1
5
+ },
6
+ "brand": {
7
+ "name": "Starter Foundry",
8
+ "tagline": "A fullstack starter you can personalize."
9
+ },
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."
14
+ },
15
+ "theme": {
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.",
17
+ "primary": "210 90% 56%",
18
+ "primaryForeground": "0 0% 100%",
19
+ "background": "0 0% 100%",
20
+ "foreground": "222 47% 11%"
21
+ }
22
+ }
@@ -13,6 +13,32 @@ const mimeTypes: Record<string, string> = {
13
13
  ".json": "application/json; charset=utf-8"
14
14
  };
15
15
 
16
+ /**
17
+ * personalize.json schema. The dev server reads this file fresh on every
18
+ * GET / so agent edits land in the next browser refresh — no restart, no
19
+ * import-graph hot reload, no build step. Each section is optional; the
20
+ * scaffold defaults below take over for any missing key.
21
+ */
22
+ type Personalize = {
23
+ brand?: { name?: string; tagline?: string };
24
+ hero?: { eyebrow?: string; headline?: string; subheadline?: string };
25
+ };
26
+
27
+ const PERSONALIZE_DEFAULTS: Required<{
28
+ brand: Required<NonNullable<Personalize["brand"]>>;
29
+ hero: Required<NonNullable<Personalize["hero"]>>;
30
+ }> = {
31
+ brand: {
32
+ name: "{{headline}}",
33
+ tagline: "{{subheadline}}"
34
+ },
35
+ hero: {
36
+ eyebrow: "{{projectName}}",
37
+ headline: "{{headline}}",
38
+ subheadline: "{{subheadline}}"
39
+ }
40
+ };
41
+
16
42
  async function loadOptionalJson(filePath: string, fallback: Record<string, string>) {
17
43
  try {
18
44
  const source = await fs.readFile(filePath, "utf8");
@@ -22,6 +48,42 @@ async function loadOptionalJson(filePath: string, fallback: Record<string, strin
22
48
  }
23
49
  }
24
50
 
51
+ /**
52
+ * Load personalize.json from the workspace root and merge it over the
53
+ * scaffold's compose-time defaults. Returns a flat dot-keyed lookup
54
+ * table the templater can read directly.
55
+ */
56
+ async function loadPersonalize(): Promise<Record<string, string>> {
57
+ let personalize: Personalize = {};
58
+ try {
59
+ const raw = await fs.readFile(path.join(rootDir, "personalize.json"), "utf8");
60
+ personalize = JSON.parse(raw) as Personalize;
61
+ } catch {
62
+ // No personalize.json — fall through to defaults below.
63
+ }
64
+
65
+ const merged = {
66
+ "brand.name": personalize.brand?.name ?? PERSONALIZE_DEFAULTS.brand.name,
67
+ "brand.tagline": personalize.brand?.tagline ?? PERSONALIZE_DEFAULTS.brand.tagline,
68
+ "hero.eyebrow": personalize.hero?.eyebrow ?? PERSONALIZE_DEFAULTS.hero.eyebrow,
69
+ "hero.headline": personalize.hero?.headline ?? PERSONALIZE_DEFAULTS.hero.headline,
70
+ "hero.subheadline": personalize.hero?.subheadline ?? PERSONALIZE_DEFAULTS.hero.subheadline
71
+ };
72
+ return merged;
73
+ }
74
+
75
+ /**
76
+ * Substitute `{{key}}` placeholders in `template` from `values`. Keys with
77
+ * dots (e.g. `{{brand.name}}`) are looked up verbatim in the flat table.
78
+ * Unknown keys are left in place so missing data is visible in the
79
+ * rendered page rather than silently dropped.
80
+ */
81
+ function renderTemplate(template: string, values: Record<string, string>): string {
82
+ return template.replace(/\{\{([\w.]+)\}\}/g, (match, key: string) => {
83
+ return values[key] ?? match;
84
+ });
85
+ }
86
+
25
87
  const server = http.createServer(async (request, response) => {
26
88
  const requestUrl = new URL(request.url || "/", `http://127.0.0.1:${port}`);
27
89
 
@@ -42,7 +104,49 @@ const server = http.createServer(async (request, response) => {
42
104
  return;
43
105
  }
44
106
 
45
- const resolvedPath = requestUrl.pathname === "/" ? "index.html" : requestUrl.pathname.slice(1);
107
+ // GET / and explicit /index.html: render the template with the latest
108
+ // personalize.json. We re-read both files on every request so agent
109
+ // edits show up immediately on the next browser refresh — no HMR,
110
+ // no restart, no build step.
111
+ if (requestUrl.pathname === "/" || requestUrl.pathname === "/index.html") {
112
+ try {
113
+ const [template, values] = await Promise.all([
114
+ fs.readFile(path.join(rootDir, "web", "index.html"), "utf8"),
115
+ loadPersonalize()
116
+ ]);
117
+ const rendered = renderTemplate(template, values);
118
+ response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
119
+ response.end(rendered);
120
+ } catch (err) {
121
+ response.writeHead(500, { "content-type": "text/plain; charset=utf-8" });
122
+ response.end(`failed to render index.html: ${(err as Error).message}`);
123
+ }
124
+ return;
125
+ }
126
+
127
+ // /personalize.css and /personalize.json — agent-editable static assets,
128
+ // served from the workspace root (NOT web/) so a single source-of-truth
129
+ // file works for both the dev server and any post-compose tooling.
130
+ if (
131
+ requestUrl.pathname === "/personalize.css" ||
132
+ requestUrl.pathname === "/personalize.json"
133
+ ) {
134
+ try {
135
+ const filePath = path.join(rootDir, requestUrl.pathname.slice(1));
136
+ const content = await fs.readFile(filePath);
137
+ response.writeHead(200, {
138
+ "content-type": mimeTypes[path.extname(filePath)] || "text/plain; charset=utf-8"
139
+ });
140
+ response.end(content);
141
+ } catch {
142
+ response.writeHead(404, { "content-type": "text/plain; charset=utf-8" });
143
+ response.end("not found");
144
+ }
145
+ return;
146
+ }
147
+
148
+ // Everything else: serve from web/ as a static file.
149
+ const resolvedPath = requestUrl.pathname.slice(1);
46
150
  const filePath = path.join(rootDir, "web", resolvedPath);
47
151
 
48
152
  try {
@@ -31,6 +31,14 @@
31
31
  {
32
32
  "source": "files/styles.css",
33
33
  "target": "web/styles.css"
34
+ },
35
+ {
36
+ "source": "files/personalize.json",
37
+ "target": "personalize.json"
38
+ },
39
+ {
40
+ "source": "files/personalize.css",
41
+ "target": "personalize.css"
34
42
  }
35
43
  ]
36
44
  }
@@ -1,8 +1,82 @@
1
+ import { Button } from '@/components/ui/button'
2
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
3
+ import { Badge } from '@/components/ui/badge'
4
+
5
+ const features = [
6
+ {
7
+ title: 'shadcn/ui Components',
8
+ description: '27 pre-installed components — Button, Card, Dialog, Table, and more. Import from @/components/ui/',
9
+ badge: 'Ready',
10
+ },
11
+ {
12
+ title: 'Tailwind CSS',
13
+ description: 'Utility-first styling with design tokens, dark mode support, and responsive breakpoints.',
14
+ badge: 'Configured',
15
+ },
16
+ {
17
+ title: 'TypeScript + Vite',
18
+ description: 'Fast builds with HMR. Path aliases configured — use @/ for src/ imports.',
19
+ badge: 'Fast',
20
+ },
21
+ ]
22
+
1
23
  export default function App() {
2
24
  return (
3
- <main className="flex min-h-screen flex-col items-center justify-center p-24">
4
- <h1 className="text-4xl font-bold tracking-tight">{'{{headline}}'}</h1>
5
- <p className="mt-4 text-lg text-muted-foreground">{'{{subheadline}}'}</p>
6
- </main>
25
+ <div className="min-h-screen bg-background text-foreground">
26
+ <header className="border-b bg-card">
27
+ <div className="container mx-auto flex h-16 items-center justify-between px-4">
28
+ <div className="flex items-center gap-3">
29
+ <div className="flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground text-sm font-bold">
30
+ {'{{projectName}}'.charAt(0).toUpperCase()}
31
+ </div>
32
+ <span className="text-lg font-semibold">{'{{projectName}}'}</span>
33
+ </div>
34
+ <nav className="flex items-center gap-2">
35
+ <Button variant="ghost" size="sm">Documentation</Button>
36
+ <Button size="sm">Get Started</Button>
37
+ </nav>
38
+ </div>
39
+ </header>
40
+
41
+ <main className="container mx-auto px-4">
42
+ <section className="mx-auto max-w-3xl py-20 text-center">
43
+ <Badge variant="secondary" className="mb-4">Scaffold Ready</Badge>
44
+ <h1 className="text-5xl font-bold tracking-tight">{'{{headline}}'}</h1>
45
+ <p className="mx-auto mt-6 max-w-xl text-xl text-muted-foreground">
46
+ {'{{subheadline}}'}
47
+ </p>
48
+ <div className="mt-8 flex justify-center gap-4">
49
+ <Button size="lg">Read AGENTS.md</Button>
50
+ <Button size="lg" variant="outline">Browse Components</Button>
51
+ </div>
52
+ </section>
53
+
54
+ <section className="mx-auto max-w-4xl pb-20">
55
+ <div className="grid gap-6 md:grid-cols-3">
56
+ {features.map((feature) => (
57
+ <Card key={feature.title} className="relative overflow-hidden">
58
+ <CardHeader>
59
+ <div className="flex items-center justify-between">
60
+ <CardTitle className="text-lg">{feature.title}</CardTitle>
61
+ <Badge variant="outline" className="text-xs">{feature.badge}</Badge>
62
+ </div>
63
+ </CardHeader>
64
+ <CardContent>
65
+ <CardDescription className="text-sm leading-relaxed">
66
+ {feature.description}
67
+ </CardDescription>
68
+ </CardContent>
69
+ </Card>
70
+ ))}
71
+ </div>
72
+ </section>
73
+ </main>
74
+
75
+ <footer className="border-t py-8">
76
+ <div className="container mx-auto px-4 text-center text-sm text-muted-foreground">
77
+ Built with starter-foundry &middot; Read AGENTS.md to customize
78
+ </div>
79
+ </footer>
80
+ </div>
7
81
  )
8
82
  }
@@ -10,6 +10,6 @@ path = "src/main.rs"
10
10
 
11
11
  [dependencies]
12
12
  {{packageName}}-lib = { path = "../{{packageName}}-lib" }
13
- blueprint-sdk = { version = "0.2.0-alpha.1", default-features = false, features = ["std", "tangle"] }
13
+ blueprint-sdk = { version = "0.2.0-alpha.2", default-features = false, features = ["std", "tangle"] }
14
14
  tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
15
15
  tracing-subscriber = { version = "0.3", features = ["env-filter"] }
@@ -5,7 +5,7 @@ edition.workspace = true
5
5
  license.workspace = true
6
6
 
7
7
  [dependencies]
8
- blueprint-sdk = { version = "0.2.0-alpha.1", default-features = false, features = ["std", "tracing", "macros", "tangle"] }
8
+ blueprint-sdk = { version = "0.2.0-alpha.2", default-features = false, features = ["std", "tracing", "macros", "tangle"] }
9
9
  serde = { version = "1", features = ["derive"] }
10
10
  tokio = { version = "1", default-features = false, features = ["sync"] }
11
11