mapples 0.2.0-beta.0 → 0.2.0-beta.10

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 (171) hide show
  1. package/README.md +133 -22
  2. package/dist/adopt/scan.d.ts +8 -2
  3. package/dist/adopt/scan.js +31 -13
  4. package/dist/adopt/scan.js.map +1 -1
  5. package/dist/api/agent.d.ts +85 -0
  6. package/dist/api/agent.js +92 -0
  7. package/dist/api/agent.js.map +1 -0
  8. package/dist/api/auth.d.ts +2 -0
  9. package/dist/api/auth.js +28 -6
  10. package/dist/api/auth.js.map +1 -1
  11. package/dist/api/client.d.ts +13 -1
  12. package/dist/api/client.js +26 -4
  13. package/dist/api/client.js.map +1 -1
  14. package/dist/api/commit.d.ts +9 -0
  15. package/dist/api/commit.js +36 -0
  16. package/dist/api/commit.js.map +1 -1
  17. package/dist/api/errors.js +12 -2
  18. package/dist/api/errors.js.map +1 -1
  19. package/dist/api/objects.d.ts +36 -5
  20. package/dist/api/objects.js +176 -10
  21. package/dist/api/objects.js.map +1 -1
  22. package/dist/api/poll.d.ts +5 -3
  23. package/dist/api/poll.js +17 -6
  24. package/dist/api/poll.js.map +1 -1
  25. package/dist/api/txPlan.d.ts +15 -0
  26. package/dist/api/txPlan.js +196 -0
  27. package/dist/api/txPlan.js.map +1 -0
  28. package/dist/assets/assets.d.ts +9 -0
  29. package/dist/assets/assets.js +33 -4
  30. package/dist/assets/assets.js.map +1 -1
  31. package/dist/codegen/emit.d.ts +4 -7
  32. package/dist/codegen/emit.js +10 -29
  33. package/dist/codegen/emit.js.map +1 -1
  34. package/dist/codegen/imports.d.ts +8 -15
  35. package/dist/codegen/imports.js +27 -72
  36. package/dist/codegen/imports.js.map +1 -1
  37. package/dist/codegen/instances.d.ts +5 -0
  38. package/dist/codegen/instances.js +30 -0
  39. package/dist/codegen/instances.js.map +1 -0
  40. package/dist/codegen/styles.d.ts +1 -0
  41. package/dist/codegen/styles.js +3 -0
  42. package/dist/codegen/styles.js.map +1 -0
  43. package/dist/commands/agent.d.ts +2 -0
  44. package/dist/commands/agent.js +87 -0
  45. package/dist/commands/agent.js.map +1 -0
  46. package/dist/commands/create.js +1 -0
  47. package/dist/commands/create.js.map +1 -1
  48. package/dist/commands/impl/adoptImpl.js +3 -0
  49. package/dist/commands/impl/adoptImpl.js.map +1 -1
  50. package/dist/commands/impl/agentImpl.d.ts +23 -0
  51. package/dist/commands/impl/agentImpl.js +426 -0
  52. package/dist/commands/impl/agentImpl.js.map +1 -0
  53. package/dist/commands/impl/createImpl.js +31 -4
  54. package/dist/commands/impl/createImpl.js.map +1 -1
  55. package/dist/commands/impl/initImpl.js +28 -4
  56. package/dist/commands/impl/initImpl.js.map +1 -1
  57. package/dist/commands/impl/syncImpl.js +30 -5
  58. package/dist/commands/impl/syncImpl.js.map +1 -1
  59. package/dist/commands/init.js +1 -0
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/index.js +12 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/merge/applyOps.d.ts +5 -2
  64. package/dist/merge/applyOps.js +75 -32
  65. package/dist/merge/applyOps.js.map +1 -1
  66. package/dist/merge/childrenOrder.d.ts +13 -0
  67. package/dist/merge/childrenOrder.js +51 -0
  68. package/dist/merge/childrenOrder.js.map +1 -0
  69. package/dist/merge/diff.d.ts +20 -1
  70. package/dist/merge/diff.js +77 -17
  71. package/dist/merge/diff.js.map +1 -1
  72. package/dist/merge/threeWay.d.ts +2 -2
  73. package/dist/merge/threeWay.js +74 -10
  74. package/dist/merge/threeWay.js.map +1 -1
  75. package/dist/merge/toEdits.d.ts +1 -3
  76. package/dist/merge/toEdits.js +3 -91
  77. package/dist/merge/toEdits.js.map +1 -1
  78. package/dist/nav/navigatorTree.d.ts +78 -0
  79. package/dist/nav/navigatorTree.js +410 -0
  80. package/dist/nav/navigatorTree.js.map +1 -0
  81. package/dist/nav/placement.d.ts +53 -0
  82. package/dist/nav/placement.js +260 -0
  83. package/dist/nav/placement.js.map +1 -0
  84. package/dist/nav/routeTree.d.ts +8 -2
  85. package/dist/nav/routeTree.js +79 -151
  86. package/dist/nav/routeTree.js.map +1 -1
  87. package/dist/nav/screenOptions.d.ts +15 -0
  88. package/dist/nav/screenOptions.js +213 -0
  89. package/dist/nav/screenOptions.js.map +1 -0
  90. package/dist/project/agentState.d.ts +30 -0
  91. package/dist/project/agentState.js +42 -0
  92. package/dist/project/agentState.js.map +1 -0
  93. package/dist/project/baseStore.d.ts +19 -1
  94. package/dist/project/baseStore.js +28 -0
  95. package/dist/project/baseStore.js.map +1 -1
  96. package/dist/project/componentsMap.d.ts +7 -0
  97. package/dist/project/componentsMap.js +21 -0
  98. package/dist/project/componentsMap.js.map +1 -0
  99. package/dist/project/config.d.ts +12 -3
  100. package/dist/project/config.js +11 -2
  101. package/dist/project/config.js.map +1 -1
  102. package/dist/project/env.d.ts +10 -3
  103. package/dist/project/env.js +23 -5
  104. package/dist/project/env.js.map +1 -1
  105. package/dist/project/pagesMap.d.ts +2 -0
  106. package/dist/project/pagesMap.js.map +1 -1
  107. package/dist/project/secret.d.ts +6 -2
  108. package/dist/project/secret.js +11 -5
  109. package/dist/project/secret.js.map +1 -1
  110. package/dist/services/adoptService.d.ts +3 -0
  111. package/dist/services/adoptService.js +357 -38
  112. package/dist/services/adoptService.js.map +1 -1
  113. package/dist/services/agentInstall.d.ts +80 -0
  114. package/dist/services/agentInstall.js +309 -0
  115. package/dist/services/agentInstall.js.map +1 -0
  116. package/dist/services/agentLease.d.ts +2 -0
  117. package/dist/services/agentLease.js +32 -0
  118. package/dist/services/agentLease.js.map +1 -0
  119. package/dist/services/clientFactory.d.ts +2 -0
  120. package/dist/services/clientFactory.js +20 -3
  121. package/dist/services/clientFactory.js.map +1 -1
  122. package/dist/services/doctorService.js +77 -66
  123. package/dist/services/doctorService.js.map +1 -1
  124. package/dist/services/scaffold.js +4 -0
  125. package/dist/services/scaffold.js.map +1 -1
  126. package/dist/services/syncEngine.d.ts +7 -0
  127. package/dist/services/syncEngine.js +719 -306
  128. package/dist/services/syncEngine.js.map +1 -1
  129. package/dist/style/theme.js +17 -1
  130. package/dist/style/theme.js.map +1 -1
  131. package/dist/types.d.ts +51 -2
  132. package/dist/types.js +25 -0
  133. package/dist/types.js.map +1 -1
  134. package/dist/ui/report.d.ts +15 -0
  135. package/dist/ui/report.js +30 -0
  136. package/dist/ui/report.js.map +1 -1
  137. package/package.json +3 -2
  138. package/templates/agent/agents-md/AGENTS.md +8 -0
  139. package/templates/agent/claude/CLAUDE.md +7 -0
  140. package/templates/agent/claude/mcp.json +11 -0
  141. package/templates/agent/claude/settings.json +26 -0
  142. package/templates/agent/codex/config.toml +6 -0
  143. package/templates/agent/codex/hooks.json +26 -0
  144. package/templates/agent/cursor/hooks.json +9 -0
  145. package/templates/agent/cursor/mcp.json +10 -0
  146. package/templates/agent/mapples.md +124 -0
  147. package/templates/agent/skills/mapples-conventions/SKILL.md +137 -0
  148. package/templates/agent/skills/mapples-design/SKILL.md +235 -0
  149. package/templates/agent/skills/mapples-design/reference/component-library.md +128 -0
  150. package/templates/agent/skills/mapples-design/reference/design-tokens.md +132 -0
  151. package/templates/agent/skills/mapples-design/reference/layout-contract.md +227 -0
  152. package/templates/agent/skills/mapples-design/reference/lint-checklist.md +51 -0
  153. package/templates/agent/skills/mapples-design/reference/plan.md +95 -0
  154. package/templates/agent/skills/mapples-design/reference/playbooks/empty-states.md +14 -0
  155. package/templates/agent/skills/mapples-design/reference/playbooks/forms-and-auth.md +22 -0
  156. package/templates/agent/skills/mapples-design/reference/playbooks/home-dashboard.md +14 -0
  157. package/templates/agent/skills/mapples-design/reference/playbooks/list-and-detail.md +18 -0
  158. package/templates/agent/skills/mapples-design/reference/playbooks/microcopy.md +20 -0
  159. package/templates/agent/skills/mapples-design/reference/playbooks/navigation-chrome.md +21 -0
  160. package/templates/agent/skills/mapples-design/reference/playbooks/onboarding-flow.md +15 -0
  161. package/templates/agent/skills/mapples-design/reference/playbooks/screen-flow-wiring.md +37 -0
  162. package/templates/agent/skills/mapples-design/reference/playbooks/settings-profile.md +16 -0
  163. package/templates/agent/skills/mapples-design/reference/playbooks/stats-and-progress.md +17 -0
  164. package/templates/agent/skills/mapples-design/reference/playbooks/visual-hierarchy.md +18 -0
  165. package/templates/agent/skills/mapples-design/reference/style-guides.md +92 -0
  166. package/templates/agent/skills/mapples-sync/SKILL.md +93 -0
  167. package/templates/app/_layout.tsx +3 -0
  168. package/templates/app.json +0 -1
  169. package/templates/gitignore +2 -0
  170. package/templates/mapples/sid.d.ts +6 -0
  171. package/templates/package.json +12 -10
