@milehimikey/em 1.21.0 → 1.22.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/.claude/agents/em-implementer.md +10 -0
- package/.claude/agents/em-validator.md +1 -0
- package/.claude/skills/event-modeling/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/SKILL.md +7 -4
- package/.claude/skills/event-modeling-conform/reference/conform.md +82 -4
- package/.claude/skills/event-modeling-design/SKILL.md +1 -1
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/reference/engagement.md +1 -0
- package/.claude/skills/event-modeling-implement/SKILL.md +5 -3
- package/.claude/skills/event-modeling-implement/reference/implement.md +14 -0
- package/.claude/skills/event-modeling-review/SKILL.md +1 -1
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +19 -6
- package/.claude/skills/event-modeling-shared/reference/operating-principles.md +26 -15
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/cli/api.d.ts +84 -0
- package/dist/cli/api.js +146 -15
- package/dist/cli/api.js.map +1 -1
- package/dist/cli/bindings.d.ts +152 -0
- package/dist/cli/bindings.js +462 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/conformScope.d.ts +32 -0
- package/dist/cli/conformScope.js +68 -5
- package/dist/cli/conformScope.js.map +1 -1
- package/dist/cli/engagement.d.ts +24 -1
- package/dist/cli/engagement.js +50 -6
- package/dist/cli/engagement.js.map +1 -1
- package/dist/cli/engagementBrief.d.ts +127 -0
- package/dist/cli/engagementBrief.js +313 -0
- package/dist/cli/engagementBrief.js.map +1 -0
- package/dist/cli/engagementFile.d.ts +14 -0
- package/dist/cli/engagementFile.js +54 -0
- package/dist/cli/engagementFile.js.map +1 -1
- package/dist/cli/status.d.ts +5 -0
- package/dist/cli/status.js +1 -0
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/upgrade.js +9 -10
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli.js +143 -11
- package/dist/cli.js.map +1 -1
- package/dist/emit/api.d.ts +8 -1
- package/dist/emit/api.js +68 -24
- package/dist/emit/api.js.map +1 -1
- package/dist/emit/apiSurfaceJson.d.ts +3 -0
- package/dist/emit/apiSurfaceJson.js +26 -0
- package/dist/emit/apiSurfaceJson.js.map +1 -0
- package/dist/emit/engagementJson.d.ts +8 -3
- package/dist/emit/engagementJson.js +31 -4
- package/dist/emit/engagementJson.js.map +1 -1
- package/dist/mcp/server.js +91 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/model.d.ts +17 -5
- package/dist/model/model.js +18 -17
- package/dist/model/model.js.map +1 -1
- package/dist/templates.d.ts +4 -0
- package/dist/templates.js +29 -0
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/agents/em-implementer.md +10 -0
- package/plugin/agents/em-validator.md +1 -0
- package/plugin/shared/reference/em-dsl.md +19 -6
- package/plugin/shared/reference/operating-principles.md +26 -15
- package/plugin/skills/conform/SKILL.md +7 -4
- package/plugin/skills/conform/reference/conform.md +82 -4
- package/plugin/skills/design/SKILL.md +1 -1
- package/plugin/skills/discover/SKILL.md +1 -1
- package/plugin/skills/engagement/SKILL.md +1 -1
- package/plugin/skills/engagement/reference/engagement.md +1 -0
- package/plugin/skills/event-modeling/SKILL.md +1 -1
- package/plugin/skills/implement/SKILL.md +5 -3
- package/plugin/skills/implement/reference/implement.md +14 -0
- package/plugin/skills/review/SKILL.md +1 -1
package/dist/emit/api.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NormalizedModel } from "../model/model.js";
|
|
2
2
|
import { RefsResult } from "../model/refs.js";
|
|
3
3
|
import { Diagnostic } from "../model/validate.js";
|
|
4
|
-
import { ElementExport } from "./json.js";
|
|
4
|
+
import { ElementExport, FieldExport, TypeExport } from "./json.js";
|
|
5
5
|
/** The sentence every generated `model` carries (MIL-239 relies on it verbatim). */
|
|
6
6
|
export declare const CONSUMER_TOLERANCE_SENTENCE = "Consumers tolerate unknown fields; additive changes do not break them.";
|
|
7
7
|
export declare const API_HEADER_LINE = "// GENERATED by em api generate \u2014 do not hand-edit.";
|
|
@@ -11,6 +11,13 @@ export interface ApiContractResult {
|
|
|
11
11
|
/** Same diagnostics `buildExport` would raise for this model. */
|
|
12
12
|
diagnostics: Diagnostic[];
|
|
13
13
|
}
|
|
14
|
+
/** Declared types reachable (transitively) from any of the given elements' fields, as the set of
|
|
15
|
+
* their export refs — same walk `em api generate`'s contract body and `em api surface` (GH #448)
|
|
16
|
+
* use to decide which declared types belong on the public surface, shared so neither re-derives
|
|
17
|
+
* it with a subtly different recursion. */
|
|
18
|
+
export declare function reachableTypeRefs(elements: {
|
|
19
|
+
fields: FieldExport[] | null;
|
|
20
|
+
}[], typesByRef: Map<string, TypeExport>): Set<string>;
|
|
14
21
|
/** The public elements `em api` covers, in export (timeline) order. A repeated view
|
|
15
22
|
* (`view X again`) contributes its first public instance only — one logical read model,
|
|
16
23
|
* one TypeSpec declaration. Shared with `em api check` so both read the same surface. */
|
package/dist/emit/api.js
CHANGED
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
// plain `model`/`interface`/`op` declarations, core scalars only, no imports, no decorators,
|
|
5
5
|
// no `@versioned` (one release train; versions are Backlog).
|
|
6
6
|
//
|
|
7
|
-
// - public commands -> `interface Commands { op <name>(<
|
|
8
|
-
//
|
|
7
|
+
// - public commands -> `model` (payload) + `interface Commands { op <name>(payload: <Model>): void; }`
|
|
8
|
+
// (the write API; GH #445 — same payload-model shape as events/views, so field notes and
|
|
9
|
+
// `INV-*` lines ride along and the payload is decoratable by a binding file's `@@`)
|
|
10
|
+
// - public events -> `model` (async payload) + `interface Events { op on<Event>(payload): void; }`
|
|
11
|
+
// (GH #446 — one op per public event, so a binding file has a declaration to `@@channel`/
|
|
12
|
+
// `@@publish` against instead of re-stating the payload shape)
|
|
9
13
|
// - public views -> `model` + `interface Views { op get<View>(): <View>; }` (the read API)
|
|
10
14
|
// - declared `type`s reachable from any of those -> `model`
|
|
11
15
|
//
|
|
@@ -22,7 +26,7 @@
|
|
|
22
26
|
// hash (R12 amended): the text depends only on the public surface, so an internal-only `.em`
|
|
23
27
|
// edit leaves the contract byte-identical and neither CODEOWNERS routing nor the API-first
|
|
24
28
|
// gate fires on it.
|
|
25
|
-
import { resolvePublicType } from "../model/model.js";
|
|
29
|
+
import { PUBLIC_SCALAR_TYPE_NAMES, PUBLIC_SCALAR_TYPES, resolvePublicType } from "../model/model.js";
|
|
26
30
|
import { dedupe } from "../util/slug.js";
|
|
27
31
|
import { buildExportDoc } from "./json.js";
|
|
28
32
|
/** The sentence every generated `model` carries (MIL-239 relies on it verbatim). */
|
|
@@ -39,6 +43,24 @@ function pascalCase(name) {
|
|
|
39
43
|
function camelCase(pascal) {
|
|
40
44
|
return pascal.length > 0 ? pascal[0].toLowerCase() + pascal.slice(1) : pascal;
|
|
41
45
|
}
|
|
46
|
+
/** Declared types reachable (transitively) from any of the given elements' fields, as the set of
|
|
47
|
+
* their export refs — same walk `em api generate`'s contract body and `em api surface` (GH #448)
|
|
48
|
+
* use to decide which declared types belong on the public surface, shared so neither re-derives
|
|
49
|
+
* it with a subtly different recursion. */
|
|
50
|
+
export function reachableTypeRefs(elements, typesByRef) {
|
|
51
|
+
const reachable = new Set();
|
|
52
|
+
const walk = (fields) => {
|
|
53
|
+
for (const f of fields ?? []) {
|
|
54
|
+
if (f.typeRef && !reachable.has(f.typeRef.ref)) {
|
|
55
|
+
reachable.add(f.typeRef.ref);
|
|
56
|
+
walk(typesByRef.get(f.typeRef.ref)?.fields ?? null);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
for (const el of elements)
|
|
61
|
+
walk(el.fields);
|
|
62
|
+
return reachable;
|
|
63
|
+
}
|
|
42
64
|
/** A field name that isn't a bare TypeSpec identifier is backtick-quoted (TypeSpec's own escape). */
|
|
43
65
|
function fieldIdentifier(name) {
|
|
44
66
|
if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(name))
|
|
@@ -119,23 +141,16 @@ export function buildApiContract(model, refs, diagnostics, source, path, sourceL
|
|
|
119
141
|
const typesByRef = new Map(doc.model.types.map((t) => [t.ref, t]));
|
|
120
142
|
const surface = publicSurfaceOf(doc.model.slices);
|
|
121
143
|
// Declared types reachable (transitively) from a public element's fields.
|
|
122
|
-
const reachable =
|
|
123
|
-
const walk = (fields) => {
|
|
124
|
-
for (const f of fields ?? []) {
|
|
125
|
-
if (f.typeRef && !reachable.has(f.typeRef.ref)) {
|
|
126
|
-
reachable.add(f.typeRef.ref);
|
|
127
|
-
walk(typesByRef.get(f.typeRef.ref)?.fields ?? null);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
for (const el of [...surface.commands, ...surface.events, ...surface.views])
|
|
132
|
-
walk(el.fields);
|
|
144
|
+
const reachable = reachableTypeRefs([...surface.commands, ...surface.events, ...surface.views], typesByRef);
|
|
133
145
|
const usedNames = new Set();
|
|
134
146
|
const typeNameByRef = new Map();
|
|
135
147
|
for (const t of doc.model.types) {
|
|
136
148
|
if (reachable.has(t.ref))
|
|
137
149
|
typeNameByRef.set(t.ref, dedupe(pascalCase(t.name), usedNames, "_"));
|
|
138
150
|
}
|
|
151
|
+
// GH #444 (#443 ask 1): which table entries this contract actually uses, so the namespace
|
|
152
|
+
// declares exactly the scalars its own fields need — never a dead declaration.
|
|
153
|
+
const usedScalars = new Set();
|
|
139
154
|
const fieldType = (f, owner) => {
|
|
140
155
|
if (f.typeRef) {
|
|
141
156
|
const name = typeNameByRef.get(f.typeRef.ref) ?? pascalCase(f.typeRef.name);
|
|
@@ -145,6 +160,7 @@ export function buildApiContract(model, refs, diagnostics, source, path, sourceL
|
|
|
145
160
|
if (!r || r.kind !== "scalar") {
|
|
146
161
|
throw new Error(`em api generate: ${owner} field "${f.name}" has no public type — em validate's public-field-type-unresolved should have refused this model`);
|
|
147
162
|
}
|
|
163
|
+
usedScalars.add(r.scalar);
|
|
148
164
|
return r.array ? `${r.tsType}[]` : r.tsType;
|
|
149
165
|
};
|
|
150
166
|
const member = (f, owner) => `${fieldIdentifier(f.name)}${f.optional ? "?" : ""}: ${fieldType(f, owner)}`;
|
|
@@ -172,13 +188,28 @@ export function buildApiContract(model, refs, diagnostics, source, path, sourceL
|
|
|
172
188
|
}
|
|
173
189
|
if (typeBlocks.length > 0)
|
|
174
190
|
sections.push(typeBlocks.join("\n\n"));
|
|
191
|
+
// GH #446: an event op's payload reuses the exact model name chosen above for its `model`
|
|
192
|
+
// block — never re-derived — so the op always points at the declaration a binding file would
|
|
193
|
+
// `@@channel`/`@@publish` against. Op names dedupe through their own set (like `opNames` does
|
|
194
|
+
// for commands), even though in practice they can only collide if the (already-deduped) model
|
|
195
|
+
// names do too.
|
|
175
196
|
const eventBlocks = [];
|
|
197
|
+
const eventNames = [];
|
|
176
198
|
for (const el of surface.events) {
|
|
177
199
|
const name = dedupe(pascalCase(el.name), usedNames, "_");
|
|
200
|
+
eventNames.push(name);
|
|
178
201
|
eventBlocks.push(renderModel(name, el.fields, `event "${el.name}"`, elementNotes(el), invariantLines(el)));
|
|
179
202
|
}
|
|
180
203
|
if (eventBlocks.length > 0)
|
|
181
204
|
sections.push(eventBlocks.join("\n\n"));
|
|
205
|
+
const eventOpNames = new Set();
|
|
206
|
+
const eventOps = [];
|
|
207
|
+
for (const name of eventNames) {
|
|
208
|
+
const opName = dedupe(`on${name}`, eventOpNames, "_");
|
|
209
|
+
eventOps.push(`op ${opName}(payload: ${name}): void;`);
|
|
210
|
+
}
|
|
211
|
+
if (eventOps.length > 0)
|
|
212
|
+
sections.push(["interface Events {", ...indent(eventOps, 1), "}"].join("\n"));
|
|
182
213
|
const viewBlocks = [];
|
|
183
214
|
const viewOps = [];
|
|
184
215
|
for (const el of surface.views) {
|
|
@@ -190,23 +221,36 @@ export function buildApiContract(model, refs, diagnostics, source, path, sourceL
|
|
|
190
221
|
sections.push(viewBlocks.join("\n\n"));
|
|
191
222
|
sections.push(["interface Views {", ...indent(viewOps, 1), "}"].join("\n"));
|
|
192
223
|
}
|
|
224
|
+
// GH #445 (#443 ask 2): a command's payload rides the same `renderModel` path as an event's or
|
|
225
|
+
// a view's — so field notes and `INV-*` lines live on the payload model, the same home
|
|
226
|
+
// events/views already use, not the op. That is also what makes the fields decoratable at
|
|
227
|
+
// all: TypeSpec `@@` augment decorators target models and model properties, never positional
|
|
228
|
+
// op parameters.
|
|
193
229
|
const opNames = new Set();
|
|
230
|
+
const commandModelBlocks = [];
|
|
194
231
|
const commandOps = [];
|
|
195
232
|
for (const el of surface.commands) {
|
|
196
233
|
const opName = dedupe(camelCase(pascalCase(el.name)), opNames, "_");
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
commandOps.push(...invariantLines(el));
|
|
201
|
-
const params = (el.fields ?? []).map((f) => {
|
|
202
|
-
const n = fieldNotes(f);
|
|
203
|
-
const line = member(f, `command "${el.name}"`);
|
|
204
|
-
return n ? `/** ${n} */ ${line}` : line;
|
|
205
|
-
});
|
|
206
|
-
commandOps.push(`op ${opName}(${params.join(", ")}): void;`);
|
|
234
|
+
const payloadName = dedupe(pascalCase(el.name), usedNames, "_");
|
|
235
|
+
commandModelBlocks.push(renderModel(payloadName, el.fields, `command "${el.name}"`, elementNotes(el), invariantLines(el)));
|
|
236
|
+
commandOps.push(`op ${opName}(payload: ${payloadName}): void;`);
|
|
207
237
|
}
|
|
238
|
+
if (commandModelBlocks.length > 0)
|
|
239
|
+
sections.push(commandModelBlocks.join("\n\n"));
|
|
208
240
|
if (commandOps.length > 0)
|
|
209
241
|
sections.push(["interface Commands {", ...indent(commandOps, 1), "}"].join("\n"));
|
|
242
|
+
// Scalar declarations go first, in table order (not order of first use) — every field type
|
|
243
|
+
// above is already computed by this point, so `usedScalars` is complete.
|
|
244
|
+
const scalarDecls = [];
|
|
245
|
+
for (const name of PUBLIC_SCALAR_TYPE_NAMES) {
|
|
246
|
+
if (!usedScalars.has(name))
|
|
247
|
+
continue;
|
|
248
|
+
const decl = PUBLIC_SCALAR_TYPES[name].scalarDecl;
|
|
249
|
+
if (decl)
|
|
250
|
+
scalarDecls.push(decl);
|
|
251
|
+
}
|
|
252
|
+
if (scalarDecls.length > 0)
|
|
253
|
+
sections.unshift(scalarDecls.join("\n"));
|
|
210
254
|
const namespaceName = pascalCase(doc.model.name ?? "Model");
|
|
211
255
|
const header = [
|
|
212
256
|
API_HEADER_LINE,
|
package/dist/emit/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/emit/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/emit/api.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,2FAA2F;AAC3F,6FAA6F;AAC7F,6DAA6D;AAC7D,EAAE;AACF,wGAAwG;AACxG,4FAA4F;AAC5F,uFAAuF;AACvF,sGAAsG;AACtG,6FAA6F;AAC7F,kEAAkE;AAClE,+FAA+F;AAC/F,6DAA6D;AAC7D,EAAE;AACF,8FAA8F;AAC9F,4FAA4F;AAC5F,0FAA0F;AAC1F,oFAAoF;AACpF,yEAAyE;AACzE,EAAE;AACF,+FAA+F;AAC/F,8FAA8F;AAC9F,4FAA4F;AAC5F,+FAA+F;AAC/F,6FAA6F;AAC7F,2FAA2F;AAC3F,oBAAoB;AAEpB,OAAO,EAAmB,wBAAwB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAA0C,MAAM,WAAW,CAAC;AAEnF,oFAAoF;AACpF,MAAM,CAAC,MAAM,2BAA2B,GAAG,wEAAwE,CAAC;AAEpH,MAAM,CAAC,MAAM,eAAe,GAAG,qDAAqD,CAAC;AASrF,0FAA0F;AAC1F,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAC/B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChF,CAAC;AAED;;;4CAG4C;AAC5C,MAAM,UAAU,iBAAiB,CAC/B,QAA4C,EAC5C,UAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,MAA4B,EAAE,EAAE;QAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,QAAQ;QAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qGAAqG;AACrG,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;AACtE,CAAC;AAED,8FAA8F;AAC9F,gFAAgF;AAChF,SAAS,UAAU,CAAC,CAAc;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,EAAiB;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxG,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;0BAG0B;AAC1B,SAAS,cAAc,CAAC,EAAiB;IACvC,OAAO,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACvC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAClG,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,KAAe,EAAE,KAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;0FAE0F;AAC1F,MAAM,UAAU,eAAe,CAAC,MAAuC;IAKrE,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,MAAM;gBAAE,SAAS;YACzB,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACxC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACzC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACjC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAsB,EACtB,IAAgB,EAChB,WAAyB,EACzB,MAAc,EACd,IAAY,EACZ,cAAsB,IAAI;IAE1B,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAElD,0EAA0E;IAC1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5G,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,0FAA0F;IAC1F,+EAA+E;IAC/E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,MAAM,SAAS,GAAG,CAAC,CAAc,EAAE,KAAa,EAAU,EAAE;QAC1D,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,WAAW,CAAC,CAAC,IAAI,kGAAkG,CAC7I,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAc,EAAE,KAAa,EAAE,EAAE,CAC/C,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAE/E,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAY,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAE/F,MAAM,WAAW,GAAG,CAClB,IAAY,EACZ,MAA4B,EAC5B,KAAa,EACb,KAAe,EACf,aAAuB,EAAE,EACjB,EAAE;QACV,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,2BAA2B,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QAChE,MAAM,IAAI,GAAa,CAAC,GAAG,UAAU,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,0FAA0F;IAC1F,6FAA6F;IAC7F,8FAA8F;IAC9F,8FAA8F;IAC9F,gBAAgB;IAChB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,aAAa,IAAI,UAAU,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvG,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzG,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,+FAA+F;IAC/F,uFAAuF;IACvF,0FAA0F;IAC1F,6FAA6F;IAC7F,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAChE,kBAAkB,CAAC,IAAI,CACrB,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAClG,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,MAAM,MAAM,aAAa,WAAW,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7G,2FAA2F;IAC3F,yEAAyE;IACzE,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;QAClD,IAAI,IAAI;YAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG;QACb,eAAe;QACf,cAAc,WAAW,EAAE;QAC3B,2FAA2F;KAC5F,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,aAAa,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,aAAa,KAAK,CAAC,CAAC;IAChH,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Builds the `em api surface --json` document (GH #448) — the model's public commands, events,
|
|
3
|
+
// views and reachable declared types, as a versioned JSON document for companion tools (contract
|
|
4
|
+
// bridges, augment generators) that today re-derive this from `em export --json` and risk
|
|
5
|
+
// drifting from em's own notion of the surface. Shared by the CLI and the MCP `api_surface` tool
|
|
6
|
+
// so the two are byte-identical. Own schema constant, independent of the export `SCHEMA_VERSION`
|
|
7
|
+
// and `API_CHECK_SCHEMA_VERSION` (apiCheckJson.ts); deterministic for the same inputs (no
|
|
8
|
+
// timestamps, no absolute paths — `file` is as given on the command line, same convention
|
|
9
|
+
// `apiCheckJson.ts` follows).
|
|
10
|
+
import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
11
|
+
// 1.0 (GH #448): initial shape.
|
|
12
|
+
export const API_SURFACE_SCHEMA_VERSION = "1.0";
|
|
13
|
+
export function buildApiSurfaceJson(r) {
|
|
14
|
+
const doc = {
|
|
15
|
+
apiSurfaceSchemaVersion: API_SURFACE_SCHEMA_VERSION,
|
|
16
|
+
generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
|
|
17
|
+
file: r.file,
|
|
18
|
+
modelKey: r.modelKey,
|
|
19
|
+
commands: r.commands,
|
|
20
|
+
events: r.events,
|
|
21
|
+
views: r.views,
|
|
22
|
+
types: r.types,
|
|
23
|
+
};
|
|
24
|
+
return JSON.stringify(doc, null, 2);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=apiSurfaceJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiSurfaceJson.js","sourceRoot":"","sources":["../../src/emit/apiSurfaceJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,+FAA+F;AAC/F,iGAAiG;AACjG,0FAA0F;AAC1F,iGAAiG;AACjG,iGAAiG;AACjG,0FAA0F;AAC1F,0FAA0F;AAC1F,8BAA8B;AAG9B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,UAAU,mBAAmB,CAAC,CAAmB;IACrD,MAAM,GAAG,GAAG;QACV,uBAAuB,EAAE,0BAA0B;QACnD,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import type { EngagementPlan, EngagementStatus } from "../cli/engagement.js";
|
|
2
2
|
import type { FoundationCheck } from "../cli/engagementFoundation.js";
|
|
3
|
+
import type { EngagementBrief } from "../cli/engagementBrief.js";
|
|
3
4
|
/** The engagement FILE's frontmatter contract (`engagementSchemaVersion`, docs/engagement-schema.md).
|
|
4
5
|
* 1.0 (MIL-268): slug, created, createdBy, parallel, status, slices[{key, state, branch, base, pr, heldBy?}].
|
|
5
6
|
* 1.1 (GH #241): optional `tracking` — the engagement-level ticket key or URL. A 1.0 file still reads.
|
|
6
|
-
* 1.2 (GH #334): optional `prTitle` — the PR title template (`{key}`, `{slice}`). 1.0 and 1.1 files still read.
|
|
7
|
-
|
|
7
|
+
* 1.2 (GH #334): optional `prTitle` — the PR title template (`{key}`, `{slice}`). 1.0 and 1.1 files still read.
|
|
8
|
+
* 1.3 (GH #455): optional `context` — a list of repo-relative paths to documents an implementer
|
|
9
|
+
* needs beyond the slice doc (constitution, NFR docs, ADRs). 1.0, 1.1 and 1.2 files still read. */
|
|
10
|
+
export declare const ENGAGEMENT_SCHEMA_VERSION = "1.3";
|
|
8
11
|
/** Every `engagementSchemaVersion` this em reads; it always writes {@link ENGAGEMENT_SCHEMA_VERSION}. */
|
|
9
12
|
export declare const ENGAGEMENT_READABLE_VERSIONS: readonly string[];
|
|
10
|
-
export declare const ENGAGEMENT_PLAN_SCHEMA_VERSION = "1.
|
|
13
|
+
export declare const ENGAGEMENT_PLAN_SCHEMA_VERSION = "1.5";
|
|
11
14
|
export declare const ENGAGEMENT_STATUS_SCHEMA_VERSION = "1.1";
|
|
12
15
|
export declare function buildEngagementPlanJson(plan: EngagementPlan): string;
|
|
13
16
|
export declare const ENGAGEMENT_FOUNDATION_SCHEMA_VERSION = "1.0";
|
|
14
17
|
export declare function buildEngagementFoundationJson(file: string, slug: string, check: FoundationCheck): string;
|
|
18
|
+
export declare const ENGAGEMENT_BRIEF_SCHEMA_VERSION = "1.0";
|
|
19
|
+
export declare function buildEngagementBriefJson(brief: EngagementBrief): string;
|
|
15
20
|
export declare function buildEngagementStatusJson(status: EngagementStatus): string;
|
|
@@ -8,10 +8,12 @@ import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
|
8
8
|
/** The engagement FILE's frontmatter contract (`engagementSchemaVersion`, docs/engagement-schema.md).
|
|
9
9
|
* 1.0 (MIL-268): slug, created, createdBy, parallel, status, slices[{key, state, branch, base, pr, heldBy?}].
|
|
10
10
|
* 1.1 (GH #241): optional `tracking` — the engagement-level ticket key or URL. A 1.0 file still reads.
|
|
11
|
-
* 1.2 (GH #334): optional `prTitle` — the PR title template (`{key}`, `{slice}`). 1.0 and 1.1 files still read.
|
|
12
|
-
|
|
11
|
+
* 1.2 (GH #334): optional `prTitle` — the PR title template (`{key}`, `{slice}`). 1.0 and 1.1 files still read.
|
|
12
|
+
* 1.3 (GH #455): optional `context` — a list of repo-relative paths to documents an implementer
|
|
13
|
+
* needs beyond the slice doc (constitution, NFR docs, ADRs). 1.0, 1.1 and 1.2 files still read. */
|
|
14
|
+
export const ENGAGEMENT_SCHEMA_VERSION = "1.3";
|
|
13
15
|
/** Every `engagementSchemaVersion` this em reads; it always writes {@link ENGAGEMENT_SCHEMA_VERSION}. */
|
|
14
|
-
export const ENGAGEMENT_READABLE_VERSIONS = ["1.0", "1.1", "1.2"];
|
|
16
|
+
export const ENGAGEMENT_READABLE_VERSIONS = ["1.0", "1.1", "1.2", "1.3"];
|
|
15
17
|
// 1.0 (MIL-268): initial shape.
|
|
16
18
|
// 1.1 (GH #241): additive `tracking` on the document and on each slice.
|
|
17
19
|
// 1.2 (GH #239): additive `preflight: [{ kind, subject, slices, message }]` — the model-wide gaps
|
|
@@ -22,7 +24,10 @@ export const ENGAGEMENT_READABLE_VERSIONS = ["1.0", "1.1", "1.2"];
|
|
|
22
24
|
// 1.4 (GH #334): additive `prTitle` on the document (the engagement's template, or `null`) and on
|
|
23
25
|
// each slice (the resolved PR title the implementer is handed), and a `preflight[].kind:
|
|
24
26
|
// "pr-title-fallback"` per keyless slice whose `{key}` template fell back to the default.
|
|
25
|
-
|
|
27
|
+
// 1.5 (GH #455): additive `context` on the document — the engagement's repo-relative document
|
|
28
|
+
// paths, `[]` when absent — and a `preflight[].kind: "context-missing"` per context path that
|
|
29
|
+
// does not exist on disk at plan time.
|
|
30
|
+
export const ENGAGEMENT_PLAN_SCHEMA_VERSION = "1.5";
|
|
26
31
|
// 1.0 (MIL-268): initial shape.
|
|
27
32
|
// 1.1 (GH #241): additive `tracking` on the document and on each slice.
|
|
28
33
|
export const ENGAGEMENT_STATUS_SCHEMA_VERSION = "1.1";
|
|
@@ -37,6 +42,7 @@ export function buildEngagementPlanJson(plan) {
|
|
|
37
42
|
parallel: plan.parallel,
|
|
38
43
|
tracking: plan.tracking,
|
|
39
44
|
prTitle: plan.prTitle,
|
|
45
|
+
context: plan.context,
|
|
40
46
|
levels: plan.levels,
|
|
41
47
|
slices: plan.slices,
|
|
42
48
|
preflight: plan.preflight,
|
|
@@ -63,6 +69,27 @@ export function buildEngagementFoundationJson(file, slug, check) {
|
|
|
63
69
|
};
|
|
64
70
|
return JSON.stringify(doc, null, 2);
|
|
65
71
|
}
|
|
72
|
+
// 1.0 (GH #454): `{ engagementBriefSchemaVersion, generator, file, engagement, slug,
|
|
73
|
+
// inlineContext, slices[{ key, sliceName, pattern, docStatus, tracking, prTitle, branch, base,
|
|
74
|
+
// ledgerState, ledgerBranch, ledgerBase, ledgerPr, doc: { found, path, content }, fallbackElements,
|
|
75
|
+
// modelContext: { consumes, produces, neighborUnits, repeatedViews }, contract: { publicTouching,
|
|
76
|
+
// contractPath, publicElements }, definitionOfDone: { invariantIds, scenarioTitles, bindingsPath,
|
|
77
|
+
// bindingsExample, conformCheckCommand, isolationNote, prTitle }, context[{ path, inline, content,
|
|
78
|
+
// missing }] }] }` — one brief per engagement slice (model/Ledger order), `slices` has exactly one
|
|
79
|
+
// entry when `--slice` narrowed it. The MCP `engagement_brief` tool returns the same document.
|
|
80
|
+
export const ENGAGEMENT_BRIEF_SCHEMA_VERSION = "1.0";
|
|
81
|
+
export function buildEngagementBriefJson(brief) {
|
|
82
|
+
const doc = {
|
|
83
|
+
engagementBriefSchemaVersion: ENGAGEMENT_BRIEF_SCHEMA_VERSION,
|
|
84
|
+
generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
|
|
85
|
+
file: brief.file,
|
|
86
|
+
engagement: brief.engagement,
|
|
87
|
+
slug: brief.slug,
|
|
88
|
+
inlineContext: brief.inlineContext,
|
|
89
|
+
slices: brief.slices,
|
|
90
|
+
};
|
|
91
|
+
return JSON.stringify(doc, null, 2);
|
|
92
|
+
}
|
|
66
93
|
export function buildEngagementStatusJson(status) {
|
|
67
94
|
const doc = {
|
|
68
95
|
engagementStatusSchemaVersion: ENGAGEMENT_STATUS_SCHEMA_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engagementJson.js","sourceRoot":"","sources":["../../src/emit/engagementJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,6FAA6F;AAC7F,gFAAgF;AAChF,+FAA+F;AAC/F,gGAAgG;AAChG,mFAAmF;
|
|
1
|
+
{"version":3,"file":"engagementJson.js","sourceRoot":"","sources":["../../src/emit/engagementJson.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -34,8 +34,9 @@ import { buildExport, buildSliceExport, GENERATOR_VERSION } from "../emit/json.j
|
|
|
34
34
|
import { buildDocJsonExport } from "../emit/docJson.js";
|
|
35
35
|
import { buildValidateJson, buildShapeJson, buildSliceReadyJson, buildValidateListJson, collectMarkers } from "../emit/validateJson.js";
|
|
36
36
|
import { buildDiffJson } from "../emit/diffJson.js";
|
|
37
|
-
import { runApiCheck } from "../cli/api.js";
|
|
37
|
+
import { runApiCheck, runApiSurface } from "../cli/api.js";
|
|
38
38
|
import { buildApiCheckJson } from "../emit/apiCheckJson.js";
|
|
39
|
+
import { buildApiSurfaceJson } from "../emit/apiSurfaceJson.js";
|
|
39
40
|
import { buildShapeReport, readWaiveFile } from "../cli/shape.js";
|
|
40
41
|
import { validateLineage } from "../catalog/lineageValidate.js";
|
|
41
42
|
import { validateFrontmatterCoherence } from "../catalog/frontmatterCoherenceValidate.js";
|
|
@@ -49,7 +50,8 @@ import { computeSliceReadiness } from "../catalog/sliceReadyValidate.js";
|
|
|
49
50
|
import { engagementMembersFor, engagementPlanFor, engagementStatusFor } from "../cli/engagement.js";
|
|
50
51
|
import { checkFoundation } from "../cli/engagementFoundation.js";
|
|
51
52
|
import { readOpenEngagements } from "../cli/engagementFile.js";
|
|
52
|
-
import {
|
|
53
|
+
import { engagementBriefFor } from "../cli/engagementBrief.js";
|
|
54
|
+
import { buildEngagementBriefJson, buildEngagementFoundationJson, buildEngagementPlanJson, buildEngagementStatusJson } from "../emit/engagementJson.js";
|
|
53
55
|
import { buildSliceSyncJson, runSliceSync } from "../cli/sliceSync.js";
|
|
54
56
|
import { buildCoverageReport, resolveScopedSlices, resolveCoverageSliceKey } from "../cli/coverage.js";
|
|
55
57
|
import { buildCoverageJson } from "../emit/coverageJson.js";
|
|
@@ -73,6 +75,8 @@ import { buildMetricsJson } from "../emit/metricsJson.js";
|
|
|
73
75
|
import { runSystemScope } from "../cli/scopeInputs.js";
|
|
74
76
|
import { buildScopeJson } from "../emit/scopeJson.js";
|
|
75
77
|
import { checkFindingsFile, buildCheckFindingsJson } from "../cli/findings.js";
|
|
78
|
+
import { runBindingsCheck, buildBindingsCheckJson } from "../cli/bindings.js";
|
|
79
|
+
import { resolveSliceKey } from "../model/resolveSlice.js";
|
|
76
80
|
import { checkPrdTriage, buildCheckPrdTriageJson } from "../cli/prdTriage.js";
|
|
77
81
|
import { compileForQuery } from "../query/pipeline.js";
|
|
78
82
|
import { buildQuerySystem } from "../query/system.js";
|
|
@@ -531,7 +535,7 @@ export function createServer() {
|
|
|
531
535
|
// merged `sliceFacts` above (which spans every input file when several are given).
|
|
532
536
|
const conformance = compiledFiles.map(({ file }) => {
|
|
533
537
|
const facts = factsByFile.get(file) ?? [];
|
|
534
|
-
const sliceDocFacts = facts.map((f) => ({ key: f.key, status: f.rawStatus, implementedIn: f.implementedIn, shipped: f.shipped }));
|
|
538
|
+
const sliceDocFacts = facts.map((f) => ({ key: f.key, status: f.rawStatus, implementedIn: f.implementedIn, shipped: f.shipped, file: f.sliceFile }));
|
|
535
539
|
return resolveConformanceEntry(file, repo, sliceDocFacts);
|
|
536
540
|
});
|
|
537
541
|
// MIL-218: one model-version entry per input file — same computation cli.ts's `status`
|
|
@@ -838,6 +842,37 @@ export function createServer() {
|
|
|
838
842
|
}, async ({ path }) => {
|
|
839
843
|
return textResult(buildCheckFindingsJson(checkFindingsFile(path)));
|
|
840
844
|
});
|
|
845
|
+
server.registerTool("conform_bindings_check", {
|
|
846
|
+
title: "Verify per-slice bindings manifests against a target repo",
|
|
847
|
+
description: "Return the same JSON document `em conform bindings check <file> --repo <repo> --json` " +
|
|
848
|
+
"prints (GH #449): for each conformance/bindings/<slice-key>.yaml beside `file` (or just " +
|
|
849
|
+
"`slice`'s), whether each bound element's `ref` resolves against the compiled model and " +
|
|
850
|
+
"each bound `file`/`identifier` exists/is found under `repo` (plain substring, never " +
|
|
851
|
+
"code-parsed). Distinct failure kinds: an unknown `slice` key (tool error), a missing " +
|
|
852
|
+
"bindings file, malformed YAML, an unknown slice named inside a file, and an unknown " +
|
|
853
|
+
"element ref. Advisory only — read-only, never wired into `validate`/`slice_ready`.",
|
|
854
|
+
inputSchema: {
|
|
855
|
+
file: z.string().describe("input .em model file"),
|
|
856
|
+
repo: z.string().describe("path to the target codebase (bound files resolve relative to it; not required to be a git repository)"),
|
|
857
|
+
slice: z.string().optional().describe("check only this slice's bindings file (default: every conformance/bindings/*.yaml)"),
|
|
858
|
+
},
|
|
859
|
+
}, async ({ file, repo, slice }) => {
|
|
860
|
+
const compiled = compileFile(file);
|
|
861
|
+
if ("error" in compiled)
|
|
862
|
+
return errorResult(compiled.error);
|
|
863
|
+
const { model, refs, diagnostics } = compiled;
|
|
864
|
+
if (hasErrors(diagnostics)) {
|
|
865
|
+
return errorResult(`not checking bindings: "${file}" has errors — run \`validate\` first and fix them`);
|
|
866
|
+
}
|
|
867
|
+
let sliceKey;
|
|
868
|
+
if (slice !== undefined) {
|
|
869
|
+
const resolved = resolveSliceKey(model, refs, slice);
|
|
870
|
+
if (!resolved.ok)
|
|
871
|
+
return errorResult(resolved.message);
|
|
872
|
+
sliceKey = resolved.key;
|
|
873
|
+
}
|
|
874
|
+
return textResult(buildBindingsCheckJson(runBindingsCheck(refs, dirname(file), repo, sliceKey)));
|
|
875
|
+
});
|
|
841
876
|
server.registerTool("discover_triage_check", {
|
|
842
877
|
title: "Check a PRD/spec discovery triage record",
|
|
843
878
|
description: "Return the same JSON document `em discover triage-check <path> --json` prints (GH #295): " +
|
|
@@ -1056,6 +1091,22 @@ export function createServer() {
|
|
|
1056
1091
|
return errorResult(outcome.message);
|
|
1057
1092
|
return textResult(buildApiCheckJson(outcome.report));
|
|
1058
1093
|
});
|
|
1094
|
+
server.registerTool("api_surface", {
|
|
1095
|
+
title: "The model's public surface as a JSON document",
|
|
1096
|
+
description: "Return the same JSON document `em api surface <file> --json` prints (GH #448): the " +
|
|
1097
|
+
"model's public commands, events and views, plus every declared type reachable from " +
|
|
1098
|
+
"their fields, each field's type resolved through the fixed scalar table or a declared " +
|
|
1099
|
+
"type (`resolvePublicType`) — the same notion of the public surface `em api generate`/ " +
|
|
1100
|
+
"`em api check` already share, so a companion tool reads it directly instead of " +
|
|
1101
|
+
"re-deriving it from `em export --json`. Refuses (tool error) when the model has errors, " +
|
|
1102
|
+
"same as `em api generate`.",
|
|
1103
|
+
inputSchema: { file: fileParam },
|
|
1104
|
+
}, async ({ file }) => {
|
|
1105
|
+
const outcome = runApiSurface(file);
|
|
1106
|
+
if (!outcome.ok)
|
|
1107
|
+
return errorResult(outcome.message);
|
|
1108
|
+
return textResult(buildApiSurfaceJson(outcome.report));
|
|
1109
|
+
});
|
|
1059
1110
|
const slugParam = z.string().describe("engagement slug — the file <model dir>/engagements/<slug>.md");
|
|
1060
1111
|
server.registerTool("engagement_plan", {
|
|
1061
1112
|
title: "Build plan for an engagement",
|
|
@@ -1115,6 +1166,43 @@ export function createServer() {
|
|
|
1115
1166
|
return errorResult(`em engagement foundation: ${members.message}`);
|
|
1116
1167
|
return textResult(buildEngagementFoundationJson(file, slug, checkFoundation(compiled.model, members.members, members.idx, code)));
|
|
1117
1168
|
});
|
|
1169
|
+
server.registerTool("engagement_brief", {
|
|
1170
|
+
title: "Self-contained per-slice work brief for an engagement",
|
|
1171
|
+
description: "Return the same JSON document `em engagement brief <file> <slug> --json` prints (GH #454): a " +
|
|
1172
|
+
"deterministic, self-contained work brief for implementers em does not control (a ticket-driven " +
|
|
1173
|
+
"cloud agent) — the bound slice doc verbatim, or the model's own elements when there is none; " +
|
|
1174
|
+
"model context (events/elements consumed and produced, neighbor units, repeated view instances) " +
|
|
1175
|
+
"folded from model.edges the same way the build plan is; the public-contract surface " +
|
|
1176
|
+
"(slicePublicTouching, the contract file path, public elements); a definition-of-done " +
|
|
1177
|
+
"(INV-*/scenario ids to test, a filled bindings-manifest skeleton plus the exact `em conform " +
|
|
1178
|
+
"bindings check` verify line, the slice-isolation rule, the resolved PR title); and the " +
|
|
1179
|
+
"engagement's context: documents (GH #455) — pointers, or full text with `inlineContext`. One " +
|
|
1180
|
+
"brief per engagement slice unless `slice` narrows it to one. Read-only. Tool error when the " +
|
|
1181
|
+
"engagement is missing, the model no longer has one of its slices, or `slice` names a key not " +
|
|
1182
|
+
"in the engagement.",
|
|
1183
|
+
inputSchema: {
|
|
1184
|
+
file: fileParam,
|
|
1185
|
+
slug: slugParam,
|
|
1186
|
+
slice: z.string().optional().describe("only this slice's brief (export key, display name, or unique prefix)"),
|
|
1187
|
+
inlineContext: z.boolean().optional().describe("embed each context document's full text instead of just its path"),
|
|
1188
|
+
},
|
|
1189
|
+
}, async ({ file, slug, slice, inlineContext }) => {
|
|
1190
|
+
const compiled = compileFile(file);
|
|
1191
|
+
if ("error" in compiled)
|
|
1192
|
+
return errorResult(compiled.error);
|
|
1193
|
+
const { model, refs } = compiled;
|
|
1194
|
+
// GH #237: an input that resolves to no slice goes through as typed, so the engagement's own
|
|
1195
|
+
// "is not in engagement" refusal (which names what the Ledger holds) still speaks.
|
|
1196
|
+
let sliceKey = null;
|
|
1197
|
+
if (slice !== undefined) {
|
|
1198
|
+
const resolved = resolveSliceKey(model, refs, slice);
|
|
1199
|
+
sliceKey = resolved.ok ? resolved.key : slice;
|
|
1200
|
+
}
|
|
1201
|
+
const result = engagementBriefFor({ file, model, refs, baseDir: dirname(file) }, slug, { sliceKey, inlineContext: inlineContext === true });
|
|
1202
|
+
if (!result.ok)
|
|
1203
|
+
return errorResult(`em engagement brief: ${result.message}`);
|
|
1204
|
+
return textResult(buildEngagementBriefJson(result.brief));
|
|
1205
|
+
});
|
|
1118
1206
|
return server;
|
|
1119
1207
|
}
|
|
1120
1208
|
//# sourceMappingURL=server.js.map
|