ctxr-cli 0.9.0 → 0.10.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.
- package/README.md +17 -7
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/publish-check.d.ts.map +1 -1
- package/dist/commands/publish-check.js +8 -0
- package/dist/commands/publish-check.js.map +1 -1
- package/dist/commands/publish-new.d.ts.map +1 -1
- package/dist/commands/publish-new.js +15 -0
- package/dist/commands/publish-new.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +33 -11
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session-start.d.ts.map +1 -1
- package/dist/commands/session-start.js +9 -1
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/source-check.d.ts.map +1 -1
- package/dist/commands/source-check.js +28 -3
- package/dist/commands/source-check.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +7 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/verify.d.ts +11 -2
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +86 -5
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/version.d.ts +31 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +87 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +9 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.d.ts +2 -2
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +13 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/render.d.ts +0 -6
- package/dist/config/render.d.ts.map +1 -1
- package/dist/config/render.js +4 -27
- package/dist/config/render.js.map +1 -1
- package/dist/config/schema.d.ts +17 -66
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +59 -111
- package/dist/config/schema.js.map +1 -1
- package/dist/core/browse/nav.d.ts.map +1 -1
- package/dist/core/browse/nav.js +4 -1
- package/dist/core/browse/nav.js.map +1 -1
- package/dist/core/browse/preferences.d.ts +26 -0
- package/dist/core/browse/preferences.d.ts.map +1 -0
- package/dist/core/browse/preferences.js +74 -0
- package/dist/core/browse/preferences.js.map +1 -0
- package/dist/core/browse/routes.d.ts +10 -8
- package/dist/core/browse/routes.d.ts.map +1 -1
- package/dist/core/browse/routes.js +113 -24
- package/dist/core/browse/routes.js.map +1 -1
- package/dist/core/browse/templates.d.ts +14 -4
- package/dist/core/browse/templates.d.ts.map +1 -1
- package/dist/core/browse/templates.js +22 -4
- package/dist/core/browse/templates.js.map +1 -1
- package/dist/core/checks/harness-portability-checks.d.ts +21 -0
- package/dist/core/checks/harness-portability-checks.d.ts.map +1 -1
- package/dist/core/checks/harness-portability-checks.js +46 -1
- package/dist/core/checks/harness-portability-checks.js.map +1 -1
- package/dist/core/checks/integrity-checks.d.ts +0 -2
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +2 -27
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/command.d.ts +6 -0
- package/dist/core/command.d.ts.map +1 -1
- package/dist/core/env.d.ts +5 -0
- package/dist/core/env.d.ts.map +1 -1
- package/dist/core/env.js +3 -0
- package/dist/core/env.js.map +1 -1
- package/dist/core/environment/probe.d.ts +12 -0
- package/dist/core/environment/probe.d.ts.map +1 -0
- package/dist/core/environment/probe.js +36 -0
- package/dist/core/environment/probe.js.map +1 -0
- package/dist/core/errors.d.ts +16 -3
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +41 -15
- package/dist/core/errors.js.map +1 -1
- package/dist/core/git/worktree.d.ts +22 -0
- package/dist/core/git/worktree.d.ts.map +1 -1
- package/dist/core/git/worktree.js +34 -0
- package/dist/core/git/worktree.js.map +1 -1
- package/dist/core/harness/isolated-run.d.ts +52 -0
- package/dist/core/harness/isolated-run.d.ts.map +1 -0
- package/dist/core/harness/isolated-run.js +100 -0
- package/dist/core/harness/isolated-run.js.map +1 -0
- package/dist/core/install-kind.d.ts +25 -0
- package/dist/core/install-kind.d.ts.map +1 -0
- package/dist/core/install-kind.js +56 -0
- package/dist/core/install-kind.js.map +1 -0
- package/dist/core/publish/script-check.d.ts +5 -2
- package/dist/core/publish/script-check.d.ts.map +1 -1
- package/dist/core/publish/script-check.js +5 -2
- package/dist/core/publish/script-check.js.map +1 -1
- package/dist/core/registry.d.ts +40 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +55 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/root.d.ts +11 -5
- package/dist/core/root.d.ts.map +1 -1
- package/dist/core/root.js +20 -8
- package/dist/core/root.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +7 -0
- package/dist/core/skills.js.map +1 -1
- package/dist/core/version-check.d.ts +63 -0
- package/dist/core/version-check.d.ts.map +1 -0
- package/dist/core/version-check.js +181 -0
- package/dist/core/version-check.js.map +1 -0
- package/dist/run.d.ts +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +38 -16
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +8 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +8 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/canonical.md +1 -1
- package/templates/serve/shell.html +16 -2
- package/templates/serve/style.css +145 -3
- package/templates/skills/ctxr-session-lifecycle.md +20 -0
- package/templates/skills/ctxr-upgrade.md +44 -0
- package/dist/commands/migrate.d.ts +0 -30
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js +0 -56
- package/dist/commands/migrate.js.map +0 -1
- package/dist/core/migrations/add-explanation-craft-skill.d.ts +0 -26
- package/dist/core/migrations/add-explanation-craft-skill.d.ts.map +0 -1
- package/dist/core/migrations/add-explanation-craft-skill.js +0 -94
- package/dist/core/migrations/add-explanation-craft-skill.js.map +0 -1
- package/dist/core/migrations/archive-destination-from-taxonomy.d.ts +0 -35
- package/dist/core/migrations/archive-destination-from-taxonomy.d.ts.map +0 -1
- package/dist/core/migrations/archive-destination-from-taxonomy.js +0 -109
- package/dist/core/migrations/archive-destination-from-taxonomy.js.map +0 -1
- package/dist/core/migrations/config-defaults-as-the-convention.d.ts +0 -21
- package/dist/core/migrations/config-defaults-as-the-convention.d.ts.map +0 -1
- package/dist/core/migrations/config-defaults-as-the-convention.js +0 -54
- package/dist/core/migrations/config-defaults-as-the-convention.js.map +0 -1
- package/dist/core/migrations/drop-access-axes.d.ts +0 -24
- package/dist/core/migrations/drop-access-axes.d.ts.map +0 -1
- package/dist/core/migrations/drop-access-axes.js +0 -54
- package/dist/core/migrations/drop-access-axes.js.map +0 -1
- package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts +0 -19
- package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts.map +0 -1
- package/dist/core/migrations/drop-forge-and-workspaces-external.js +0 -49
- package/dist/core/migrations/drop-forge-and-workspaces-external.js.map +0 -1
- package/dist/core/migrations/registry.d.ts +0 -16
- package/dist/core/migrations/registry.d.ts.map +0 -1
- package/dist/core/migrations/registry.js +0 -34
- package/dist/core/migrations/registry.js.map +0 -1
- package/dist/core/migrations/rename-conventions-path.d.ts +0 -26
- package/dist/core/migrations/rename-conventions-path.d.ts.map +0 -1
- package/dist/core/migrations/rename-conventions-path.js +0 -86
- package/dist/core/migrations/rename-conventions-path.js.map +0 -1
- package/dist/core/migrations/rename-procedures-path.d.ts +0 -17
- package/dist/core/migrations/rename-procedures-path.d.ts.map +0 -1
- package/dist/core/migrations/rename-procedures-path.js +0 -45
- package/dist/core/migrations/rename-procedures-path.js.map +0 -1
- package/dist/core/migrations/retain-captures-as-provenance.d.ts +0 -22
- package/dist/core/migrations/retain-captures-as-provenance.d.ts.map +0 -1
- package/dist/core/migrations/retain-captures-as-provenance.js +0 -133
- package/dist/core/migrations/retain-captures-as-provenance.js.map +0 -1
- package/dist/core/migrations/types.d.ts +0 -27
- package/dist/core/migrations/types.d.ts.map +0 -1
- package/dist/core/migrations/types.js +0 -2
- package/dist/core/migrations/types.js.map +0 -1
package/dist/commands/migrate.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { readConfig } from '../config/load.js';
|
|
2
|
-
import { SUPPORTED_SCHEMA_VERSION } from '../config/schema.js';
|
|
3
|
-
import { ExitCode } from '../core/exit-codes.js';
|
|
4
|
-
import { pendingMigrations } from '../core/migrations/registry.js';
|
|
5
|
-
export const requires = { store: 'required' };
|
|
6
|
-
/**
|
|
7
|
-
* store-lifecycle spec: `--dry-run` reports exact deltas with nothing
|
|
8
|
-
* applied; a real run applies each pending migration in order, reloading
|
|
9
|
-
* the store's config after each one so a later migration in the chain
|
|
10
|
-
* (none exist yet, but the mechanism supports it) sees the version it
|
|
11
|
-
* actually needs to start from. Resumability is a property of each
|
|
12
|
-
* migration's own plan()/apply() (see core/migrations/types.ts) — this
|
|
13
|
-
* command does no extra bookkeeping of its own.
|
|
14
|
-
*/
|
|
15
|
-
export async function execute(store, flags) {
|
|
16
|
-
const pending = pendingMigrations(store.config.schema_version);
|
|
17
|
-
const startingVersion = store.config.schema_version;
|
|
18
|
-
if (pending.length === 0) {
|
|
19
|
-
return {
|
|
20
|
-
exitCode: ExitCode.Ok,
|
|
21
|
-
data: { currentVersion: startingVersion, targetVersion: SUPPORTED_SCHEMA_VERSION, applied: false, migrations: [] },
|
|
22
|
-
findings: [],
|
|
23
|
-
humanSummary: `Already at schema_version ${startingVersion}; nothing to migrate.`,
|
|
24
|
-
storeRoot: store.root,
|
|
25
|
-
schemaVersion: store.config.schema_version,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const results = [];
|
|
29
|
-
let workingStore = store;
|
|
30
|
-
for (const migration of pending) {
|
|
31
|
-
if (flags.dryRun) {
|
|
32
|
-
const deltas = await migration.plan(workingStore);
|
|
33
|
-
results.push({ id: migration.id, fromVersion: migration.fromVersion, toVersion: migration.toVersion, deltas });
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
const deltas = await migration.apply(workingStore);
|
|
37
|
-
results.push({ id: migration.id, fromVersion: migration.fromVersion, toVersion: migration.toVersion, deltas });
|
|
38
|
-
workingStore = { root: workingStore.root, config: await readConfig(workingStore.root) };
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
exitCode: ExitCode.Ok,
|
|
42
|
-
data: {
|
|
43
|
-
currentVersion: startingVersion,
|
|
44
|
-
targetVersion: SUPPORTED_SCHEMA_VERSION,
|
|
45
|
-
applied: !flags.dryRun,
|
|
46
|
-
migrations: results,
|
|
47
|
-
},
|
|
48
|
-
findings: [],
|
|
49
|
-
humanSummary: flags.dryRun
|
|
50
|
-
? `--dry-run: ${results.reduce((n, r) => n + r.deltas.length, 0)} change(s) would be made across ${results.length} migration(s).`
|
|
51
|
-
: `Applied ${results.length} migration(s), now at schema_version ${workingStore.config.schema_version}.`,
|
|
52
|
-
storeRoot: store.root,
|
|
53
|
-
schemaVersion: flags.dryRun ? store.config.schema_version : workingStore.config.schema_version,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=migrate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* vendor-explanation-craft-skill: the shipped vendored set grew a second craft
|
|
4
|
-
* skill, and `init` writes the RESOLVED list into `contexture.yaml` while
|
|
5
|
-
* `reconcileStore` never rewrites configuration. So a change to the shipped
|
|
6
|
-
* default reaches new stores only; without this migration every store already
|
|
7
|
-
* on disk would keep a one-entry list and silently never receive the skill the
|
|
8
|
-
* publish skill now tells it to load.
|
|
9
|
-
*
|
|
10
|
-
* The uncomfortable part, stated rather than implied: `config/schema.ts` says
|
|
11
|
-
* the schema version bumps "only on a genuinely incompatible change, never on
|
|
12
|
-
* an additive one," and adding a skill is additive. This bumps it anyway, which
|
|
13
|
-
* means every existing store reports as needing `ctxr migrate` because a skill
|
|
14
|
-
* was added. That was the accepted price of guaranteed propagation — the
|
|
15
|
-
* alternatives were leaving the shipped default a lie for every store predating
|
|
16
|
-
* it, or an update-time nag that would never stop firing in a store that
|
|
17
|
-
* deliberately opted out. Do not read this as license to bump the version for
|
|
18
|
-
* the next additive change; weigh that one on its own.
|
|
19
|
-
*
|
|
20
|
-
* Pending-ness is the recorded schema version, never the list's contents — the
|
|
21
|
-
* rule 0002, 0004, 0005, and 0006 all follow, because the config schema fills
|
|
22
|
-
* `skills.vendored` from the shipped default when the key is absent, so an
|
|
23
|
-
* unmigrated store already reads as though it declared the new set.
|
|
24
|
-
*/
|
|
25
|
-
export declare const addExplanationCraftSkillMigration: Migration;
|
|
26
|
-
//# sourceMappingURL=add-explanation-craft-skill.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-explanation-craft-skill.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/add-explanation-craft-skill.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AA6C5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iCAAiC,EAAE,SA8B/C,CAAC"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { DEFAULT_VENDORED_SKILLS } from '../../config/defaults.js';
|
|
3
|
-
import { readConfig } from '../../config/load.js';
|
|
4
|
-
import { renderStoreConfig } from '../../config/render.js';
|
|
5
|
-
import { writeFileAtomic } from '../fs/atomic.js';
|
|
6
|
-
/**
|
|
7
|
-
* The shipped set as it stood before this change — a fixed historical literal,
|
|
8
|
-
* never derived from `DEFAULT_VENDORED_SKILLS`. Deriving it would make the
|
|
9
|
-
* "was this list ever customized?" test drift every time the shipped set grows
|
|
10
|
-
* again, silently re-adding to lists a later operator had curated.
|
|
11
|
-
*/
|
|
12
|
-
const PREVIOUS_SHIPPED_SET = ['frontend-design'];
|
|
13
|
-
const SCHEMA_VERSION = 7;
|
|
14
|
-
function configDelta(next) {
|
|
15
|
-
return {
|
|
16
|
-
path: 'contexture.yaml',
|
|
17
|
-
description: `set skills.vendored to [${next.join(', ')}] and schema_version to ${SCHEMA_VERSION}`,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function versionOnlyDelta() {
|
|
21
|
-
return {
|
|
22
|
-
path: 'contexture.yaml',
|
|
23
|
-
description: `set schema_version to ${SCHEMA_VERSION}, leaving this store's own skills.vendored list untouched`,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* The list to write, or undefined when this store's is not ours to rewrite.
|
|
28
|
-
*
|
|
29
|
-
* The heuristic 0004 and 0006 both used: a list still sitting exactly on the
|
|
30
|
-
* previous shipped default was never curated, so growing it matches what the
|
|
31
|
-
* operator already accepted. A list that was reordered, added to, or emptied to
|
|
32
|
-
* opt out is a decision, and re-adding to it would overwrite that decision —
|
|
33
|
-
* such a store gets the version bump alone.
|
|
34
|
-
*/
|
|
35
|
-
function nextVendoredList(current) {
|
|
36
|
-
const unchanged = current.length === PREVIOUS_SHIPPED_SET.length && current.every((name, i) => name === PREVIOUS_SHIPPED_SET[i]);
|
|
37
|
-
if (!unchanged)
|
|
38
|
-
return undefined;
|
|
39
|
-
const shipped = [...DEFAULT_VENDORED_SKILLS];
|
|
40
|
-
const added = shipped.filter((name) => !current.includes(name));
|
|
41
|
-
return added.length > 0 ? shipped : undefined;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* vendor-explanation-craft-skill: the shipped vendored set grew a second craft
|
|
45
|
-
* skill, and `init` writes the RESOLVED list into `contexture.yaml` while
|
|
46
|
-
* `reconcileStore` never rewrites configuration. So a change to the shipped
|
|
47
|
-
* default reaches new stores only; without this migration every store already
|
|
48
|
-
* on disk would keep a one-entry list and silently never receive the skill the
|
|
49
|
-
* publish skill now tells it to load.
|
|
50
|
-
*
|
|
51
|
-
* The uncomfortable part, stated rather than implied: `config/schema.ts` says
|
|
52
|
-
* the schema version bumps "only on a genuinely incompatible change, never on
|
|
53
|
-
* an additive one," and adding a skill is additive. This bumps it anyway, which
|
|
54
|
-
* means every existing store reports as needing `ctxr migrate` because a skill
|
|
55
|
-
* was added. That was the accepted price of guaranteed propagation — the
|
|
56
|
-
* alternatives were leaving the shipped default a lie for every store predating
|
|
57
|
-
* it, or an update-time nag that would never stop firing in a store that
|
|
58
|
-
* deliberately opted out. Do not read this as license to bump the version for
|
|
59
|
-
* the next additive change; weigh that one on its own.
|
|
60
|
-
*
|
|
61
|
-
* Pending-ness is the recorded schema version, never the list's contents — the
|
|
62
|
-
* rule 0002, 0004, 0005, and 0006 all follow, because the config schema fills
|
|
63
|
-
* `skills.vendored` from the shipped default when the key is absent, so an
|
|
64
|
-
* unmigrated store already reads as though it declared the new set.
|
|
65
|
-
*/
|
|
66
|
-
export const addExplanationCraftSkillMigration = {
|
|
67
|
-
id: '0007-add-explanation-craft-skill',
|
|
68
|
-
fromVersion: 6,
|
|
69
|
-
toVersion: SCHEMA_VERSION,
|
|
70
|
-
description: `Add the explanation craft skill to a store whose skills.vendored list still sits at the previous shipped default, and bump schema_version to ${SCHEMA_VERSION}.`,
|
|
71
|
-
async plan(store) {
|
|
72
|
-
if (store.config.schema_version >= SCHEMA_VERSION)
|
|
73
|
-
return [];
|
|
74
|
-
const next = nextVendoredList(store.config.skills.vendored);
|
|
75
|
-
return [next ? configDelta(next) : versionOnlyDelta()];
|
|
76
|
-
},
|
|
77
|
-
async apply(store) {
|
|
78
|
-
if (store.config.schema_version >= SCHEMA_VERSION)
|
|
79
|
-
return [];
|
|
80
|
-
// Re-read from disk rather than trusting the store snapshot: an interrupted
|
|
81
|
-
// run may have written the config already, and resumability means deciding
|
|
82
|
-
// from current state.
|
|
83
|
-
const currentConfig = await readConfig(store.root);
|
|
84
|
-
const next = nextVendoredList(currentConfig.skills.vendored);
|
|
85
|
-
const nextConfig = {
|
|
86
|
-
...currentConfig,
|
|
87
|
-
schema_version: SCHEMA_VERSION,
|
|
88
|
-
skills: { ...currentConfig.skills, vendored: next ?? currentConfig.skills.vendored },
|
|
89
|
-
};
|
|
90
|
-
await writeFileAtomic(path.join(store.root, 'contexture.yaml'), renderStoreConfig(nextConfig));
|
|
91
|
-
return [next ? configDelta(next) : versionOnlyDelta()];
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
//# sourceMappingURL=add-explanation-craft-skill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-explanation-craft-skill.js","sourceRoot":"","sources":["../../../src/core/migrations/add-explanation-craft-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* archive-destination-from-taxonomy: `ctxr init` wrote a fixed
|
|
4
|
-
* `DEFAULT_ARCHIVE_PATH` regardless of the taxonomy it had just resolved, so
|
|
5
|
-
* every PARA store was born with `archive/` while its own taxonomy declared
|
|
6
|
-
* `archives/` — a config key pointing at a directory the store does not have.
|
|
7
|
-
* Init now asks the profile; this migration does the same for stores already
|
|
8
|
-
* on disk.
|
|
9
|
-
*
|
|
10
|
-
* Two independent halves, and the second is conditional:
|
|
11
|
-
*
|
|
12
|
-
* 1. The key rename is unconditional — every schema-5 store gets
|
|
13
|
-
* `archive_destination`. `OrganizeSchema`'s fallback transform has already
|
|
14
|
-
* resolved the old spelling by the time `readConfig` returns, so writing
|
|
15
|
-
* the parsed config back is what drops `archive_path` from disk.
|
|
16
|
-
* 2. The value only changes when the store never customized it AND its
|
|
17
|
-
* profile declares a destination of its own. An operator who deliberately
|
|
18
|
-
* set some other path keeps it; a Zettelkasten or Diataxis store, whose
|
|
19
|
-
* profile declares none, keeps `archive/` — for them this is a pure key
|
|
20
|
-
* rename. A custom taxonomy resolves to no shipped profile and is left
|
|
21
|
-
* alone for the same reason.
|
|
22
|
-
*
|
|
23
|
-
* Like 0004, the directory move is a plain filesystem rename (migrations see
|
|
24
|
-
* only `Store` — `root` + `config`, no `GitRunner`), and it is skipped when
|
|
25
|
-
* the old directory was never created. History survives either way: whatever
|
|
26
|
-
* commits this output stages a coherent delete-old/add-new diff, which
|
|
27
|
-
* `git log --follow`'s rename detection reads identically to a `git mv`.
|
|
28
|
-
*
|
|
29
|
-
* Pending-ness is `schema_version < 6`, not key presence — the rule 0002,
|
|
30
|
-
* 0004, and 0005 established, for the same reason: the fallback transform
|
|
31
|
-
* populates `archive_destination` on an unmigrated store too, so its presence
|
|
32
|
-
* cannot distinguish migrated from not.
|
|
33
|
-
*/
|
|
34
|
-
export declare const archiveDestinationFromTaxonomyMigration: Migration;
|
|
35
|
-
//# sourceMappingURL=archive-destination-from-taxonomy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive-destination-from-taxonomy.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/archive-destination-from-taxonomy.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAc5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,uCAAuC,EAAE,SA4CrD,CAAC"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { rename } from 'node:fs/promises';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { readConfig } from '../../config/load.js';
|
|
5
|
-
import { DEFAULT_ARCHIVE_DESTINATION } from '../../config/defaults.js';
|
|
6
|
-
import { renderStoreConfig } from '../../config/render.js';
|
|
7
|
-
import { profileById } from '../../taxonomy/profiles.js';
|
|
8
|
-
import { writeFileAtomic } from '../fs/atomic.js';
|
|
9
|
-
const CONFIG_DELTA = {
|
|
10
|
-
path: 'contexture.yaml',
|
|
11
|
-
description: 'rename organize.archive_path to organize.archive_destination and set schema_version to 6',
|
|
12
|
-
};
|
|
13
|
-
function destinationDelta(from, to) {
|
|
14
|
-
return {
|
|
15
|
-
path: to,
|
|
16
|
-
description: `adopt the taxonomy's own archive destination, moving the default-valued archive directory from ${from} to ${to}`,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* archive-destination-from-taxonomy: `ctxr init` wrote a fixed
|
|
21
|
-
* `DEFAULT_ARCHIVE_PATH` regardless of the taxonomy it had just resolved, so
|
|
22
|
-
* every PARA store was born with `archive/` while its own taxonomy declared
|
|
23
|
-
* `archives/` — a config key pointing at a directory the store does not have.
|
|
24
|
-
* Init now asks the profile; this migration does the same for stores already
|
|
25
|
-
* on disk.
|
|
26
|
-
*
|
|
27
|
-
* Two independent halves, and the second is conditional:
|
|
28
|
-
*
|
|
29
|
-
* 1. The key rename is unconditional — every schema-5 store gets
|
|
30
|
-
* `archive_destination`. `OrganizeSchema`'s fallback transform has already
|
|
31
|
-
* resolved the old spelling by the time `readConfig` returns, so writing
|
|
32
|
-
* the parsed config back is what drops `archive_path` from disk.
|
|
33
|
-
* 2. The value only changes when the store never customized it AND its
|
|
34
|
-
* profile declares a destination of its own. An operator who deliberately
|
|
35
|
-
* set some other path keeps it; a Zettelkasten or Diataxis store, whose
|
|
36
|
-
* profile declares none, keeps `archive/` — for them this is a pure key
|
|
37
|
-
* rename. A custom taxonomy resolves to no shipped profile and is left
|
|
38
|
-
* alone for the same reason.
|
|
39
|
-
*
|
|
40
|
-
* Like 0004, the directory move is a plain filesystem rename (migrations see
|
|
41
|
-
* only `Store` — `root` + `config`, no `GitRunner`), and it is skipped when
|
|
42
|
-
* the old directory was never created. History survives either way: whatever
|
|
43
|
-
* commits this output stages a coherent delete-old/add-new diff, which
|
|
44
|
-
* `git log --follow`'s rename detection reads identically to a `git mv`.
|
|
45
|
-
*
|
|
46
|
-
* Pending-ness is `schema_version < 6`, not key presence — the rule 0002,
|
|
47
|
-
* 0004, and 0005 established, for the same reason: the fallback transform
|
|
48
|
-
* populates `archive_destination` on an unmigrated store too, so its presence
|
|
49
|
-
* cannot distinguish migrated from not.
|
|
50
|
-
*/
|
|
51
|
-
export const archiveDestinationFromTaxonomyMigration = {
|
|
52
|
-
id: '0006-archive-destination-from-taxonomy',
|
|
53
|
-
fromVersion: 5,
|
|
54
|
-
toVersion: 6,
|
|
55
|
-
description: "Rename the organize.archive_path config key to organize.archive_destination, adopt the taxonomy profile's own archive destination when the value still sat at the shipped default, and bump schema_version to 6.",
|
|
56
|
-
async plan(store) {
|
|
57
|
-
if (store.config.schema_version >= 6)
|
|
58
|
-
return [];
|
|
59
|
-
const deltas = [CONFIG_DELTA];
|
|
60
|
-
const target = taxonomyDestination(store.config.taxonomy.profile, store.config.organize.archive_destination);
|
|
61
|
-
if (target)
|
|
62
|
-
deltas.push(destinationDelta(DEFAULT_ARCHIVE_DESTINATION, target));
|
|
63
|
-
return deltas;
|
|
64
|
-
},
|
|
65
|
-
async apply(store) {
|
|
66
|
-
if (store.config.schema_version >= 6)
|
|
67
|
-
return [];
|
|
68
|
-
const configPath = path.join(store.root, 'contexture.yaml');
|
|
69
|
-
const currentConfig = await readConfig(store.root);
|
|
70
|
-
const appliedDeltas = [CONFIG_DELTA];
|
|
71
|
-
let destination = currentConfig.organize.archive_destination;
|
|
72
|
-
const target = taxonomyDestination(currentConfig.taxonomy.profile, destination);
|
|
73
|
-
if (target) {
|
|
74
|
-
const oldDir = path.join(store.root, DEFAULT_ARCHIVE_DESTINATION);
|
|
75
|
-
const newDir = path.join(store.root, target);
|
|
76
|
-
// Absent whenever nothing was ever archived — only the config changes.
|
|
77
|
-
if (existsSync(oldDir) && !existsSync(newDir)) {
|
|
78
|
-
await rename(oldDir, newDir);
|
|
79
|
-
}
|
|
80
|
-
destination = target;
|
|
81
|
-
appliedDeltas.push(destinationDelta(DEFAULT_ARCHIVE_DESTINATION, target));
|
|
82
|
-
}
|
|
83
|
-
const nextConfig = {
|
|
84
|
-
...currentConfig,
|
|
85
|
-
schema_version: 6,
|
|
86
|
-
organize: { ...currentConfig.organize, archive_destination: destination },
|
|
87
|
-
};
|
|
88
|
-
await writeFileAtomic(configPath, renderStoreConfig(nextConfig));
|
|
89
|
-
return appliedDeltas;
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* The profile's own destination, but only when adopting it is safe: the
|
|
94
|
-
* store must still be sitting on the shipped default (otherwise the value is
|
|
95
|
-
* the operator's, not ours to rewrite), the profile must be a shipped one
|
|
96
|
-
* that declares a destination, and it must actually differ from what's
|
|
97
|
-
* already configured.
|
|
98
|
-
*/
|
|
99
|
-
function taxonomyDestination(profileId, current) {
|
|
100
|
-
if (current !== DEFAULT_ARCHIVE_DESTINATION)
|
|
101
|
-
return undefined;
|
|
102
|
-
if (profileId === null)
|
|
103
|
-
return undefined;
|
|
104
|
-
const declared = profileById(profileId)?.archiveDestination;
|
|
105
|
-
if (declared === undefined || declared === current)
|
|
106
|
-
return undefined;
|
|
107
|
-
return declared;
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=archive-destination-from-taxonomy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive-destination-from-taxonomy.js","sourceRoot":"","sources":["../../../src/core/migrations/archive-destination-from-taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,YAAY,GAAmB;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0FAA0F;CACxG,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAAY,EAAE,EAAU;IAChD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,kGAAkG,IAAI,OAAO,EAAE,EAAE;KAC/H,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAc;IAChE,EAAE,EAAE,wCAAwC;IAC5C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EACT,kNAAkN;IAEpN,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChD,MAAM,MAAM,GAAqB,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC7G,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,aAAa,GAAqB,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,uEAAuE;YACvE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,WAAW,GAAG,MAAM,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,GAAG,aAAa;YAChB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE;SAC1E,CAAC;QACF,MAAM,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,SAAwB,EAAE,OAAe;IACpE,IAAI,OAAO,KAAK,2BAA2B;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* config-defaults-as-the-convention: every store written before this change
|
|
4
|
-
* restates the whole convention verbatim, because `init` wrote every resolved
|
|
5
|
-
* value. That is what made a changed shipped default reach existing stores
|
|
6
|
-
* only through a migration rewriting files whose operators never chose those
|
|
7
|
-
* values.
|
|
8
|
-
*
|
|
9
|
-
* This removes the restatements. It cannot tell an echo `init` wrote from a
|
|
10
|
-
* value an operator typed that happens to equal the default — and treats them
|
|
11
|
-
* the same deliberately: agreeing with the convention is not a decision that
|
|
12
|
-
* needs recording, and after pruning the store resolves the identical value.
|
|
13
|
-
* An operator who wants to pin a value against a future default change
|
|
14
|
-
* re-declares it, which is now a meaningful act rather than one line among
|
|
15
|
-
* forty identical ones.
|
|
16
|
-
*
|
|
17
|
-
* The pruning itself lives in `renderStoreConfig`, not here — every writer
|
|
18
|
-
* goes through it, so this migration only has to trigger a write.
|
|
19
|
-
*/
|
|
20
|
-
export declare const configDefaultsAsTheConventionMigration: Migration;
|
|
21
|
-
//# sourceMappingURL=config-defaults-as-the-convention.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-defaults-as-the-convention.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/config-defaults-as-the-convention.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAI5D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sCAAsC,EAAE,SA+BpD,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { readConfig } from '../../config/load.js';
|
|
3
|
-
import { redundantKeyPaths, renderStoreConfig } from '../../config/render.js';
|
|
4
|
-
import { writeFileAtomic } from '../fs/atomic.js';
|
|
5
|
-
const CONFIG_PATH = 'contexture.yaml';
|
|
6
|
-
/**
|
|
7
|
-
* config-defaults-as-the-convention: every store written before this change
|
|
8
|
-
* restates the whole convention verbatim, because `init` wrote every resolved
|
|
9
|
-
* value. That is what made a changed shipped default reach existing stores
|
|
10
|
-
* only through a migration rewriting files whose operators never chose those
|
|
11
|
-
* values.
|
|
12
|
-
*
|
|
13
|
-
* This removes the restatements. It cannot tell an echo `init` wrote from a
|
|
14
|
-
* value an operator typed that happens to equal the default — and treats them
|
|
15
|
-
* the same deliberately: agreeing with the convention is not a decision that
|
|
16
|
-
* needs recording, and after pruning the store resolves the identical value.
|
|
17
|
-
* An operator who wants to pin a value against a future default change
|
|
18
|
-
* re-declares it, which is now a meaningful act rather than one line among
|
|
19
|
-
* forty identical ones.
|
|
20
|
-
*
|
|
21
|
-
* The pruning itself lives in `renderStoreConfig`, not here — every writer
|
|
22
|
-
* goes through it, so this migration only has to trigger a write.
|
|
23
|
-
*/
|
|
24
|
-
export const configDefaultsAsTheConventionMigration = {
|
|
25
|
-
id: '0010-config-defaults-as-the-convention',
|
|
26
|
-
fromVersion: 9,
|
|
27
|
-
toVersion: 10,
|
|
28
|
-
description: 'Remove configuration keys whose value already equals contexture\'s shipped default, so the file records only what the store chose, and bump schema_version to 10.',
|
|
29
|
-
async plan(store) {
|
|
30
|
-
if (store.config.schema_version >= 10)
|
|
31
|
-
return [];
|
|
32
|
-
const deltas = [
|
|
33
|
-
{ path: CONFIG_PATH, description: 'set schema_version to 10' },
|
|
34
|
-
];
|
|
35
|
-
for (const key of redundantKeyPaths(store.config)) {
|
|
36
|
-
deltas.push({
|
|
37
|
-
path: CONFIG_PATH,
|
|
38
|
-
description: `remove ${key}, which already holds contexture's shipped default`,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return deltas;
|
|
42
|
-
},
|
|
43
|
-
async apply(store) {
|
|
44
|
-
if (store.config.schema_version >= 10)
|
|
45
|
-
return [];
|
|
46
|
-
const currentConfig = await readConfig(store.root);
|
|
47
|
-
const appliedDeltas = await this.plan({ ...store, config: currentConfig });
|
|
48
|
-
// renderStoreConfig drops every redundant key on the way out, and its
|
|
49
|
-
// round-trip re-parse proves the pruned file still resolves to this.
|
|
50
|
-
await writeFileAtomic(path.join(store.root, CONFIG_PATH), renderStoreConfig({ ...currentConfig, schema_version: 10 }));
|
|
51
|
-
return appliedDeltas;
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=config-defaults-as-the-convention.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-defaults-as-the-convention.js","sourceRoot":"","sources":["../../../src/core/migrations/config-defaults-as-the-convention.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAc;IAC/D,EAAE,EAAE,wCAAwC;IAC5C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,EAAE;IACb,WAAW,EACT,mKAAmK;IAErK,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QACjD,MAAM,MAAM,GAAqB;YAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE;SAC/D,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,UAAU,GAAG,oDAAoD;aAC/E,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3E,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvH,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* retire-the-access-axes: the visibility and disclosure axes are removed, and
|
|
4
|
-
* with them `fields.visibility` (the configurable name of the visibility
|
|
5
|
-
* frontmatter key).
|
|
6
|
-
*
|
|
7
|
-
* Unlike 0005, this migration cannot lean on `readConfig` having already
|
|
8
|
-
* stripped the legacy shape: all three keys are TOP-LEVEL, and
|
|
9
|
-
* `StoreConfigSchema` is `.passthrough()`, so they survive parsing intact.
|
|
10
|
-
* Deleting them explicitly is the whole job.
|
|
11
|
-
*
|
|
12
|
-
* No note is rewritten (design.md D3). A note's retired visibility-field key
|
|
13
|
-
* stays in its frontmatter, unread — `parseNote` reads frontmatter into a
|
|
14
|
-
* `Record<string, unknown>` and nothing consumes that key any more, so it
|
|
15
|
-
* costs nothing at runtime and keeps the removal cheap to reverse. Stripping
|
|
16
|
-
* it would make re-entry a hand re-labelling pass over every note.
|
|
17
|
-
*
|
|
18
|
-
* Pending-ness is `schema_version < 8`, not key presence — the rule every
|
|
19
|
-
* migration from 0002 onward established. A store could have had its config
|
|
20
|
-
* hand-edited to drop the keys while still sitting at an older version, and
|
|
21
|
-
* it still needs the version bump.
|
|
22
|
-
*/
|
|
23
|
-
export declare const dropAccessAxesMigration: Migration;
|
|
24
|
-
//# sourceMappingURL=drop-access-axes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drop-access-axes.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/drop-access-axes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAU5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAuBrC,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { readConfig } from '../../config/load.js';
|
|
3
|
-
import { renderStoreConfig } from '../../config/render.js';
|
|
4
|
-
import { writeFileAtomic } from '../fs/atomic.js';
|
|
5
|
-
const CONFIG_DELTA = {
|
|
6
|
-
path: 'contexture.yaml',
|
|
7
|
-
description: 'remove the visibility:, disclosure:, and fields: blocks, and set schema_version to 8',
|
|
8
|
-
};
|
|
9
|
-
/** The retired top-level keys, named here as fixed historical literals — no constant for them survives. */
|
|
10
|
-
const RETIRED_KEYS = ['visibility', 'disclosure', 'fields'];
|
|
11
|
-
/**
|
|
12
|
-
* retire-the-access-axes: the visibility and disclosure axes are removed, and
|
|
13
|
-
* with them `fields.visibility` (the configurable name of the visibility
|
|
14
|
-
* frontmatter key).
|
|
15
|
-
*
|
|
16
|
-
* Unlike 0005, this migration cannot lean on `readConfig` having already
|
|
17
|
-
* stripped the legacy shape: all three keys are TOP-LEVEL, and
|
|
18
|
-
* `StoreConfigSchema` is `.passthrough()`, so they survive parsing intact.
|
|
19
|
-
* Deleting them explicitly is the whole job.
|
|
20
|
-
*
|
|
21
|
-
* No note is rewritten (design.md D3). A note's retired visibility-field key
|
|
22
|
-
* stays in its frontmatter, unread — `parseNote` reads frontmatter into a
|
|
23
|
-
* `Record<string, unknown>` and nothing consumes that key any more, so it
|
|
24
|
-
* costs nothing at runtime and keeps the removal cheap to reverse. Stripping
|
|
25
|
-
* it would make re-entry a hand re-labelling pass over every note.
|
|
26
|
-
*
|
|
27
|
-
* Pending-ness is `schema_version < 8`, not key presence — the rule every
|
|
28
|
-
* migration from 0002 onward established. A store could have had its config
|
|
29
|
-
* hand-edited to drop the keys while still sitting at an older version, and
|
|
30
|
-
* it still needs the version bump.
|
|
31
|
-
*/
|
|
32
|
-
export const dropAccessAxesMigration = {
|
|
33
|
-
id: '0008-drop-access-axes',
|
|
34
|
-
fromVersion: 7,
|
|
35
|
-
toVersion: 8,
|
|
36
|
-
description: 'Remove the visibility:, disclosure:, and fields: blocks from contexture.yaml, and bump schema_version to 8. No note is modified.',
|
|
37
|
-
async plan(store) {
|
|
38
|
-
if (store.config.schema_version >= 8)
|
|
39
|
-
return [];
|
|
40
|
-
return [CONFIG_DELTA];
|
|
41
|
-
},
|
|
42
|
-
async apply(store) {
|
|
43
|
-
if (store.config.schema_version >= 8)
|
|
44
|
-
return [];
|
|
45
|
-
const configPath = path.join(store.root, 'contexture.yaml');
|
|
46
|
-
const currentConfig = await readConfig(store.root);
|
|
47
|
-
const nextConfig = { ...currentConfig, schema_version: 8 };
|
|
48
|
-
for (const key of RETIRED_KEYS)
|
|
49
|
-
delete nextConfig[key];
|
|
50
|
-
await writeFileAtomic(configPath, renderStoreConfig(nextConfig));
|
|
51
|
-
return [CONFIG_DELTA];
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=drop-access-axes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drop-access-axes.js","sourceRoot":"","sources":["../../../src/core/migrations/drop-access-axes.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,YAAY,GAAmB;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,sFAAsF;CACpG,CAAC;AAEF,2GAA2G;AAC3G,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAc;IAChD,EAAE,EAAE,uBAAuB;IAC3B,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EACT,kIAAkI;IAEpI,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChD,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAA4B,EAAE,GAAG,aAAa,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QACpF,KAAK,MAAM,GAAG,IAAI,YAAY;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAqD,CAAC,CAAC,CAAC;QAE5G,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;CACF,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* session-keeps-only-what-git-cannot-do (design D2): `ctxr session
|
|
4
|
-
* submit`/`land`/`abandon`/`reap` and the `forge` adapter kind are removed;
|
|
5
|
-
* `session.workspaces_external` goes with them, its skill-rendering half
|
|
6
|
-
* never having worked as shipped. Both legacy shapes are ALREADY stripped
|
|
7
|
-
* by the time `readConfig` returns — the adapters field's lenient schema
|
|
8
|
-
* transform drops a `kind: forge` entry (session-keeps-only-what-git-cannot-do
|
|
9
|
-
* D2), and `SessionSchema`'s default strip-unknown-keys behavior drops
|
|
10
|
-
* `workspaces_external` — so this migration's only real work is bumping
|
|
11
|
-
* `schema_version` and writing the already-clean config back to disk.
|
|
12
|
-
*
|
|
13
|
-
* Pending-ness is `schema_version < 5`, not key presence — the same rule
|
|
14
|
-
* 0002 and 0004 established, for the same reason: an unmigrated store
|
|
15
|
-
* already parses as though the legacy shape were gone, so its presence in
|
|
16
|
-
* the parsed config can't distinguish migrated from not.
|
|
17
|
-
*/
|
|
18
|
-
export declare const dropForgeAndWorkspacesExternalMigration: Migration;
|
|
19
|
-
//# sourceMappingURL=drop-forge-and-workspaces-external.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drop-forge-and-workspaces-external.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/drop-forge-and-workspaces-external.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAO5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uCAAuC,EAAE,SA0BrD,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { readConfig } from '../../config/load.js';
|
|
3
|
-
import { renderStoreConfig } from '../../config/render.js';
|
|
4
|
-
import { writeFileAtomic } from '../fs/atomic.js';
|
|
5
|
-
const CONFIG_DELTA = {
|
|
6
|
-
path: 'contexture.yaml',
|
|
7
|
-
description: 'strip any legacy kind: forge adapter declarations and the session.workspaces_external key, and set schema_version to 5',
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* session-keeps-only-what-git-cannot-do (design D2): `ctxr session
|
|
11
|
-
* submit`/`land`/`abandon`/`reap` and the `forge` adapter kind are removed;
|
|
12
|
-
* `session.workspaces_external` goes with them, its skill-rendering half
|
|
13
|
-
* never having worked as shipped. Both legacy shapes are ALREADY stripped
|
|
14
|
-
* by the time `readConfig` returns — the adapters field's lenient schema
|
|
15
|
-
* transform drops a `kind: forge` entry (session-keeps-only-what-git-cannot-do
|
|
16
|
-
* D2), and `SessionSchema`'s default strip-unknown-keys behavior drops
|
|
17
|
-
* `workspaces_external` — so this migration's only real work is bumping
|
|
18
|
-
* `schema_version` and writing the already-clean config back to disk.
|
|
19
|
-
*
|
|
20
|
-
* Pending-ness is `schema_version < 5`, not key presence — the same rule
|
|
21
|
-
* 0002 and 0004 established, for the same reason: an unmigrated store
|
|
22
|
-
* already parses as though the legacy shape were gone, so its presence in
|
|
23
|
-
* the parsed config can't distinguish migrated from not.
|
|
24
|
-
*/
|
|
25
|
-
export const dropForgeAndWorkspacesExternalMigration = {
|
|
26
|
-
id: '0005-drop-forge-and-workspaces-external',
|
|
27
|
-
fromVersion: 4,
|
|
28
|
-
toVersion: 5,
|
|
29
|
-
description: 'Strip any legacy kind: forge adapter declarations and the session.workspaces_external key from contexture.yaml, and bump schema_version to 5.',
|
|
30
|
-
async plan(store) {
|
|
31
|
-
if (store.config.schema_version >= 5)
|
|
32
|
-
return [];
|
|
33
|
-
return [CONFIG_DELTA];
|
|
34
|
-
},
|
|
35
|
-
async apply(store) {
|
|
36
|
-
if (store.config.schema_version >= 5)
|
|
37
|
-
return [];
|
|
38
|
-
const configPath = path.join(store.root, 'contexture.yaml');
|
|
39
|
-
// readConfig() already applies the lenient schema — a raw `kind: forge`
|
|
40
|
-
// entry and a raw `session.workspaces_external` key are both gone from
|
|
41
|
-
// this object before this line runs; writing it back is what removes
|
|
42
|
-
// them from disk.
|
|
43
|
-
const currentConfig = await readConfig(store.root);
|
|
44
|
-
const nextConfig = { ...currentConfig, schema_version: 5 };
|
|
45
|
-
await writeFileAtomic(configPath, renderStoreConfig(nextConfig));
|
|
46
|
-
return [CONFIG_DELTA];
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=drop-forge-and-workspaces-external.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drop-forge-and-workspaces-external.js","sourceRoot":"","sources":["../../../src/core/migrations/drop-forge-and-workspaces-external.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,YAAY,GAAmB;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,wHAAwH;CACtI,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAc;IAChE,EAAE,EAAE,yCAAyC;IAC7C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EACT,+IAA+I;IAEjJ,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChD,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,wEAAwE;QACxE,uEAAuE;QACvE,qEAAqE;QACrE,kBAAkB;QAClB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,GAAG,aAAa,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;CACF,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Migration } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Every migration contexture ships, in ascending fromVersion order. Later
|
|
4
|
-
* phases append here, nothing else.
|
|
5
|
-
*
|
|
6
|
-
* The chain is deliberately NOT contiguous: the 1 -> 2 visibility-field
|
|
7
|
-
* rename was retired with the field itself (retire-the-access-axes D7), so a
|
|
8
|
-
* schema-1 store's first pending migration is the 2 -> 3 one, which guards on
|
|
9
|
-
* `schema_version < 3` and carries it straight there. `pendingMigrations`
|
|
10
|
-
* selects on `fromVersion >= current`, never on adjacency, so a gap costs
|
|
11
|
-
* nothing.
|
|
12
|
-
*/
|
|
13
|
-
export declare const MIGRATIONS: readonly Migration[];
|
|
14
|
-
/** Every migration a store currently at `fromVersion` still needs to reach the CLI's supported version, in order. */
|
|
15
|
-
export declare function pendingMigrations(fromVersion: number): Migration[];
|
|
16
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAS1C,CAAC;AAEF,qHAAqH;AACrH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAElE"}
|