mapples 0.2.0-beta.7 → 0.2.0-beta.9

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 (61) hide show
  1. package/README.md +35 -14
  2. package/dist/api/agent.d.ts +2 -1
  3. package/dist/api/agent.js.map +1 -1
  4. package/dist/commands/agent.js +14 -3
  5. package/dist/commands/agent.js.map +1 -1
  6. package/dist/commands/create.js +1 -1
  7. package/dist/commands/create.js.map +1 -1
  8. package/dist/commands/impl/agentImpl.d.ts +13 -0
  9. package/dist/commands/impl/agentImpl.js +88 -11
  10. package/dist/commands/impl/agentImpl.js.map +1 -1
  11. package/dist/commands/impl/createImpl.js +10 -6
  12. package/dist/commands/impl/createImpl.js.map +1 -1
  13. package/dist/commands/impl/initImpl.js +10 -6
  14. package/dist/commands/impl/initImpl.js.map +1 -1
  15. package/dist/commands/init.js +1 -1
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/merge/diff.d.ts +19 -0
  18. package/dist/merge/diff.js +47 -0
  19. package/dist/merge/diff.js.map +1 -1
  20. package/dist/merge/threeWay.js +36 -4
  21. package/dist/merge/threeWay.js.map +1 -1
  22. package/dist/project/agentState.d.ts +6 -0
  23. package/dist/project/agentState.js +1 -1
  24. package/dist/project/agentState.js.map +1 -1
  25. package/dist/services/agentInstall.d.ts +55 -10
  26. package/dist/services/agentInstall.js +206 -77
  27. package/dist/services/agentInstall.js.map +1 -1
  28. package/dist/services/scaffold.js +1 -1
  29. package/dist/services/scaffold.js.map +1 -1
  30. package/dist/services/syncEngine.js +12 -6
  31. package/dist/services/syncEngine.js.map +1 -1
  32. package/package.json +1 -1
  33. package/templates/agent/agents-md/AGENTS.md +8 -0
  34. package/templates/agent/claude/settings.json +26 -0
  35. package/templates/agent/codex/config.toml +6 -0
  36. package/templates/agent/codex/hooks.json +26 -0
  37. package/templates/agent/cursor/hooks.json +9 -0
  38. package/templates/agent/cursor/mcp.json +10 -0
  39. package/templates/{claude → agent}/mapples.md +11 -5
  40. package/templates/{claude → agent}/skills/mapples-conventions/SKILL.md +1 -1
  41. package/templates/{claude → agent}/skills/mapples-design/SKILL.md +44 -27
  42. package/templates/{claude → agent}/skills/mapples-sync/SKILL.md +1 -1
  43. /package/templates/{claude → agent/claude}/CLAUDE.md +0 -0
  44. /package/templates/{claude → agent/claude}/mcp.json +0 -0
  45. /package/templates/{claude → agent}/skills/mapples-design/reference/component-library.md +0 -0
  46. /package/templates/{claude → agent}/skills/mapples-design/reference/design-tokens.md +0 -0
  47. /package/templates/{claude → agent}/skills/mapples-design/reference/layout-contract.md +0 -0
  48. /package/templates/{claude → agent}/skills/mapples-design/reference/lint-checklist.md +0 -0
  49. /package/templates/{claude → agent}/skills/mapples-design/reference/plan.md +0 -0
  50. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/empty-states.md +0 -0
  51. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/forms-and-auth.md +0 -0
  52. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/home-dashboard.md +0 -0
  53. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/list-and-detail.md +0 -0
  54. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/microcopy.md +0 -0
  55. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/navigation-chrome.md +0 -0
  56. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/onboarding-flow.md +0 -0
  57. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/screen-flow-wiring.md +0 -0
  58. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/settings-profile.md +0 -0
  59. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/stats-and-progress.md +0 -0
  60. /package/templates/{claude → agent}/skills/mapples-design/reference/playbooks/visual-hierarchy.md +0 -0
  61. /package/templates/{claude → agent}/skills/mapples-design/reference/style-guides.md +0 -0