@@ -1,6 +1,7 @@
1
1
  // Two RenderDom trees -> JpatchOp[]. RFC 7386 merge-patch for prop objects;
2
2
  // explicit children move/insert/remove directives for ordering — arrays are
3
3
  // never merge-patched (RFC-0001 invariant 7).
4
+ import { sidecarFilled, sidecarOf, } from '../types.js';
4
5
  import { buildMergePatch, deepEqual } from './mergePatch.js';
5
6
  export function indexTree(root) {
6
7
  const map = new Map();
@@ -25,29 +26,43 @@ export function diffTree(base, next) {
25
26
  const baseIdx = indexTree(base);
26
27
  const nextIdx = indexTree(next);
27
28
  const ops = [];
28
- // Creates — walk `next` top-down so parents are minted before children.
29
+ // Creates — walk `next` top-down so parents are minted before children. A
30
+ // new node under a NEW parent links itself at creation (`data.parent` +
31
+ // `data.index`, both cid-resolvable): the server only accepts DB ids as the
32
+ // target of an update, so a children directive on the new parent's cid
33
+ // would be rejected. New nodes under a surviving parent are linked by that
34
+ // parent's children directive below.
29
35
  const created = new Set();
30
- const walkCreates = (node) => {
36
+ const walkCreates = (node, parent, index) => {
31
37
  if (!baseIdx.has(node.sid)) {
32
38
  created.add(node.sid);
39
+ const underNewParent = parent !== null && created.has(parent.sid);
33
40
  ops.push({
34
41
  op: 'create',
35
42
  entity: 'RenderNode',
36
43
  cid: node.sid,
37
- data: { type: node.type, props: node.props },
44
+ data: {
45
+ type: node.type,
46
+ props: node.props,
47
+ ...sidecarOf(node),
48
+ ...(underNewParent ? { parent: parent.sid, index } : {}),
49
+ },
38
50
  });
39
51
  }
40
- for (const child of node.children)
41
- walkCreates(child);
52
+ node.children.forEach((child, i) => walkCreates(child, node, i));
42
53
  };
43
54
  if (next)
44
- walkCreates(next);
55
+ walkCreates(next, null, 0);
45
56
  // Updates on surviving nodes.
46
57
  for (const [sid, { node }] of nextIdx) {
47
58
  const baseEntry = baseIdx.get(sid);
48
59
  if (!baseEntry)
49
60
  continue;
50
- const patch = buildMergePatch({ type: baseEntry.node.type, props: baseEntry.node.props }, { type: node.type, props: node.props });
61
+ const patch = buildMergePatch({
62
+ type: baseEntry.node.type,
63
+ props: baseEntry.node.props,
64
+ ...sidecarFilled(baseEntry.node),
65
+ }, { type: node.type, props: node.props, ...sidecarFilled(node) });
51
66
  if (patch !== null) {
52
67
  ops.push({ op: 'update', entity: 'RenderNode', id: sid, patch });
53
68
  }
@@ -56,16 +71,14 @@ export function diffTree(base, next) {
56
71
  for (const [sid, { node }] of nextIdx) {
57
72
  const baseEntry = baseIdx.get(sid);
58
73
  if (!baseEntry) {
59
- // Newly created parents carry their children via inserts below? No —
60
- // created nodes get their children linked with an explicit directive too,
61
- // because `create.data` never embeds children.
62
- if (node.children.length > 0) {
63
- ops.push({
64
- op: 'update',
65
- entity: 'RenderNode',
66
- id: sid, // a cid — the server resolves refs minted earlier in this tx
67
- children: { insert: node.children.map((c, i) => ({ ref: c.sid, at: i })) },
68
- });
74
+ // A new parent's new children linked themselves at creation; a SURVIVING
75
+ // child re-parented under it still needs a directive — and an update on
76
+ // a cid is exactly what the server rejects, so it goes through the
77
+ // child's old parent (remove) and a follow-up sync (insert once the cid
78
+ // has a DB id). Surface it rather than emit an invalid op.
79
+ const adopted = node.children.filter((c) => baseIdx.has(c.sid));
80
+ if (adopted.length > 0) {
81
+ throw new Error(`node ${adopted[0].sid} moved under the new node ${sid} — move existing nodes only under existing parents, or sync twice (create first, then move)`);
69
82
  }
70
83
  continue;
71
84
  }
@@ -85,6 +98,53 @@ export function diffTree(base, next) {
85
98
  }
86
99
  return ops;
87
100
  }
101
+ /**
102
+ * Surviving nodes whose parent in `next` is a node `next` creates: moving
103
+ * an existing element into a brand-new container.
104
+ */
105
+ function adoptedByNewParents(baseIdx, nextIdx) {
106
+ return [...nextIdx]
107
+ .filter(([sid, entry]) => baseIdx.has(sid) && entry.parentSid !== null && !baseIdx.has(entry.parentSid))
108
+ .map(([sid]) => sid);
109
+ }
110
+ /**
111
+ * `diffTree`, staged so an existing element can move into a container created
112
+ * in the same change (wrapping, grouping). Stage one creates the containers
113
+ * and applies every other change with the moved elements still under a
114
+ * surviving ancestor from `base`; stage two moves them into place.
115
+ */
116
+ export function diffTreeStaged(base, next) {
117
+ const baseIdx = indexTree(base);
118
+ const nextIdx = indexTree(next);
119
+ const adopted = adoptedByNewParents(baseIdx, nextIdx);
120
+ if (adopted.length === 0 || next === null)
121
+ return { ops: diffTree(base, next), deferred: [] };
122
+ // Stage one: `next`, with each adopted element back under its nearest
123
+ // ancestor from `base` that survives as an existing node — its own base
124
+ // parent, unless that parent is deleted in `next`.
125
+ const stageOne = structuredClone(next);
126
+ const stageIdx = indexTree(stageOne);
127
+ const holders = adopted.map((sid) => {
128
+ let ancestor = baseIdx.get(sid).parentSid;
129
+ while (ancestor !== null && !(stageIdx.has(ancestor) && baseIdx.has(ancestor))) {
130
+ ancestor = baseIdx.get(ancestor).parentSid;
131
+ }
132
+ if (ancestor === null) {
133
+ throw new Error(`node ${sid} moved under a new node, and no ancestor it had survives to hold it meanwhile — sync twice (create first, then move)`);
134
+ }
135
+ return { sid, ancestor, index: baseIdx.get(sid).index };
136
+ });
137
+ for (const { sid } of holders) {
138
+ const parent = stageIdx.get(stageIdx.get(sid).parentSid).node;
139
+ parent.children = parent.children.filter((child) => child.sid !== sid);
140
+ }
141
+ for (const { sid, ancestor, index } of [...holders].sort((a, b) => a.index - b.index)) {
142
+ const holder = stageIdx.get(ancestor).node;
143
+ const at = Math.min(index, holder.children.length);
144
+ holder.children.splice(at, 0, stageIdx.get(sid).node);
145
+ }
146
+ return { ops: diffTree(base, stageOne), deferred: diffTree(stageOne, next) };
147
+ }
88
148
  function childrenDirective(baseNode, nextNode, baseIdx, nextIdx) {
89
149
  const baseIds = baseNode.children.map((c) => c.sid);
90
150
  const nextIds = nextNode.children.map((c) => c.sid);
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/merge/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/merge/diff.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { RenderDomNode } from '../types.js';
1
+ import { type RenderDomNode } from '../types.js';
2
2
  export interface ConflictDetail {
3
3
  sid: string;
4
- reason: 'same-prop' | 'delete-vs-edit';
4
+ reason: 'same-prop' | 'delete-vs-edit' | 'source-text';
5
5
  props?: string[];
6
6
  localValue?: unknown;
7
7
  remoteValue?: unknown;
@@ -2,6 +2,7 @@
2
2
  // base (.mapples/base), local (fresh extract), remote (base + pulled ops).
3
3
  // Compared per $sid node, per prop key. Any conflict deprecates the whole file
4
4
  // (the caller's job); this module only decides and merges.
5
+ import { SIDECAR_FIELDS, sidecarFilled, sidecarOf, } from '../types.js';
5
6
  import { deepEqual } from './mergePatch.js';
6
7
  import { indexTree } from './diff.js';
7
8
  function touchedProps(from, to) {
@@ -13,8 +14,27 @@ function touchedProps(from, to) {
13
14
  touched.set(key, key in to.props ? to.props[key] : undefined); // undefined = deleted
14
15
  }
15
16
  }
17
+ // Sidecar fields compare per key too, namespaced so a `source` ref never
18
+ // collides with a `source` prop: `refProps:source`, `actionProps:onPress`.
19
+ for (const field of SIDECAR_FIELDS) {
20
+ const fromSide = from[field] ?? {};
21
+ const toSide = to[field] ?? {};
22
+ for (const key of new Set([...Object.keys(fromSide), ...Object.keys(toSide)])) {
23
+ if (!deepEqual(fromSide[key], toSide[key])) {
24
+ touched.set(`${field}:${key}`, key in toSide ? toSide[key] : undefined);
25
+ }
26
+ }
27
+ }
16
28
  return touched;
17
29
  }
30
+ /** Split a touched key back into its sidecar field and prop key, if it is one. */
31
+ function sidecarKey(key) {
32
+ for (const field of SIDECAR_FIELDS) {
33
+ if (key.startsWith(`${field}:`))
34
+ return { field, key: key.slice(field.length + 1) };
35
+ }
36
+ return null;
37
+ }
18
38
  /** ids of `perm` not part of a longest common subsequence with `base` — the minimal moved set. */
19
39
  function movedIds(base, perm) {
20
40
  // LCS over the common ids.
@@ -121,7 +141,7 @@ export function threeWayMerge(base, local, remote) {
121
141
  const source = l ?? r;
122
142
  if (!source)
123
143
  continue;
124
- mergedShell.set(sid, { type: source.type, props: source.props });
144
+ mergedShell.set(sid, { type: source.type, props: source.props, ...sidecarOf(source) });
125
145
  continue;
126
146
  }
127
147
  const lNode = l ?? b; // deleted-but-conflicted nodes fall back to base/remote
@@ -144,19 +164,30 @@ export function threeWayMerge(base, local, remote) {
144
164
  // ignores conflicts — a conflicted file uses remote wholesale anyway).
145
165
  let type = b.type;
146
166
  const props = { ...b.props };
167
+ const filled = sidecarFilled(b);
168
+ const sidecar = {
169
+ refProps: { ...filled.refProps },
170
+ dataProps: { ...filled.dataProps },
171
+ actionProps: { ...filled.actionProps },
172
+ };
147
173
  const apply = (touched) => {
148
174
  for (const [key, value] of touched) {
149
- if (key === 'type')
175
+ if (key === 'type') {
150
176
  type = value;
151
- else if (value === undefined)
152
- delete props[key];
177
+ continue;
178
+ }
179
+ const side = sidecarKey(key);
180
+ const target = side ? sidecar[side.field] : props;
181
+ const targetKey = side ? side.key : key;
182
+ if (value === undefined)
183
+ delete target[targetKey];
153
184
  else
154
- props[key] = value;
185
+ target[targetKey] = value;
155
186
  }
156
187
  };
157
188
  apply(rTouched);
158
189
  apply(lTouched);
159
- mergedShell.set(sid, { type, props });
190
+ mergedShell.set(sid, { type, props, ...sidecarOf(sidecar) });
160
191
  }
161
192
  // ---- children ordering per present parent ----
162
193
  const mergedKids = new Map();
@@ -186,6 +217,10 @@ export function threeWayMerge(base, local, remote) {
186
217
  }
187
218
  // Start from base survivors present on both sides, apply remote moves, then
188
219
  // local moves, then insertions from each side at their anchored positions.
220
+ // Only a child this parent did not have in base is an insertion: a base
221
+ // child one side no longer lists here was moved to another parent (the
222
+ // node is still present), and re-inserting it from the side that did not
223
+ // touch this parent would put it under two parents.
189
224
  const order = bKids.filter((id) => lKids.includes(id) && rKids.includes(id));
190
225
  for (const id of rKids)
191
226
  if (movedR.has(id) && order.includes(id))
@@ -193,14 +228,42 @@ export function threeWayMerge(base, local, remote) {
193
228
  for (const id of lKids)
194
229
  if (movedL.has(id) && order.includes(id))
195
230
  reposition(order, id, lKids);
196
- for (const id of rKids)
197
- if (!order.includes(id))
231
+ for (const id of rKids) {
232
+ if (!order.includes(id) && !bKids.includes(id))
198
233
  reposition(order, id, rKids);
199
- for (const id of lKids)
200
- if (!order.includes(id))
234
+ }
235
+ for (const id of lKids) {
236
+ if (!order.includes(id) && !bKids.includes(id))
201
237
  reposition(order, id, lKids);
238
+ }
202
239
  mergedKids.set(sid, order);
203
240
  }
241
+ // ---- one parent per child ----
242
+ // Both sides moving the same child into different parents leaves it under
243
+ // two. That is a conflict (the file is deprecated); the merged tree keeps
244
+ // Creator's placement so it stays a tree.
245
+ const parentsOf = new Map();
246
+ for (const [parent, kids] of mergedKids) {
247
+ for (const kid of kids)
248
+ parentsOf.set(kid, [...(parentsOf.get(kid) ?? []), parent]);
249
+ }
250
+ for (const [kid, parents] of parentsOf) {
251
+ if (parents.length < 2)
252
+ continue;
253
+ const remoteParent = rIdx.get(kid)?.parentSid ?? null;
254
+ const keep = remoteParent !== null && parents.includes(remoteParent) ? remoteParent : parents[0];
255
+ conflicts.push({
256
+ sid: kid,
257
+ reason: 'same-prop',
258
+ props: ['parent'],
259
+ detail: `moved into different parents on both sides (${parents.join(', ')})`,
260
+ });
261
+ for (const parent of parents) {
262
+ if (parent === keep)
263
+ continue;
264
+ mergedKids.set(parent, mergedKids.get(parent).filter((id) => id !== kid));
265
+ }
266
+ }
204
267
  // ---- root + tree assembly ----
205
268
  const bRoot = base?.sid ?? null;
206
269
  const lRoot = local?.sid ?? null;
@@ -234,6 +297,7 @@ export function threeWayMerge(base, local, remote) {
234
297
  type: shell.type,
235
298
  props: shell.props,
236
299
  children: kids.map((k) => build(k, seen)),
300
+ ...sidecarOf(shell),
237
301
  };
238
302
  };
239
303
  const merged = rootSid && present.has(rootSid) ? build(rootSid, new Set()) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"threeWay.js","sourceRoot":"","sources":["../../src/merge/threeWay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threeWay.js","sourceRoot":"","sources":["../../src/merge/threeWay.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1 @@
1
- import type { SidEdit } from '@mapples/sid-ast';
2
- import type { RenderDomNode } from '../types.js';
3
- export declare function treeToEdits(local: RenderDomNode | null, merged: RenderDomNode | null): SidEdit[];
1
+ export { treeToEdits } from '@mapples/codegen';
@@ -1,92 +1,4 @@
1
- // Translate "the file currently shows `local`, it should show `merged`" into
2
- // surgical SidEdits for @mapples/sid-ast — so remote changes land in the file
3
- // without touching user code. Edit order matters: removals first (so a
4
- // reparented sid is gone before its new parent inserts it), then shell
5
- // updates, insertions, and reorders.
6
- import { indexTree } from './diff.js';
7
- import { deepEqual } from './mergePatch.js';
8
- export function treeToEdits(local, merged) {
9
- const lIdx = indexTree(local);
10
- const mIdx = indexTree(merged);
11
- if (local && merged && local.sid !== merged.sid) {
12
- // Root replaced: one subtree swap.
13
- return [{ kind: 'replaceSubtree', sid: local.sid, node: merged }];
14
- }
15
- const removes = [];
16
- const shells = [];
17
- const inserts = [];
18
- const moves = [];
19
- // Removals: local nodes that vanished from merged, or were reparented (their
20
- // new parent re-inserts the merged subtree). Only topmost removals needed.
21
- for (const [sid, lEntry] of lIdx) {
22
- const parentRemoved = lEntry.parentSid !== null &&
23
- (!mIdx.has(lEntry.parentSid) ||
24
- (lIdx.has(lEntry.parentSid) && removedOrReparented(lEntry.parentSid, lIdx, mIdx)));
25
- if (parentRemoved)
26
- continue;
27
- if (removedOrReparented(sid, lIdx, mIdx)) {
28
- removes.push({ kind: 'removeNode', sid });
29
- }
30
- }
31
- // Is this local node (or an ancestor) getting removed/re-inserted wholesale?
32
- const insideRemoved = (sid) => {
33
- let cursor = sid;
34
- while (cursor !== null) {
35
- if (removedOrReparented(cursor, lIdx, mIdx))
36
- return true;
37
- cursor = lIdx.get(cursor)?.parentSid ?? null;
38
- }
39
- return false;
40
- };
41
- for (const [sid, mEntry] of mIdx) {
42
- const lEntry = lIdx.get(sid);
43
- if (lEntry && !insideRemoved(sid)) {
44
- const typeChanged = lEntry.node.type !== mEntry.node.type;
45
- if (typeChanged || !deepEqual(lEntry.node.props, mEntry.node.props)) {
46
- shells.push({
47
- kind: 'setProps',
48
- sid,
49
- props: mEntry.node.props,
50
- ...(typeChanged ? { type: mEntry.node.type } : {}),
51
- });
52
- }
53
- }
54
- }
55
- // Insertions + reorders per parent present in both trees.
56
- for (const [sid, mEntry] of mIdx) {
57
- const lEntry = lIdx.get(sid);
58
- if (!lEntry || insideRemoved(sid))
59
- continue;
60
- const lKids = lEntry.node.children.map((c) => c.sid);
61
- const mKids = mEntry.node.children.map((c) => c.sid);
62
- for (const kid of mKids) {
63
- const isChildHereAlready = lKids.includes(kid) && !removedOrReparented(kid, lIdx, mIdx);
64
- if (!isChildHereAlready) {
65
- inserts.push({
66
- kind: 'insertChild',
67
- parentSid: sid,
68
- at: mKids.indexOf(kid),
69
- node: mIdx.get(kid).node,
70
- });
71
- }
72
- }
73
- const surviving = lKids.filter((k) => mKids.includes(k) && !removedOrReparented(k, lIdx, mIdx));
74
- const targetOrder = mKids.filter((k) => surviving.includes(k));
75
- if (!deepEqual(surviving, targetOrder)) {
76
- for (let i = 0; i < mKids.length; i++) {
77
- moves.push({ kind: 'moveChild', parentSid: sid, sid: mKids[i], to: i });
78
- }
79
- }
80
- }
81
- return [...removes, ...shells, ...inserts, ...moves];
82
- }
83
- function removedOrReparented(sid, lIdx, mIdx) {
84
- const lEntry = lIdx.get(sid);
85
- const mEntry = mIdx.get(sid);
86
- if (!lEntry)
87
- return false;
88
- if (!mEntry)
89
- return true;
90
- return lEntry.parentSid !== mEntry.parentSid;
91
- }
1
+ // Document -> file edits — lives in @mapples/codegen (pure), shared with the
2
+ // Creator's code editor.
3
+ export { treeToEdits } from '@mapples/codegen';
92
4
  //# sourceMappingURL=toEdits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toEdits.js","sourceRoot":"","sources":["../../src/merge/toEdits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toEdits.js","sourceRoot":"","sources":["../../src/merge/toEdits.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,78 @@
1
+ import type { NavigationDocument, PageEntity } from '../api/objects.js';
2
+ import type { PagesMap } from '../project/pagesMap.js';
3
+ import type { JpatchOp } from '../types.js';
4
+ import type { SyncReport } from '../ui/report.js';
5
+ import { type RoutePlan } from './placement.js';
6
+ export interface NavRouteNode {
7
+ id: string;
8
+ name: string;
9
+ target: {
10
+ kind: 'page';
11
+ pageUuid: string;
12
+ } | {
13
+ kind: 'navigator';
14
+ navigatorId: string;
15
+ };
16
+ options?: Record<string, unknown>;
17
+ presentation?: string;
18
+ path?: string;
19
+ [k: string]: unknown;
20
+ }
21
+ export interface NavigatorNode {
22
+ id: string;
23
+ type: 'stack' | 'tabs' | 'drawer';
24
+ name: string;
25
+ initialRouteId?: string;
26
+ routes: NavRouteNode[];
27
+ options?: Record<string, unknown>;
28
+ [k: string]: unknown;
29
+ }
30
+ export interface NavigatorDoc {
31
+ version: number;
32
+ rootNavigatorId: string;
33
+ navigators: Record<string, NavigatorNode>;
34
+ }
35
+ /** Accepts the canonical doc, or the backend's {id: 'nav_default', data: doc} wrapper. */
36
+ export declare function extractNavigatorDoc(raw: unknown): NavigatorDoc | null;
37
+ export declare function slugSegment(name: string): string;
38
+ export declare function humanizeSegment(segment: string): string;
39
+ interface PlannedLayout {
40
+ file: string;
41
+ content: string;
42
+ }
43
+ export interface NavPlan extends RoutePlan {
44
+ layouts: PlannedLayout[];
45
+ /** Navigator id by directory (relative to routesDir, '' = root) — adoption places files by it. */
46
+ navigatorByDir: Map<string, string>;
47
+ /** Navigators no route reaches from the root, by the `(group)` dir they were generated into. */
48
+ detachedByDir: Map<string, string>;
49
+ }
50
+ /**
51
+ * Plan the route tree for `doc`: every page route's file, every layout, and
52
+ * which navigator owns which directory. `segmentOverrides` (routeId -> file
53
+ * segment) lets the layout pass after local renames honour the files as the
54
+ * user left them.
55
+ */
56
+ export declare function buildNavPlan(doc: NavigatorDoc, pages: Map<string, PageEntity>, notes: string[], segmentOverrides?: Map<string, string>): NavPlan;
57
+ /** Every layout the CLI writes opens with this; it is how a CLI-owned file is told from a user's. */
58
+ export declare const GENERATED_LAYOUT_HEADER: RegExp;
59
+ /**
60
+ * Write a CLI-owned layout. A file already there that the CLI did not
61
+ * generate is the user's: it is deprecated (`_depr_<ts>_…`), never
62
+ * overwritten (P0); one the CLI generated is simply replaced.
63
+ */
64
+ export declare function writeOwnedLayout(root: string, routesDir: string, file: string, content: string, report: SyncReport): void;
65
+ export interface NavigatorSyncResult {
66
+ pushOps: JpatchOp[];
67
+ mergedNavigation: NavigationDocument | null;
68
+ }
69
+ /**
70
+ * Place every page file for the navigation document (routed pages under
71
+ * routesDir, the rest under pagesDir), regenerate the CLI-owned layouts, and
72
+ * push local file renames back as route renames. Runs BEFORE the page merge
73
+ * so the merge reads and writes each page at its final location.
74
+ */
75
+ export declare function syncNavigatorTree(root: string, routesDir: string, pagesDir: string, pages: Map<string, PageEntity>, pagesMap: PagesMap, baseRaw: NavigationDocument | null, remoteRaw: NavigationDocument | null, report: SyncReport): NavigatorSyncResult;
76
+ /** Put the merged doc back into whatever wrapper shape the server used. */
77
+ export declare function rewrapDoc(raw: NavigationDocument | null, doc: NavigatorDoc): NavigationDocument;
78
+ export {};