@milehimikey/em 1.21.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.claude/agents/em-implementer.md +10 -0
  2. package/.claude/agents/em-validator.md +1 -0
  3. package/.claude/skills/event-modeling/SKILL.md +1 -1
  4. package/.claude/skills/event-modeling-conform/SKILL.md +7 -4
  5. package/.claude/skills/event-modeling-conform/reference/conform.md +82 -4
  6. package/.claude/skills/event-modeling-design/SKILL.md +5 -2
  7. package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
  8. package/.claude/skills/event-modeling-engagement/SKILL.md +1 -1
  9. package/.claude/skills/event-modeling-engagement/reference/engagement.md +1 -0
  10. package/.claude/skills/event-modeling-implement/SKILL.md +5 -3
  11. package/.claude/skills/event-modeling-implement/reference/implement.md +14 -0
  12. package/.claude/skills/event-modeling-review/SKILL.md +1 -1
  13. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +55 -6
  14. package/.claude/skills/event-modeling-shared/reference/operating-principles.md +26 -15
  15. package/.claude-plugin/marketplace.json +2 -2
  16. package/dist/cli/api.d.ts +136 -9
  17. package/dist/cli/api.js +278 -27
  18. package/dist/cli/api.js.map +1 -1
  19. package/dist/cli/bindings.d.ts +152 -0
  20. package/dist/cli/bindings.js +462 -0
  21. package/dist/cli/bindings.js.map +1 -0
  22. package/dist/cli/conformScope.d.ts +32 -0
  23. package/dist/cli/conformScope.js +68 -5
  24. package/dist/cli/conformScope.js.map +1 -1
  25. package/dist/cli/engagement.d.ts +24 -1
  26. package/dist/cli/engagement.js +50 -6
  27. package/dist/cli/engagement.js.map +1 -1
  28. package/dist/cli/engagementBrief.d.ts +127 -0
  29. package/dist/cli/engagementBrief.js +313 -0
  30. package/dist/cli/engagementBrief.js.map +1 -0
  31. package/dist/cli/engagementFile.d.ts +14 -0
  32. package/dist/cli/engagementFile.js +54 -0
  33. package/dist/cli/engagementFile.js.map +1 -1
  34. package/dist/cli/scopeInputs.js +2 -2
  35. package/dist/cli/scopeInputs.js.map +1 -1
  36. package/dist/cli/status.d.ts +5 -0
  37. package/dist/cli/status.js +1 -0
  38. package/dist/cli/status.js.map +1 -1
  39. package/dist/cli/upgrade.js +9 -10
  40. package/dist/cli/upgrade.js.map +1 -1
  41. package/dist/cli.js +143 -11
  42. package/dist/cli.js.map +1 -1
  43. package/dist/emit/api.d.ts +26 -1
  44. package/dist/emit/api.js +183 -25
  45. package/dist/emit/api.js.map +1 -1
  46. package/dist/emit/apiSurfaceJson.d.ts +3 -0
  47. package/dist/emit/apiSurfaceJson.js +43 -0
  48. package/dist/emit/apiSurfaceJson.js.map +1 -0
  49. package/dist/emit/diffJson.d.ts +1 -1
  50. package/dist/emit/diffJson.js +20 -1
  51. package/dist/emit/diffJson.js.map +1 -1
  52. package/dist/emit/engagementJson.d.ts +8 -3
  53. package/dist/emit/engagementJson.js +31 -4
  54. package/dist/emit/engagementJson.js.map +1 -1
  55. package/dist/emit/json.d.ts +42 -1
  56. package/dist/emit/json.js +65 -6
  57. package/dist/emit/json.js.map +1 -1
  58. package/dist/mcp/server.js +92 -3
  59. package/dist/mcp/server.js.map +1 -1
  60. package/dist/model/diff.d.ts +19 -1
  61. package/dist/model/diff.js +99 -0
  62. package/dist/model/diff.js.map +1 -1
  63. package/dist/model/model.d.ts +105 -9
  64. package/dist/model/model.js +116 -20
  65. package/dist/model/model.js.map +1 -1
  66. package/dist/model/refs.d.ts +4 -0
  67. package/dist/model/refs.js +35 -1
  68. package/dist/model/refs.js.map +1 -1
  69. package/dist/model/rules.d.ts +61 -0
  70. package/dist/model/rules.js +72 -0
  71. package/dist/model/rules.js.map +1 -1
  72. package/dist/model/validate.js +137 -4
  73. package/dist/model/validate.js.map +1 -1
  74. package/dist/parser/ast.d.ts +30 -0
  75. package/dist/parser/parser.js +67 -1
  76. package/dist/parser/parser.js.map +1 -1
  77. package/dist/render/sliceDiagram.js +6 -0
  78. package/dist/render/sliceDiagram.js.map +1 -1
  79. package/dist/render/storylineDiagram.js +6 -0
  80. package/dist/render/storylineDiagram.js.map +1 -1
  81. package/dist/system/adaptation.d.ts +5 -2
  82. package/dist/system/adaptation.js +5 -3
  83. package/dist/system/adaptation.js.map +1 -1
  84. package/dist/templates.d.ts +4 -0
  85. package/dist/templates.js +29 -0
  86. package/dist/templates.js.map +1 -1
  87. package/package.json +2 -1
  88. package/plugin/.claude-plugin/plugin.json +2 -2
  89. package/plugin/agents/em-implementer.md +10 -0
  90. package/plugin/agents/em-validator.md +1 -0
  91. package/plugin/shared/reference/em-dsl.md +55 -6
  92. package/plugin/shared/reference/operating-principles.md +26 -15
  93. package/plugin/skills/conform/SKILL.md +7 -4
  94. package/plugin/skills/conform/reference/conform.md +82 -4
  95. package/plugin/skills/design/SKILL.md +5 -2
  96. package/plugin/skills/discover/SKILL.md +1 -1
  97. package/plugin/skills/engagement/SKILL.md +1 -1
  98. package/plugin/skills/engagement/reference/engagement.md +1 -0
  99. package/plugin/skills/event-modeling/SKILL.md +1 -1
  100. package/plugin/skills/implement/SKILL.md +5 -3
  101. package/plugin/skills/implement/reference/implement.md +14 -0
  102. package/plugin/skills/review/SKILL.md +1 -1
