@caretcms/caretize 0.1.0 → 0.1.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.
Files changed (70) hide show
  1. package/README.md +41 -5
  2. package/dist/bind-collection.js +1 -1
  3. package/dist/bind-collection.js.map +1 -1
  4. package/dist/bind-route.d.ts.map +1 -1
  5. package/dist/bind-route.js +9 -4
  6. package/dist/bind-route.js.map +1 -1
  7. package/dist/cli-args.d.ts +16 -1
  8. package/dist/cli-args.d.ts.map +1 -1
  9. package/dist/cli-args.js +39 -3
  10. package/dist/cli-args.js.map +1 -1
  11. package/dist/cli.js +390 -27
  12. package/dist/cli.js.map +1 -1
  13. package/dist/detect.d.ts +17 -1
  14. package/dist/detect.d.ts.map +1 -1
  15. package/dist/detect.js +61 -22
  16. package/dist/detect.js.map +1 -1
  17. package/dist/diff.d.ts +20 -0
  18. package/dist/diff.d.ts.map +1 -0
  19. package/dist/diff.js +75 -0
  20. package/dist/diff.js.map +1 -0
  21. package/dist/discover.d.ts.map +1 -1
  22. package/dist/discover.js +8 -2
  23. package/dist/discover.js.map +1 -1
  24. package/dist/escalation.d.ts +47 -0
  25. package/dist/escalation.d.ts.map +1 -0
  26. package/dist/escalation.js +112 -0
  27. package/dist/escalation.js.map +1 -0
  28. package/dist/frontmatter.d.ts +41 -4
  29. package/dist/frontmatter.d.ts.map +1 -1
  30. package/dist/frontmatter.js +122 -12
  31. package/dist/frontmatter.js.map +1 -1
  32. package/dist/import-wrap.d.ts +30 -0
  33. package/dist/import-wrap.d.ts.map +1 -1
  34. package/dist/import-wrap.js +101 -7
  35. package/dist/import-wrap.js.map +1 -1
  36. package/dist/init.d.ts +70 -0
  37. package/dist/init.d.ts.map +1 -0
  38. package/dist/init.js +198 -0
  39. package/dist/init.js.map +1 -0
  40. package/dist/keys.d.ts +55 -0
  41. package/dist/keys.d.ts.map +1 -0
  42. package/dist/keys.js +84 -0
  43. package/dist/keys.js.map +1 -0
  44. package/dist/output.d.ts +63 -10
  45. package/dist/output.d.ts.map +1 -1
  46. package/dist/output.js +190 -22
  47. package/dist/output.js.map +1 -1
  48. package/dist/plan.d.ts +7 -0
  49. package/dist/plan.d.ts.map +1 -1
  50. package/dist/plan.js +17 -4
  51. package/dist/plan.js.map +1 -1
  52. package/dist/preflight.d.ts +2 -0
  53. package/dist/preflight.d.ts.map +1 -1
  54. package/dist/preflight.js +18 -3
  55. package/dist/preflight.js.map +1 -1
  56. package/dist/run.js +6 -4
  57. package/dist/run.js.map +1 -1
  58. package/dist/select-policy.d.ts +38 -0
  59. package/dist/select-policy.d.ts.map +1 -0
  60. package/dist/select-policy.js +44 -0
  61. package/dist/select-policy.js.map +1 -0
  62. package/dist/tiers.d.ts +42 -0
  63. package/dist/tiers.d.ts.map +1 -0
  64. package/dist/tiers.js +67 -0
  65. package/dist/tiers.js.map +1 -0
  66. package/dist/wrap.d.ts +9 -4
  67. package/dist/wrap.d.ts.map +1 -1
  68. package/dist/wrap.js +3 -2
  69. package/dist/wrap.js.map +1 -1
  70. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -8,24 +8,32 @@
8
8
  * formatting in ./output — both pure and unit-tested.
9
9
  */
10
10
  import { createInterface } from "node:readline";
11
- import { writeFileSync } from "node:fs";
12
- import { relative } from "node:path";
11
+ import { writeFileSync, readFileSync, existsSync, readdirSync } from "node:fs";
12
+ import { execFileSync } from "node:child_process";
13
+ import { randomBytes } from "node:crypto";
14
+ import { relative, resolve } from "node:path";
13
15
  import { parseAstro } from "./parse.js";
14
16
  import { discoverAstroFiles } from "./discover.js";
15
17
  import { preflight } from "./preflight.js";
16
18
  import { planFile } from "./plan.js";
