@codyswann/lisa 4.60.12 → 4.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +13 -0
  2. package/dist/cli/pr-landing.d.ts +80 -0
  3. package/dist/cli/pr-landing.d.ts.map +1 -0
  4. package/dist/cli/pr-landing.js +224 -0
  5. package/dist/cli/pr-landing.js.map +1 -0
  6. package/dist/cli/starter-cmd.d.ts +1 -1
  7. package/dist/cli/starter-cmd.d.ts.map +1 -1
  8. package/dist/cli/starter-cmd.js +25 -3
  9. package/dist/cli/starter-cmd.js.map +1 -1
  10. package/dist/cli/starter-sync-command.d.ts +29 -0
  11. package/dist/cli/starter-sync-command.d.ts.map +1 -0
  12. package/dist/cli/starter-sync-command.js +130 -0
  13. package/dist/cli/starter-sync-command.js.map +1 -0
  14. package/dist/cli/starter-sync-content.d.ts +25 -0
  15. package/dist/cli/starter-sync-content.d.ts.map +1 -0
  16. package/dist/cli/starter-sync-content.js +106 -0
  17. package/dist/cli/starter-sync-content.js.map +1 -0
  18. package/dist/cli/starter-sync-source.d.ts +33 -0
  19. package/dist/cli/starter-sync-source.d.ts.map +1 -0
  20. package/dist/cli/starter-sync-source.js +154 -0
  21. package/dist/cli/starter-sync-source.js.map +1 -0
  22. package/dist/cli/starter-sync-write.d.ts +11 -0
  23. package/dist/cli/starter-sync-write.d.ts.map +1 -0
  24. package/dist/cli/starter-sync-write.js +126 -0
  25. package/dist/cli/starter-sync-write.js.map +1 -0
  26. package/dist/cli/starter-sync.d.ts +22 -0
  27. package/dist/cli/starter-sync.d.ts.map +1 -0
  28. package/dist/cli/starter-sync.js +219 -0
  29. package/dist/cli/starter-sync.js.map +1 -0
  30. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  31. package/dist/core/nightly-e2e-guard-behavior-certificate.js.map +1 -1
  32. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  33. package/dist/core/upstream-evidence-manifest.js +13 -1
  34. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  35. package/dist/health/template-inspection.d.ts +16 -1
  36. package/dist/health/template-inspection.d.ts.map +1 -1
  37. package/dist/health/template-inspection.js +1 -1
  38. package/dist/health/template-inspection.js.map +1 -1
  39. package/dist/strategies/copy-contents.d.ts +11 -0
  40. package/dist/strategies/copy-contents.d.ts.map +1 -1
  41. package/dist/strategies/copy-contents.js +21 -5
  42. package/dist/strategies/copy-contents.js.map +1 -1
  43. package/dist/utils/atomic-file-write.d.ts +1 -1
  44. package/dist/utils/atomic-file-write.d.ts.map +1 -1
  45. package/dist/utils/atomic-file-write.js.map +1 -1
  46. package/package.json +4 -4
  47. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
  50. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
  51. package/plugins/lisa-agy/plugin.json +1 -1
  52. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
  53. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  56. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
  60. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
  62. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-expo-agy/plugin.json +1 -1
  65. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  70. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  75. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  80. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  85. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-rails-agy/plugin.json +1 -1
  90. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  95. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  99. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  100. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  102. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +32 -0