@@ -2,7 +2,7 @@ import { RefsResult } from "./refs.js";
2
2
  import { NormalizedModel } from "./model.js";
3
3
  import { ElementKind } from "../parser/ast.js";
4
4
  import { SliceDoc, SliceRef } from "../catalog/sliceDoc.js";
5
- export type ChangeType = "slice-added" | "slice-removed" | "source-added" | "source-removed" | "source-changed" | "element-added" | "element-removed" | "element-moved" | "field-added" | "field-removed" | "field-changed" | "field-optionality-changed" | "from-added" | "from-removed" | "note-added" | "note-removed" | "note-changed" | "issue-opened" | "issue-resolved" | "issue-changed" | "event-marked-public" | "event-unmarked-public" | "arrow-added" | "arrow-removed" | "type-added" | "type-removed" | "type-field-added" | "type-field-removed" | "type-field-changed" | "type-field-optionality-changed";
5
+ export type ChangeType = "slice-added" | "slice-removed" | "source-added" | "source-removed" | "source-changed" | "element-added" | "element-removed" | "element-moved" | "field-added" | "field-removed" | "field-changed" | "field-optionality-changed" | "from-added" | "from-removed" | "note-added" | "note-removed" | "note-changed" | "issue-opened" | "issue-resolved" | "issue-changed" | "event-marked-public" | "event-unmarked-public" | "arrow-added" | "arrow-removed" | "type-added" | "type-removed" | "type-field-added" | "type-field-removed" | "type-field-changed" | "type-field-optionality-changed" | "scalar-added" | "scalar-removed" | "scalar-base-changed" | "enum-added" | "enum-removed" | "enum-member-added" | "enum-member-removed";
6
6
  /**
7
7
  * One reported change. Not every field applies to every `type` — see
8
8
  * formatEntry() for which fields each variant reads.
@@ -27,9 +27,16 @@ export interface ChangeEntry {
27
27
  toSliceKey?: string;
28
28
  field?: string;
29
29
  fieldType?: string | null;
30
+ /** On `enum-member-added`/`enum-member-removed` (GH #478), the member string, raw (unquoted).
31
+ * A dedicated key rather than reusing `field` — a member is a value, not a field name. */
32
+ member?: string;
30
33
  /** MIL-237: the field's optionality (`name?: Type`) — on `*field-added`/`*field-removed`, that
31
34
  * field's own; on `*field-optionality-changed`, the NEW side's (the old side is its negation). */