17
19
  import { prepareFileFull, commitRun, readSource } from "./run.js";
18
20
  import { detectWrapTargetsSafe } from "./wrap.js";
19
- import { detectImportWrapTargetsSafe } from "./import-wrap.js";
21
+ import { detectImportWrapTargetsSafe, detectNamedImportWrapTargetsSafe, } from "./import-wrap.js";
20
22
  import { detectPropWrapTargets } from "./props.js";
21
23
  import { detectPropHoistTargets } from "./prop-hoist.js";
22
24
  import { detectCollectionBindTargets } from "./bind-collection.js";
23
25
  import { detectRouteBindTargets } from "./bind-route.js";
24
- import { restoreLatest } from "./backup.js";
26
+ import { restoreLatest, writeBackup } from "./backup.js";
27
+ import { freshConfig, planConfigWiring, renderEnvAdditions } from "./init.js";
28
+ import { lineDiff, formatHunks } from "./diff.js";
25
29
  import { buildReport } from "./report.js";
30
+ import { applyKeyRegistry } from "./keys.js";
26
31
  import { isValidField } from "./name.js";
27
32
  import { parseArgs, CliUsageError, HELP } from "./cli-args.js";
28
- import { tagLine, formatScanSummary, formatPlan, formatSummary, formatHints } from "./output.js";
33
+ import { tagLine, formatScanSummary, formatPlan, formatSummary, formatHints, formatFailures, formatEscalationOffer, formatNextStep, formatDiff } from "./output.js";
34
+ import { selectTiers } from "./select-policy.js";
35
+ import { tierById } from "./tiers.js";
36
+ import { escalationCounts, offerableCounts, offeredTiers, recommendedBundle, totalOffer, deltaTags, mergeTagMaps, parseAnswer, parseToggle, } from "./escalation.js";
29
37
  const VERSION = "0.1.0";