@@ -0,0 +1,219 @@
1
+ import { realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { validateProjectConfig } from "../core/project-config.js";
4
+ import { readProjectFile, } from "../health/read-only-fs.js";
5
+ import { applicableCandidates, detectHealthProjectTypes, } from "../health/template-inspection.js";
6
+ import { isJsonObject } from "../sync/json-path.js";
7
+ import { readStarterChanges, starterRelativePath, } from "./starter-sync-source.js";
8
+ import { mergeStarterBlocks, mergeStarterJson, starterBlockMarkers, } from "./starter-sync-content.js";
9
+ import { writeStarterFile } from "./starter-sync-write.js";
10
+ const CONFIG = ".lisa.config.json";
11
+ /**
12
+ * Apply each starter independently using the existing template ownership rules.
13
+ * @param options - Lisa installation and caller-owned landing worktree.
14
+ * @returns Per-template outcomes, preserving failed baselines for retries.
15
+ */
16
+ export async function syncStarterTemplates(options) {
17
+ const root = await realpath(options.projectRoot);
18
+ const document = await readConfig(root);
19
+ const templates = document.config.starter?.templates ?? [];
20
+ const candidates = await applicableCandidates(options.lisaRoot, root, await detectHealthProjectTypes(root), document.raw);
21
+ return templates.reduce(async (pending, template, index) => {
22
+ const completed = await pending;
23
+ const result = await syncOne(root, template, index, candidates, options.readChanges);
24
+ return [...completed, result];
25
+ }, Promise.resolve([]));
26
+ }
27
+ /**
28
+ * Read a confined configuration while retaining every unknown extension.
29
+ * @param root - Canonical consumer root.
30
+ * @returns Validated settings, original fields, and the guarded file snapshot.
31
+ */
32
+ async function readConfig(root) {
33
+ const snapshot = await readProjectFile(root, CONFIG);
34
+ const raw = JSON.parse(snapshot?.bytes.toString("utf8") ?? "{}");
35
+ if (!isJsonObject(raw))
36
+ throw new Error("Starter project config must be an object");
37
+ return { raw, snapshot, config: validateProjectConfig(raw, CONFIG) };
38
+ }
39
+ /**
40
+ * Compare a scoped path using the same portable validation as the source reader.
41
+ * @param name - Repository path.
42
+ * @param scopes - Optional validated path restrictions.
43
+ * @returns Whether the file is included.
44
+ */
45
+ function inScope(name, scopes) {
46
+ return (scopes === undefined ||
47
+ scopes.some(scope => name === scope || name.startsWith(`${scope}/`)));
48
+ }
49
+ /**
50
+ * Apply one independent source without letting its failure stop later templates.
51
+ * @param root - Canonical landing worktree.
52
+ * @param template - Original independently tracked entry.
53
+ * @param index - Stable position in the recorded template list.
54
+ * @param candidates - Existing canonical ownership plan.
55
+ * @param reader - Optional real-source adapter for the caller.
56
+ * @returns Applied paths and success, current, or retryable failure.
57
+ */
58
+ async function syncOne(root, template, index, candidates, reader) {
59
+ const initial = {
60
+ repo: template.repo,
61
+ state: "updated",
62
+ changed: [],
63
+ };
64
+ try {
65
+ const scopes = template.paths?.map(starterRelativePath);
66
+ const names = new Set(candidates.map(candidate => candidate.destination.split(path.sep).join("/")));
67
+ const accepts = (name) => name !== CONFIG &&
68
+ name !== ".lisa.workspaces.json" &&
69
+ names.has(name) &&
70
+ inScope(name, scopes);
71
+ const source = await (reader ??
72
+ ((entry, filter) => readStarterChanges(entry, undefined, filter)))(template, accepts);
73
+ if (source.sha === template.lastSync.sha)
74
+ return { ...initial, state: "current" };
75
+ const result = await source.changes
76
+ .filter(change => accepts(change.path))
77
+ .reduce(async (pending, change) => {
78
+ const prior = await pending;
79
+ if (prior.state === "failed")
80
+ return prior;
81
+ try {
82
+ const changed = await applyChange(root, change, candidates.filter(candidate => candidate.destination.split(path.sep).join("/") === change.path));
83
+ return changed
84
+ ? { ...prior, changed: [...prior.changed, change.path] }
85
+ : prior;
86
+ }
87
+ catch (error) {
88
+ return failure(prior, error);
89
+ }
90
+ }, Promise.resolve(initial));
91
+ if (result.state === "failed")
92
+ return result;
93
+ try {
94
+ await advance(root, template, index, source.sha);
95
+ return result;
96
+ }
97
+ catch (error) {
98
+ return failure(result, error);
99
+ }
100
+ }
101
+ catch (error) {
102
+ return failure(initial, error);
103
+ }
104
+ }
105
+ /**
106
+ * Preserve partial-apply evidence when an operation needs to be retried.
107
+ * @param result - Paths already applied.
108
+ * @param error - Refusal from the source, filesystem, or config writer.
109
+ * @returns Failed result without falsely claiming that nothing changed.
110
+ */
111
+ function failure(result, error) {
112
+ return {
113
+ ...result,
114
+ state: "failed",
115
+ error: error instanceof Error ? error.message : String(error),
116
+ };
117
+ }
118
+ /**
119
+ * Respect existing ownership and refuse local conflicts in governed files.
120
+ * @param root - Canonical consumer root.
121
+ * @param change - Pinned starter change.
122
+ * @param candidates - Applicable strategies for exactly this path.
123
+ * @returns Whether consumer bytes or executable mode changed.
124
+ */
125
+ async function applyChange(root, change, candidates) {
126
+ const name = starterRelativePath(change.path);
127
+ const current = await readProjectFile(root, name);
128
+ const writable = candidates.filter(candidate => candidate.strategy !== "create-only");
129
+ if (writable.length === 0 &&
130
+ candidates.some(candidate => candidate.strategy === "create-only")) {
131
+ if (current !== undefined || change.after === undefined)
132
+ return false;
133
+ }
134
+ else if (!candidates.some(candidate => ["copy-overwrite", "copy-contents", "merge", "tagged-merge"].includes(candidate.strategy))) {
135
+ throw new Error(`Starter change requires its existing merge strategy: ${name}`);
136
+ }
137
+ if ([change.before?.mode, change.after?.mode].some(mode => mode !== undefined && !["100644", "100755"].includes(mode)))
138
+ throw new Error(`Starter change is not a regular file: ${name}`);
139
+ const blocks = await starterBlockMarkers(candidates.filter(candidate => candidate.strategy === "copy-contents"));
140
+ const json = candidates.filter(candidate => ["merge", "tagged-merge"].includes(candidate.strategy));
141
+ const bytes = await desiredBytes(change, current?.bytes, blocks, json);
142
+ const partial = blocks.length > 0 || json.length > 0;
143
+ const mode = destinationMode(current, change, partial);
144
+ if (sameDestination(current, bytes, mode))
145
+ return false;
146
+ if (!partial &&
147
+ current !== undefined &&
148
+ (change.before === undefined ||
149
+ !current.bytes.equals(change.before.bytes) ||
150
+ Boolean(current.mode & 0o111) !== (change.before.mode === "100755")))
151
+ throw new Error(`Starter change conflicts with local changes: ${name}`);
152
+ await writeStarterFile(root, name, current, bytes, mode);
153
+ return true;
154
+ }
155
+ /**
156
+ * Select the existing content strategy without inventing starter ownership rules.
157
+ * @param change - Pinned starter change.
158
+ * @param current - Existing consumer bytes.
159
+ * @param blocks - Applicable managed-block templates.
160
+ * @param json - Applicable JSON templates.
161
+ * @returns Desired file bytes, or undefined for whole-file removal.
162
+ */
163
+ async function desiredBytes(change, current, blocks, json) {
164
+ if (blocks.length > 0)
165
+ return mergeStarterBlocks(change, current, blocks);
166
+ if (json.length > 0)
167
+ return mergeStarterJson(change, current, json);
168
+ return change.after?.bytes;
169
+ }
170
+ /**
171
+ * Preserve consumer permissions outside the part governed by the strategy.
172
+ * @param current - Existing file snapshot.
173
+ * @param change - Source mode and contents.
174
+ * @param managed - Whether only content blocks belong to Lisa.
175
+ * @returns Permission bits for the new file.
176
+ */
177
+ function destinationMode(current, change, managed) {
178
+ if (managed && current !== undefined)
179
+ return current.mode & 0o777;
180
+ return (((current?.mode ?? 0o644) & 0o666) |
181
+ (change.after?.mode === "100755" ? 0o111 : 0));
182
+ }
183
+ /**
184
+ * Recognize an already applied file after an interrupted template sync.
185
+ * @param current - Existing consumer snapshot.
186
+ * @param bytes - Desired bytes, or an absent file.
187
+ * @param mode - Desired permission bits.
188
+ * @returns Whether another write would change nothing.
189
+ */
190
+ function sameDestination(current, bytes, mode) {
191
+ if (bytes === undefined)
192
+ return current === undefined;
193
+ return (current !== undefined &&
194
+ current.bytes.equals(bytes) &&
195
+ (current.mode & 0o777) === mode);
196
+ }
197
+ /**
198
+ * Advance only after apply succeeds, preserving concurrent unrelated config edits.
199
+ * @param root - Canonical consumer root.
200
+ * @param template - Entry as it existed when this sync started.
201
+ * @param index - Entry position, verified again before publication.
202
+ * @param sha - Exact successfully applied source revision.
203
+ */
204
+ async function advance(root, template, index, sha) {
205
+ const document = await readConfig(root);
206
+ const starter = document.config.starter;
207
+ const templates = starter?.templates ?? [];
208
+ if (JSON.stringify(templates[index]) !== JSON.stringify(template))
209
+ throw new Error("Starter configuration changed during sync; baseline was not advanced");
210
+ const updated = templates.map((entry, at) => at === index
211
+ ? {
212
+ ...entry,
213
+ lastSync: { ...entry.lastSync, sha, at: new Date().toISOString() },
214
+ }
215
+ : entry);
216
+ const bytes = Buffer.from(`${JSON.stringify({ ...document.raw, starter: { ...starter, templates: updated } }, null, 2)}\n`);
217
+ await writeStarterFile(root, CONFIG, document.snapshot, bytes, (document.snapshot?.mode ?? 0o644) & 0o777);
218
+ }
219
+ //# sourceMappingURL=starter-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter-sync.js","sourceRoot":"","sources":["../../src/cli/starter-sync.ts"],"names":[],"mappings":"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"}
@@ -48,9 +48,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
48
48
  }),