@@ -1,9 +1,17 @@
1
- // `--agent claude` / `mapples agent install`: puts the Claude Code bundle
2
- // (templates/claude) into an app — project-local skills under .claude/skills,
3
- // the conventions file, a CLAUDE.md pointer, and the read-only MCP entry.
1
+ // `--agent <name>` / `mapples agent install`: puts the agent bundle
2
+ // (templates/agent) into an app — project-local skills, the conventions
3
+ // file, a pointer in the agent's instructions file, and the read-only MCP
4
+ // entry — in the places each agent reads them:
5
+ //
6
+ // claude .claude/skills, .claude/mapples.md, CLAUDE.md, .mcp.json
7
+ // cursor .cursor/skills, .cursor/mapples.md, AGENTS.md, .cursor/mcp.json
8
+ // codex .agents/skills, .agents/mapples.md, AGENTS.md, .codex/config.toml
9
+ //
4
10
  // Files the CLI generated are refreshed in place (recognised by their
5
11
  // GENERATED header); a file the user edited is never overwritten — it is
6
12
  // skipped, or with --force deprecated (`_depr_<ts>_…old`) and regenerated.
13
+ // An instructions file or MCP config the user already has is never rewritten:
14
+ // the pointer line is appended once, the MCP entry is printed for them to add.
7
15
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
8
16
  import { dirname, join } from 'node:path';
9
17
  import { deprecateFile } from '../merge/deprecate.js';
@@ -12,21 +20,112 @@ import { DEFAULT_COMPONENTS_DIR, DEFAULT_PAGES_DIR, DEFAULT_ROUTES_DIR, } from '
12
20
  import { ensureGitignored } from '../project/secret.js';
13
21
  import { cliVersion } from '../version.js';
14
22
  import { templatesDir } from './scaffold.js';
