@davidorex/pi-context 0.30.0 → 0.32.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/CHANGELOG.md +127 -0
- package/README.md +27 -11
- package/dist/block-api.d.ts +13 -0
- package/dist/block-api.d.ts.map +1 -1
- package/dist/block-api.js +28 -3
- package/dist/block-api.js.map +1 -1
- package/dist/content-hash.d.ts +13 -0
- package/dist/content-hash.d.ts.map +1 -1
- package/dist/content-hash.js +16 -0
- package/dist/content-hash.js.map +1 -1
- package/dist/context-dir.d.ts +12 -0
- package/dist/context-dir.d.ts.map +1 -1
- package/dist/context-dir.js +14 -0
- package/dist/context-dir.js.map +1 -1
- package/dist/context-sdk.d.ts +71 -33
- package/dist/context-sdk.d.ts.map +1 -1
- package/dist/context-sdk.js +547 -149
- package/dist/context-sdk.js.map +1 -1
- package/dist/context.d.ts +213 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +119 -5
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +595 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2225 -55
- package/dist/index.js.map +1 -1
- package/dist/lens-view.d.ts +0 -5
- package/dist/lens-view.d.ts.map +1 -1
- package/dist/lens-view.js +43 -1
- package/dist/lens-view.js.map +1 -1
- package/dist/migration-registry-loader.d.ts +36 -12
- package/dist/migration-registry-loader.d.ts.map +1 -1
- package/dist/migration-registry-loader.js +79 -17
- package/dist/migration-registry-loader.js.map +1 -1
- package/dist/migrations-store.d.ts +45 -18
- package/dist/migrations-store.d.ts.map +1 -1
- package/dist/migrations-store.js +56 -22
- package/dist/migrations-store.js.map +1 -1
- package/dist/ops-registry.d.ts +16 -0
- package/dist/ops-registry.d.ts.map +1 -1
- package/dist/ops-registry.js +352 -117
- package/dist/ops-registry.js.map +1 -1
- package/dist/pending-blocked-store.d.ts +83 -0
- package/dist/pending-blocked-store.d.ts.map +1 -0
- package/dist/pending-blocked-store.js +93 -0
- package/dist/pending-blocked-store.js.map +1 -0
- package/dist/promote-item.d.ts.map +1 -1
- package/dist/promote-item.js +41 -12
- package/dist/promote-item.js.map +1 -1
- package/dist/roadmap-plan.d.ts +121 -99
- package/dist/roadmap-plan.d.ts.map +1 -1
- package/dist/roadmap-plan.js +281 -345
- package/dist/roadmap-plan.js.map +1 -1
- package/dist/schema-merge.d.ts +26 -0
- package/dist/schema-merge.d.ts.map +1 -0
- package/dist/schema-merge.js +176 -0
- package/dist/schema-merge.js.map +1 -0
- package/dist/status-vocab.d.ts +12 -2
- package/dist/status-vocab.d.ts.map +1 -1
- package/dist/status-vocab.js +14 -1
- package/dist/status-vocab.js.map +1 -1
- package/package.json +2 -1
- package/samples/blocks/milestone.json +3 -0
- package/samples/blocks/session-notes.json +1 -0
- package/samples/conception.json +358 -15
- package/samples/migrations.json +8 -0
- package/samples/schemas/context-contracts.schema.json +4 -0
- package/samples/schemas/conventions.schema.json +4 -0
- package/samples/schemas/decisions.schema.json +4 -0
- package/samples/schemas/features.schema.json +4 -0
- package/samples/schemas/framework-gaps.schema.json +5 -1
- package/samples/schemas/issues.schema.json +30 -2
- package/samples/schemas/layer-plans.schema.json +6 -2
- package/samples/schemas/milestone.schema.json +79 -0
- package/samples/schemas/phase.schema.json +4 -0
- package/samples/schemas/rationale.schema.json +4 -0
- package/samples/schemas/requirements.schema.json +4 -0
- package/samples/schemas/research.schema.json +5 -1
- package/samples/schemas/session-notes.schema.json +89 -0
- package/samples/schemas/spec-reviews.schema.json +4 -0
- package/samples/schemas/story.schema.json +8 -0
- package/samples/schemas/tasks.schema.json +4 -0
- package/samples/schemas/verification.schema.json +4 -0
- package/samples/schemas/work-orders.schema.json +6 -2
- package/schemas/config.schema.json +101 -3
- package/schemas/migrations.schema.json +25 -0
- package/schemas/pending-blocked.schema.json +190 -0
- package/skill-narrative.md +14 -10
- package/skills/pi-context/SKILL.md +127 -49
- package/skills/pi-context/references/bundled-resources.md +7 -2
|
@@ -32,7 +32,13 @@
|
|
|
32
32
|
* primitive constructors String(v) / Number(v) / Boolean(v); for
|
|
33
33
|
* 'array' coercion uses [].concat(v) so a non-array value becomes a
|
|
34
34
|
* single-element array (and an existing array passes through
|
|
35
|
-
* unchanged); for 'object' coercion uses Object(v).
|
|
35
|
+
* unchanged); for 'object' coercion uses Object(v). 'map_each'
|
|
36
|
+
* addresses an ARRAY at the path (absent path / non-array value
|
|
37
|
+
* no-op) and maps its elements: table mode replaces each string
|
|
38
|
+
* element via a lookup (unmatched strings become
|
|
39
|
+
* { relation_type: <element>, item_endpoint: fallback ?? 'parent' };
|
|
40
|
+
* non-string elements pass through); set-on-each mode assigns
|
|
41
|
+
* field=value on every object element (non-objects skipped).
|
|
36
42
|
*
|
|
37
43
|
* Identity migrations are the pass-through case the operator declares when
|
|
38
44
|
* the bumped schema is shape-compatible with the prior version; the closure
|
|
@@ -48,14 +54,15 @@ import { createRegistry } from "./schema-migrations.js";
|
|
|
48
54
|
* RESOLVED SUBSTRATE DIR (`path.resolve(substrateDir)`) — not by cwd. The cwd
|
|
49
55
|
* and dir forms converge on this single key: the cwd forms first resolve
|
|
50
56
|
* `cwd → substrateDir` via the bootstrap pointer, then read/invalidate the
|
|
51
|
-
* dir-keyed entry.
|
|
52
|
-
* `
|
|
53
|
-
*
|
|
54
|
-
* without restarting the
|
|
57
|
+
* dir-keyed entry. Invalidation fires inside the migrations-store write
|
|
58
|
+
* funnel `writeMigrationsFileForDir` (which every migrations.json write —
|
|
59
|
+
* both forms, all mutation helpers — flows through), so every write leaves
|
|
60
|
+
* the next consumer reading the new declarations without restarting the
|
|
61
|
+
* process.
|
|
55
62
|
*
|
|
56
63
|
* Keying on the resolved dir (rather than cwd) is load-bearing for coherence:
|
|
57
64
|
* the block writers read the registry via `getProjectMigrationRegistryForDir`
|
|
58
|
-
* (dir-keyed);
|
|
65
|
+
* (dir-keyed); the write funnel invalidates on the same resolved dir. If the
|
|
59
66
|
* read key (resolved dir) and the invalidate key (raw cwd) diverged — which
|
|
60
67
|
* they do whenever cwd ≠ substrateDir, e.g. `<root>` vs `<root>/.project` —
|
|
61
68
|
* the post-declaration read would serve a stale pre-declaration registry. The
|
|
@@ -173,6 +180,26 @@ function applyOp(data, op) {
|
|
|
173
180
|
read.parent[read.key] = next;
|
|
174
181
|
return data;
|
|
175
182
|
}
|
|
183
|
+
case "map_each": {
|
|
184
|
+
const read = walkPath(data, op.path, false);
|
|
185
|
+
if (read.parent === null || !(read.key in read.parent))
|
|
186
|
+
return data;
|
|
187
|
+
const arr = read.parent[read.key];
|
|
188
|
+
if (!Array.isArray(arr))
|
|
189
|
+
return data;
|
|
190
|
+
if (op.table) {
|
|
191
|
+
read.parent[read.key] = arr.map((el) => typeof el === "string"
|
|
192
|
+
? (op.table[el] ?? { relation_type: el, item_endpoint: op.fallback ?? "parent" })
|
|
193
|
+
: el);
|
|
194
|
+
}
|
|
195
|
+
else if (op.field !== undefined) {
|
|
196
|
+
for (const el of arr) {
|
|
197
|
+
if (el && typeof el === "object")
|
|
198
|
+
el[op.field] = op.value;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return data;
|
|
202
|
+
}
|
|
176
203
|
}
|
|
177
204
|
}
|
|
178
205
|
/**
|
|
@@ -235,6 +262,39 @@ export function buildRegistryFromSubstrateForDir(substrateDir) {
|
|
|
235
262
|
}
|
|
236
263
|
return reg;
|
|
237
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* The chain-merging sibling of `buildRegistryFromSubstrateForDir`: build a
|
|
267
|
+
* fresh MigrationRegistry seeded from the substrate's persisted decls PLUS an
|
|
268
|
+
* in-memory `chain` of catalog edges, deduped on (schemaName, fromVersion).
|
|
269
|
+
* Existing decls are seeded first so the substrate decl WINS a key collision
|
|
270
|
+
* with a chain edge — `createRegistry().register` throws on a duplicate
|
|
271
|
+
* (schemaName, fromVersion), so each key is registered at most once.
|
|
272
|
+
*
|
|
273
|
+
* Aims to centralize the registry-seeding shape that the read-only update /
|
|
274
|
+
* diagnostic paths (resync simulation, catalog validation, blocked
|
|
275
|
+
* resolution) each constructed inline. Touches neither the registry cache nor
|
|
276
|
+
* disk: those paths intentionally need a FRESH registry so they never warm the
|
|
277
|
+
* project's cached `getProjectMigrationRegistryForDir` entry from a read-only
|
|
278
|
+
* operation.
|
|
279
|
+
*/
|
|
280
|
+
export function buildFreshRegistryWithChain(substrateDir, chain) {
|
|
281
|
+
const reg = createRegistry();
|
|
282
|
+
const seeded = new Set();
|
|
283
|
+
const existing = loadMigrationsFileForDir(substrateDir);
|
|
284
|
+
for (const decl of [...(existing?.migrations ?? []), ...chain]) {
|
|
285
|
+
const key = `${decl.schemaName} ${decl.fromVersion}`;
|
|
286
|
+
if (seeded.has(key))
|
|
287
|
+
continue;
|
|
288
|
+
reg.register({
|
|
289
|
+
schemaName: decl.schemaName,
|
|
290
|
+
fromVersion: decl.fromVersion,
|
|
291
|
+
toVersion: decl.toVersion,
|
|
292
|
+
migrate: migrationFnFor(decl),
|
|
293
|
+
});
|
|
294
|
+
seeded.add(key);
|
|
295
|
+
}
|
|
296
|
+
return reg;
|
|
297
|
+
}
|
|
238
298
|
export function buildRegistryFromSubstrate(cwd) {
|
|
239
299
|
return buildRegistryFromSubstrateForDir(resolveContextDir(cwd));
|
|
240
300
|
}
|
|
@@ -260,8 +320,8 @@ export function getProjectMigrationRegistry(cwd) {
|
|
|
260
320
|
*
|
|
261
321
|
* The cwd form (`getProjectMigrationRegistry`) resolves `cwd → substrateDir`
|
|
262
322
|
* and delegates here, so when `substrateDir === resolveContextDir(cwd)` both
|
|
263
|
-
* forms hit the SAME entry. The migrations-store
|
|
264
|
-
*
|
|
323
|
+
* forms hit the SAME entry. The migrations-store write funnel
|
|
324
|
+
* (`writeMigrationsFileForDir`) invalidates on the same resolved-dir key and
|
|
265
325
|
* deletes the entry this builder populates — so a declare-then-read sequence
|
|
266
326
|
* (mutate migrations.json, then `writeBlockForDir` re-reads) rebuilds against
|
|
267
327
|
* the fresh declarations rather than serving a stale registry.
|
|
@@ -278,7 +338,10 @@ export function getProjectMigrationRegistryForDir(substrateDir) {
|
|
|
278
338
|
/**
|
|
279
339
|
* Drop the cached MigrationRegistry for an explicit substrate directory (if
|
|
280
340
|
* any). Deletes `path.resolve(substrateDir)` — the SAME key the read forms
|
|
281
|
-
* populate, so an invalidation here is observed by the next read.
|
|
341
|
+
* populate, so an invalidation here is observed by the next read. Called by
|
|
342
|
+
* the migrations-store write funnel `writeMigrationsFileForDir` after each
|
|
343
|
+
* successful migrations.json write (the single invalidation site for the
|
|
344
|
+
* whole mutation surface).
|
|
282
345
|
*
|
|
283
346
|
* No-op when no entry is cached — invalidation is cheap and write-after-no-
|
|
284
347
|
* cache is a normal pre-warming state.
|
|
@@ -287,18 +350,17 @@ export function invalidateMigrationRegistryForDir(substrateDir) {
|
|
|
287
350
|
registryCache.delete(path.resolve(substrateDir));
|
|
288
351
|
}
|
|
289
352
|
/**
|
|
290
|
-
* Drop the cached MigrationRegistry for `cwd` (if any)
|
|
291
|
-
*
|
|
292
|
-
*
|
|
353
|
+
* Drop the cached MigrationRegistry for `cwd` (if any) — the cwd convenience
|
|
354
|
+
* form for callers holding a project root rather than a resolved substrate
|
|
355
|
+
* dir. The canonical invalidation site is the migrations-store write funnel
|
|
356
|
+
* `writeMigrationsFileForDir`, which calls the ForDir form directly.
|
|
293
357
|
*
|
|
294
358
|
* Resolves `cwd → substrateDir` and delegates to the ForDir form so the
|
|
295
359
|
* deleted key MATCHES the resolved-substrate-dir key the read path uses (the
|
|
296
360
|
* Regression-B fix: pre-fix this deleted `path.resolve(cwd)`, a different key
|
|
297
|
-
* from the dir-keyed read entry, leaving the post-declaration read stale).
|
|
298
|
-
*
|
|
299
|
-
*
|
|
300
|
-
* safe; `tryResolveContextDir` guards the absent-pointer edge with a no-op
|
|
301
|
-
* rather than throwing during invalidation.
|
|
361
|
+
* from the dir-keyed read entry, leaving the post-declaration read stale).
|
|
362
|
+
* `tryResolveContextDir` guards the absent-pointer edge with a no-op rather
|
|
363
|
+
* than throwing during invalidation.
|
|
302
364
|
*/
|
|
303
365
|
export function invalidateMigrationRegistry(cwd) {
|
|
304
366
|
const substrateDir = tryResolveContextDir(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-registry-loader.js","sourceRoot":"","sources":["../src/migration-registry-loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"migration-registry-loader.js","sourceRoot":"","sources":["../src/migration-registry-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* - removeMigrationDecl requires the pair to be PRESENT; a missing target
|
|
22
22
|
* throws.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Every migrations.json write flows through `writeMigrationsFileForDir`,
|
|
25
|
+
* which invalidates the loader cache (migration-registry-loader.ts) so the
|
|
26
26
|
* next `getProjectMigrationRegistry(cwd)` consumer reads the fresh
|
|
27
27
|
* declarations without process restart. The store↔loader edge is mutually
|
|
28
28
|
* cyclic (loader reads from store; store writes invalidate loader cache);
|
|
@@ -57,6 +57,13 @@ export type TransformOp = {
|
|
|
57
57
|
op: "coerce";
|
|
58
58
|
path: string;
|
|
59
59
|
type: "string" | "number" | "boolean" | "array" | "object";
|
|
60
|
+
} | {
|
|
61
|
+
op: "map_each";
|
|
62
|
+
path: string;
|
|
63
|
+
table?: Record<string, Record<string, unknown>>;
|
|
64
|
+
fallback?: "parent" | "child";
|
|
65
|
+
field?: string;
|
|
66
|
+
value?: unknown;
|
|
60
67
|
};
|
|
61
68
|
export interface TransformSpec {
|
|
62
69
|
operations: TransformOp[];
|
|
@@ -91,8 +98,8 @@ export declare function loadMigrationsFile(cwd: string): MigrationsFile | null;
|
|
|
91
98
|
* block-api's writeTypedFile against the bundled migrations schema. `ctx` is
|
|
92
99
|
* accepted for call-site parity with the rest of the substrate write surface;
|
|
93
100
|
* the migrations schema declares no envelope author fields so stamping is a
|
|
94
|
-
* structural no-op today (the loader-cache invalidation
|
|
95
|
-
* is the side-effect that matters for read-after-write parity).
|
|
101
|
+
* structural no-op today (the loader-cache invalidation inside the ForDir
|
|
102
|
+
* funnel is the side-effect that matters for read-after-write parity).
|
|
96
103
|
*/
|
|
97
104
|
export declare function writeMigrationsFile(cwd: string, file: MigrationsFile, ctx?: DispatchContext): void;
|
|
98
105
|
/**
|
|
@@ -102,40 +109,60 @@ export declare function writeMigrationsFile(cwd: string, file: MigrationsFile, c
|
|
|
102
109
|
* dir directly (no `.pi-context.json` pointer resolution). The cwd form is a
|
|
103
110
|
* thin wrapper resolving the active dir; behaviour is byte-identical when called
|
|
104
111
|
* via cwd. Same attestation-parity no-op semantics as the cwd form (the
|
|
105
|
-
* migrations schema declares no envelope author fields).
|
|
106
|
-
*
|
|
107
|
-
*
|
|
112
|
+
* migrations schema declares no envelope author fields). Invalidates the loader
|
|
113
|
+
* cache for `substrateDir` after the write — this funnel is the single path
|
|
114
|
+
* every migrations.json write (both forms, all mutation helpers) flows through,
|
|
115
|
+
* so every write is cache-coherent: the next registry consumer rebuilds from
|
|
116
|
+
* the fresh declarations.
|
|
108
117
|
*/
|
|
109
118
|
export declare function writeMigrationsFileForDir(substrateDir: string, file: MigrationsFile, ctx?: DispatchContext): void;
|
|
110
119
|
/**
|
|
111
120
|
* Append a new MigrationDecl to the substrate. Op-correctness: the
|
|
112
121
|
* (schemaName, fromVersion) pair must be ABSENT on-disk; collision throws.
|
|
113
|
-
*
|
|
114
|
-
* next registry consumer reads the
|
|
122
|
+
* The write flows through the `writeMigrationsFileForDir` funnel, which
|
|
123
|
+
* invalidates the loader cache so the next registry consumer reads the
|
|
124
|
+
* fresh declaration.
|
|
115
125
|
*/
|
|
116
126
|
export declare function appendMigrationDecl(cwd: string, decl: MigrationDecl, ctx?: DispatchContext): void;
|
|
117
127
|
/**
|
|
118
128
|
* Dir-targeted twin of {@link appendMigrationDecl} (Cycle-1 `*ForDir` pattern).
|
|
119
129
|
* Append a new MigrationDecl to the substrate at `substrateDir`. Op-correctness:
|
|
120
130
|
* the (schemaName, fromVersion) pair must be ABSENT on-disk; collision throws.
|
|
121
|
-
*
|
|
122
|
-
* the
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* invalidateMigrationRegistryForDir on the same dir).
|
|
131
|
+
* The write flows through the `writeMigrationsFileForDir` funnel, which
|
|
132
|
+
* invalidates the loader cache for `substrateDir` so the next registry consumer
|
|
133
|
+
* reads the fresh declaration. The cwd form is a thin wrapper resolving the
|
|
134
|
+
* active dir; behaviour is byte-identical when called via cwd.
|
|
126
135
|
*/
|
|
127
136
|
export declare function appendMigrationDeclForDir(substrateDir: string, decl: MigrationDecl, ctx?: DispatchContext): void;
|
|
128
137
|
/**
|
|
129
138
|
* Replace an existing MigrationDecl identified by (schemaName, fromVersion).
|
|
130
139
|
* Op-correctness: target must be PRESENT; missing target throws. The whole
|
|
131
|
-
* decl is replaced (no per-field merge).
|
|
132
|
-
*
|
|
140
|
+
* decl is replaced (no per-field merge). The write flows through the
|
|
141
|
+
* `writeMigrationsFileForDir` funnel, which invalidates the loader cache.
|
|
133
142
|
*/
|
|
134
143
|
export declare function replaceMigrationDecl(cwd: string, decl: MigrationDecl, ctx?: DispatchContext): void;
|
|
135
144
|
/**
|
|
136
145
|
* Remove an existing MigrationDecl identified by (schemaName, fromVersion).
|
|
137
|
-
* Op-correctness: target must be PRESENT; missing target throws.
|
|
138
|
-
* the
|
|
146
|
+
* Op-correctness: target must be PRESENT; missing target throws. The write
|
|
147
|
+
* flows through the `writeMigrationsFileForDir` funnel, which invalidates the
|
|
148
|
+
* loader cache.
|
|
139
149
|
*/
|
|
140
150
|
export declare function removeMigrationDecl(cwd: string, schemaName: string, fromVersion: string, ctx?: DispatchContext): void;
|
|
151
|
+
/**
|
|
152
|
+
* Ceremony seeding site (init / accept-all / install): copy the packaged
|
|
153
|
+
* catalog's `config`-schema MigrationDecl entries into the substrate's
|
|
154
|
+
* migrations.json so a catalog-born (or re-entered legacy) substrate carries
|
|
155
|
+
* the config migration chain BEFORE any config read walks it. Idempotent —
|
|
156
|
+
* a decl is appended only when its (schemaName, fromVersion) pair is absent
|
|
157
|
+
* on-disk; an existing entry is never replaced. Returns the appended edges
|
|
158
|
+
* (empty when everything was already present or the packaged catalog ships
|
|
159
|
+
* no migrations file). No-op on a nonexistent substrate dir — the seed heals
|
|
160
|
+
* substrates, it never materializes them (ceremonies that need the dir create
|
|
161
|
+
* it themselves before seeding).
|
|
162
|
+
*/
|
|
163
|
+
export declare function seedCatalogConfigMigrationDecls(substrateDir: string, ctx?: DispatchContext): Array<{
|
|
164
|
+
schema: string;
|
|
165
|
+
from: string;
|
|
166
|
+
to: string;
|
|
167
|
+
}>;
|
|
141
168
|
//# sourceMappingURL=migrations-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-store.d.ts","sourceRoot":"","sources":["../src/migrations-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAc7D;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACpB;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations-store.d.ts","sourceRoot":"","sources":["../src/migrations-store.ts"],"names":[],"mappings":"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"}
|
package/dist/migrations-store.js
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* - removeMigrationDecl requires the pair to be PRESENT; a missing target
|
|
22
22
|
* throws.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Every migrations.json write flows through `writeMigrationsFileForDir`,
|
|
25
|
+
* which invalidates the loader cache (migration-registry-loader.ts) so the
|
|
26
26
|
* next `getProjectMigrationRegistry(cwd)` consumer reads the fresh
|
|
27
27
|
* declarations without process restart. The store↔loader edge is mutually
|
|
28
28
|
* cyclic (loader reads from store; store writes invalidate loader cache);
|
|
@@ -40,7 +40,7 @@ import path from "node:path";
|
|
|
40
40
|
import { fileURLToPath } from "node:url";
|
|
41
41
|
import { writeTypedFile } from "./block-api.js";
|
|
42
42
|
import { migrationsPath, migrationsPathForDir, resolveContextDir } from "./context-dir.js";
|
|
43
|
-
import {
|
|
43
|
+
import { invalidateMigrationRegistryForDir } from "./migration-registry-loader.js";
|
|
44
44
|
import { validateFromFile } from "./schema-validator.js";
|
|
45
45
|
/**
|
|
46
46
|
* Resolve the bundled migrations schema file. Mirrors the private
|
|
@@ -90,8 +90,8 @@ export function loadMigrationsFile(cwd) {
|
|
|
90
90
|
* block-api's writeTypedFile against the bundled migrations schema. `ctx` is
|
|
91
91
|
* accepted for call-site parity with the rest of the substrate write surface;
|
|
92
92
|
* the migrations schema declares no envelope author fields so stamping is a
|
|
93
|
-
* structural no-op today (the loader-cache invalidation
|
|
94
|
-
* is the side-effect that matters for read-after-write parity).
|
|
93
|
+
* structural no-op today (the loader-cache invalidation inside the ForDir
|
|
94
|
+
* funnel is the side-effect that matters for read-after-write parity).
|
|
95
95
|
*/
|
|
96
96
|
export function writeMigrationsFile(cwd, file, ctx) {
|
|
97
97
|
writeMigrationsFileForDir(resolveContextDir(cwd), file, ctx);
|
|
@@ -103,12 +103,15 @@ export function writeMigrationsFile(cwd, file, ctx) {
|
|
|
103
103
|
* dir directly (no `.pi-context.json` pointer resolution). The cwd form is a
|
|
104
104
|
* thin wrapper resolving the active dir; behaviour is byte-identical when called
|
|
105
105
|
* via cwd. Same attestation-parity no-op semantics as the cwd form (the
|
|
106
|
-
* migrations schema declares no envelope author fields).
|
|
107
|
-
*
|
|
108
|
-
*
|
|
106
|
+
* migrations schema declares no envelope author fields). Invalidates the loader
|
|
107
|
+
* cache for `substrateDir` after the write — this funnel is the single path
|
|
108
|
+
* every migrations.json write (both forms, all mutation helpers) flows through,
|
|
109
|
+
* so every write is cache-coherent: the next registry consumer rebuilds from
|
|
110
|
+
* the fresh declarations.
|
|
109
111
|
*/
|
|
110
112
|
export function writeMigrationsFileForDir(substrateDir, file, ctx) {
|
|
111
113
|
writeTypedFile(migrationsPathForDir(substrateDir), bundledMigrationsSchemaPath(), file, ctx, "migrations.json");
|
|
114
|
+
invalidateMigrationRegistryForDir(substrateDir);
|
|
112
115
|
}
|
|
113
116
|
/**
|
|
114
117
|
* Compose an initial empty migrations file shape — used by the append helper
|
|
@@ -137,8 +140,9 @@ function findMigrationIndex(file, schemaName, fromVersion) {
|
|
|
137
140
|
/**
|
|
138
141
|
* Append a new MigrationDecl to the substrate. Op-correctness: the
|
|
139
142
|
* (schemaName, fromVersion) pair must be ABSENT on-disk; collision throws.
|
|
140
|
-
*
|
|
141
|
-
* next registry consumer reads the
|
|
143
|
+
* The write flows through the `writeMigrationsFileForDir` funnel, which
|
|
144
|
+
* invalidates the loader cache so the next registry consumer reads the
|
|
145
|
+
* fresh declaration.
|
|
142
146
|
*/
|
|
143
147
|
export function appendMigrationDecl(cwd, decl, ctx) {
|
|
144
148
|
appendMigrationDeclForDir(resolveContextDir(cwd), decl, ctx);
|
|
@@ -147,11 +151,10 @@ export function appendMigrationDecl(cwd, decl, ctx) {
|
|
|
147
151
|
* Dir-targeted twin of {@link appendMigrationDecl} (Cycle-1 `*ForDir` pattern).
|
|
148
152
|
* Append a new MigrationDecl to the substrate at `substrateDir`. Op-correctness:
|
|
149
153
|
* the (schemaName, fromVersion) pair must be ABSENT on-disk; collision throws.
|
|
150
|
-
*
|
|
151
|
-
* the
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* invalidateMigrationRegistryForDir on the same dir).
|
|
154
|
+
* The write flows through the `writeMigrationsFileForDir` funnel, which
|
|
155
|
+
* invalidates the loader cache for `substrateDir` so the next registry consumer
|
|
156
|
+
* reads the fresh declaration. The cwd form is a thin wrapper resolving the
|
|
157
|
+
* active dir; behaviour is byte-identical when called via cwd.
|
|
155
158
|
*/
|
|
156
159
|
export function appendMigrationDeclForDir(substrateDir, decl, ctx) {
|
|
157
160
|
const current = loadMigrationsFileForDir(substrateDir) ?? emptyMigrationsFile();
|
|
@@ -162,13 +165,12 @@ export function appendMigrationDeclForDir(substrateDir, decl, ctx) {
|
|
|
162
165
|
const next = clone(current);
|
|
163
166
|
next.migrations.push(decl);
|
|
164
167
|
writeMigrationsFileForDir(substrateDir, next, ctx);
|
|
165
|
-
invalidateMigrationRegistryForDir(substrateDir);
|
|
166
168
|
}
|
|
167
169
|
/**
|
|
168
170
|
* Replace an existing MigrationDecl identified by (schemaName, fromVersion).
|
|
169
171
|
* Op-correctness: target must be PRESENT; missing target throws. The whole
|
|
170
|
-
* decl is replaced (no per-field merge).
|
|
171
|
-
*
|
|
172
|
+
* decl is replaced (no per-field merge). The write flows through the
|
|
173
|
+
* `writeMigrationsFileForDir` funnel, which invalidates the loader cache.
|
|
172
174
|
*/
|
|
173
175
|
export function replaceMigrationDecl(cwd, decl, ctx) {
|
|
174
176
|
const current = loadMigrationsFile(cwd);
|
|
@@ -182,12 +184,12 @@ export function replaceMigrationDecl(cwd, decl, ctx) {
|
|
|
182
184
|
const next = clone(current);
|
|
183
185
|
next.migrations[idx] = decl;
|
|
184
186
|
writeMigrationsFile(cwd, next, ctx);
|
|
185
|
-
invalidateMigrationRegistry(cwd);
|
|
186
187
|
}
|
|
187
188
|
/**
|
|
188
189
|
* Remove an existing MigrationDecl identified by (schemaName, fromVersion).
|
|
189
|
-
* Op-correctness: target must be PRESENT; missing target throws.
|
|
190
|
-
* the
|
|
190
|
+
* Op-correctness: target must be PRESENT; missing target throws. The write
|
|
191
|
+
* flows through the `writeMigrationsFileForDir` funnel, which invalidates the
|
|
192
|
+
* loader cache.
|
|
191
193
|
*/
|
|
192
194
|
export function removeMigrationDecl(cwd, schemaName, fromVersion, ctx) {
|
|
193
195
|
const current = loadMigrationsFile(cwd);
|
|
@@ -201,6 +203,38 @@ export function removeMigrationDecl(cwd, schemaName, fromVersion, ctx) {
|
|
|
201
203
|
const next = clone(current);
|
|
202
204
|
next.migrations.splice(idx, 1);
|
|
203
205
|
writeMigrationsFile(cwd, next, ctx);
|
|
204
|
-
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Ceremony seeding site (init / accept-all / install): copy the packaged
|
|
209
|
+
* catalog's `config`-schema MigrationDecl entries into the substrate's
|
|
210
|
+
* migrations.json so a catalog-born (or re-entered legacy) substrate carries
|
|
211
|
+
* the config migration chain BEFORE any config read walks it. Idempotent —
|
|
212
|
+
* a decl is appended only when its (schemaName, fromVersion) pair is absent
|
|
213
|
+
* on-disk; an existing entry is never replaced. Returns the appended edges
|
|
214
|
+
* (empty when everything was already present or the packaged catalog ships
|
|
215
|
+
* no migrations file). No-op on a nonexistent substrate dir — the seed heals
|
|
216
|
+
* substrates, it never materializes them (ceremonies that need the dir create
|
|
217
|
+
* it themselves before seeding).
|
|
218
|
+
*/
|
|
219
|
+
export function seedCatalogConfigMigrationDecls(substrateDir, ctx) {
|
|
220
|
+
if (!fs.existsSync(substrateDir))
|
|
221
|
+
return [];
|
|
222
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
223
|
+
const catalogPath = path.resolve(here, "..", "samples", "migrations.json");
|
|
224
|
+
if (!fs.existsSync(catalogPath))
|
|
225
|
+
return [];
|
|
226
|
+
const data = JSON.parse(fs.readFileSync(catalogPath, "utf-8"));
|
|
227
|
+
validateFromFile(bundledMigrationsSchemaPath(), data, `migrations.json (${catalogPath})`);
|
|
228
|
+
const catalog = data;
|
|
229
|
+
const configDecls = catalog.migrations.filter((m) => m.schemaName === "config");
|
|
230
|
+
const existing = loadMigrationsFileForDir(substrateDir);
|
|
231
|
+
const appended = [];
|
|
232
|
+
for (const decl of configDecls) {
|
|
233
|
+
if (existing && findMigrationIndex(existing, decl.schemaName, decl.fromVersion) >= 0)
|
|
234
|
+
continue;
|
|
235
|
+
appendMigrationDeclForDir(substrateDir, decl, ctx);
|
|
236
|
+
appended.push({ schema: decl.schemaName, from: decl.fromVersion, to: decl.toVersion });
|
|
237
|
+
}
|
|
238
|
+
return appended;
|
|
205
239
|
}
|
|
206
240
|
//# sourceMappingURL=migrations-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-store.js","sourceRoot":"","sources":["../src/migrations-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"migrations-store.js","sourceRoot":"","sources":["../src/migrations-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,SAAS,2BAA2B;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AACtE,CAAC;AAyCD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAAoB;IAC5D,MAAM,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACJ,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,IAAsB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC7C,OAAO,wBAAwB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAoB,EAAE,GAAqB;IAC3F,yBAAyB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB,EAAE,IAAoB,EAAE,GAAqB;IAC1G,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,2BAA2B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAChH,iCAAiC,CAAC,YAAY,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB;IAC3B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAI,KAAQ;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAoB,EAAE,UAAkB,EAAE,WAAmB;IACxF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACvG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAmB,EAAE,GAAqB;IAC1F,yBAAyB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB,EAAE,IAAmB,EAAE,GAAqB;IACzG,MAAM,OAAO,GAAG,wBAAwB,CAAC,YAAY,CAAC,IAAI,mBAAmB,EAAE,CAAC;IAChF,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3E,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,0DAA0D,IAAI,CAAC,UAAU,kBAAkB,IAAI,CAAC,WAAW,yDAAyD,CACpK,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAmB,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,yBAAyB,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,IAAmB,EAAE,GAAqB;IAC3F,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACd,mDAAmD,cAAc,CAAC,GAAG,CAAC,qCAAqC,CAC3G,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3E,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACd,4EAA4E,IAAI,CAAC,UAAU,kBAAkB,IAAI,CAAC,WAAW,yCAAyC,CACtK,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAmB,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,UAAkB,EAAE,WAAmB,EAAE,GAAqB;IAC9G,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACjE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACd,2EAA2E,UAAU,kBAAkB,WAAW,GAAG,CACrH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAmB,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAC9C,YAAoB,EACpB,GAAqB;IAErB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,oBAAoB,WAAW,GAAG,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,IAAsB,CAAC;IACvC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAwD,EAAE,CAAC;IACzE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/F,yBAAyB,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
package/dist/ops-registry.d.ts
CHANGED
|
@@ -57,9 +57,25 @@ export interface OpDefinition<P = any> {
|
|
|
57
57
|
label: string;
|
|
58
58
|
description: string;
|
|
59
59
|
promptSnippet?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Copy-pasteable `pi-context <op> …` invocation strings surfaced by the CLI's
|
|
62
|
+
* per-op `--help` EXAMPLES section (and its `--format json` machine help). Help
|
|
63
|
+
* metadata only — TASK-042 (FEAT-008). Deliberately NOT projected by registerAll
|
|
64
|
+
* into the in-pi tool surface (the in-pi tool exposes only
|
|
65
|
+
* {name,label,description,promptSnippet,parameters}); `examples` is CLI-help-only.
|
|
66
|
+
*/
|
|
67
|
+
examples?: string[];
|
|
60
68
|
parameters: TSchema;
|
|
61
69
|
run(cwd: string, params: P, ctx?: DispatchContext): OpResult | Promise<OpResult>;
|
|
62
70
|
authGated?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* When true, the op's string OpResult is emitted byte-exact on the CLI text
|
|
73
|
+
* surface — no trailing newline appended by the print path — so the output
|
|
74
|
+
* round-trips to a file / is diffable against an on-disk source whose bytes it
|
|
75
|
+
* reproduces verbatim. Carried for that CLI consumer (like `authGated`); the
|
|
76
|
+
* default-unset behavior keeps the prior text-surface trailing-newline framing.
|
|
77
|
+
*/
|
|
78
|
+
verbatimText?: boolean;
|
|
63
79
|
surface: "use" | "process";
|
|
64
80
|
}
|
|
65
81
|
export declare const ops: OpDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-registry.d.ts","sourceRoot":"","sources":["../src/ops-registry.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAGX,YAAY,EAEZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,OAAO,EAAQ,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ops-registry.d.ts","sourceRoot":"","sources":["../src/ops-registry.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAGX,YAAY,EAEZ,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,OAAO,EAAQ,MAAM,SAAS,CAAC;AAoC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAgC7D,OAAO,EAA0B,KAAK,cAAc,EAAoC,MAAM,mBAAmB,CAAC;AAQlH;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AA4C7E;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAStD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAStD;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,GAAG,EAAE,YAAY,EA01D7B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,EAAsD,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,+BAA+B,EAAE,eAAe,EAgB5D,CAAC;AAEF;;;;;;GAMG;AACH,oBAAY,aAAa;IACxB,4FAA4F;IAC5F,cAAc,qBAAqB;IACnC;;;;;;;;;;;;OAYG;IACH,kBAAkB,yBAAyB;IAC3C;;;;;OAKG;IACH,UAAU,iBAAiB;IAC3B;;;OAGG;IACH,sBAAsB,4BAA4B;IAClD;;;;;OAKG;IACH,iBAAiB,uBAAuB;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAqB5C,CAAC;AAYF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CAAE,GAC7C,eAAe,CAOjB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAwBlD"}
|