49
49
  f87e6eee47ddb6416f2c639b79b96a68173c9c562999fbad98abe012ac913d28: Object.freeze({
50
50
  contractVersion: "1.9.0",
51
- packageVersions: Object.freeze(["4.60.12"]),
51
+ packageVersions: Object.freeze(["4.62.0"]),
52
52
  provenances: Object.freeze([
53
- "workspace package @codyswann/lisa@4.60.12 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
53
+ "workspace package @codyswann/lisa@4.62.0 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
54
54
  ]),
55
55
  }),
56
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"nightly-e2e-guard-behavior-certificate.js","sourceRoot":"","sources":["../../src/core/nightly-e2e-guard-behavior-certificate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,MAAM,CAAC,MAAM,CAAC;IACnE,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,gEAAgE,EAC9D,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,gEAAgE,EAC9D,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,4GAA4G;SAC7G,CAAC;KACH,CAAC;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"nightly-e2e-guard-behavior-certificate.js","sourceRoot":"","sources":["../../src/core/nightly-e2e-guard-behavior-certificate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,MAAM,CAAC,MAAM,CAAC;IACnE,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,kEAAkE,EAChE,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,mHAAmH;SACpH,CAAC;KACH,CAAC;IACJ,gEAAgE,EAC9D,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,iHAAiH;SAClH,CAAC;KACH,CAAC;IACJ,gEAAgE,EAC9D,MAAM,CAAC,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,2GAA2G;SAC5G,CAAC;KACH,CAAC;CACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsmFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA2gRjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsmFpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAuhRjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -570,7 +570,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
570
570
  "plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
571
571
  "plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "d9419814fc04c935bd7e320e85b1977c9bfc9275d9ea5fb557002ad438ee7925",
572
572
  "plugins/src/base/skills/lisa-doctor/SKILL.md": "ab7bb855fd3ebe321e41b0143815f202b70f6ba38f6678791d6d9e933e0c3fd8",
573
- "plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "b4fd88c58252e6caee1e61cbc3309e8267c6fb24cd24e95c75a47b5a473ff3de",
573
+ "plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "c914ecde69bd7c2c1efe8b9d4de7167f5d7f189ba62dac2bb8fa1ad2d2d8d737",
574
574
  "plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
575
575
  "plugins/src/base/skills/lisa-evaluation-suite/SKILL.md": "96b5c2091ccd22a565935a7b0b917f67998881b81055ce3e4d518319472eac8b",
576
576
  "plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "254b15d65f8da6bfc6a930814004892e4a32ba8946ff1b68c27fec2a57d9e5b4",
@@ -7546,6 +7546,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7546
7546
  "src/cli/lisa-test-run-supervisor.ts": true,
7547
7547
  "src/cli/lisa-test-run.ts": true,
7548
7548
  "src/cli/merge-learnings-cmd.ts": true,
7549
+ "src/cli/pr-landing.ts": true,
7549
7550
  "src/cli/print-update-warning.ts": true,
7550
7551
  "src/cli/prompts.ts": true,
7551
7552
  "src/cli/prune-commands.ts": true,
@@ -7561,6 +7562,11 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7561
7562
  "src/cli/standards-proof-cmd.ts": true,
7562
7563
  "src/cli/starter-cmd.ts": true,
7563
7564
  "src/cli/starter-provenance.ts": true,
7565
+ "src/cli/starter-sync-command.ts": true,
7566
+ "src/cli/starter-sync-content.ts": true,
7567
+ "src/cli/starter-sync-source.ts": true,
7568
+ "src/cli/starter-sync-write.ts": true,
7569
+ "src/cli/starter-sync.ts": true,
7564
7570
  "src/cli/starters.ts": true,
7565
7571
  "src/cli/stash-prune-policy.ts": true,
7566
7572
  "src/cli/stash-prune.ts": true,
@@ -8450,8 +8456,13 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8450
8456
  "tests/unit/cli/shared-options.test.ts": true,
8451
8457
  "tests/unit/cli/starter-adopt.test.ts": true,
8452
8458
  "tests/unit/cli/starter-provenance.test.ts": true,
8459
+ "tests/unit/cli/starter-sync-command.test.ts": true,
8460
+ "tests/unit/cli/starter-sync-source.test.ts": true,
8461
+ "tests/unit/cli/starter-sync-write.test.ts": true,
8462
+ "tests/unit/cli/starter-sync.test.ts": true,
8453
8463
  "tests/unit/cli/starters.test.ts": true,
8454
8464
  "tests/unit/cli/stash-prune-policy.test.ts": true,
8465
+ "tests/unit/cli/support/starter-sync-fixture.ts": true,
8455
8466
  "tests/unit/cli/sync-cmd.test.ts": true,
8456
8467
  "tests/unit/cli/ui-automations-fixture.test.ts": true,
8457
8468
  "tests/unit/cli/ui-automations-map.test.ts": true,
@@ -9426,6 +9437,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
9426
9437
  "tests/unit/strategies/control-reachability-contract.test.ts": true,
9427
9438
  "tests/unit/strategies/convergent-review-contract.test.ts": true,
9428
9439
  "tests/unit/strategies/copy-contents-gitignore.test.ts": true,
9440
+ "tests/unit/strategies/copy-contents-markers.test.ts": true,
9429
9441
  "tests/unit/strategies/copy-contents-refresh-templates.test.ts": true,
9430
9442
  "tests/unit/strategies/copy-contents.test.ts": true,
9431
9443
  "tests/unit/strategies/copy-overwrite-config-shadowing.test.ts": true,