15
- export const SUPPORTED_AGENTS = ['claude'];
16
- /** Validates the `--agent` option; only Claude Code is supported in v1. */
23
+ export const SUPPORTED_AGENTS = ['claude', 'cursor', 'codex'];
24
+ /** `--agent` spellings that name the same agent (ChatGPT's coding agent is Codex). */
25
+ const AGENT_ALIASES = { chatgpt: 'codex' };
26
+ /** The `agent` a lease is started with, per installed agent (Creator labels sessions by it). */
27
+ export const SESSION_AGENTS = ['claude-code', 'cursor', 'codex'];
28
+ export const AGENT_PROFILES = {
29
+ claude: {
30
+ name: 'claude',
31
+ label: 'Claude Code',
32
+ sessionAgent: 'claude-code',
33
+ skillsDir: '.claude/skills',
34
+ conventionsPath: '.claude/mapples.md',
35
+ designCommand: '/mapples-design',
36
+ instructions: {
37
+ file: 'CLAUDE.md',
38
+ template: 'claude/CLAUDE.md',
39
+ pointer: '@.claude/mapples.md',
40
+ },
41
+ mcp: { file: '.mcp.json', template: 'claude/mcp.json', marker: '"mapples"' },
42
+ hooks: {
43
+ file: '.claude/settings.json',
44
+ template: 'claude/settings.json',
45
+ marker: 'agent hook prompt',
46
+ },
47
+ restart: 'MAPPLES_SECRET=$(cat .mapples/secret) claude',
48
+ },
49
+ cursor: {
50
+ name: 'cursor',
51
+ label: 'Cursor',
52
+ sessionAgent: 'cursor',
53
+ skillsDir: '.cursor/skills',
54
+ conventionsPath: '.cursor/mapples.md',
55
+ designCommand: '/mapples-design',
56
+ instructions: {
57
+ file: 'AGENTS.md',
58
+ template: 'agents-md/AGENTS.md',
59
+ pointer: '- Cursor: read `.cursor/mapples.md`.',
60
+ },
61
+ mcp: { file: '.cursor/mcp.json', template: 'cursor/mcp.json', marker: '"mapples"' },
62
+ hooks: {
63
+ file: '.cursor/hooks.json',
64
+ template: 'cursor/hooks.json',
65
+ marker: 'agent hook prompt',
66
+ },
67
+ restart: 'MAPPLES_SECRET=$(cat .mapples/secret) cursor .',
68
+ },
69
+ codex: {
70
+ name: 'codex',
71
+ label: 'Codex',
72
+ sessionAgent: 'codex',
73
+ skillsDir: '.agents/skills',
74
+ conventionsPath: '.agents/mapples.md',
75
+ designCommand: '$mapples-design',
76
+ instructions: {
77
+ file: 'AGENTS.md',
78
+ template: 'agents-md/AGENTS.md',
79
+ pointer: '- Codex: read `.agents/mapples.md`.',
80
+ },
81
+ mcp: {
82
+ file: '.codex/config.toml',
83
+ template: 'codex/config.toml',
84
+ marker: '[mcp_servers.mapples]',
85
+ },
86
+ hooks: { file: '.codex/hooks.json', template: 'codex/hooks.json', marker: 'agent hook prompt' },
87
+ restart: 'MAPPLES_SECRET=$(cat .mapples/secret) codex',
88
+ },
89
+ };
90
+ /** The agent a `--agent` spelling names (aliases resolved), or null. */
91
+ function agentNameOf(value) {
92
+ if (typeof value !== 'string')
93
+ return null;
94
+ const name = value.toLowerCase();
95
+ if (SUPPORTED_AGENTS.includes(name))
96
+ return name;
97
+ return AGENT_ALIASES[name] ?? null;
98
+ }
99
+ /** Validates the `--agent` option; undefined when not given. */
17
100
  export function parseAgentName(value) {
18
101
  if (value === undefined)
19
102
  return undefined;
20
- if (value === 'claude')
21
- return 'claude';
22
- throw new Error(`unknown --agent "${String(value)}" — supported: ${SUPPORTED_AGENTS.join(', ')}`);
103
+ const name = agentNameOf(value);
104
+ if (name)
105
+ return name;
106
+ throw new Error(`unknown --agent "${String(value)}" — supported: ${SUPPORTED_AGENTS.join(', ')} (chatgpt = codex)`);
107
+ }
108
+ /** Validates `agent start --agent`; the session agent recorded for Creator. */
109
+ export function parseSessionAgent(value) {
110
+ if (value === undefined)
111
+ return 'claude-code';
112
+ if (typeof value === 'string' && SESSION_AGENTS.includes(value)) {
113
+ return value;
114
+ }
115
+ const installed = agentNameOf(value);
116
+ if (installed)
117
+ return AGENT_PROFILES[installed].sessionAgent;
118
+ throw new Error(`unknown session agent "${String(value)}" — supported: ${SESSION_AGENTS.join(', ')}`);
119
+ }
120
+ /** The default session label for a session agent. */
121
+ export function sessionAgentLabel(agent) {
122
+ return Object.values(AGENT_PROFILES).find((p) => p.sessionAgent === agent).label;
23
123
  }
24
124
  /** The marker every generated Markdown file carries (line 1, or right after its frontmatter). */
25
125
  export const GENERATED_HEADER = /^<!--\s*GENERATED by Mapples\b/;
26
- export const CLAUDE_MD_POINTER = '@.claude/mapples.md';
27
126
  /**
28
127
  * Whether the CLI generated this file: the header opens the file, or — for
29
- * skills, whose YAML frontmatter must be the first thing Claude Code reads —
128
+ * skills, whose YAML frontmatter must be the first thing the agent reads —
30
129
  * it is the first line after the frontmatter block.
31
130
  */
