@ifc-lite/cli 0.17.2 → 0.18.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/dist/commands/layer-diff.d.ts +3 -0
- package/dist/commands/layer-diff.d.ts.map +1 -0
- package/dist/commands/layer-diff.js +46 -0
- package/dist/commands/layer-diff.js.map +1 -0
- package/dist/commands/layer-history.d.ts +61 -0
- package/dist/commands/layer-history.d.ts.map +1 -0
- package/dist/commands/layer-history.js +276 -0
- package/dist/commands/layer-history.js.map +1 -0
- package/dist/commands/layer-merge.d.ts +22 -0
- package/dist/commands/layer-merge.d.ts.map +1 -0
- package/dist/commands/layer-merge.js +138 -0
- package/dist/commands/layer-merge.js.map +1 -0
- package/dist/commands/layer-publish.d.ts +67 -0
- package/dist/commands/layer-publish.d.ts.map +1 -0
- package/dist/commands/layer-publish.js +299 -0
- package/dist/commands/layer-publish.js.map +1 -0
- package/dist/commands/layer-store.d.ts +59 -0
- package/dist/commands/layer-store.d.ts.map +1 -0
- package/dist/commands/layer-store.js +225 -0
- package/dist/commands/layer-store.js.map +1 -0
- package/dist/commands/layer-test-helpers.d.ts +10 -0
- package/dist/commands/layer-test-helpers.d.ts.map +1 -0
- package/dist/commands/layer-test-helpers.js +49 -0
- package/dist/commands/layer-test-helpers.js.map +1 -0
- package/dist/commands/layer.d.ts +2 -0
- package/dist/commands/layer.d.ts.map +1 -0
- package/dist/commands/layer.js +100 -0
- package/dist/commands/layer.js.map +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +4 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/ref.d.ts +17 -0
- package/dist/commands/ref.d.ts.map +1 -0
- package/dist/commands/ref.js +173 -0
- package/dist/commands/ref.js.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +13 -11
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Local layer store for `ifc-lite layer` / `ifc-lite ref` commands.
|
|
6
|
+
*
|
|
7
|
+
* Rooted at `.ifc-lite/` of the cwd (overridable with `--store <dir>`):
|
|
8
|
+
*
|
|
9
|
+
* .ifc-lite/layers/<blake3 hex>.ifcx published layer documents
|
|
10
|
+
* .ifc-lite/refs.json named refs → ordered layer ids
|
|
11
|
+
* .ifc-lite/draft.json draft descriptor (layer create)
|
|
12
|
+
*
|
|
13
|
+
* Spec: docs/architecture/layer-prs/09-cli.md.
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
|
|
16
|
+
import { join, resolve } from 'node:path';
|
|
17
|
+
import { computeLayerId, computeStackHash } from '@ifc-lite/ifcx';
|
|
18
|
+
import { getFlag } from '../output.js';
|
|
19
|
+
let atomicWriteSeq = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Write via temp file + rename so a crash or a concurrent CLI process
|
|
22
|
+
* never leaves a torn refs.json or layer file behind.
|
|
23
|
+
*/
|
|
24
|
+
function writeFileAtomic(path, text) {
|
|
25
|
+
const tmp = `${path}.${process.pid}.${atomicWriteSeq++}.tmp`;
|
|
26
|
+
writeFileSync(tmp, text, 'utf-8');
|
|
27
|
+
renameSync(tmp, path);
|
|
28
|
+
}
|
|
29
|
+
/** Open (without creating) a store rooted at `dir` or `<cwd>/.ifc-lite`. */
|
|
30
|
+
export function openStore(dir) {
|
|
31
|
+
return { dir: resolve(dir ?? join(process.cwd(), '.ifc-lite')) };
|
|
32
|
+
}
|
|
33
|
+
/** Store from CLI args: honours the `--store <dir>` override. */
|
|
34
|
+
export function storeFromArgs(args) {
|
|
35
|
+
return openStore(getFlag(args, '--store'));
|
|
36
|
+
}
|
|
37
|
+
function layersDir(store) {
|
|
38
|
+
return join(store.dir, 'layers');
|
|
39
|
+
}
|
|
40
|
+
function refsPath(store) {
|
|
41
|
+
return join(store.dir, 'refs.json');
|
|
42
|
+
}
|
|
43
|
+
function draftPath(store) {
|
|
44
|
+
return join(store.dir, 'draft.json');
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// refs.json
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
export function readRefs(store) {
|
|
50
|
+
if (!existsSync(refsPath(store)))
|
|
51
|
+
return { refs: {} };
|
|
52
|
+
const parsed = JSON.parse(readFileSync(refsPath(store), 'utf-8'));
|
|
53
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
54
|
+
throw new Error(`Corrupt refs.json at ${refsPath(store)}: expected an object`);
|
|
55
|
+
}
|
|
56
|
+
const refs = parsed.refs;
|
|
57
|
+
if (typeof refs !== 'object' || refs === null || Array.isArray(refs)) {
|
|
58
|
+
throw new Error(`Corrupt refs.json at ${refsPath(store)}: missing "refs" object`);
|
|
59
|
+
}
|
|
60
|
+
for (const [name, entry] of Object.entries(refs)) {
|
|
61
|
+
const candidate = entry;
|
|
62
|
+
if (typeof candidate !== 'object' ||
|
|
63
|
+
candidate === null ||
|
|
64
|
+
!Array.isArray(candidate.layers) ||
|
|
65
|
+
!candidate.layers.every((id) => typeof id === 'string')) {
|
|
66
|
+
throw new Error(`Corrupt refs.json at ${refsPath(store)}: ref "${name}" must have layers: string[]`);
|
|
67
|
+
}
|
|
68
|
+
const policy = candidate.policy;
|
|
69
|
+
if (policy !== undefined) {
|
|
70
|
+
const okApproval = policy.requireHumanApproval === undefined || typeof policy.requireHumanApproval === 'boolean';
|
|
71
|
+
const okChecks = policy.requiredChecks === undefined ||
|
|
72
|
+
(Array.isArray(policy.requiredChecks) && policy.requiredChecks.every((c) => typeof c === 'string'));
|
|
73
|
+
if (typeof policy !== 'object' || policy === null || !okApproval || !okChecks) {
|
|
74
|
+
throw new Error(`Corrupt refs.json at ${refsPath(store)}: ref "${name}" has an invalid policy`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { refs: refs };
|
|
79
|
+
}
|
|
80
|
+
export function writeRefs(store, refs) {
|
|
81
|
+
mkdirSync(store.dir, { recursive: true });
|
|
82
|
+
writeFileAtomic(refsPath(store), `${JSON.stringify(refs, null, 2)}\n`);
|
|
83
|
+
}
|
|
84
|
+
export function getRef(store, name) {
|
|
85
|
+
return readRefs(store).refs[name];
|
|
86
|
+
}
|
|
87
|
+
export function requireRef(store, name) {
|
|
88
|
+
const entry = getRef(store, name);
|
|
89
|
+
if (!entry)
|
|
90
|
+
throw new Error(`No ref named "${name}" in store ${store.dir}`);
|
|
91
|
+
return entry;
|
|
92
|
+
}
|
|
93
|
+
export function setRef(store, name, entry) {
|
|
94
|
+
const refs = readRefs(store);
|
|
95
|
+
refs.refs[name] = entry;
|
|
96
|
+
writeRefs(store, refs);
|
|
97
|
+
}
|
|
98
|
+
/** Stack hash of a ref's current layer list. */
|
|
99
|
+
export function refStackHash(store, name) {
|
|
100
|
+
return computeStackHash(requireRef(store, name).layers);
|
|
101
|
+
}
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// layers/<hex>.ifcx
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
function hexOf(layerId) {
|
|
106
|
+
return layerId.startsWith('blake3:') ? layerId.slice('blake3:'.length) : layerId;
|
|
107
|
+
}
|
|
108
|
+
/** Persist a published layer; `file.header.id` must be its blake3 id. */
|
|
109
|
+
export function storeLayer(store, file) {
|
|
110
|
+
const id = file.header.id;
|
|
111
|
+
if (!id.startsWith('blake3:')) {
|
|
112
|
+
throw new Error(`Layer header.id must be a blake3 content address, got "${id}"`);
|
|
113
|
+
}
|
|
114
|
+
mkdirSync(layersDir(store), { recursive: true });
|
|
115
|
+
writeFileAtomic(join(layersDir(store), `${hexOf(id)}.ifcx`), `${JSON.stringify(file, null, 2)}\n`);
|
|
116
|
+
return id;
|
|
117
|
+
}
|
|
118
|
+
export function hasLayer(store, layerId) {
|
|
119
|
+
return existsSync(join(layersDir(store), `${hexOf(layerId)}.ifcx`));
|
|
120
|
+
}
|
|
121
|
+
/** Resolve a full id, bare hex, or unique hex prefix to a full layer id. */
|
|
122
|
+
export function resolveLayerId(store, idOrPrefix) {
|
|
123
|
+
const hex = hexOf(idOrPrefix);
|
|
124
|
+
if (existsSync(join(layersDir(store), `${hex}.ifcx`)))
|
|
125
|
+
return `blake3:${hex}`;
|
|
126
|
+
if (!existsSync(layersDir(store))) {
|
|
127
|
+
throw new Error(`No layer "${idOrPrefix}" — store ${store.dir} has no layers`);
|
|
128
|
+
}
|
|
129
|
+
const matches = readdirSync(layersDir(store)).filter((f) => f.endsWith('.ifcx') && f.startsWith(hex));
|
|
130
|
+
if (matches.length === 1)
|
|
131
|
+
return `blake3:${matches[0].slice(0, -'.ifcx'.length)}`;
|
|
132
|
+
if (matches.length === 0)
|
|
133
|
+
throw new Error(`No layer "${idOrPrefix}" in store ${store.dir}`);
|
|
134
|
+
throw new Error(`Layer id prefix "${idOrPrefix}" is ambiguous (${matches.length} matches)`);
|
|
135
|
+
}
|
|
136
|
+
export function loadLayer(store, layerId) {
|
|
137
|
+
const id = resolveLayerId(store, layerId);
|
|
138
|
+
const file = parseIfcxJson(readFileSync(join(layersDir(store), `${hexOf(id)}.ifcx`), 'utf-8'), `layer ${id}`);
|
|
139
|
+
// Content addressing is only protection if it is checked: a layer file
|
|
140
|
+
// edited or bit-rotted on disk must fail loudly here, not compose
|
|
141
|
+
// silently into refs and merges.
|
|
142
|
+
const actual = computeLayerId(file);
|
|
143
|
+
if (actual !== id) {
|
|
144
|
+
throw new Error(`Layer ${id} failed integrity verification — its content hashes to ${actual}. ` +
|
|
145
|
+
`The file in ${layersDir(store)} was modified or corrupted after publishing.`);
|
|
146
|
+
}
|
|
147
|
+
return file;
|
|
148
|
+
}
|
|
149
|
+
/** Load a ref's layer documents, ordered weakest first. */
|
|
150
|
+
export function loadRefLayers(store, name) {
|
|
151
|
+
return requireRef(store, name).layers.map((id) => loadLayer(store, id));
|
|
152
|
+
}
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
// draft.json
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
export function readDraft(store) {
|
|
157
|
+
if (!existsSync(draftPath(store)))
|
|
158
|
+
return undefined;
|
|
159
|
+
const parsed = JSON.parse(readFileSync(draftPath(store), 'utf-8'));
|
|
160
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
161
|
+
throw new Error(`Corrupt draft.json at ${draftPath(store)}`);
|
|
162
|
+
}
|
|
163
|
+
return parsed;
|
|
164
|
+
}
|
|
165
|
+
export function writeDraft(store, draft) {
|
|
166
|
+
mkdirSync(store.dir, { recursive: true });
|
|
167
|
+
writeFileAtomic(draftPath(store), `${JSON.stringify(draft, null, 2)}\n`);
|
|
168
|
+
}
|
|
169
|
+
export function deleteDraft(store) {
|
|
170
|
+
if (existsSync(draftPath(store)))
|
|
171
|
+
rmSync(draftPath(store));
|
|
172
|
+
}
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
// IFCX file helpers + side resolution
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
export function parseIfcxJson(text, label) {
|
|
177
|
+
let parsed;
|
|
178
|
+
try {
|
|
179
|
+
parsed = JSON.parse(text);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
throw new Error(`Invalid IFCX (${label}): ${err instanceof Error ? err.message : String(err)}`);
|
|
183
|
+
}
|
|
184
|
+
const file = parsed;
|
|
185
|
+
if (typeof file !== 'object' || file === null || typeof file.header !== 'object' || !Array.isArray(file.data)) {
|
|
186
|
+
throw new Error(`Invalid IFCX (${label}): expected { header, imports, schemas, data }`);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
header: file.header,
|
|
190
|
+
imports: Array.isArray(file.imports) ? file.imports : [],
|
|
191
|
+
schemas: typeof file.schemas === 'object' && file.schemas !== null ? file.schemas : {},
|
|
192
|
+
data: file.data,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export function readIfcxFile(path) {
|
|
196
|
+
return parseIfcxJson(readFileSync(path, 'utf-8'), path);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Resolve a `<layer-id|ref|file.ifcx>` argument to an ordered layer list:
|
|
200
|
+
* refs win over layer ids, layer ids over file paths.
|
|
201
|
+
*/
|
|
202
|
+
export function resolveSide(store, spec) {
|
|
203
|
+
if (getRef(store, spec)) {
|
|
204
|
+
return { kind: 'ref', layers: loadRefLayers(store, spec), label: `ref ${spec}` };
|
|
205
|
+
}
|
|
206
|
+
if (spec.startsWith('blake3:') || hasLayer(store, spec)) {
|
|
207
|
+
const id = resolveLayerId(store, spec);
|
|
208
|
+
return { kind: 'layer', layers: [loadLayer(store, id)], label: id };
|
|
209
|
+
}
|
|
210
|
+
if (existsSync(spec)) {
|
|
211
|
+
return { kind: 'file', layers: [readIfcxFile(spec)], label: spec };
|
|
212
|
+
}
|
|
213
|
+
// Last chance: maybe it is a layer-id prefix.
|
|
214
|
+
const id = resolveLayerId(store, spec);
|
|
215
|
+
return { kind: 'layer', layers: [loadLayer(store, id)], label: id };
|
|
216
|
+
}
|
|
217
|
+
/** Short display form of a `blake3:<hex>` id. */
|
|
218
|
+
export function shortId(layerId) {
|
|
219
|
+
return hexOf(layerId).slice(0, 12);
|
|
220
|
+
}
|
|
221
|
+
/** Default principal for provenance authorship. */
|
|
222
|
+
export function defaultPrincipal() {
|
|
223
|
+
return process.env.USER ?? process.env.USERNAME ?? 'unknown';
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=layer-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-store.js","sourceRoot":"","sources":["../../src/commands/layer-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IfcxFile, IfcxNode } from '@ifc-lite/ifcx';
|
|
2
|
+
import { type LayerStore } from './layer-store.js';
|
|
3
|
+
export declare const FIRE = "bsi::ifc::v5a::Pset_FireSafety::FireRating";
|
|
4
|
+
export declare const CLASS = "bsi::ifc::class";
|
|
5
|
+
export declare function tmpStore(): LayerStore;
|
|
6
|
+
export declare function makeDelta(nodes: IfcxNode[]): IfcxFile;
|
|
7
|
+
export declare const baseNodes: IfcxNode[];
|
|
8
|
+
/** Publish a base layer and point a fresh ref `main` at it. */
|
|
9
|
+
export declare function setupMain(store: LayerStore): string;
|
|
10
|
+
//# sourceMappingURL=layer-test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-test-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/layer-test-helpers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9D,eAAO,MAAM,IAAI,+CAA+C,CAAC;AACjE,eAAO,MAAM,KAAK,oBAAoB,CAAC;AAEvC,wBAAgB,QAAQ,IAAI,UAAU,CAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAarD;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,EAM/B,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUnD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** Shared fixtures for the `layer` / `ref` command test suites. */
|
|
5
|
+
import { mkdtempSync } from 'node:fs';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { openStore } from './layer-store.js';
|
|
9
|
+
import { publishLayer } from './layer-publish.js';
|
|
10
|
+
import { createRef, moveRef } from './ref.js';
|
|
11
|
+
export const FIRE = 'bsi::ifc::v5a::Pset_FireSafety::FireRating';
|
|
12
|
+
export const CLASS = 'bsi::ifc::class';
|
|
13
|
+
export function tmpStore() {
|
|
14
|
+
return openStore(mkdtempSync(join(tmpdir(), 'ifc-lite-layer-test-')));
|
|
15
|
+
}
|
|
16
|
+
export function makeDelta(nodes) {
|
|
17
|
+
return {
|
|
18
|
+
header: {
|
|
19
|
+
id: '',
|
|
20
|
+
ifcxVersion: 'ifcx_alpha',
|
|
21
|
+
dataVersion: '1.0.0',
|
|
22
|
+
author: 'test',
|
|
23
|
+
timestamp: '2026-01-01T00:00:00.000Z',
|
|
24
|
+
},
|
|
25
|
+
imports: [],
|
|
26
|
+
schemas: {},
|
|
27
|
+
data: nodes,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const baseNodes = [
|
|
31
|
+
{ path: 'storey-eg', children: { Wall: 'wall-1' } },
|
|
32
|
+
{
|
|
33
|
+
path: 'wall-1',
|
|
34
|
+
attributes: { [CLASS]: { code: 'IfcWall', uri: 'u' }, [FIRE]: 'REI60' },
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
/** Publish a base layer and point a fresh ref `main` at it. */
|
|
38
|
+
export function setupMain(store) {
|
|
39
|
+
const published = publishLayer(store, {
|
|
40
|
+
delta: makeDelta(baseNodes),
|
|
41
|
+
baseRef: null,
|
|
42
|
+
intent: 'Import base model',
|
|
43
|
+
principal: 'alice',
|
|
44
|
+
});
|
|
45
|
+
createRef(store, 'main');
|
|
46
|
+
moveRef(store, 'main', published.layerId);
|
|
47
|
+
return published.layerId;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=layer-test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-test-helpers.js","sourceRoot":"","sources":["../../src/commands/layer-test-helpers.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,mEAAmE;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAG,4CAA4C,CAAC;AACjE,MAAM,CAAC,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAEvC,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,EAAE;YACN,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,OAAO;YACpB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,0BAA0B;SACtC;QACD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACnD;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;KACxE;CACF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;QAC3B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,mBAAmB;QAC3B,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../src/commands/layer.ts"],"names":[],"mappings":"AA8BA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* `ifc-lite layer` — layered change tracking over a local layer store
|
|
6
|
+
* (`.ifc-lite/` of the cwd, override with --store <dir>).
|
|
7
|
+
*
|
|
8
|
+
* Publish content-addressed layers with provenance manifests, diff
|
|
9
|
+
* composed states, merge candidates into refs (with three-way planning
|
|
10
|
+
* and ref policy), and derive log/bake/revert/rebase from the same
|
|
11
|
+
* state-based op model.
|
|
12
|
+
*
|
|
13
|
+
* Spec: docs/architecture/layer-prs/09-cli.md.
|
|
14
|
+
*/
|
|
15
|
+
import { layerCreateCommand, layerPublishCommand, layerStatusCommand, } from './layer-publish.js';
|
|
16
|
+
import { layerDiffCommand } from './layer-diff.js';
|
|
17
|
+
import { layerMergeCommand } from './layer-merge.js';
|
|
18
|
+
import { layerBakeCommand, layerLogCommand, layerRebaseCommand, layerRevertCommand, } from './layer-history.js';
|
|
19
|
+
export async function layerCommand(args) {
|
|
20
|
+
const sub = args[0];
|
|
21
|
+
if (!sub || sub === '--help' || sub === '-h') {
|
|
22
|
+
printUsage();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const rest = args.slice(1);
|
|
26
|
+
switch (sub) {
|
|
27
|
+
case 'publish':
|
|
28
|
+
await layerPublishCommand(rest);
|
|
29
|
+
return;
|
|
30
|
+
case 'create':
|
|
31
|
+
await layerCreateCommand(rest);
|
|
32
|
+
return;
|
|
33
|
+
case 'status':
|
|
34
|
+
await layerStatusCommand(rest);
|
|
35
|
+
return;
|
|
36
|
+
case 'diff':
|
|
37
|
+
await layerDiffCommand(rest);
|
|
38
|
+
return;
|
|
39
|
+
case 'merge':
|
|
40
|
+
await layerMergeCommand(rest);
|
|
41
|
+
return;
|
|
42
|
+
case 'log':
|
|
43
|
+
await layerLogCommand(rest);
|
|
44
|
+
return;
|
|
45
|
+
case 'bake':
|
|
46
|
+
await layerBakeCommand(rest);
|
|
47
|
+
return;
|
|
48
|
+
case 'revert':
|
|
49
|
+
await layerRevertCommand(rest);
|
|
50
|
+
return;
|
|
51
|
+
case 'rebase':
|
|
52
|
+
await layerRebaseCommand(rest);
|
|
53
|
+
return;
|
|
54
|
+
default:
|
|
55
|
+
process.stderr.write(`Unknown layer subcommand: ${sub}\n`);
|
|
56
|
+
printUsage();
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function printUsage() {
|
|
61
|
+
process.stdout.write(`Usage: ifc-lite layer <command> [...args]
|
|
62
|
+
|
|
63
|
+
Commands:
|
|
64
|
+
publish <delta.ifcx> Publish a delta as a content-addressed layer.
|
|
65
|
+
Flags: --base <ref|->, --intent "<text>",
|
|
66
|
+
--scope <claim> (repeatable),
|
|
67
|
+
--principal <id>, --kind human|agent|hybrid,
|
|
68
|
+
--strict-scope (exit 4 on scope mismatch),
|
|
69
|
+
--json
|
|
70
|
+
Defaults --base/--intent/--scope from draft.json.
|
|
71
|
+
create Record a draft descriptor (.ifc-lite/draft.json).
|
|
72
|
+
Flags: --base <ref>, --intent "<text>",
|
|
73
|
+
--scope <claim> (repeatable)
|
|
74
|
+
status Show the draft and whether its base ref moved.
|
|
75
|
+
diff <side> Diff composed states; a side is a ref, layer id,
|
|
76
|
+
or .ifcx file.
|
|
77
|
+
Flags: --against <side>, --components, --json
|
|
78
|
+
merge <layer-id> Merge a candidate into a ref (fast-forward or
|
|
79
|
+
three-way plan).
|
|
80
|
+
Flags: --into <ref>, --preview,
|
|
81
|
+
--resolve ours|theirs,
|
|
82
|
+
--waive <spec> --reason "<text>",
|
|
83
|
+
--approved-by <principal>, --json
|
|
84
|
+
log <ref> Provenance log, newest first. Flags: --json
|
|
85
|
+
bake <ref> -o <out> Materialize a tombstone-free flat document.
|
|
86
|
+
revert <layer-id> Publish an inverse layer and append it to a ref.
|
|
87
|
+
Conflicts (exit 2) when later layers touched the
|
|
88
|
+
same components.
|
|
89
|
+
Flags: --in <ref>, --resolve ours|theirs, --json
|
|
90
|
+
rebase <layer-id> Re-plan a candidate onto a ref's current stack
|
|
91
|
+
and publish the rebased layer.
|
|
92
|
+
Flags: --onto <ref>, --json
|
|
93
|
+
|
|
94
|
+
All commands honour --store <dir> (default: <cwd>/.ifc-lite).
|
|
95
|
+
|
|
96
|
+
Exit codes: 0 clean, 2 conflicts, 3 policy failure, 4 scope violation
|
|
97
|
+
(with --strict-scope), 1 generic errors.
|
|
98
|
+
`);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/commands/layer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7C,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,SAAS;YACZ,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,MAAM;YACT,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO;QACT,KAAK,OAAO;YACV,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,KAAK;YACR,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO;QACT,KAAK,MAAM;YACT,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;YAC3D,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCtB,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AA8BA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AA8BA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJ9D"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -133,11 +133,14 @@ export async function mcpCommand(args) {
|
|
|
133
133
|
fatal(`Refusing to bind ${resolvedHost} without --token. Pass --token <bearer> or --insecure to override.`);
|
|
134
134
|
}
|
|
135
135
|
const sessionFactory = {
|
|
136
|
-
build(scopeForSession) {
|
|
136
|
+
build(scopeForSession, sessionId) {
|
|
137
137
|
return createMCPServer({
|
|
138
138
|
version: VERSION,
|
|
139
139
|
registry: new InMemoryModelRegistry(),
|
|
140
140
|
scope: scopeForSession,
|
|
141
|
+
// Keys per-session state (layer workspaces) and its disposal
|
|
142
|
+
// (#1030); the transport rejects servers built without it.
|
|
143
|
+
sessionId,
|
|
141
144
|
config: { readOnly, bsddEndpoint: bsdd, samplingEnabled: false },
|
|
142
145
|
});
|
|
143
146
|
},
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type LayerStore, type RefEntry } from './layer-store.js';
|
|
2
|
+
export interface RefSummary {
|
|
3
|
+
name: string;
|
|
4
|
+
layers: string[];
|
|
5
|
+
stackHash: string;
|
|
6
|
+
policy?: RefEntry['policy'];
|
|
7
|
+
}
|
|
8
|
+
export declare function listRefs(store: LayerStore): RefSummary[];
|
|
9
|
+
export declare function createRef(store: LayerStore, name: string, from?: string): RefEntry;
|
|
10
|
+
/** Move a ref to another ref's stack or a comma-separated layer-id list. */
|
|
11
|
+
export declare function moveRef(store: LayerStore, name: string, to: string): RefEntry;
|
|
12
|
+
export declare function protectRef(store: LayerStore, name: string, options: {
|
|
13
|
+
requiredChecks?: string[];
|
|
14
|
+
requireHumanApproval?: boolean;
|
|
15
|
+
}): RefEntry;
|
|
16
|
+
export declare function refCommand(args: string[]): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/commands/ref.ts"],"names":[],"mappings":"AAiBA,OAAO,EAQL,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC7B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAcxD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAQlF;AAED,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAc7E;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE,QAAQ,CAUV;AAMD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB9D"}
|