32
35
  optional?: boolean;
36
+ /** On `type-field-changed`/`type-field-optionality-changed`/`field-changed`/
37
+ * `field-optionality-changed`, the field's old/new type. On `scalar-base-changed` (GH #477),
38
+ * the scalar's old/new `base` (a `PUBLIC_SCALAR_TYPES` key) instead — same two keys, no new
39
+ * ones needed for a declaration that has no fields of its own. */
33
40
  oldType?: string | null;
34
41
  newType?: string | null;
35
42
  source?: string;
@@ -94,6 +101,17 @@ export interface DiffCounts {
94
101
  typesAdded: number;
95
102
  typesRemoved: number;
96
103
  typeFieldChanges: number;
104
+ /** Declared `scalar Name: base` (GH #477) additions/removals and `base` changes on surviving
105
+ * scalars (same ref). No move detection, same reasoning as `typesAdded`/`typesRemoved`. */
106
+ scalarsAdded: number;
107
+ scalarsRemoved: number;
108
+ scalarBaseChanges: number;
109
+ /** Declared `enum Name { member, … }` (GH #478) additions/removals and member changes on
110
+ * surviving enums (same ref). No move detection, same reasoning as `typesAdded`/
111
+ * `typesRemoved`. */
112
+ enumsAdded: number;
113
+ enumsRemoved: number;
114
+ enumMemberChanges: number;
97
115
  /** `slice-added` entries whose new-side doc resolved with a non-null `splitFrom` (MIL-84). */
98
116
  slicesSplit: number;
99
117
  /** `slice-added` entries whose new-side doc resolved with a non-empty `mergedFrom` (MIL-84). */
@@ -31,6 +31,12 @@ function emptyCounts() {
31
31
  typesAdded: 0,
32
32
  typesRemoved: 0,
33
33
  typeFieldChanges: 0,
34
+ scalarsAdded: 0,
35
+ scalarsRemoved: 0,
36
+ scalarBaseChanges: 0,
37
+ enumsAdded: 0,
38
+ enumsRemoved: 0,
39
+ enumMemberChanges: 0,
34
40
  slicesSplit: 0,
35
41
  slicesMerged: 0,
36
42
  slicesSuperseded: 0,
@@ -238,6 +244,59 @@ export function diffModels(oldModel, newModel, oldRefs, newRefs, lineage) {
238
244
  removals.push({ type: "type-removed", name: t.name, ref });
239
245
  counts.typesRemoved++;
240
246
  }
247
+ // --- declared identity scalars (GH #477): same export-ref identity and no-move-detection
248
+ // posture as declared types above, just no fields of their own to diff — the only thing that
249
+ // can change on a surviving scalar is its `base`.
250
+ const oldScalarByRef = new Map();
251
+ oldModel.scalars.forEach((s, i) => oldScalarByRef.set(oldRefs.refByScalarId.get(s.id) ?? String(i), s));
252
+ const newScalarByRef = new Map();
253
+ newModel.scalars.forEach((s, i) => newScalarByRef.set(newRefs.refByScalarId.get(s.id) ?? String(i), s));
254
+ for (const s of newModel.scalars) {
255
+ const ref = newRefs.refByScalarId.get(s.id);
256
+ const oldScalar = oldScalarByRef.get(ref);
257
+ if (oldScalar) {
258
+ if (normalizeName(oldScalar.base) !== normalizeName(s.base)) {
259
+ changes.push({ type: "scalar-base-changed", name: s.name, ref, oldType: oldScalar.base, newType: s.base });
260
+ counts.scalarBaseChanges++;
261
+ }
262
+ }
263
+ else {
264
+ changes.push({ type: "scalar-added", name: s.name, ref });
265
+ counts.scalarsAdded++;
266
+ }
267
+ }
268
+ for (const s of oldModel.scalars) {
269
+ const ref = oldRefs.refByScalarId.get(s.id);
270
+ if (newScalarByRef.has(ref))
271
+ continue; // matched pair, already diffed above
272
+ removals.push({ type: "scalar-removed", name: s.name, ref });
273
+ counts.scalarsRemoved++;
274
+ }
275
+ // --- declared enums (GH #478): same export-ref identity and no-move-detection posture as
276
+ // declared types/scalars above. A rename is never detected — same convention the file header
277
+ // documents for everything else — so it reads as remove+add, not a member change.
278
+ const oldEnumByRef = new Map();
279
+ oldModel.enums.forEach((e, i) => oldEnumByRef.set(oldRefs.refByEnumId.get(e.id) ?? String(i), e));
280
+ const newEnumByRef = new Map();
281
+ newModel.enums.forEach((e, i) => newEnumByRef.set(newRefs.refByEnumId.get(e.id) ?? String(i), e));
282
+ for (const e of newModel.enums) {
283
+ const ref = newRefs.refByEnumId.get(e.id);
284
+ const oldEnum = oldEnumByRef.get(ref);
285
+ if (oldEnum) {
286
+ pushEnumMemberChanges(changes, counts, oldEnum, e, ref);
287
+ }
288
+ else {
289
+ changes.push({ type: "enum-added", name: e.name, ref });
290
+ counts.enumsAdded++;
291
+ }
292
+ }
293
+ for (const e of oldModel.enums) {
294
+ const ref = oldRefs.refByEnumId.get(e.id);
295
+ if (newEnumByRef.has(ref))
296
+ continue; // matched pair, already diffed above
297
+ removals.push({ type: "enum-removed", name: e.name, ref });
298
+ counts.enumsRemoved++;
299
+ }
241
300
  return { changes, removals, counts };
242
301
  }
243
302
  /** Diff a surviving slice's `source` clause (added/removed/changed), same lifecycle shape as note. */
@@ -301,6 +360,26 @@ function pushTypeFieldChanges(changes, counts, oldType, newType, ref) {
301
360
  }
302
361
  }