32
131
  export function isGeneratedFile(content) {
@@ -41,27 +140,40 @@ export function isGeneratedFile(content) {
41
140
  const afterFrontmatter = lines.slice(close + 1).find((line) => line.trim() !== '');
42
141
  return GENERATED_HEADER.test(afterFrontmatter ?? '');
43
142
  }
44
- export function claudeTemplatesDir() {
45
- return join(templatesDir(), 'claude');
143
+ export function agentTemplatesDir() {
144
+ return join(templatesDir(), 'agent');
46
145
  }
47
- function substitute(content, opts) {
146
+ function substitute(content, profile, opts) {
48
147
  return content
49
148
  .replaceAll('__CLI_VERSION__', cliVersion())
50
149
  .replaceAll('__API_URL__', opts.apiUrl.replace(/\/+$/, ''))
51
150
  .replaceAll('__ROUTES_DIR__', opts.routesDir)
52
151
  .replaceAll('__PAGES_DIR__', opts.pagesDir)
53
- .replaceAll('__COMPONENTS_DIR__', opts.componentsDir);
54
- }
55
- export function mcpConfigFor(apiUrl) {
56
- return substitute(readFileSync(join(claudeTemplatesDir(), 'mcp.json'), 'utf8'), {
57
- apiUrl,
58
- force: false,
59
- routesDir: '',
60
- pagesDir: '',
61
- componentsDir: '',
62
- });
152
+ .replaceAll('__COMPONENTS_DIR__', opts.componentsDir)
153
+ .replaceAll('__SKILLS_DIR__', profile.skillsDir)
154
+ .replaceAll('__CONVENTIONS_PATH__', profile.conventionsPath)
155
+ .replaceAll('__DESIGN_COMMAND__', profile.designCommand)
156
+ .replaceAll('__AGENT_LABEL__', profile.label)
157
+ .replaceAll('__AGENT_ID__', profile.sessionAgent)
158
+ .replaceAll('__AGENT_FLAG__', profile.name)
159
+ .replaceAll('__AGENT_RESTART__', profile.restart)
160
+ .replaceAll('__AGENTS_MD_POINTER__', profile.instructions.pointer);
63
161
  }
64
- /** Write a generated Markdown file, honouring the header handshake. */
162
+ function resolveOptions(options) {
163
+ return {
164
+ apiUrl: options.apiUrl,
165
+ force: options.force === true,
166
+ routesDir: options.routesDir ?? DEFAULT_ROUTES_DIR,
167
+ pagesDir: options.pagesDir ?? DEFAULT_PAGES_DIR,
168
+ componentsDir: options.componentsDir ?? DEFAULT_COMPONENTS_DIR,
169
+ };
170
+ }
171
+ /** The agent's MCP config for this API, as the installer writes it. */
172
+ export function mcpConfigFor(agent, apiUrl) {
173
+ const profile = AGENT_PROFILES[agent];
174
+ return substitute(readFileSync(join(agentTemplatesDir(), profile.mcp.template), 'utf8'), profile, resolveOptions({ apiUrl }));
175
+ }
176
+ /** Write a generated file, honouring the header handshake. */
65
177
  function placeGenerated(root, rel, content, force, outcomes) {
66
178
  const abs = join(root, rel);
67
179
  if (existsSync(abs)) {
@@ -96,6 +208,30 @@ function placeGenerated(root, rel, content, force, outcomes) {
96
208
  writeFileSync(abs, content);
97
209
  outcomes.push({ file: rel, action: 'created' });
98
210
  }
211
+ /**
212
+ * A config file the agent reads whole (MCP servers, hooks): created when
213
+ * absent, left alone when it already carries our entry, and otherwise never
214
+ * rewritten — the snippet comes back for the user to merge.
215
+ */
216
+ function placeConfigOnce(root, target, content, outcomes, what) {
217
+ const abs = join(root, target.file);
218
+ if (!existsSync(abs)) {
219
+ mkdirSync(dirname(abs), { recursive: true });
220
+ writeFileSync(abs, content);
221
+ outcomes.push({ file: target.file, action: 'created' });
222
+ return null;
223
+ }
224
+ if (readFileSync(abs, 'utf8').includes(target.marker)) {
225
+ outcomes.push({ file: target.file, action: 'unchanged' });
226
+ return null;
227
+ }
228
+ outcomes.push({
229
+ file: target.file,
230
+ action: 'skipped',
231
+ detail: `exists — add ${what} yourself (snippet printed below)`,
232
+ });
233
+ return content;
234
+ }
99
235
  function walk(dir, rel = '') {
100
236
  const out = [];
101
237
  for (const entry of readdirSync(join(dir, rel), { withFileTypes: true })) {
@@ -107,74 +243,67 @@ function walk(dir, rel = '') {
107
243
  }
108
244
  return out.sort();
109
245
  }
110
- export function installClaudeIntegration(root, options) {
111
- const opts = {
112
- apiUrl: options.apiUrl,
113
- force: options.force === true,
114
- routesDir: options.routesDir ?? DEFAULT_ROUTES_DIR,
115
- pagesDir: options.pagesDir ?? DEFAULT_PAGES_DIR,
116
- componentsDir: options.componentsDir ?? DEFAULT_COMPONENTS_DIR,
117
- };
118
- const src = claudeTemplatesDir();
246
+ export function installAgentIntegration(root, agent, options) {
247
+ const profile = AGENT_PROFILES[agent];
248
+ const opts = resolveOptions(options);
249
+ const src = agentTemplatesDir();
119
250
  const outcomes = [];
120
- const read = (rel) => substitute(readFileSync(join(src, rel), 'utf8'), opts);
121
- // Skills: templates/claude/skills/** -> .claude/skills/**
251
+ const read = (rel) => substitute(readFileSync(join(src, rel), 'utf8'), profile, opts);
252
+ // Skills: templates/agent/skills/** -> <skillsDir>/**
122
253
  for (const rel of walk(join(src, 'skills'))) {
123
- placeGenerated(root, join('.claude', 'skills', rel), read(join('skills', rel)), opts.force, outcomes);
254
+ placeGenerated(root, join(profile.skillsDir, rel), read(join('skills', rel)), opts.force, outcomes);
124
255
  }
125
- // Conventions: templates/claude/mapples.md -> .claude/mapples.md
126
- placeGenerated(root, join('.claude', 'mapples.md'), read('mapples.md'), opts.force, outcomes);
127
- // CLAUDE.md: created from the template when absent; otherwise only the
128
- // pointer line is appended — the user's instructions are theirs.
129
- const claudeMd = join(root, 'CLAUDE.md');
130
- if (!existsSync(claudeMd)) {
131
- writeFileSync(claudeMd, read('CLAUDE.md'));
132
- outcomes.push({ file: 'CLAUDE.md', action: 'created' });
256
+ // Conventions: templates/agent/mapples.md -> <conventionsPath>
257
+ placeGenerated(root, profile.conventionsPath, read('mapples.md'), opts.force, outcomes);
258
+ // Instructions file: created from the template when absent; otherwise only
259
+ // the pointer line is appended — the user's instructions are theirs.
260
+ const instructions = join(root, profile.instructions.file);
261
+ const pointer = profile.instructions.pointer;
262
+ if (!existsSync(instructions)) {
263
+ writeFileSync(instructions, read(profile.instructions.template));
264
+ outcomes.push({ file: profile.instructions.file, action: 'created' });
133
265
  }
134
266
  else {
135
- const current = readFileSync(claudeMd, 'utf8');
136
- if (current.split('\n').some((line) => line.trim() === CLAUDE_MD_POINTER)) {
137
- outcomes.push({ file: 'CLAUDE.md', action: 'unchanged' });
267
+ const current = readFileSync(instructions, 'utf8');
268
+ if (current.split('\n').some((line) => line.trim() === pointer)) {
269
+ outcomes.push({ file: profile.instructions.file, action: 'unchanged' });
138
270
  }
139
271
  else {
140
- writeFileSync(claudeMd, current +
141
- (current.endsWith('\n') || current === '' ? '' : '\n') +
142
- `\n${CLAUDE_MD_POINTER}\n`);
143
- outcomes.push({ file: 'CLAUDE.md', action: 'appended', detail: CLAUDE_MD_POINTER });
272
+ writeFileSync(instructions, current + (current.endsWith('\n') || current === '' ? '' : '\n') + `\n${pointer}\n`);
273
+ outcomes.push({ file: profile.instructions.file, action: 'appended', detail: pointer });
144
274
  }
145
275
  }
146
- // .mcp.json: written once; an existing one is never touched (the user may
147
- // have other servers there) — the snippet is returned for them to merge.
148
- const mcp = join(root, '.mcp.json');
149
- let mcpSnippet = null;
150
- const mcpContent = read('mcp.json');
151
- if (!existsSync(mcp)) {
152
- writeFileSync(mcp, mcpContent);
153
- outcomes.push({ file: '.mcp.json', action: 'created' });
154
- }
155
- else if (readFileSync(mcp, 'utf8').includes('"mapples"')) {
156
- outcomes.push({ file: '.mcp.json', action: 'unchanged' });
157
- }
158
- else {
159
- mcpSnippet = mcpContent;
160
- outcomes.push({
161
- file: '.mcp.json',
162
- action: 'skipped',
163
- detail: 'exists — add the "mapples" server yourself (snippet printed below)',
164
- });
165
- }
276
+ // MCP config and lease hooks: written once; an existing file is never
277
+ // touched (the user may have other servers or hooks there) — the snippet
278
+ // is returned for them to merge.
279
+ const mcpSnippet = placeConfigOnce(root, profile.mcp, read(profile.mcp.template), outcomes, 'the "mapples" server');
280
+ const hooksSnippet = placeConfigOnce(root, profile.hooks, read(profile.hooks.template), outcomes, 'the Mapples lease hooks');
166
281
  if (ensureGitignored(root, [AGENT_STATE_GITIGNORE])) {
167
282
  outcomes.push({ file: '.gitignore', action: 'appended', detail: AGENT_STATE_GITIGNORE });
168
283
  }
169
- return { outcomes, mcpSnippet };
284
+ return { agent, outcomes, mcpSnippet, hooksSnippet };
170
285
  }
171
- /** The lines printed after create/init/install with `--agent claude`. */
172
- export function claudeNextSteps(appDir) {
286
+ /** The lines printed after create/init/install with `--agent <name>`. */
287
+ export function agentNextSteps(agent, appDir) {
288
+ const profile = AGENT_PROFILES[agent];
173
289
  const cd = appDir ? `cd ${appDir} && ` : '';
290
+ const where = {
291
+ claude: 'then type',
292
+ cursor: 'then in Agent chat type',
293
+ codex: 'trust the project when Codex asks and approve its hooks with /hooks (they load from .codex/), then type',
294
+ };
174
295
  return [
175
- 'Claude Code is set up. Start it with the project key in the environment:',
176
- ` ${cd}MAPPLES_SECRET=$(cat .mapples/secret) claude`,
177
- 'then type /mapples-design and describe your app.',
296
+ `${profile.label} is set up. Start it with the project key in the environment:`,
297
+ ` ${cd}${profile.restart}`,
298
+ `${where[agent]} ${profile.designCommand} and describe your app.`,
178
299
  ];
179
300
  }
301
+ /** The line that introduces a printed MCP snippet. */
302
+ export function mcpSnippetHeading(agent) {
303
+ return `Add this to your ${AGENT_PROFILES[agent].mcp.file}:`;
304
+ }
305
+ /** The line that introduces a printed hooks snippet. */
306
+ export function hooksSnippetHeading(agent) {
307
+ return `Add these hooks to your ${AGENT_PROFILES[agent].hooks.file} (they show the agent as working in Creator):`;
308
+ }
180
309
  //# sourceMappingURL=agentInstall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentInstall.js","sourceRoot":"","sources":["../../src/services/agentInstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentInstall.js","sourceRoot":"","sources":["../../src/services/agentInstall.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export function templatesDir() {
9
9
  }
10
10
  const RENAMES = { gitignore: '.gitignore' };
11
11
  /** Template subtrees that are not part of the app shell (installed by their own service). */
12
- const NOT_APP_SHELL = new Set(['claude']);
12
+ const NOT_APP_SHELL = new Set(['agent']);
13
13
  /** Copy the app-shell templates into `target`, substituting __APP_NAME__. Never overwrites. */
14
14
  export function scaffoldApp(target, appName) {
15
15
  const written = [];
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/services/scaffold.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ import { emitComponent, emitPage, withoutRouteMarker } from '../codegen/emit.js'
22
22
  import { importNeedsFor } from '../codegen/imports.js';
23
23
  import { instanceLinker } from '../codegen/instances.js';
24
24
  import { deprecateFile } from '../merge/deprecate.js';
25
- import { diffTree } from '../merge/diff.js';
25
+ import { diffTree, diffTreeStaged } from '../merge/diff.js';
26
26
  import { buildMergePatch, deepEqual } from '../merge/mergePatch.js';
27
27
  import { threeWayMerge } from '../merge/threeWay.js';
28
28
  import { treeToEdits } from '../merge/toEdits.js';
@@ -122,7 +122,7 @@ export async function runSyncEngine({ root, client }) {
122
122
  // Planned before anything is sent: a placement group that cannot fit one
123
123
  // transaction stops the push here (RFC-0001 §5.2). `pushOps` is the send
124
124
  // order, which is what `progress.committedOps` counts against.
125
- const pushTxs = planTransactions(merged.pushOps);
125
+ const pushTxs = [...planTransactions(merged.pushOps), ...planTransactions(merged.deferredOps)];
126
126
  const pushOps = pushTxs.flat();
127
127
  // Source text goes out AFTER the node ops (its `$sid`s must be server
128
128
  // ids, which the node push mints), as its own transaction(s).
@@ -391,6 +391,7 @@ async function mergeAndWrite(root, client, config, base, remote, report) {
391
391
  const pagesMap = readPagesMap(root);
392
392
  const componentsMap = readComponentsMap(root);
393
393
  const pushOps = [];
394
+ const deferredOps = [];
394
395
  const sourceUploads = new Set();
395
396
  const mergedBase = {
396
397
  pages: new Map(),
@@ -425,6 +426,7 @@ async function mergeAndWrite(root, client, config, base, remote, report) {
425
426
  sourcesOut: mergedBase.sources,
426
427
  sourceUploads,
427
428
  pushOps,
429
+ deferredOps,
428
430
  report,
429
431
  });
430
432
  await mergeFiles({
@@ -441,6 +443,7 @@ async function mergeAndWrite(root, client, config, base, remote, report) {
441
443
  sourcesOut: mergedBase.sources,
442
444
  sourceUploads,
443
445
  pushOps,
446
+ deferredOps,
444
447
  report,
445
448
  });
446
449
  // ---- Non-page entities: style, assets ----
@@ -450,7 +453,7 @@ async function mergeAndWrite(root, client, config, base, remote, report) {
450
453
  const assetsResult = await syncAssets(root, client, remote.assets, report);
451
454
  pushOps.push(...assetsResult.pushOps);
452
455
  mergedBase.assets = assetsResult.mergedAssets;
453
- return { pushOps, mergedBase, pagesMap, componentsMap, sourceUploads };
456
+ return { pushOps, deferredOps, mergedBase, pagesMap, componentsMap, sourceUploads };
454
457
  }
455
458
  /**
456
459
  * The 3-way file merge for one entity kind: extract the file, merge against
@@ -458,7 +461,7 @@ async function mergeAndWrite(root, client, config, base, remote, report) {
458
461
  * deprecate on conflict, and collect the ops that push local changes.
459
462
  */
460
463
  async function mergeFiles(args) {
461
- const { root, kind, base, remote, mapping: mappings, linker, emit, mergedOut, baseSources, remoteSources, sourcesOut, sourceUploads, pushOps, report, } = args;
464
+ const { root, kind, base, remote, mapping: mappings, linker, emit, mergedOut, baseSources, remoteSources, sourcesOut, sourceUploads, pushOps, deferredOps, report, } = args;
462
465
  /**
463
466
  * The file's text after this sync becomes the next base. It goes to the
464
467
  * server when a stored text exists and differs from the file (the file
@@ -712,8 +715,11 @@ async function mergeFiles(args) {
712
715
  report.files.push({ file: mapping.file, action: fileExists ? 'regenerated' : 'created' });
713
716
  }
714
717
  recordSource(id, remoteSource, written, localTextChanged);
715
- // Push = local changes rebased onto remote.
716
- pushOps.push(...diffTree(remoteRoot, merged));
718
+ // Push = local changes rebased onto remote. Moves into containers created
719
+ // by this push go in a later transaction, once those have real ids.
720
+ const staged = diffTreeStaged(remoteRoot, merged);
721
+ pushOps.push(...staged.ops);
722
+ deferredOps.push(...staged.deferred);
717
723
  const statePatch = buildMergePatch({ state: remoteStates }, { state: mergedStates });
718
724
  if (statePatch !== null) {
719
725
  pushOps.push({ op: 'update', entity: kind.entity, id, patch: statePatch });