ctxr-cli 0.18.0 → 0.19.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 (56) hide show
  1. package/README.md +9 -2
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +2 -1
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/update.d.ts +41 -2
  6. package/dist/commands/update.d.ts.map +1 -1
  7. package/dist/commands/update.js +125 -3
  8. package/dist/commands/update.js.map +1 -1
  9. package/dist/commands/version.d.ts +6 -0
  10. package/dist/commands/version.d.ts.map +1 -1
  11. package/dist/commands/version.js +4 -1
  12. package/dist/commands/version.js.map +1 -1
  13. package/dist/config/load.d.ts +22 -1
  14. package/dist/config/load.d.ts.map +1 -1
  15. package/dist/config/load.js +54 -17
  16. package/dist/config/load.js.map +1 -1
  17. package/dist/config/migrations.d.ts +61 -0
  18. package/dist/config/migrations.d.ts.map +1 -0
  19. package/dist/config/migrations.js +55 -0
  20. package/dist/config/migrations.js.map +1 -0
  21. package/dist/config/schema.d.ts +11 -8
  22. package/dist/config/schema.d.ts.map +1 -1
  23. package/dist/config/schema.js +11 -8
  24. package/dist/config/schema.js.map +1 -1
  25. package/dist/core/env.d.ts +7 -0
  26. package/dist/core/env.d.ts.map +1 -1
  27. package/dist/core/env.js.map +1 -1
  28. package/dist/core/errors.d.ts +16 -1
  29. package/dist/core/errors.d.ts.map +1 -1
  30. package/dist/core/errors.js +30 -4
  31. package/dist/core/errors.js.map +1 -1
  32. package/dist/core/install-kind.d.ts +13 -0
  33. package/dist/core/install-kind.d.ts.map +1 -1
  34. package/dist/core/install-kind.js +29 -0
  35. package/dist/core/install-kind.js.map +1 -1
  36. package/dist/core/skills.d.ts +15 -4
  37. package/dist/core/skills.d.ts.map +1 -1
  38. package/dist/core/skills.js +92 -22
  39. package/dist/core/skills.js.map +1 -1
  40. package/dist/core/store.d.ts +15 -0
  41. package/dist/core/store.d.ts.map +1 -1
  42. package/dist/core/store.js +18 -2
  43. package/dist/core/store.js.map +1 -1
  44. package/dist/run.d.ts.map +1 -1
  45. package/dist/run.js +8 -4
  46. package/dist/run.js.map +1 -1
  47. package/dist/version.d.ts +1 -1
  48. package/dist/version.js +1 -1
  49. package/package.json +1 -1
  50. package/templates/skills/ctxr-second-opinion/critic-contract.md +40 -0
  51. package/templates/skills/ctxr-second-opinion/lenses.md +15 -0
  52. package/templates/skills/ctxr-second-opinion/personas/architect.md +17 -0
  53. package/templates/skills/ctxr-second-opinion/personas/pragmatist.md +17 -0
  54. package/templates/skills/ctxr-second-opinion/personas/skeptic.md +17 -0
  55. package/templates/skills/ctxr-second-opinion/run.mjs +497 -0
  56. package/templates/skills/ctxr-upgrade.md +8 -2
package/README.md CHANGED
@@ -292,20 +292,27 @@ The **Preview** area, directly below the published pages, holds the pages your o
292
292
  ctxr version # the installed version, and where it is installed from
293
293
  ctxr version --check # compare it against the latest published release
294
294
  ctxr update # refresh every contexture-owned file to the installed version
295
+ ctxr update --worktree # the same, on a branch of its own, never in this checkout
295
296
  ctxr verify --portable # prove the store works from a harness with no harness-specific state