303
362
  }
363
+ /** Diff a declared enum's own members for an enum present on both sides (same ref, GH #478) —
364
+ * a members-only subset of `pushTypeFieldChanges()` above (no type/optionality dimension — a
365
+ * member is just a value). A rename is never detected (file header's convention) — it reads
366
+ * as remove+add, HEAD order for additions, base order for removals, same as a type's fields. */
367
+ function pushEnumMemberChanges(changes, counts, oldEnum, newEnum, ref) {
368
+ const oldMembers = new Set(oldEnum.members.map((m) => normalizeName(m)));
369
+ const newMembers = new Map(newEnum.members.map((m) => [normalizeName(m), m]));
370
+ for (const [key, m] of newMembers) {
371
+ if (!oldMembers.has(key)) {
372
+ changes.push({ type: "enum-member-added", name: newEnum.name, ref, member: m });
373
+ counts.enumMemberChanges++;
374
+ }
375
+ }
376
+ for (const m of oldEnum.members) {
377
+ if (!newMembers.has(normalizeName(m))) {
378
+ changes.push({ type: "enum-member-removed", name: newEnum.name, ref, member: m });
379
+ counts.enumMemberChanges++;
380
+ }
381
+ }
382
+ }
304
383
  /** Diff field/from/note/issue changes for an element present on both sides (same ref). */