30
38
  function fail(msg) {
31
39
  process.stderr.write(`caretize: ${msg}\n`);
@@ -34,6 +42,14 @@ function fail(msg) {
34
42
  function ask(rl, q) {
35
43
  return new Promise((res) => rl.question(q, (ans) => res(ans.trim())));
36
44
  }
45
+ async function confirmYes(rl, args, question) {
46
+ if (args.yes) {
47
+ process.stdout.write(`${question} yes\n`);
48
+ return true;
49
+ }
50
+ const ans = (await ask(rl, question)) || "y";
51
+ return ans.toLowerCase() !== "n";
52
+ }
37
53
  /** Prompt for a replacement field name on one tag. Returns the tag to keep: the
38
54
  * edited tag for a valid name, the original when the prompt is left blank, or
39
55
  * null when a non-empty name is invalid (the candidate is dropped). */
@@ -45,10 +61,43 @@ async function editField(rl, t) {
45
61
  process.stdout.write(field ? " invalid field name; skipped\n" : " kept original\n");
46
62
  return field ? null : t;
47
63
  }
48
- /** Per-candidate prompt for one file. Returns the accepted tags plus control
49
- * signals: `quit` aborts the whole run, `skipFile` skips this file's wrap/hoist
50
- * prompts, and `acceptAll` carries the sticky [A]ll choice on to later files. */
64
+ /**
65
+ * File-level tag review (the default unit). High-confidence content tags are
66
+ * safe by the engine's own definition, so interrogating each one is ceremony —
67
+ * show the file's tags as a batch and accept them in one keystroke. Drop to the
68
+ * per-candidate loop only when the user asks ([r]eview each), where edits live.
69
+ */
51
70
  async function reviewFileTags(rl, plan, acceptAll) {
71
+ if (acceptAll)
72
+ return { take: [...plan.tags], skipFile: false, quit: false, acceptAll: true };
73
+ process.stdout.write(`\n${plan.relPath}\n`);
74
+ for (const t of plan.tags) {
75
+ process.stdout.write(` ${tagLine(t)} → data-caret="${t.binding}" (${t.confidence})\n`);
76
+ }
77
+ for (;;) {
78
+ const ans = (await ask(rl, ` accept all ${plan.tags.length} tag(s)? [Y]es · [r]eview each · [s]kip file · [A]ll files · [q]uit > `)) || "y";
79
+ if (ans === "q")
80
+ return { take: [], skipFile: false, quit: true, acceptAll };
81
+ if (ans === "s" || ans === "S")
82
+ return { take: [], skipFile: true, quit: false, acceptAll };
83
+ if (ans === "A")
84
+ return { take: [...plan.tags], skipFile: false, quit: false, acceptAll: true };
85
+ if (ans === "r")
86
+ return reviewEachTag(rl, plan, acceptAll);
87
+ // Only y/Y/<enter> accept this file — NOT lowercase "a", which would collide
88
+ // with "[A]ll files" in the same prompt (a fat-fingered A must never silently
89
+ // mean "this file only").
90
+ if (ans === "y" || ans === "Y") {
91
+ return { take: [...plan.tags], skipFile: false, quit: false, acceptAll };
92
+ }
93
+ process.stdout.write(" unrecognized — Y(es) r(eview each) s(kip file) A(ll files) q(uit)\n");
94
+ }
95
+ }
96
+ /** Per-candidate prompt for one file (entered via [r]eview each). Returns the
97
+ * accepted tags plus control signals: `quit` aborts the whole run, `skipFile`
98
+ * skips this file's wrap/hoist prompts, and `acceptAll` carries the sticky
99
+ * [A]ll choice on to later files. */
100
+ async function reviewEachTag(rl, plan, acceptAll) {
52
101
  const take = [];
53
102
  let skipFile = false;
54
103
  for (let i = 0; i < plan.tags.length && !skipFile; i++) {
@@ -173,7 +222,8 @@ async function review(plans, wrapsByFile, hoistsByFile, bindsByFile) {
173
222
  * field would land in a native attribute
174
223
  * - detectPropWrapTargets: literals passed to a component whose child provably
175
224
  * renders them as text (Tier-2, cross-file)
176
- * - detectImportWrapTargetsSafe: arrays pulled in from a data import (Tier-3)
225
+ * - detectImportWrapTargetsSafe: arrays from a DEFAULT data import (Tier-3)
226
+ * - detectNamedImportWrapTargetsSafe: arrays from a NAMED import (Tier-3, named)
177
227
  * - detectPropHoistTargets: static component-prop strings (unless --no-props)
178
228
  */
179
229
  async function analyzeFiles(root, files, planOpts, readFileSafe, noProps, bindCollections, bindRoutes) {
@@ -188,7 +238,10 @@ async function analyzeFiles(root, files, planOpts, readFileSafe, noProps, bindCo
188
238
  plans.push(plan);
189
239
  const loops = await detectWrapTargetsSafe(src, rel, ast);
190
240
  const props = await detectPropWrapTargets(src, rel, readFileSafe, ast);
191
- const imports = await detectImportWrapTargetsSafe(src, rel, ast);
241
+ const imports = [
242
+ ...(await detectImportWrapTargetsSafe(src, rel, ast)),
243
+ ...(await detectNamedImportWrapTargetsSafe(src, rel, ast)),
244
+ ];
192
245
  const byName = new Map();
193
246
  for (const t of [...loops, ...props, ...imports])
194
247
  byName.set(t.varName, t);
@@ -212,18 +265,33 @@ async function analyzeFiles(root, files, planOpts, readFileSafe, noProps, bindCo
212
265
  if (hoists.length)
213
266
  hoistsByFile.set(rel, hoists);
214
267
  }
268
+ // Cross-tier key registry: existing data-caret/editable() keys are
269
+ // pre-claimed; tags claim first (content-derived, shown in review), then
270
+ // wraps, then hoists. A collision takes a `_2` field suffix — without
271
+ // this, one run could mint the same storage key twice with two value
272
+ // shapes (a tag's string vs a wrap's array), or re-mint a key a prior
273
+ // run's editable() already owns.
274
+ applyKeyRegistry(src, plan.scope, plan.tags, wrapsByFile.get(rel) ?? [], hoistsByFile.get(rel) ?? []);
215
275
  }
216
276
  return { plans, wrapsByFile, hoistsByFile, bindsByFile };
217
277
  }
218
- /** Decide what to apply: everything (dry-run / -y), the interactive review, or
219
- * nothing (report-only). Errors out on a non-interactive run with no directive. */
278
+ /** Select every default-tier candidate (no per-item review). The safe tier is
279
+ * lossless + reversible, so this is the optimistic default; the escalation
280
+ * prompt still gates the risky tiers, and --restore undoes everything. */
281
+ function selectAll(a) {
282
+ const allTags = new Map(a.plans.map((p) => [p.relPath, p.tags]));
283
+ return { tags: allTags, wraps: a.wrapsByFile, hoists: a.hoistsByFile, binds: a.bindsByFile, quit: false };
284
+ }
285
+ /** Decide what to apply: everything (dry-run / -y / --diff / optimistic default),
286
+ * the opt-in per-file review (--review), or nothing (report-only). Errors out on
287
+ * a non-interactive run with no directive. */
220
288
  async function selectChanges(args, a) {
221
- if (args.dryRun || args.yes) {
222
- const allTags = new Map(a.plans.map((p) => [p.relPath, p.tags]));
223
- return { tags: allTags, wraps: a.wrapsByFile, hoists: a.hoistsByFile, binds: a.bindsByFile, quit: false };
224
- }
289
+ if (args.dryRun || args.yes || args.diff)
290
+ return selectAll(a);
225
291
  if (process.stdin.isTTY && process.stdout.isTTY) {
226
- return review(a.plans, a.wrapsByFile, a.hoistsByFile, a.bindsByFile);
292
+ // Optimistic by default: apply the safe tier, then show a diff you can undo.
293
+ // --review opts back into approving each change before it's written.
294
+ return args.review ? review(a.plans, a.wrapsByFile, a.hoistsByFile, a.bindsByFile) : selectAll(a);
227
295
  }
228
296
  if (args.report)
229
297
  return { tags: new Map(), wraps: new Map(), hoists: new Map(), binds: new Map(), quit: false };
@@ -263,6 +331,99 @@ function printCommit(written, hadBackups, prepared, sel, plans) {
263
331
  const flagged = plans.reduce((n, p) => n + p.flags.length, 0);
264
332
  process.stdout.write(formatSummary(written.length, changes, wrapped, hoisted, flagged, hadBackups, bound));
265
333
  }
334
+ /** Ask the top-level [Y/n/customize] choice (re-prompting on garbage) and return
335
+ * the tier ids the user newly accepts. `counts` is already offerable (tiers
336
+ * already on have been zeroed), so this only ever offers genuinely-new tiers. */
337
+ async function askEscalationAnswer(rl, counts) {
338
+ const bundle = recommendedBundle(counts);
339
+ const bundleLabels = bundle.map((id) => tierById(id).label).join(", ");
340
+ let top = parseAnswer(await ask(rl, `\n Include ${bundleLabels}? [Y/n/customize] `));
341
+ while (top === "unknown") {
342
+ process.stdout.write(" please answer y, n, or c(ustomize)\n");
343
+ top = parseAnswer(await ask(rl, " [Y/n/customize] "));
344
+ }
345
+ if (top === "no")
346
+ return [];
347
+ if (top === "yes")
348
+ return bundle;
349
+ // customize: ask per offered tier; blank keeps the tier's recommendation.
350
+ const picked = [];
351
+ for (const id of offeredTiers(counts)) {
352
+ const t = tierById(id);
353
+ const def = t.recommended ? "Y/n" : "y/N";
354
+ const on = parseToggle(await ask(rl, ` include ${t.label} (${counts[id]})? [${def}] `), t.recommended);
355
+ if (on)
356
+ picked.push(id);
357
+ }
358
+ return picked;
359
+ }
360
+ /**
361
+ * The in-flow escalation step (interactive only). After the conservative review,
362
+ * offer the opt-in tiers as ONE grouped prompt; on accept, re-analyze gated to
363
+ * exactly the chosen tiers and merge the escalation delta into the reviewed
364
+ * selection.
365
+ *
366
+ * The detection here is the "detect-always" the prompt needs, but it lives only
367
+ * in this interactive branch — it never widens what `-y` / `--dry-run` apply
368
+ * (those skip this path). The re-analysis is gated to the user's chosen tiers,
369
+ * so the safety/regression contract from Phase A holds. Returns the (possibly
370
+ * augmented) selection, the plans to summarize, and the tiers actually applied.
371
+ */
372
+ async function offerEscalation(ctx, active, analysis, sel) {
373
+ // No new tiers accepted → keep the Phase A set (which the conservative pass
374
+ // already applied + the user reviewed). Returning `active`, not an empty set,
375
+ // keeps the closing hint honest when individual flags were combined with the
376
+ // interactive run.
377
+ const unchanged = { sel, plans: analysis.plans, tiers: active };
378
+ // Detect-for-offer: collection + route bind targets (cheap, side-effect-free).
379
+ // rich/lowconf counts come from the conservative analysis (rich-eligible skips
380
+ // + belowConfidence), so no entangled rich pass is needed just to count. Tiers
381
+ // already on (Phase A flags / --all) are zeroed — never offer what's applied.
382
+ const offer = await analyzeFiles(ctx.root, ctx.files, ctx.basePlanOpts, ctx.readFileSafe, ctx.noProps, true, true);
383
+ const counts = offerableCounts(escalationCounts(analysis.plans, offer.bindsByFile), active);
384
+ if (totalOffer(counts) === 0)
385
+ return unchanged;
386
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
387
+ rl.on("SIGINT", () => { process.stdout.write("\naborted — nothing written\n"); process.exit(130); });
388
+ let chosenNew;
389
+ try {
390
+ process.stdout.write(formatEscalationOffer(counts));
391
+ process.stdout.write(" ⚠ = per-row binding that assumes each entry's .id is its identity\n");
392
+ chosenNew = await askEscalationAnswer(rl, counts);
393
+ }
394
+ finally {
395
+ rl.close();
396
+ }
397
+ if (chosenNew.length === 0)
398
+ return unchanged;
399
+ // Apply the union of the already-active tiers and the newly accepted ones, so
400
+ // a Phase A flag is never silently dropped by the re-analysis.
401
+ const effective = new Set([...active, ...chosenNew]);
402
+ // Re-analyze gated to exactly the effective tiers — one pass, so keys are
403
+ // assigned coherently and the rich/low entanglement is correct (a rich host
404
+ // suppresses its inline children rather than double-tagging them).
405
+ const finalPlanOpts = {
406
+ ...ctx.basePlanOpts,
407
+ rich: effective.has("rich") || effective.has("rich-class"),
408
+ richClass: effective.has("rich-class"),
409
+ minConfidence: effective.has("lowconf") ? "low" : ctx.minConfidenceBase,
410
+ };
411
+ const final = await analyzeFiles(ctx.root, ctx.files, finalPlanOpts, ctx.readFileSafe, ctx.noProps, effective.has("collections"), effective.has("routes"));
412
+ // Merge the escalation-only tags (rich + below-floor) into the reviewed set,
413
+ // then re-key each touched file with the reviewed defaults claimed FIRST, so a
414
+ // field name a default and an escalation tag both derive can't mint a duplicate
415
+ // storage key (the run.ts gates accept duplicate keys — they're valid HTML).
416
+ const delta = deltaTags(analysis.plans, final.plans);
417
+ const mergedTags = mergeTagMaps(sel.tags, delta);
418
+ const scopeByPath = new Map(final.plans.map((p) => [p.relPath, p.scope]));
419
+ for (const rel of delta.keys()) {
420
+ applyKeyRegistry(readSource(ctx.root, rel), scopeByPath.get(rel), mergedTags.get(rel) ?? [], sel.wraps.get(rel) ?? [], sel.hoists.get(rel) ?? []);
421
+ }
422
+ const merged = {
423
+ tags: mergedTags, wraps: sel.wraps, hoists: sel.hoists, binds: final.bindsByFile, quit: false,
424
+ };
425
+ return { sel: merged, plans: final.plans, tiers: effective };
426
+ }
266
427
  /** Restore the most recent backup, reporting how many files came back. */
267
428
  function runRestore(root) {
268
429
  const restored = restoreLatest(root);
@@ -270,6 +431,138 @@ function runRestore(root) {
270
431
  ? `✓ restored ${restored.length} file(s):\n${restored.map((f) => ` ${f}`).join("\n")}\n`
271
432
  : "no backups found.\n");
272
433
  }
434
+ /** Indent a multi-line block for display under a prompt. */
435
+ function indent(text) {
436
+ return text.replace(/\n/g, "\n ").replace(/^/, " ").replace(/\s+$/, "\n");
437
+ }
438
+ /** The astro.config filename in the project root, or null. */
439
+ function findConfigName(root) {
440
+ try {
441
+ return readdirSync(root).find((f) => /^astro\.config\.(m?[jt]s|cjs)$/.test(f)) ?? null;
442
+ }
443
+ catch {
444
+ return null;
445
+ }
446
+ }
447
+ /**
448
+ * `caretize init` — close the gap preflight only warns about: get CaretCMS
449
+ * actually wired up so tagging makes content editable. Installs the deps, edits
450
+ * (or creates) astro.config, and scaffolds .env. Every config/.env write is
451
+ * backed up to .caret/.caretize-bak/ first; an existing config is only edited
452
+ * via verified pure insertions, falling back to a paste-me snippet when its
453
+ * shape isn't safe to touch.
454
+ */
455
+ async function runInit(root, args) {
456
+ const pf = preflight(root);
457
+ if (!pf.isAstroProject) {
458
+ for (const e of pf.errors)
459
+ process.stderr.write(`✗ ${e}\n`);
460
+ process.exit(1);
461
+ }
462
+ process.stdout.write("caretize init · wiring CaretCMS into this project\n");
463
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
464
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
465
+ rl.on("SIGINT", () => { process.stdout.write("\naborted\n"); process.exit(130); });
466
+ const configName = findConfigName(root);
467
+ const configSrc = configName ? readFileSync(resolve(root, configName), "utf8") : null;
468
+ const hasAdapterKey = configSrc ? /\badapter\s*:/.test(configSrc) : false;
469
+ try {
470
+ // 1) Dependencies — static Astro projects use static delivery by default, so
471
+ // they only need @caretcms/core. Server projects keep the SSR adapter path.
472
+ const pkgPath = resolve(root, "package.json");
473
+ const pkg = existsSync(pkgPath)
474
+ ? JSON.parse(readFileSync(pkgPath, "utf8"))
475
+ : {};
476
+ const deps = {
477
+ ...pkg.dependencies,
478
+ ...pkg.devDependencies,
479
+ };
480
+ const mode = pf.outputMode === "server" ? "server" : "static";
481
+ const missingDeps = [];
482
+ if (!("@caretcms/core" in deps))
483
+ missingDeps.push("@caretcms/core");
484
+ if (mode === "server" && !hasAdapterKey && !("@astrojs/node" in deps)) {
485
+ missingDeps.push("@astrojs/node");
486
+ }
487
+ if (missingDeps.length) {
488
+ if (await confirmYes(rl, args, `\nInstall ${missingDeps.join(", ")}? [Y/n] `)) {
489
+ process.stdout.write(` npm install ${missingDeps.join(" ")}\n`);
490
+ execFileSync("npm", ["install", ...missingDeps], { cwd: root, stdio: "inherit" });
491
+ process.stdout.write("✓ installed\n");
492
+ }
493
+ else {
494
+ process.stdout.write(` skipped — run later: npm install ${missingDeps.join(" ")}\n`);
495
+ }
496
+ }
497
+ else {
498
+ process.stdout.write("\n✓ dependencies present\n");
499
+ }
500
+ // 2) astro.config — create when absent, else wire in the missing pieces.
501
+ const needs = {
502
+ caret: !pf.caretWired,
503
+ adapter: mode === "server" && !hasAdapterKey,
504
+ output: mode === "server" && pf.outputMode !== "server",
505
+ staticDelivery: mode === "static" && !pf.staticDeliveryConfigured,
506
+ };
507
+ if (!configSrc) {
508
+ process.stdout.write("\nNo astro.config found — proposed astro.config.mjs:\n\n");
509
+ process.stdout.write(indent(freshConfig(mode)));
510
+ if (await confirmYes(rl, args, " write it? [Y/n] ")) {
511
+ writeFileSync(resolve(root, "astro.config.mjs"), freshConfig(mode), "utf8");
512
+ process.stdout.write("✓ wrote astro.config.mjs\n");
513
+ }
514
+ else {
515
+ process.stdout.write(" skipped config\n");
516
+ }
517
+ }
518
+ else if (!needs.caret && !needs.adapter && !needs.output && !needs.staticDelivery) {
519
+ process.stdout.write(mode === "static"
520
+ ? `\n✓ ${configName} already wired (caret + static delivery)\n`
521
+ : `\n✓ ${configName} already wired (caret + adapter + output: server)\n`);
522
+ }
523
+ else {
524
+ const plan = planConfigWiring(configSrc, needs);
525
+ if (!plan.ok || plan.inserted.length === 0) {
526
+ process.stdout.write(`\n⚠ couldn't safely edit ${configName} — ensure it includes:\n\n`);
527
+ process.stdout.write(indent(freshConfig(mode)));
528
+ }
529
+ else {
530
+ process.stdout.write(`\nProposed edit to ${configName}:\n\n`);
531
+ process.stdout.write(formatHunks(lineDiff(configSrc, plan.output)));
532
+ if (await confirmYes(rl, args, `\n apply? [Y/n] (backup → .caret/.caretize-bak/) `)) {
533
+ writeBackup(root, configName, stamp);
534
+ writeFileSync(resolve(root, configName), plan.output, "utf8");
535
+ process.stdout.write(`✓ updated ${configName}\n`);
536
+ }
537
+ else {
538
+ process.stdout.write(" skipped config\n");
539
+ }
540
+ }
541
+ for (const m of plan.manual)
542
+ process.stdout.write(` ⚠ manual: ${m}\n`);
543
+ }
544
+ // 3) .env — a generated session secret + a password placeholder.
545
+ const envPath = resolve(root, ".env");
546
+ const existingEnv = existsSync(envPath) ? readFileSync(envPath, "utf8") : "";
547
+ const env = renderEnvAdditions(existingEnv, randomBytes(32).toString("hex"));
548
+ if (env.append) {
549
+ if (existingEnv)
550
+ writeBackup(root, ".env", stamp);
551
+ writeFileSync(envPath, existingEnv + env.append, "utf8");
552
+ process.stdout.write(`\n✓ .env: added ${env.added.join(", ")}\n`);
553
+ }
554
+ else {
555
+ process.stdout.write("\n✓ .env already has CaretCMS secrets\n");
556
+ }
557
+ }
558
+ finally {
559
+ rl.close();
560
+ }
561
+ process.stdout.write("\nNext:\n" +
562
+ " 1. npm run dev — a temporary edit password prints in the terminal\n" +
563
+ " 2. caretize — tag your content as editable\n" +
564
+ " 3. sign in at /admin, then click to edit (Studio at /admin/cms)\n");
565
+ }
273
566
  async function main() {
274
567
  let args;
275
568
  try {
@@ -293,6 +586,10 @@ async function main() {
293
586
  runRestore(root);
294
587
  return;
295
588
  }
589
+ if (args.init) {
590
+ await runInit(root, args);
591
+ return;
592
+ }
296
593
  const pf = preflight(root);
297
594
  for (const w of pf.warnings)
298
595
  process.stdout.write(`⚠ ${w}\n`);
@@ -302,10 +599,33 @@ async function main() {
302
599
  process.exit(1);
303
600
  }
304
601
  const files = discoverAstroFiles(root, args.target);
602
+ // Resolve which opt-in tiers apply through the single policy function: the
603
+ // individual flags, plus `--all` (every tier, incl. low-confidence). The CLI
604
+ // never decides this inline — it only renders + applies what selectTiers
605
+ // returns. Detection below stays gated by this set (no detect-always yet; the
606
+ // in-flow prompt that needs it is a later step), so existing flag behavior is
607
+ // byte-identical and `--all` simply turns the four tiers on at once.
608
+ const intent = {
609
+ all: args.all,
610
+ flags: {
611
+ collections: args.bindCollections,
612
+ routes: args.bindRoutes,
613
+ rich: args.rich,
614
+ "rich-class": args.richClass,
615
+ lowconf: args.minConfidence === "low",
616
+ },
617
+ };
618
+ const tiers = selectTiers(intent);
619
+ const bindCollections = tiers.has("collections");
620
+ const bindRoutes = tiers.has("routes");
621
+ const richClass = tiers.has("rich-class");
622
+ const rich = tiers.has("rich") || richClass; // --rich-class implies --rich
623
+ const minConfidence = tiers.has("lowconf") ? "low" : args.minConfidence;
305
624
  const planOpts = {
306
- minConfidence: args.minConfidence,
625
+ minConfidence,
307
626
  noImages: args.noImages,
308
- rich: args.rich,
627
+ rich,
628
+ richClass,
309
629
  scope: args.scope,
310
630
  };
311
631
  process.stdout.write(`caretize · scanning ${args.target ?? "src/"}\n`);
@@ -319,22 +639,55 @@ async function main() {
319
639
  return null;
320
640
  }
321
641
  };
322
- const analysis = await analyzeFiles(root, files, planOpts, readFileSafe, args.noProps, args.bindCollections, args.bindRoutes);
323
- process.stdout.write(formatScanSummary(files.length, analysis.plans, analysis.wrapsByFile, analysis.hoistsByFile, analysis.bindsByFile));
324
- const sel = await selectChanges(args, analysis);
325
- const hintOpts = { bindCollections: args.bindCollections, bindRoutes: args.bindRoutes };
642
+ const analysis = await analyzeFiles(root, files, planOpts, readFileSafe, args.noProps, bindCollections, bindRoutes);
643
+ // A re-run signal: elements the scan skipped because they already carry a
644
+ // data-caret. Lets the scan line read as incremental ("N new … · M already
645
+ // editable") rather than a cold scan.
646
+ const priorTagged = analysis.plans.reduce((n, p) => n + p.skipped.filter((s) => s.reason === "already-tagged").length, 0);
647
+ process.stdout.write(formatScanSummary(files.length, analysis.plans, analysis.wrapsByFile, analysis.hoistsByFile, analysis.bindsByFile, priorTagged));
648
+ let sel = await selectChanges(args, analysis);
326
649
  if (sel.quit) {
327
650
  process.stdout.write("\naborted — nothing written\n");
328
651
  return;
329
652
  }
653
+ // Interactive only: after the conservative review, offer the opt-in tiers
654
+ // in-flow so a first-timer reaches full coverage in one command — never asked
655
+ // to learn the four tier flags. `-y` / `--dry-run` / non-TTY skip this and
656
+ // keep Phase A's gated behavior.
657
+ let summaryPlans = analysis.plans;
658
+ let effectiveTiers = tiers;
659
+ const interactive = !args.dryRun && !args.yes && !args.diff && process.stdin.isTTY && process.stdout.isTTY;
660
+ // Optimistic default: applied without a per-file gate → show the diff after and
661
+ // point at undo. (--review opts out of optimistic, so it doesn't re-show it.)
662
+ const optimistic = interactive && !args.review;
663
+ if (interactive) {
664
+ const esc = await offerEscalation({ root, files, basePlanOpts: planOpts, readFileSafe, noProps: args.noProps, minConfidenceBase: args.minConfidence }, tiers, analysis, sel);
665
+ sel = esc.sel;
666
+ summaryPlans = esc.plans;
667
+ effectiveTiers = esc.tiers;
668
+ }
669
+ const hintOpts = {
670
+ rich: effectiveTiers.has("rich"),
671
+ richClass: effectiveTiers.has("rich-class"),
672
+ collections: effectiveTiers.has("collections"),
673
+ routes: effectiveTiers.has("routes"),
674
+ lowconf: effectiveTiers.has("lowconf"),
675
+ };
330
676
  const prepared = await prepareTouched(root, sel);
331
677
  if (args.report) {
332
678
  writeFileSync(args.report, JSON.stringify(buildReport(analysis.plans, prepared), null, 2));
333
679
  process.stdout.write(`⤓ report → ${relative(root, args.report) || args.report}\n`);
334
680
  }
681
+ if (args.diff) {
682
+ process.stdout.write(formatDiff(prepared));
683
+ process.stdout.write(formatFailures(prepared));
684
+ process.stdout.write(formatHints(summaryPlans, hintOpts));
685
+ return;
686
+ }
335
687
  if (args.dryRun) {
336
688
  process.stdout.write(formatPlan(analysis.plans, analysis.wrapsByFile, analysis.hoistsByFile, analysis.bindsByFile));
337
- process.stdout.write(formatHints(analysis.plans, args.rich, hintOpts));
689
+ process.stdout.write(formatFailures(prepared));
690
+ process.stdout.write(formatHints(summaryPlans, hintOpts));
338
691
  return;
339
692
  }
340
693
  const stamp = new Date().toISOString().replace(/[:.]/g, "-");
@@ -343,11 +696,21 @@ async function main() {
343
696
  // Don't print the "click to edit" success footer for a no-op run — say
344
697
  // why nothing matched and which flag unlocks the skipped candidates.
345
698
  process.stdout.write("\nno changes written.\n");
346
- process.stdout.write(formatHints(analysis.plans, args.rich, hintOpts));
699
+ process.stdout.write(formatHints(summaryPlans, hintOpts));
347
700
  return;
348
701
  }
349
- printCommit(written, backups.length > 0, prepared, sel, analysis.plans);
350
- process.stdout.write(formatHints(analysis.plans, args.rich, hintOpts));
702
+ if (optimistic) {
703
+ // "Show, don't ask": surface exactly what was just written, then make undo
704
+ // the most visible next move.
705
+ process.stdout.write("\napplied — here's what changed:\n");
706
+ process.stdout.write(formatDiff(prepared));
707
+ }
708
+ printCommit(written, backups.length > 0, prepared, sel, summaryPlans);
709
+ process.stdout.write(formatNextStep(pf));
710
+ process.stdout.write(formatHints(summaryPlans, hintOpts));
711
+ if (optimistic) {
712
+ process.stdout.write("\n not what you wanted? caretize --restore · approve each change next time? caretize --review\n");
713
+ }
351
714
  }
352
715
  main().catch((err) => {
353
716
  process.stderr.write(`caretize: ${err.message}\n`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}