296
297
  ```
297
298
 
298
299
  `ctxr update` re-renders the `AGENTS.md` sections, skill copies, hooks, and adapter outputs — run it after upgrading the CLI, and after editing your house conventions.
299
300
 
301
+ `ctxr update --worktree` does that work in a worktree it creates for itself, off the freshly fetched default branch, on a branch named for the running release (`<branch_prefix>ctxr-update-<version>`). It never writes the checkout you ran it from, and it commits nothing — pushing the branch and opening the pull request are yours to do. When nothing is due it removes the worktree and branch again and says the store is already up to date; when the branch already exists, locally or on the remote, it does nothing at all. Both are what make it safe to run unattended, on every container start for example: the same release always names the same branch, and a run with nothing to do leaves nothing behind. The branch carries your session prefix, so `ctxr session list` shows it and the lifecycle skill submits and reclaims it like any other session.
302
+
300
303
  ### Upgrading the CLI
301
304
 
302
305
  `ctxr session start` and `ctxr update` check whether a newer release has been published and say so, once per session and once per update. The notice goes to stderr and appears as an `info` finding in `--json` output; it never changes either command's exit code, and a registry that is slow, unreachable, or behind a proxy simply produces no advice rather than a failure. `ctxr doctor` and `ctxr init` never make the request at all — a commit must not depend on the network, and `init` stays offline.
303
306
 
304
- The `ctxr-upgrade` skill performs the upgrade: it reads the live answer, refuses to instruct a global install when the executable it finds is a linked working copy, asks before changing anything, and re-renders the store *after* the package upgrade rather than before. By hand, that is `npm install -g ctxr-cli@latest` followed by `ctxr update`, in that order.
307
+ The `ctxr-upgrade` skill performs the upgrade: it reads the live answer, refuses to instruct a global install when the executable it finds is a linked working copy — or a global install you cannot write to, such as one a container image ships, which `ctxr version` reports as `install_writable: false` and which is upgraded by moving to a newer image — asks before changing anything, and re-renders the store *after* the package upgrade rather than before. By hand, that is `npm install -g ctxr-cli@latest` followed by `ctxr update`, in that order.
305
308
 
306
309
  To turn the check off, set `update_check.enabled` to `false` in `contexture.yaml`, or set `CONTEXTURE_UPDATE_CHECK=0` for a single invocation. `update_check.ttl_hours` sets how long a resolved answer is reused (a day by default); the cache lives in the store's gitignored `.contexture/cache/`.
307
310
 
308
- `schema_version` in `contexture.yaml` versions *store state* — the config shape and frontmatter conventions — as a monotonic integer independent of the npm package version. contexture ships no migration mechanism, so the number is a gate: a store whose recorded version is not the one your CLI supports is refused rather than half-read, in **either** direction. Newer, because the CLI cannot know that shape; older, because it no longer reads it. A release that changes the store's shape bumps the version and documents the one-time fixup in its release notes.
311
+ `schema_version` in `contexture.yaml` versions *store state* — the config shape and frontmatter conventions — as a monotonic integer independent of the npm package version. It is a gate: a store whose recorded version is not the one your CLI supports is refused rather than half-read, in **either** direction, by every command except one.
312
+
313
+ That one is `ctxr update`, and only for an *older* store. A release that changes the store's shape ships a migration step for it, and `ctxr update` runs every step between the store's version and the CLI's, in order, before it re-renders anything. The steps rewrite the parsed `contexture.yaml` before the typed configuration ever reads it, so contexture only ever accepts one spelling of a key, and the written file differs from yours only in the keys a step names and the version — your comments, your key order and every value you recorded are carried across untouched. If a step fails, or its result doesn't validate, nothing is written. Every other command refuses an older store and tells you to run `ctxr update`; run it as `ctxr update --worktree` and the migration lands on a branch for review rather than in your checkout.
314
+
315
+ Two cases stay refused everywhere, `update` included. A store **newer** than the CLI, because the CLI cannot know that shape — the remedy is a newer CLI. And a store older than the oldest version this release has a step for, which it cannot bring forward — that one is a hand edit, following the release notes for each version since.
309
316
 
310
317
  ### The config records decisions, not values
311
318
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA8B1E,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAkB5D,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2HAA2H;IAC3H,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE;QAAE,kBAAkB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F,wFAAwF;IACxF,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAuVD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAY9F"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA+B1E,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAkB5D,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2HAA2H;IAC3H,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE;QAAE,kBAAkB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F,wFAAwF;IACxF,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAuVD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAY9F"}
@@ -5,6 +5,7 @@ import { parse as parseYaml } from 'yaml';
5
5
  import { z } from 'zod';
6
6
  import { DEFAULT_ADAPTERS, DEFAULT_ARCHIVE_DESTINATION, DEFAULT_CAPTURE_ROOT, DEFAULT_CATALOG_PATH, DEFAULT_CATALOG_SECTION_MAX_BYTES, DEFAULT_CONVENTION_MAX_BYTES, DEFAULT_DERIVED_PATHS, DEFAULT_DIFF_SIZE_CEILING_LINES, DEFAULT_EXCLUDE_PATHS, DEFAULT_GATHER_MAX_NOTES, DEFAULT_GRAPH_SETTINGS, DEFAULT_GUIDANCE_PATH, DEFAULT_HOUSE_CONVENTIONS_FILE_NAME, DEFAULT_INBOX_PATH, DEFAULT_MISSION_PATH, DEFAULT_PUBLISH_PATH, DEFAULT_TEMPLATES_PATH, DEFAULT_INSTALLED_TEMPLATES, DEFAULT_ROLLUP_STALE_DAYS, DEFAULT_SESSION_BRANCH_PREFIX, DEFAULT_SKILLS_PATH, DEFAULT_TRACKING_PARAMS, DEFAULT_VENDORED_SKILLS, DEFAULT_WORKTREES_PATH, SHIPPED_DEFAULTS, } from '../config/defaults.js';
7
7
  import { configPathFor, readConfig } from '../config/load.js';
8
+ import { MIGRATION_STEPS } from '../config/migrations.js';
8
9
  import { renderStoreConfig } from '../config/render.js';
9
10
  import { SUPPORTED_SCHEMA_VERSION, TaxonomyLayerSchema, } from '../config/schema.js';
10
11
  import { buildAgentsCanonicalSection, buildAgentsCaptureSection, buildAgentsConventionsSection, buildAgentsLegRoutingSection, buildAgentsMissionSection, buildAgentsPlacementSection, agentsMdPath, } from '../core/agents-doc.js';
@@ -138,7 +139,7 @@ async function runInitCore(env, flags) {
138
139
  const configPath = configPathFor(root);
139
140
  // --- Idempotent path: already initialized -----------------------------
140
141
  if (existsSync(configPath)) {
141
- const config = await readConfig(root); // validates + gates schema_version
142
+ const config = await readConfig(root, env.migrationSteps ?? MIGRATION_STEPS); // validates + gates schema_version
142
143
  // Reconciling an existing store is exactly `ctxr update`'s job — one shared implementation.
143
144
  const { findings: reconcileFindings } = await reconcileStore(env, root, config);
144
145
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,iCAAiC,EACjC,4BAA4B,EAC5B,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,mCAAmC,EACnC,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAwB,MAAM,yBAAyB,CAAC;AAElI,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAqB7D,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAepF;;;;GAIG;AACH,SAAS,WAAW,CAAC,OAAwB;IAC3C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,KAAgB;IAC1D,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,8BAA8B,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAY,CAAC;QACvC,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;gBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAA2B,CACnC,KAAK,CAAC,OAAO,EACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClD,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,cAAc,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,oFAAoF;IACpF,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAiE;IACzF,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,0CAA0C,EAAE;IACnG,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;CAC3G,CAAC;AAEF,MAAM,mBAAmB,GAAsB,CAAC,aAAa,CAAC,CAAC;AAE/D,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAgB;IAC3D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAClC,OAAO,EAAE,0GAA0G;YACnH,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,mBAAmB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,+FAA+F;IAC/F,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY;IACxD,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,eAAe,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC;AACrB,CAAC;AAOD,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,KAAgB;IACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvC,yEAAyE;IACzE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;QAC1E,4FAA4F;QAC5F,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,mBAAmB,EAAE,IAAI;gBACzB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE;gBACb,GAAG,EAAE;oBACH,kBAAkB,EAAE,KAAK;oBACzB,MAAM,EAAE,IAAI;oBACZ,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc;iBAC1C;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAC9E,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;iBAC/B;gBACD,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC;YACD,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtD,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,IAAI,IAAI,qDAAqD,QAAQ,CAAC,QAAQ,IAAI;YAC3F,OAAO,EAAE,QAAQ,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IAED,2EAA2E;IAC3E,MAAM,uBAAuB,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC;IAC7D,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;IAErE,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,gBAAgB,GAAyB;QAC7C,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC;QAClE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACpF,CAAC;IAEF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,IAAI,2BAA2B,CAAC;IAEtF,MAAM,MAAM,GAAgB;QAC1B,cAAc,EAAE,wBAAwB;QACxC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;QAClE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE;QAC9C,SAAS,EAAE;YACT,aAAa,EAAE,CAAC,GAAG,qBAAqB,CAAC;YACzC,uEAAuE;YACvE,4DAA4D;YAC5D,YAAY,EAAE,CAAC,kBAAkB,CAAC;YAClC,gBAAgB,EAAE,wBAAwB;YAC1C,KAAK,EAAE,EAAE,GAAG,sBAAsB,EAAE,sBAAsB,EAAE,EAAE,EAAE;SACjE;QACD,GAAG,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE;QACtC,OAAO,EAAE,EAAE,aAAa,EAAE,6BAA6B,EAAE,cAAc,EAAE,sBAAsB,EAAE;QACjG,eAAe,EAAE,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,cAAc,EAAE,EAAE,EAAE;QACjG,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iCAAiC,EAAE;QAC7F,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACvC,SAAS,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,GAAG,2BAA2B,CAAC,EAAE;QACxF,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE;QAClD,YAAY,EAAE,gBAAgB,CAAC,YAAY;QAC3C,MAAM,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC,GAAG,uBAAuB,CAAC,EAAE;QAC7H,QAAQ,EAAE,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAAE,oBAAoB,EAAE;QACvI,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,4BAA4B,EAAE;QACvI,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;IACF,8FAA8F;IAC9F,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE7C,MAAM,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,wBAAwB,CAAC,aAAa,EAAE,uBAAuB,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7F,MAAM,wBAAwB,CAAC,aAAa,EAAE,yBAAyB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1G,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1H,yEAAyE;IACzE,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/H,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACzH,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,MAAM,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElD,MAAM,oBAAoB,GAAG;QAC3B,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,wEAAwE;IACxE,uEAAuE;IACvE,iCAAiC;IACjC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAEpE,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtD,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;QAC5B,aAAa;QACb,YAAY;QACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,GAAG,aAAa;QAChB,GAAG,iBAAiB;QACpB,GAAG,yBAAyB;QAC5B,GAAG,oBAAoB;QACvB,GAAG,YAAY;QACf,GAAG,oBAAoB;QACvB,GAAG,SAAS;KACb,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,oCAAoC,CAAC,CAAC;IAEnH,OAAO;QACL,IAAI,EAAE;YACJ,IAAI;YACJ,mBAAmB,EAAE,KAAK;YAC1B,OAAO,EAAE;gBACP,aAAa;gBACb,YAAY;gBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,GAAG,aAAa;gBAChB,GAAG,iBAAiB;gBACpB,GAAG,yBAAyB;gBAC5B,GAAG,YAAY;gBACf,GAAG,oBAAoB;gBACvB,GAAG,SAAS;aACb;YACD,SAAS,EAAE,EAAE;YACb,GAAG,EAAE,EAAE,kBAAkB,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE;YACvG,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;gBAC9E,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aAC/B;YACD,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC;QACD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAgB;IACzD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB;YAC3C,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,oCAAoC;YAC1D,CAAC,CAAC,oCAAoC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;QAC5D,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QAC3B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;KAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,25 @@
1
+ import type { StoreConfig } from '../config/schema.js';
1
2
  import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
3
  import type { RunEnv } from '../core/env.js';
3
- import type { Store } from '../core/store.js';
4
+ import type { MigratingStore, Store } from '../core/store.js';
4
5
  export declare const requires: CommandRequires;
5
6
  export interface UpdateData {
6
7
  /** Every store-relative path this run rewrote to the installed version; empty when already current. */
7
8
  changed: string[];
9
+ /** The schema versions a migration carried the store between; absent when none ran. */
10
+ migrated?: {
11
+ from: number;
12
+ to: number;
13
+ };
14
+ /**
15
+ * `--worktree` only. The worktree the update was made in — null when nothing
16
+ * was due and it was removed again, or when the branch already existed.
17
+ */
18
+ worktree?: string | null;
19
+ /** `--worktree` only: the branch the update lives on, or would have. */
20
+ branch?: string;
21
+ /** `--worktree` only: true when the branch already existed, so nothing was done. */
22
+ existing?: boolean;
8
23
  }
9
24
  /**
10
25
  * entry-doc-generation spec (D5): after upgrading contexture, bring every
@@ -13,5 +28,29 @@ export interface UpdateData {
13
28
  * copies, and each configured adapter's outputs. Operator content is never
14
29
  * touched. Idempotent: a current store reports nothing changed.
15
30
  */
16
- export declare function execute(env: RunEnv, store: Store): Promise<CommandOutcome<UpdateData>>;
31
+ export declare function execute(env: RunEnv, store: Store & Partial<Pick<MigratingStore, 'document' | 'migratedFrom'>>): Promise<CommandOutcome<UpdateData>>;
32
+ /**
33
+ * migrate-stores-on-update (design D3): the branch an update made with
34
+ * `--worktree` lives on. Derived only from the configured prefix and the
35
+ * running release, so every run of one release names the same branch — that is
36
+ * what makes a caller running this at every container start idempotent. The
37
+ * prefix is what `isSessionBranch` keys on, so `session list` and the
38
+ * lifecycle skill's submit and reclaim steps treat it as any other session.
39
+ */
40
+ export declare function updateBranchName(config: StoreConfig): string;
41
+ /**
42
+ * `ctxr update --worktree`: migrate and re-render in a worktree this command
43
+ * creates for itself, never in the checkout it was invoked from.
44
+ *
45
+ * `store` is the INVOKING checkout's configuration, migrated in memory only. It
46
+ * supplies the branch prefix, worktrees path and default branch in their
47
+ * current shape, so a step that renames one of them cannot strand the command
48
+ * before it starts. The worktree's own `contexture.yaml` — from the freshly
49
+ * fetched default branch, which may be ahead of the invoking checkout — is
50
+ * what gets migrated and written.
51
+ *
52
+ * It commits nothing. Whether the branch is pushed, reviewed or thrown away is
53
+ * the caller's decision.
54
+ */
55
+ export declare function executeInWorktree(env: RunEnv, store: MigratingStore): Promise<CommandOutcome<UpdateData>>;
17
56
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAmB5F"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9D,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uFAAuF;IACvF,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,GACxE,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CA0CrC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAwD/G"}
@@ -1,6 +1,14 @@
1
+ import { configPathFor, readConfigMigrating } from '../config/load.js';
2
+ import { MIGRATION_STEPS } from '../config/migrations.js';
3
+ import { SessionWorktreeRefusedError } from '../core/errors.js';
1
4
  import { ExitCode } from '../core/exit-codes.js';
5
+ import { writeFileAtomic } from '../core/fs/atomic.js';
6
+ import { addWorktree, fetchOrigin, hasRemote, removeWorktree } from '../core/git/worktree.js';
2
7
  import { reconcileStore } from '../core/reconcile.js';
8
+ import { CONFIG_FILE_NAME } from '../core/root.js';
9
+ import { worktreePathFor } from '../core/session.js';
3
10
  import { updateAdvisory } from '../core/version-check.js';
11
+ import { CLI_VERSION } from '../version.js';
4
12
  import { generateAdapterOutputs } from './adapters-generate.js';
5
13
  export const requires = { store: 'required' };
6
14
  /**
@@ -11,21 +19,135 @@ export const requires = { store: 'required' };
11
19
  * touched. Idempotent: a current store reports nothing changed.
12
20
  */
13
21
  export async function execute(env, store) {
22
+ // migrate-stores-on-update: a store opened through openStoreMigrating may have
23
+ // been carried forward in memory. Write it first, so the reconcile below — and
24
+ // anything it shells out to, like the pre-commit hook's doctor — reads the
25
+ // migrated configuration rather than the one the gate refuses.
26
+ const migrated = store.migratedFrom !== null && store.migratedFrom !== undefined && store.document !== undefined
27
+ ? { from: store.migratedFrom, to: store.config.schema_version }
28
+ : undefined;
29
+ if (migrated && store.document) {
30
+ await writeFileAtomic(configPathFor(store.root), String(store.document));
31
+ }
14
32
  const { changed, findings } = await reconcileStore(env, store.root, store.config);
15
33
  const adapterFiles = await generateAdapterOutputs(env.git, store);
16
- const all = [...new Set([...changed, ...adapterFiles.filter((f) => f.changed).map((f) => f.path)])];
34
+ const all = [
35
+ ...new Set([
36
+ ...(migrated ? [CONFIG_FILE_NAME] : []),
37
+ ...changed,
38
+ ...adapterFiles.filter((f) => f.changed).map((f) => f.path),
39
+ ]),
40
+ ];
17
41
  // cli-contract: the human path for the release advisory. This is the command
18
42
  // someone runs right AFTER upgrading, so "you have not upgraded" is at its
19
43
  // most actionable here. It never changes this command's exit code.
20
44
  const advisory = await updateAdvisory(env, store);
21
45
  return {
22
46
  exitCode: ExitCode.Ok,
23
- data: { changed: all },
47
+ data: migrated ? { changed: all, migrated } : { changed: all },
24
48
  findings: [...findings, ...advisory.findings],
25
49
  notices: advisory.notice ? [advisory.notice] : undefined,
26
- humanSummary: all.length === 0 ? 'Store is already up to date.' : `Updated ${all.length} contexture-owned file(s).`,
50
+ humanSummary: all.length === 0
51
+ ? 'Store is already up to date.'
52
+ : migrated
53
+ ? `Migrated contexture.yaml from schema ${migrated.from} to ${migrated.to}, and updated ${all.length} file(s).`
54
+ : `Updated ${all.length} contexture-owned file(s).`,
27
55
  storeRoot: store.root,
28
56
  schemaVersion: store.config.schema_version,
29
57
  };
30
58
  }
59
+ /**
60
+ * migrate-stores-on-update (design D3): the branch an update made with
61
+ * `--worktree` lives on. Derived only from the configured prefix and the
62
+ * running release, so every run of one release names the same branch — that is
63
+ * what makes a caller running this at every container start idempotent. The
64
+ * prefix is what `isSessionBranch` keys on, so `session list` and the
65
+ * lifecycle skill's submit and reclaim steps treat it as any other session.
66
+ */
67
+ export function updateBranchName(config) {
68
+ return `${config.session.branch_prefix}ctxr-update-${CLI_VERSION}`;
69
+ }
70
+ async function branchExists(env, root, branch, remoteExists) {
71
+ const local = await env.git.run(['rev-parse', '--verify', '--quiet', `refs/heads/${branch}`], {
72
+ cwd: root,
73
+ allowFailure: true,
74
+ });
75
+ if (local.exitCode === 0)
76
+ return true;
77
+ if (!remoteExists)
78
+ return false;
79
+ // Exit 0 is "found"; 2 is "no such ref". Anything else — an unreachable remote —
80
+ // is not evidence the branch exists, and the fetch below will fail on its own terms.
81
+ const remote = await env.git.run(['ls-remote', '--exit-code', '--heads', 'origin', branch], {
82
+ cwd: root,
83
+ allowFailure: true,
84
+ });
85
+ return remote.exitCode === 0;
86
+ }
87
+ /**
88
+ * `ctxr update --worktree`: migrate and re-render in a worktree this command
89
+ * creates for itself, never in the checkout it was invoked from.
90
+ *
91
+ * `store` is the INVOKING checkout's configuration, migrated in memory only. It
92
+ * supplies the branch prefix, worktrees path and default branch in their
93
+ * current shape, so a step that renames one of them cannot strand the command
94
+ * before it starts. The worktree's own `contexture.yaml` — from the freshly
95
+ * fetched default branch, which may be ahead of the invoking checkout — is
96
+ * what gets migrated and written.
97
+ *
98
+ * It commits nothing. Whether the branch is pushed, reviewed or thrown away is
99
+ * the caller's decision.
100
+ */
101
+ export async function executeInWorktree(env, store) {
102
+ const git = env.git;
103
+ const branch = updateBranchName(store.config);
104
+ const remoteExists = await hasRemote(git, store.root);
105
+ if (await branchExists(env, store.root, branch, remoteExists)) {
106
+ return {
107
+ exitCode: ExitCode.Ok,
108
+ data: { changed: [], worktree: null, branch, existing: true },
109
+ findings: [],
110
+ humanSummary: `Branch "${branch}" already exists; nothing was done.`,
111
+ storeRoot: store.root,
112
+ schemaVersion: store.config.schema_version,
113
+ };
114
+ }
115
+ const defaultBranch = store.config.git.default_branch;
116
+ const fetched = remoteExists ? await fetchOrigin(git, store.root, defaultBranch) : false;
117
+ const startPoint = fetched ? `origin/${defaultBranch}` : defaultBranch;
118
+ const worktreeDir = worktreePathFor(store, branch);
119
+ const added = await addWorktree(git, store.root, worktreeDir, branch, startPoint, { allowFailure: true });
120
+ if (added.exitCode !== 0)
121
+ throw new SessionWorktreeRefusedError(branch, worktreeDir, added.stderr);
122
+ const discard = async () => {
123
+ await removeWorktree(git, store.root, worktreeDir);
124
+ await git.run(['branch', '-D', branch], { cwd: store.root, allowFailure: true });
125
+ };
126
+ let outcome;
127
+ try {
128
+ const read = await readConfigMigrating(worktreeDir, env.migrationSteps ?? MIGRATION_STEPS);
129
+ outcome = await execute(env, { root: worktreeDir, ...read });
130
+ }
131
+ catch (err) {
132
+ // A refused or failed run leaves nothing behind for the next run to trip over.
133
+ await discard();
134
+ throw err;
135
+ }
136
+ const data = outcome.data ?? { changed: [] };
137
+ if (data.changed.length === 0) {
138
+ await discard();
139
+ return {
140
+ ...outcome,
141
+ data: { changed: [], worktree: null, branch, existing: false },
142
+ humanSummary: 'Store is already up to date.',
143
+ storeRoot: store.root,
144
+ };
145
+ }
146
+ return {
147
+ ...outcome,
148
+ data: { ...data, worktree: worktreeDir, branch, existing: false },
149
+ humanSummary: `${outcome.humanSummary} Worktree "${worktreeDir}" on branch "${branch}" (from ${startPoint}), uncommitted.`,
150
+ storeRoot: store.root,
151
+ };
152
+ }
31
153
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAO/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY;IACrD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpG,6EAA6E;IAC7E,2EAA2E;IAC3E,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;QACtB,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC7C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,YAAY,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAM,4BAA4B;QACnH,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@ export interface VersionData {
13
13
  version: string;
14
14
  install_path: string;
15
15
  install_kind: InstallKind;
16
+ /**
17
+ * Global installs only: whether the running user can write where a
18
+ * package-manager upgrade would install. False means something else manages
19
+ * this executable — an image, a system package — and upgrades it there.
20
+ */
21
+ install_writable?: boolean;
16
22
  /** Only present with --check. Null when the published version could not be resolved. */
17
23
  latest?: string | null;
18
24
  release_status?: ReleaseStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE3E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,WAAW,CAAC;IAC1B,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAuDzG"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE3E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CA0DzG"}
@@ -1,5 +1,5 @@
1
1
  import { ExitCode } from '../core/exit-codes.js';
2
- import { resolveInstallLocation } from '../core/install-kind.js';
2
+ import { isGlobalInstallWritable, resolveInstallLocation } from '../core/install-kind.js';
3
3
  import { ownPackageName } from '../core/registry.js';
4
4
  import { compareRelease } from '../core/version-check.js';
5
5
  import { CLI_VERSION } from '../version.js';
@@ -23,6 +23,9 @@ export async function execute(env, flags = {}) {
23
23
  version: CLI_VERSION,
24
24
  install_path: install.path,
25
25
  install_kind: install.kind,
26
+ ...(install.kind === 'global'
27
+ ? { install_writable: await isGlobalInstallWritable(install.path, env.execPath) }
28
+ : {}),
26
29
  };
27
30
  if (!flags.check) {
28
31
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { type Document } from 'yaml';
2
+ import { type MigrationStep } from './migrations.js';
1
3
  import { type StoreConfig } from './schema.js';
2
4
  export declare function configPathFor(root: string): string;
3
5
  /**
@@ -6,6 +8,25 @@ export declare function configPathFor(root: string): string;
6
8
  * BEFORE full validation, so a store whose recorded version differs in either
7
9
  * direction reports the version rather than the confusing generic
8
10
  * shape-validation error the full schema would otherwise produce.
11
+ *
12
+ * `steps` is the migration ladder the gate measures its floor against. It is
13
+ * only ever overridden by tests; every command passes the shipped one.
9
14
  */
10
- export declare function readConfig(root: string): Promise<StoreConfig>;
15
+ export declare function readConfig(root: string, steps?: readonly MigrationStep[]): Promise<StoreConfig>;
16
+ export interface MigratingRead {
17
+ config: StoreConfig;
18
+ /** The document as it should be written: migrated when `migratedFrom` is set, otherwise as read. */
19
+ document: Document;
20
+ /** The schema version the store was recorded at, when a migration ran; null when it was already current. */
21
+ migratedFrom: number | null;
22
+ }
23
+ /**
24
+ * migrate-stores-on-update (design D2): the one exception to the gate, for
25
+ * `ctxr update` alone. A store recorded at an older version that is at or
26
+ * above the migration floor is carried forward IN MEMORY and validated; the
27
+ * caller decides whether and where the migrated document is written. Every
28
+ * other refusal — newer, missing, below the floor — is identical to
29
+ * `readConfig`'s, because it is the same function.
30
+ */
31
+ export declare function readConfigMigrating(root: string, steps?: readonly MigrationStep[]): Promise<MigratingRead>;
11
32
  //# sourceMappingURL=load.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAUA,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2CnE"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AASpD,OAAO,EAA4E,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/H,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,aAAa,EAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEtH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,oGAAoG;IACpG,QAAQ,EAAE,QAAQ,CAAC;IACnB,4GAA4G;IAC5G,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,SAAS,aAAa,EAAoB,GAChD,OAAO,CAAC,aAAa,CAAC,CAExB"}
@@ -1,8 +1,9 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { parse as parseYaml } from 'yaml';
3
+ import { parseDocument } from 'yaml';
4
4
  import { CONFIG_FILE_NAME } from '../core/root.js';
5
- import { InvalidConfigError, SchemaVersionBehindError, SchemaVersionMissingError, SchemaVersionNewerError, } from '../core/errors.js';
5
+ import { InvalidConfigError, SchemaMigrationFailedError, SchemaVersionBehindError, SchemaVersionMissingError, SchemaVersionNewerError, } from '../core/errors.js';
6
+ import { MIGRATION_STEPS, migrationFloor, MigrationStepFailedError, runMigrations } from './migrations.js';
6
7
  import { StoreConfigSchema, SUPPORTED_SCHEMA_VERSION } from './schema.js';
7
8
  export function configPathFor(root) {
8
9
  return path.join(root, CONFIG_FILE_NAME);
@@ -13,19 +14,37 @@ export function configPathFor(root) {
13
14
  * BEFORE full validation, so a store whose recorded version differs in either
14
15
  * direction reports the version rather than the confusing generic
15
16
  * shape-validation error the full schema would otherwise produce.
17
+ *
18
+ * `steps` is the migration ladder the gate measures its floor against. It is
19
+ * only ever overridden by tests; every command passes the shipped one.
16
20
  */
17
- export async function readConfig(root) {
21
+ export async function readConfig(root, steps = MIGRATION_STEPS) {
22
+ return (await loadConfig(root, { migrate: false, steps })).config;
23
+ }
24
+ /**
25
+ * migrate-stores-on-update (design D2): the one exception to the gate, for
26
+ * `ctxr update` alone. A store recorded at an older version that is at or
27
+ * above the migration floor is carried forward IN MEMORY and validated; the
28
+ * caller decides whether and where the migrated document is written. Every
29
+ * other refusal — newer, missing, below the floor — is identical to
30
+ * `readConfig`'s, because it is the same function.
31
+ */
32
+ export async function readConfigMigrating(root, steps = MIGRATION_STEPS) {
33
+ return loadConfig(root, { migrate: true, steps });
34
+ }
35
+ async function loadConfig(root, mode) {
18
36
  const configPath = configPathFor(root);
19
37
  const text = await readFile(configPath, 'utf8');
20
- let raw;
21
- try {
22
- raw = parseYaml(text);
23
- }
24
- catch (err) {
38
+ // A Document, not a plain value: a migration has to write back everything it
39
+ // did not change — comments and key order included — and only the parsed
40
+ // document carries those.
41
+ const document = parseDocument(text);
42
+ if (document.errors.length > 0) {
25
43
  throw new InvalidConfigError(configPath, [
26
- { path: '(root)', message: err instanceof Error ? err.message : String(err) },
44
+ { path: '(root)', message: document.errors.map((err) => err.message).join('; ') },
27
45
  ]);
28
46
  }
47
+ const raw = document.toJS();
29
48
  const rawVersion = raw?.schema_version;
30
49
  if (rawVersion === undefined || rawVersion === null) {
31
50
  throw new SchemaVersionMissingError(configPath);
@@ -36,24 +55,42 @@ export async function readConfig(root) {
36
55
  if (rawVersion > SUPPORTED_SCHEMA_VERSION) {
37
56
  throw new SchemaVersionNewerError(rawVersion, SUPPORTED_SCHEMA_VERSION);
38
57
  }
58
+ let toValidate = document;
59
+ let migratedFrom = null;
39
60
  /**
40
- * retire-store-migrations: the older direction is refused here too, and for
41
- * the same reason the newer one is — this release cannot read that shape.
42
- * It has to happen before `safeParse`, or an older config fails on the keys
43
- * whose superseded spellings the schema no longer accepts, reporting a shape
44
- * error against keys the operator never wrote instead of the version.
61
+ * The older direction is refused here, before `safeParse`, for every command
62
+ * but update — or an older config fails on the keys whose superseded
63
+ * spellings the schema no longer accepts, reporting a shape error against
64
+ * keys the operator never wrote instead of the version. Update migrates the
65
+ * raw document first instead, so the typed schema still only ever sees the
66
+ * current spellings.
45
67
  */
46
68
  if (rawVersion < SUPPORTED_SCHEMA_VERSION) {
47
- throw new SchemaVersionBehindError(rawVersion, SUPPORTED_SCHEMA_VERSION);
69
+ const floor = migrationFloor(mode.steps);
70
+ if (!mode.migrate || rawVersion < floor) {
71
+ throw new SchemaVersionBehindError(rawVersion, SUPPORTED_SCHEMA_VERSION, floor);
72
+ }
73
+ try {
74
+ toValidate = runMigrations(document, rawVersion, mode.steps);
75
+ }
76
+ catch (err) {
77
+ if (err instanceof MigrationStepFailedError)
78
+ throw new SchemaMigrationFailedError(configPath, err.message);
79
+ throw err;
80
+ }
81
+ migratedFrom = rawVersion;
48
82
  }
49
- const result = StoreConfigSchema.safeParse(raw);
83
+ const result = StoreConfigSchema.safeParse(toValidate.toJS());
50
84
  if (!result.success) {
51
85
  const issues = result.error.issues.map((issue) => ({
52
86
  path: issue.path.join('.') || '(root)',
53
87
  message: issue.message,
54
88
  }));
89
+ if (migratedFrom !== null) {
90
+ throw new SchemaMigrationFailedError(configPath, `the migrated configuration does not validate: ${issues.map((i) => `${i.path}: ${i.message}`).join('; ')}`);
91
+ }
55
92
  throw new InvalidConfigError(configPath, issues);
56
93
  }
57
- return result.data;
94
+ return { config: result.data, document: toValidate, migratedFrom };
58
95
  }
59
96
  //# sourceMappingURL=load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAoB,MAAM,aAAa,CAAC;AAE5F,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAI,GAA2C,EAAE,cAAc,CAAC;IAChF,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,UAAU,GAAG,wBAAwB,EAAE,CAAC;QAC1C,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC1E,CAAC;IACD;;;;;;OAMG;IACH,IAAI,UAAU,GAAG,wBAAwB,EAAE,CAAC;QAC1C,MAAM,IAAI,wBAAwB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}