305
384
  function pushElementChanges(changes, counts, oldEl, newEl, sliceName, sliceKey, ref) {
306
385
  const oldFields = new Map((oldEl.fields ?? []).map((f) => [normalizeName(f.name), f]));
@@ -480,6 +559,12 @@ function formatSummary(c) {
480
559
  push(c.typesAdded, "type added", "types added");
481
560
  push(c.typesRemoved, "type removed", "types removed");
482
561
  push(c.typeFieldChanges, "type field change", "type field changes");
562
+ push(c.scalarsAdded, "scalar added", "scalars added");
563
+ push(c.scalarsRemoved, "scalar removed", "scalars removed");
564
+ push(c.scalarBaseChanges, "scalar base change", "scalar base changes");
565
+ push(c.enumsAdded, "enum added", "enums added");
566
+ push(c.enumsRemoved, "enum removed", "enums removed");
567
+ push(c.enumMemberChanges, "enum member change", "enum member changes");
483
568
  push(c.acceptedDivergences, "accepted divergence", "accepted divergences");
484
569
  push(c.slicesSplit, "slice split", "slices split");
485
570
  push(c.slicesMerged, "slice merged", "slices merged");
@@ -580,6 +665,20 @@ function formatEntry(e) {
580
665
  return `~ field "${e.field}" type changed on type "${e.name}": ${typeLabel(e.oldType)} -> ${typeLabel(e.newType)}`;
581
666
  case "type-field-optionality-changed":
582
667
  return `~ field "${e.field}" ${optionalityLabel(e)} on type "${e.name}"`;
668
+ case "scalar-added":
669
+ return `+ scalar "${e.name}"`;
670
+ case "scalar-removed":
671
+ return `- scalar "${e.name}"`;
672
+ case "scalar-base-changed":
673
+ return `~ scalar "${e.name}" base changed: ${typeLabel(e.oldType)} -> ${typeLabel(e.newType)}`;
674
+ case "enum-added":
675
+ return `+ enum "${e.name}"`;
676
+ case "enum-removed":
677
+ return `- enum "${e.name}"`;
678
+ case "enum-member-added":
679
+ return `~ member "${e.member}" added to enum "${e.name}"`;
680
+ case "enum-member-removed":
681
+ return `~ member "${e.member}" removed from enum "${e.name}"`;
583
682
  }
584
683
  }
585
684
  /** Full `em diff` report: rollup line + blank + one line per change, or just "no structural changes". */
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/model/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/model/diff.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,41 @@ export interface TypeRef {
13
13
  /** True when the field's type is `Name[]` (an array of the referenced type) rather than bare. */
14
14
  array: boolean;
15
15
  }
16
+ /** A declared identity scalar (`scalar Name: base`, GH #477) — its own top-level namespace,
17
+ * same tier as `type` (a scalar and a declared `type` may NOT share a name — see
18
+ * `scalar-type-name-collision` — but a scalar and an ELEMENT may, same as `type` today).
19
+ * `base` is kept exactly as written; it is matched against `PUBLIC_SCALAR_TYPES` case-
20
+ * insensitively wherever it's resolved (`scalar-unknown-base` is the validate error for a
21
+ * base that doesn't match any entry). */
22
+ export interface ScalarDecl {
23
+ id: string;
24
+ name: string;
25
+ base: string;
26
+ line: number;
27
+ }
28
+ /** A field's type string resolved to a declared scalar, when it names one — bare or `[]`-
29
+ * suffixed, the same shape `TypeRef` gives declared types. */
30
+ export interface ScalarRef {
31
+ scalarDecl: ScalarDecl;
32
+ array: boolean;
33
+ }
34
+ /** A declared `enum Name { member, … }` (GH #478) — its own top-level namespace, same tier as
35
+ * `type`/`scalar` (a declared enum may NOT share a name with either — see
36
+ * `enum-name-collision` — but an enum and an ELEMENT may, same as `type`/`scalar` today).
37
+ * `members` are kept exactly as written (unquoted, case preserved), in declaration order;
38
+ * duplicate-member/empty-enum checks live in `em validate`. */
39
+ export interface EnumDecl {
40
+ id: string;
41
+ name: string;
42
+ members: string[];
43
+ line: number;
44
+ }
45
+ /** A field's type string resolved to a declared enum, when it names one — bare or `[]`-
46
+ * suffixed, the same shape `TypeRef`/`ScalarRef` give declared types/scalars. */
47
+ export interface EnumRef {
48
+ enumDecl: EnumDecl;
49
+ array: boolean;
50
+ }
16
51
  export declare const DEFAULT_PERSONA = "User";
17
52
  export declare const DEFAULT_CONTEXT = "Domain";
18
53
  export interface Element {
@@ -158,6 +193,14 @@ export interface NormalizedModel {
158
193
  /** Normalized name -> first-declared TypeDecl (references resolve to the first occurrence,
159
194
  * same convention as `byName`). */
160
195
  typesByName: Map<string, TypeDecl>;
196
+ /** Declared identity scalars (`scalar Name: base`, GH #477), in document order. */
197
+ scalars: ScalarDecl[];
198
+ /** Normalized name -> first-declared ScalarDecl (same first-wins convention as `typesByName`). */
199
+ scalarsByName: Map<string, ScalarDecl>;
200
+ /** Declared enums (`enum Name { member, … }`, GH #478), in document order. */
201
+ enums: EnumDecl[];
202
+ /** Normalized name -> first-declared EnumDecl (same first-wins convention as `typesByName`). */
203
+ enumsByName: Map<string, EnumDecl>;
161
204
  }
162
205
  /** One model-declared invariant with the element that declares it (MIL-265). */
163
206
  export interface ModelInvariant {
@@ -184,18 +227,56 @@ export declare function normalize(ast: ModelNode): NormalizedModel;
184
227
  * Shared by `validate.ts` (cycle detection) and `emit/json.ts` (`typeRef` export).
185
228
  */
186
229
  export declare function resolveTypeRef(typeStr: string | undefined, typesByName: Map<string, TypeDecl>): TypeRef | null;
230
+ /**
231
+ * Resolve a field's raw type string to a declared scalar (GH #477's `scalar Name: base`), when
232
+ * it names one — bare or `[]`-suffixed, same matching rule as `resolveTypeRef`. A scalar name
233
+ * and a declared `type` name can never both match (that collision is a validate error,
234
+ * `scalar-type-name-collision`), so this and `resolveTypeRef` are mutually exclusive on any
235
+ * model without that error; callers that need to try both (`resolvePublicType`,
236
+ * `emit/json.ts`'s `fieldExport`) check the declared type first; either order, on a model the
237
+ * error is already red on, is equally well-founded. Shared by `fieldExport` (the `scalarRef`
238
+ * export) and `resolvePublicType` below.
239
+ */
240
+ export declare function resolveScalarRef(typeStr: string | undefined, scalarsByName: Map<string, ScalarDecl>): ScalarRef | null;
241
+ /**
242
+ * Resolve a field's raw type string to a declared enum (GH #478's `enum Name { … }`), when it
243
+ * names one — bare or `[]`-suffixed, same matching rule as `resolveTypeRef`/`resolveScalarRef`.
244
+ * An enum name, a declared `type` name and a declared `scalar` name can never all match the
245
+ * same name (that's a validate error, `enum-name-collision`), so this and the other two are
246
+ * mutually exclusive on any model without that error. Shared by `fieldExport` (the `enumRef`
247
+ * export) and `resolvePublicType` below.
248
+ */
249
+ export declare function resolveEnumRef(typeStr: string | undefined, enumsByName: Map<string, EnumDecl>): EnumRef | null;
250
+ /** One `PUBLIC_SCALAR_TYPES` entry: the TypeSpec type a field of this em type emits as, plus —
251
+ * when the entry narrows a TypeSpec core type with `@format` (GH #444, #443 ask 1) — the one
252
+ * scalar declaration `em api generate` must prepend to the namespace, verbatim, before any
253
+ * field names it. `scalarDecl: null` means the entry maps straight to a TypeSpec core type
254
+ * with no declaration of its own (the common case). */
255
+ export interface PublicScalarEntry {
256
+ /** The TypeSpec type a field of this em type is emitted as (bare, before any `[]`). */
257
+ tsType: string;
258
+ /** The scalar declaration to prepend when this entry is used, or null for a bare core type. */
259
+ scalarDecl: string | null;
260
+ }
187
261
  /**
188
262
  * The fixed public-surface scalar table (MIL-237, briefing R7) — exactly these eleven names,
189
- * matched case-insensitively, each with the one TypeSpec core scalar `em api generate` emits
190
- * for it. Deliberately small and closed: this is NOT a type mapper (no aliases, no generics, no
191
- * configurable entries). A field of a `public` element must name one of these, `X[]` of one of
192
- * these or of a declared `type`, or a declared `type` — else `em validate` raises
263
+ * matched case-insensitively, each with the one TypeSpec type `em api generate` emits for it
264
+ * (and, for `uuid`, the `@format` scalar declaration that narrows it — GH #444). Deliberately
265
+ * small and closed: this is NOT a type mapper (no aliases, no generics, no configurable
266
+ * entries). A field of a `public` element must name one of these, `X[]` of one of these or of a
267
+ * declared `type`, or a declared `type` — else `em validate` raises
193
268
  * `public-field-type-unresolved`. Internal elements keep free-text types.
194
269
  */
195
- export declare const PUBLIC_SCALAR_TYPES: Readonly<Record<string, string>>;
270
+ export declare const PUBLIC_SCALAR_TYPES: Readonly<Record<string, PublicScalarEntry>>;
196
271
  /** The table's names in declaration order, as printed in diagnostics and docs. */
197
272
  export declare const PUBLIC_SCALAR_TYPE_NAMES: readonly string[];
198
- /** A public field's type resolved against the fixed table or a declared type. */
273
+ /** A public field's type resolved against the fixed table, a declared identity scalar, a
274
+ * declared enum, or a declared type. `"identity"` (GH #477) carries the matched `ScalarDecl`
275
+ * plus `base` (the table key it extends, always a `PUBLIC_SCALAR_TYPES` key) and `tsType`
276
+ * (that table entry's own TypeSpec type, e.g. `"Uuid"` for a `uuid`-based scalar) — the same
277
+ * pair `em api generate`'s emitter needs to decide what the identity scalar's own
278
+ * `scalar X extends …;` declaration extends. `"enum"` (GH #478) carries the matched
279
+ * `EnumDecl` — an enum emits its own `enum X { … }` declaration, nothing to extend. */
199
280
  export type PublicTypeResolution = {
200
281
  kind: "scalar";
201
282
  scalar: string;
@@ -205,13 +286,28 @@ export type PublicTypeResolution = {
205
286
  kind: "declared";
206
287
  typeDecl: TypeDecl;
207
288
  array: boolean;
289
+ } | {
290
+ kind: "identity";
291
+ scalarDecl: ScalarDecl;
292
+ base: string;
293
+ tsType: string;
294
+ array: boolean;
295
+ } | {
296
+ kind: "enum";
297
+ enumDecl: EnumDecl;
298
+ array: boolean;
208
299
  };
209
300
  /**
210
301
  * Resolve a field type string under the strict public-surface rule (R7). Declared types win
211
- * (same precedence `resolveTypeRef` already gives `em export`'s `typeRef`), then the fixed
212
- * scalar table, bare or `[]`-suffixed. Anything else — including an absent type — is `null`.
302
+ * (same precedence `resolveTypeRef` already gives `em export`'s `typeRef`), then a declared
303
+ * identity scalar (GH #477), then a declared enum (GH #478), then the fixed scalar table, bare
304
+ * or `[]`-suffixed. A declared type, a declared scalar and a declared enum can never all match
305
+ * the same name (`scalar-type-name-collision`/`enum-name-collision` are validate errors
306
+ * precisely so this precedence never has to break a real tie). Anything else — including an
307
+ * absent type, or an identity scalar whose own `base` doesn't resolve in the table
308
+ * (`scalar-unknown-base`, itself a validate error) — is `null`.
213
309
  */
214
- export declare function resolvePublicType(typeStr: string | undefined, typesByName: Map<string, TypeDecl>): PublicTypeResolution | null;
310
+ export declare function resolvePublicType(typeStr: string | undefined, typesByName: Map<string, TypeDecl>, scalarsByName: Map<string, ScalarDecl>, enumsByName: Map<string, EnumDecl>): PublicTypeResolution | null;
215
311
  /** Resolve an arrow endpoint (given by display name) to an element id. */
216
312
  export declare function resolveByName(byName: Map<string, Element[]>, name: string): string | undefined;
217
313
  /** GH #344: the commands that record a logical event - every command in every slice where an