apcore-js 0.20.0 → 0.21.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 (106) hide show
  1. package/dist/acl-file.d.ts +12 -0
  2. package/dist/acl-file.d.ts.map +1 -0
  3. package/dist/acl-file.js +46 -0
  4. package/dist/acl-file.js.map +1 -0
  5. package/dist/acl.d.ts.map +1 -1
  6. package/dist/acl.js +20 -37
  7. package/dist/acl.js.map +1 -1
  8. package/dist/bindings.d.ts.map +1 -1
  9. package/dist/bindings.js +2 -21
  10. package/dist/bindings.js.map +1 -1
  11. package/dist/browser/index.d.ts +77 -0
  12. package/dist/browser/index.d.ts.map +1 -0
  13. package/dist/browser/index.js +78 -0
  14. package/dist/browser/index.js.map +1 -0
  15. package/dist/builtin-steps.js +2 -2
  16. package/dist/builtin-steps.js.map +1 -1
  17. package/dist/client.d.ts +1 -1
  18. package/dist/client.d.ts.map +1 -1
  19. package/dist/client.js +12 -4
  20. package/dist/client.js.map +1 -1
  21. package/dist/config-defaults.d.ts +30 -0
  22. package/dist/config-defaults.d.ts.map +1 -0
  23. package/dist/config-defaults.js +83 -0
  24. package/dist/config-defaults.js.map +1 -0
  25. package/dist/config.d.ts +12 -7
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +27 -125
  28. package/dist/config.js.map +1 -1
  29. package/dist/executor.d.ts.map +1 -1
  30. package/dist/executor.js +39 -1
  31. package/dist/executor.js.map +1 -1
  32. package/dist/generated/version.d.ts +1 -1
  33. package/dist/generated/version.js +1 -1
  34. package/dist/index.d.ts +11 -3
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +13 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/middleware/tracing-otel-default.d.ts +16 -0
  39. package/dist/middleware/tracing-otel-default.d.ts.map +1 -0
  40. package/dist/middleware/tracing-otel-default.js +25 -0
  41. package/dist/middleware/tracing-otel-default.js.map +1 -0
  42. package/dist/middleware/tracing.d.ts.map +1 -1
  43. package/dist/middleware/tracing.js +9 -10
  44. package/dist/middleware/tracing.js.map +1 -1
  45. package/dist/module.d.ts +94 -2
  46. package/dist/module.d.ts.map +1 -1
  47. package/dist/module.js +99 -2
  48. package/dist/module.js.map +1 -1
  49. package/dist/registry/metadata-pure.d.ts +13 -0
  50. package/dist/registry/metadata-pure.d.ts.map +1 -0
  51. package/dist/registry/metadata-pure.js +67 -0
  52. package/dist/registry/metadata-pure.js.map +1 -0
  53. package/dist/registry/metadata.d.ts +8 -4
  54. package/dist/registry/metadata.d.ts.map +1 -1
  55. package/dist/registry/metadata.js +9 -70
  56. package/dist/registry/metadata.js.map +1 -1
  57. package/dist/registry/multi-class.d.ts +14 -31
  58. package/dist/registry/multi-class.d.ts.map +1 -1
  59. package/dist/registry/multi-class.js.map +1 -1
  60. package/dist/registry/registry.d.ts +149 -4
  61. package/dist/registry/registry.d.ts.map +1 -1
  62. package/dist/registry/registry.js +318 -19
  63. package/dist/registry/registry.js.map +1 -1
  64. package/dist/registry/scanner.d.ts.map +1 -1
  65. package/dist/registry/scanner.js +3 -15
  66. package/dist/registry/scanner.js.map +1 -1
  67. package/dist/schema/annotations.d.ts.map +1 -1
  68. package/dist/schema/annotations.js +1 -0
  69. package/dist/schema/annotations.js.map +1 -1
  70. package/dist/schema/loader-pure.d.ts +24 -0
  71. package/dist/schema/loader-pure.d.ts.map +1 -0
  72. package/dist/schema/loader-pure.js +153 -0
  73. package/dist/schema/loader-pure.js.map +1 -0
  74. package/dist/schema/loader.d.ts +14 -30
  75. package/dist/schema/loader.d.ts.map +1 -1
  76. package/dist/schema/loader.js +20 -201
  77. package/dist/schema/loader.js.map +1 -1
  78. package/dist/schema/ref-resolver.d.ts.map +1 -1
  79. package/dist/schema/ref-resolver.js +5 -19
  80. package/dist/schema/ref-resolver.js.map +1 -1
  81. package/dist/sys-modules/control.d.ts +0 -78
  82. package/dist/sys-modules/control.d.ts.map +1 -1
  83. package/dist/sys-modules/health.d.ts +0 -138
  84. package/dist/sys-modules/health.d.ts.map +1 -1
  85. package/dist/sys-modules/install.d.ts +12 -0
  86. package/dist/sys-modules/install.d.ts.map +1 -0
  87. package/dist/sys-modules/install.js +14 -0
  88. package/dist/sys-modules/install.js.map +1 -0
  89. package/dist/sys-modules/manifest.d.ts +1 -141
  90. package/dist/sys-modules/manifest.d.ts.map +1 -1
  91. package/dist/sys-modules/overrides-file.d.ts +14 -0
  92. package/dist/sys-modules/overrides-file.d.ts.map +1 -0
  93. package/dist/sys-modules/overrides-file.js +31 -0
  94. package/dist/sys-modules/overrides-file.js.map +1 -0
  95. package/dist/sys-modules/registration.d.ts.map +1 -1
  96. package/dist/sys-modules/registration.js +41 -12
  97. package/dist/sys-modules/registration.js.map +1 -1
  98. package/dist/sys-modules/toggle.d.ts +0 -70
  99. package/dist/sys-modules/toggle.d.ts.map +1 -1
  100. package/dist/sys-modules/usage.d.ts +1 -132
  101. package/dist/sys-modules/usage.d.ts.map +1 -1
  102. package/dist/utils/index.d.ts +2 -3
  103. package/dist/utils/index.d.ts.map +1 -1
  104. package/dist/utils/index.js +3 -11
  105. package/dist/utils/index.js.map +1 -1
  106. package/package.json +17 -5
package/dist/module.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Module interface and related data types.
3
3
  */
4
- import type { TSchema } from '@sinclair/typebox';
4
+ import { type TSchema } from '@sinclair/typebox';
5
5
  import type { Context } from './context.js';
6
6
  export interface ModuleAnnotations {
7
7
  readonly readonly: boolean;
@@ -20,6 +20,19 @@ export interface ModuleAnnotations {
20
20
  readonly paginated: boolean;
21
21
  /** Pagination strategy. Accepts any string. */
22
22
  readonly paginationStyle: string;
23
+ /**
24
+ * Whether the module appears in enumeration surfaces (`Registry.list()`,
25
+ * `Registry.find()`, manifest export, MCP `tools/list`). Defaults to `true`
26
+ * so existing modules remain visible. Setting `false` keeps the module
27
+ * callable by exact ID but hides it from discovery — `ephemeral.*` modules
28
+ * SHOULD set this to `false` per PROTOCOL_SPEC §4.4 / RFC
29
+ * `apcore/docs/spec/rfc-ephemeral-modules.md`.
30
+ *
31
+ * Optional on the interface so v0.20.x callers building `ModuleAnnotations`
32
+ * literals keep compiling; absent values default to `true` per spec when
33
+ * `Registry._isDiscoverable` interprets them.
34
+ */
35
+ readonly discoverable?: boolean;
23
36
  /** Extension dictionary for ecosystem package metadata. */
24
37
  readonly extra: Readonly<Record<string, unknown>>;
25
38
  }
@@ -65,8 +78,74 @@ export interface PreflightResult {
65
78
  readonly checks: PreflightCheckResult[];
66
79
  readonly requiresApproval: boolean;
67
80
  readonly errors: Array<Record<string, unknown>>;
81
+ /**
82
+ * Optional. Module-self-reported structured prediction of the changes that
83
+ * executing the call would produce, populated by `Executor.validate()` when
84
+ * the target module implements `preview()` (see RFC
85
+ * `apcore/docs/spec/rfc-preview-method.md`, currently Draft / RFC).
86
+ *
87
+ * - Absent (or empty) when the module does not implement `preview()` or
88
+ * when `preview()` returned `null`.
89
+ * - When `preview()` throws, `predictedChanges` is left unset and a
90
+ * `module_preview` advisory check carries the warning, mirroring
91
+ * `preflight()` semantics (warnings do not fail validation).
92
+ */
93
+ readonly predictedChanges?: Change[];
68
94
  }
69
- export declare function createPreflightResult(checks: PreflightCheckResult[], requiresApproval?: boolean): PreflightResult;
95
+ export declare function createPreflightResult(checks: PreflightCheckResult[], requiresApproval?: boolean, predictedChanges?: Change[]): PreflightResult;
96
+ /**
97
+ * Structured prediction of a single side-effect that executing a module call
98
+ * would produce. Per RFC `apcore/docs/spec/rfc-preview-method.md`
99
+ * (Draft / RFC, target acceptance v0.21.0).
100
+ *
101
+ * `action`, `target`, and `summary` are required; module authors define their
102
+ * own free-form taxonomy for `action` (e.g. "write", "delete", "send",
103
+ * "charge", "publish") and `target` (e.g. "users.42", "smtp:user@example.com").
104
+ *
105
+ * `before` / `after` are optional snapshots of prior / predicted state. Both
106
+ * are typed `unknown` to keep the schema heterogeneous across module classes
107
+ * (DB writes, network calls, file I/O, email sends).
108
+ *
109
+ * Extension fields with the `x-` prefix are permitted (consistent with
110
+ * PROTOCOL_SPEC §4.4 extras).
111
+ */
112
+ export interface Change {
113
+ /** Free-form verb describing the kind of change (e.g. "write", "delete", "send"). */
114
+ action: string;
115
+ /** Free-form identifier of what is changed (e.g. "users.42", "stripe:charge:ch_abc"). */
116
+ target: string;
117
+ /** Required, human-readable single-line summary of the change. */
118
+ summary: string;
119
+ /** Optional. Snapshot of the prior state, when observable. */
120
+ before?: unknown;
121
+ /** Optional. Predicted new state. */
122
+ after?: unknown;
123
+ /** Extension fields. Keys MUST start with the `x-` prefix. */
124
+ [key: `x-${string}`]: unknown;
125
+ }
126
+ /**
127
+ * Module's structured prediction of the changes that calling `execute()` with
128
+ * the given inputs would produce. Returned by the optional `Module.preview()`
129
+ * method; folded into `PreflightResult.predictedChanges` by
130
+ * `Executor.validate()`.
131
+ */
132
+ export interface PreviewResult {
133
+ /** Ordered list of predicted side-effects. */
134
+ changes: Change[];
135
+ }
136
+ /**
137
+ * TypeBox schema mirroring `Change`. Exported alongside the TypeScript type
138
+ * for runtime validation / wire-format use. Mirrors the JSON Schema sketch in
139
+ * `apcore/docs/spec/rfc-preview-method.md`. The raw JSON Schema body
140
+ * (`type`, `required`, `properties`, `patternProperties`,
141
+ * `additionalProperties: false`) is the canonical cross-SDK wire format; the
142
+ * `[Kind]` field routes `Value.Check` to the registered checker above.
143
+ */
144
+ export declare const TChange: import("@sinclair/typebox").TUnsafe<Change>;
145
+ /** TypeBox schema mirroring `PreviewResult`. */
146
+ export declare const TPreviewResult: import("@sinclair/typebox").TObject<{
147
+ changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<Change>>;
148
+ }>;
70
149
  export interface Module {
71
150
  inputSchema: TSchema;
72
151
  outputSchema: TSchema;
@@ -78,6 +157,19 @@ export interface Module {
78
157
  validate?(inputs: Record<string, unknown>): ValidationResult | Promise<ValidationResult>;
79
158
  /** Optional: Domain-specific pre-execution warnings (called by Executor.validate() Check 7). Advisory only — warnings do NOT block execution. */
80
159
  preflight?(inputs: Record<string, unknown>, context: Context): string[] | Promise<string[]>;
160
+ /**
161
+ * Optional: Return a structured prediction of the changes this call would
162
+ * produce. Invoked by `Executor.validate()` after the standard validation
163
+ * pipeline succeeds, only on modules that implement it.
164
+ *
165
+ * Per RFC `apcore/docs/spec/rfc-preview-method.md` (currently Draft / RFC):
166
+ * - MUST NOT have side effects.
167
+ * - Returning `null` (or omitting the method) means "no predicted changes".
168
+ * - Throwing / rejecting is treated as advisory and does NOT fail validation.
169
+ * The error is surfaced as a warning via the `module_preview` check,
170
+ * matching `preflight()` semantics.
171
+ */
172
+ preview?(inputs: Record<string, unknown>, context: Context): PreviewResult | null | Promise<PreviewResult | null>;
81
173
  /** Optional: Return module description for LLM/AI tool discovery. */
82
174
  describe?(): ModuleDescription | Promise<ModuleDescription>;
83
175
  /** Optional: Called when module is loaded into the registry. */
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
package/dist/module.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Module interface and related data types.
3
3
  */
4
+ import { Kind, Type, TypeRegistry } from '@sinclair/typebox';
4
5
  export const DEFAULT_ANNOTATIONS = Object.freeze({
5
6
  readonly: false,
6
7
  destructive: false,
@@ -13,6 +14,7 @@ export const DEFAULT_ANNOTATIONS = Object.freeze({
13
14
  cacheKeyFields: null,
14
15
  paginated: false,
15
16
  paginationStyle: 'cursor',
17
+ discoverable: true,
16
18
  extra: Object.freeze({}),
17
19
  });
18
20
  /**
@@ -35,7 +37,7 @@ export function createAnnotations(overrides) {
35
37
  const KNOWN_WIRE_KEYS = new Set([
36
38
  'readonly', 'destructive', 'idempotent', 'requires_approval',
37
39
  'open_world', 'streaming', 'cacheable', 'cache_ttl',
38
- 'cache_key_fields', 'paginated', 'pagination_style', 'extra',
40
+ 'cache_key_fields', 'paginated', 'pagination_style', 'discoverable', 'extra',
39
41
  ]);
40
42
  /**
41
43
  * Serialize ModuleAnnotations to a snake_case JSON-compatible record.
@@ -53,6 +55,7 @@ export function annotationsToJSON(a) {
53
55
  cache_key_fields: a.cacheKeyFields,
54
56
  paginated: a.paginated,
55
57
  pagination_style: a.paginationStyle,
58
+ discoverable: a.discoverable,
56
59
  extra: a.extra,
57
60
  };
58
61
  }
@@ -90,15 +93,109 @@ export function annotationsFromJSON(data) {
90
93
  cacheKeyFields: data['cache_key_fields'] ?? null,
91
94
  paginated: data['paginated'] ?? false,
92
95
  paginationStyle: data['pagination_style'] ?? 'cursor',
96
+ // PROTOCOL_SPEC §4.4 — defaults to true so wires from older SDKs that
97
+ // don't yet emit the field stay backward-compatible.
98
+ discoverable: data['discoverable'] ?? true,
93
99
  // §4.4.1 rule 7: nested explicit `extra` wins over legacy top-level overflow.
94
100
  extra: Object.freeze({ ...overflow, ...explicitExtra }),
95
101
  });
96
102
  }
97
- export function createPreflightResult(checks, requiresApproval = false) {
103
+ export function createPreflightResult(checks, requiresApproval = false, predictedChanges) {
98
104
  const valid = checks.every(c => c.passed);
99
105
  const errors = checks
100
106
  .filter(c => !c.passed && c.error != null)
101
107
  .map(c => c.error);
108
+ if (predictedChanges !== undefined) {
109
+ return { valid, checks, requiresApproval, errors, predictedChanges };
110
+ }
102
111
  return { valid, checks, requiresApproval, errors };
103
112
  }
113
+ /**
114
+ * Custom TypeBox kind for `Change`.
115
+ *
116
+ * Encoded via `Type.Unsafe<Change>(...)` so the underlying JSON Schema can
117
+ * carry both `patternProperties: { "^x-": {} }` (admitting arbitrary `x-*`
118
+ * extension keys per PROTOCOL_SPEC §4.4 / §4.6 conventions) and
119
+ * `additionalProperties: false` (rejecting unknown non-`x-` keys). TypeBox
120
+ * 0.34's `Type.Object` schema-checker does not consult `patternProperties`,
121
+ * so a `Type.Object({...}, { additionalProperties: false })` form would
122
+ * incorrectly reject `x-*` keys; and `Type.Intersect([Object, Record])`
123
+ * loses `additionalProperties: false` precision. The cross-SDK
124
+ * schema-encoding table in `apcore/docs/spec/rfc-preview-method.md`
125
+ * ("Change.x-* extension fields") prescribes the `Type.Unsafe` escape hatch.
126
+ *
127
+ * To make the schema usable with `Value.Check` (which routes by `[Kind]`), we
128
+ * register a custom `'apcore:Change'` kind whose checker enforces the same
129
+ * shape the JSON Schema describes. The JSON Schema body remains the canonical
130
+ * cross-SDK wire form.
131
+ */
132
+ const CHANGE_KIND = 'apcore:Change';
133
+ if (!TypeRegistry.Has(CHANGE_KIND)) {
134
+ TypeRegistry.Set(CHANGE_KIND, (_schema, value) => {
135
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
136
+ return false;
137
+ }
138
+ const v = value;
139
+ if (typeof v.action !== 'string')
140
+ return false;
141
+ if (typeof v.target !== 'string')
142
+ return false;
143
+ if (typeof v.summary !== 'string')
144
+ return false;
145
+ const known = new Set(['action', 'target', 'summary', 'before', 'after']);
146
+ for (const key of Object.keys(v)) {
147
+ if (known.has(key))
148
+ continue;
149
+ // Anything else MUST start with `x-` (any value).
150
+ if (!key.startsWith('x-'))
151
+ return false;
152
+ }
153
+ return true;
154
+ });
155
+ }
156
+ /**
157
+ * TypeBox schema mirroring `Change`. Exported alongside the TypeScript type
158
+ * for runtime validation / wire-format use. Mirrors the JSON Schema sketch in
159
+ * `apcore/docs/spec/rfc-preview-method.md`. The raw JSON Schema body
160
+ * (`type`, `required`, `properties`, `patternProperties`,
161
+ * `additionalProperties: false`) is the canonical cross-SDK wire format; the
162
+ * `[Kind]` field routes `Value.Check` to the registered checker above.
163
+ */
164
+ export const TChange = Type.Unsafe({
165
+ [Kind]: CHANGE_KIND,
166
+ type: 'object',
167
+ required: ['action', 'target', 'summary'],
168
+ properties: {
169
+ action: {
170
+ type: 'string',
171
+ description: 'Free-form verb describing the kind of change.',
172
+ },
173
+ target: {
174
+ type: 'string',
175
+ description: 'Free-form identifier of what is changed.',
176
+ },
177
+ summary: {
178
+ type: 'string',
179
+ description: 'Required, human-readable single-line summary of the change.',
180
+ },
181
+ before: {
182
+ // unknown — module-class specific. JSON Schema `{}` accepts any value.
183
+ description: 'Optional. Snapshot of the prior state, when observable.',
184
+ },
185
+ after: {
186
+ description: 'Optional. Predicted new state.',
187
+ },
188
+ },
189
+ patternProperties: {
190
+ // Arbitrary x-* extension keys with arbitrary values (PROTOCOL_SPEC §4.4).
191
+ '^x-': {},
192
+ },
193
+ additionalProperties: false,
194
+ });
195
+ /** TypeBox schema mirroring `PreviewResult`. */
196
+ export const TPreviewResult = Type.Object({
197
+ changes: Type.Array(TChange, {
198
+ description: "Module's prediction of what would change if the call were executed.",
199
+ }),
200
+ });
104
201
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Pure metadata helpers — used by both the Node-side `Registry.discover`
3
+ * pipeline and the browser-safe Registry surface (which still merges
4
+ * code-side annotations even though it never reads YAML files).
5
+ *
6
+ * The filesystem-touching counterparts (`loadMetadata`, `loadIdMap`)
7
+ * live in `./metadata.ts` and statically import `node:fs`. Browser
8
+ * consumers re-export from here directly.
9
+ */
10
+ import type { DependencyInfo } from './types.js';
11
+ export declare function parseDependencies(depsRaw: Array<Record<string, unknown>>): DependencyInfo[];
12
+ export declare function mergeModuleMetadata(moduleObj: Record<string, unknown>, meta: Record<string, unknown>): Record<string, unknown>;
13
+ //# sourceMappingURL=metadata-pure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-pure.d.ts","sourceRoot":"","sources":["../../src/registry/metadata-pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc,EAAE,CAiB3F;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0CzB"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Pure metadata helpers — used by both the Node-side `Registry.discover`
3
+ * pipeline and the browser-safe Registry surface (which still merges
4
+ * code-side annotations even though it never reads YAML files).
5
+ *
6
+ * The filesystem-touching counterparts (`loadMetadata`, `loadIdMap`)
7
+ * live in `./metadata.ts` and statically import `node:fs`. Browser
8
+ * consumers re-export from here directly.
9
+ */
10
+ import { mergeAnnotations, mergeExamples } from '../schema/annotations.js';
11
+ export function parseDependencies(depsRaw) {
12
+ if (!depsRaw || depsRaw.length === 0)
13
+ return [];
14
+ const result = [];
15
+ for (const dep of depsRaw) {
16
+ const moduleId = dep['module_id'];
17
+ if (!moduleId) {
18
+ console.warn(`[apcore:metadata] Dependency entry missing 'module_id', skipping`);
19
+ continue;
20
+ }
21
+ result.push({
22
+ moduleId,
23
+ version: dep['version'] ?? null,
24
+ optional: dep['optional'] ?? false,
25
+ });
26
+ }
27
+ return result;
28
+ }
29
+ export function mergeModuleMetadata(moduleObj, meta) {
30
+ const codeDesc = moduleObj['description'] ?? '';
31
+ const codeName = moduleObj['name'] ?? null;
32
+ const codeTags = moduleObj['tags'] ?? [];
33
+ const codeVersion = moduleObj['version'] ?? '1.0.0';
34
+ const codeAnnotations = moduleObj['annotations'] ?? null;
35
+ const codeExamples = moduleObj['examples'] ?? null;
36
+ const codeMetadata = moduleObj['metadata'] ?? {};
37
+ const codeDocs = moduleObj['documentation'] ?? null;
38
+ const yamlMetadata = meta['metadata'] ?? {};
39
+ const mergedMetadata = { ...codeMetadata, ...yamlMetadata };
40
+ // Spec PROTOCOL_SPEC.md §4.13: annotations must be FIELD-LEVEL merged
41
+ // (YAML > code > defaults), not whole-replaced. Delegates to
42
+ // mergeAnnotations / mergeExamples in schema/annotations.ts.
43
+ const yamlAnnotations = meta['annotations'];
44
+ let mergedAnnotations;
45
+ if (yamlAnnotations == null && codeAnnotations == null) {
46
+ mergedAnnotations = null;
47
+ }
48
+ else {
49
+ mergedAnnotations = mergeAnnotations(yamlAnnotations, codeAnnotations);
50
+ }
51
+ const yamlExamples = meta['examples'];
52
+ const mergedExamples = mergeExamples(yamlExamples, codeExamples);
53
+ return {
54
+ description: meta['description'] || codeDesc,
55
+ name: meta['name'] || codeName,
56
+ // Tags use an explicit `!= null` check (not `||`) so a deliberately
57
+ // empty YAML list (`tags: []`) overrides code-set tags. Pinned by
58
+ // the "YAML empty array for tags overrides code tags" test.
59
+ tags: meta['tags'] != null ? meta['tags'] : codeTags || [],
60
+ version: meta['version'] || codeVersion,
61
+ annotations: mergedAnnotations,
62
+ examples: mergedExamples,
63
+ metadata: mergedMetadata,
64
+ documentation: meta['documentation'] || codeDocs,
65
+ };
66
+ }
67
+ //# sourceMappingURL=metadata-pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-pure.js","sourceRoot":"","sources":["../../src/registry/metadata-pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG3E,MAAM,UAAU,iBAAiB,CAAC,OAAuC;IACvE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAuB,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACjF,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ;YACR,OAAO,EAAG,GAAG,CAAC,SAAS,CAAY,IAAI,IAAI;YAC3C,QAAQ,EAAG,GAAG,CAAC,UAAU,CAAa,IAAI,KAAK;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAkC,EAClC,IAA6B;IAE7B,MAAM,QAAQ,GAAI,SAAS,CAAC,aAAa,CAAY,IAAI,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAI,SAAS,CAAC,MAAM,CAAY,IAAI,IAAI,CAAC;IACvD,MAAM,QAAQ,GAAI,SAAS,CAAC,MAAM,CAAc,IAAI,EAAE,CAAC;IACvD,MAAM,WAAW,GAAI,SAAS,CAAC,SAAS,CAAY,IAAI,OAAO,CAAC;IAChE,MAAM,eAAe,GAClB,SAAS,CAAC,aAAa,CAA0C,IAAI,IAAI,CAAC;IAC7E,MAAM,YAAY,GACf,SAAS,CAAC,UAAU,CAAwC,IAAI,IAAI,CAAC;IACxE,MAAM,YAAY,GAAI,SAAS,CAAC,UAAU,CAA6B,IAAI,EAAE,CAAC;IAC9E,MAAM,QAAQ,GAAI,SAAS,CAAC,eAAe,CAAY,IAAI,IAAI,CAAC;IAEhE,MAAM,YAAY,GAAI,IAAI,CAAC,UAAU,CAA6B,IAAI,EAAE,CAAC;IACzE,MAAM,cAAc,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC;IAE5D,sEAAsE;IACtE,6DAA6D;IAC7D,6DAA6D;IAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAA+C,CAAC;IAC1F,IAAI,iBAA2C,CAAC;IAChD,IAAI,eAAe,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QACvD,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,iBAAiB,GAAG,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAsD,CAAC;IAC3F,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAEjE,OAAO;QACL,WAAW,EAAG,IAAI,CAAC,aAAa,CAAY,IAAI,QAAQ;QACxD,IAAI,EAAG,IAAI,CAAC,MAAM,CAAY,IAAI,QAAQ;QAC1C,oEAAoE;QACpE,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1D,OAAO,EAAG,IAAI,CAAC,SAAS,CAAY,IAAI,WAAW;QACnD,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,cAAc;QACxB,aAAa,EAAG,IAAI,CAAC,eAAe,CAAY,IAAI,QAAQ;KAC7D,CAAC;AACJ,CAAC"}
@@ -1,9 +1,13 @@
1
1
  /**
2
- * Metadata and ID map loading for the registry system.
2
+ * Metadata and ID map loading for the registry system (Node-side).
3
+ *
4
+ * Pure helpers (`parseDependencies`, `mergeModuleMetadata`) live in
5
+ * `./metadata-pure.ts` and are re-exported here so existing
6
+ * `import { … } from './metadata.js'` paths keep working from Node.
7
+ * Browser consumers must import from `./metadata-pure.js` directly to
8
+ * avoid pulling `node:fs` into the bundle.
3
9
  */
4
- import type { DependencyInfo } from './types.js';
10
+ export { parseDependencies, mergeModuleMetadata } from './metadata-pure.js';
5
11
  export declare function loadMetadata(metaPath: string): Record<string, unknown>;
6
- export declare function parseDependencies(depsRaw: Array<Record<string, unknown>>): DependencyInfo[];
7
- export declare function mergeModuleMetadata(moduleObj: Record<string, unknown>, meta: Record<string, unknown>): Record<string, unknown>;
8
12
  export declare function loadIdMap(idMapPath: string): Record<string, Record<string, unknown>>;
9
13
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBtE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc,EAAE,CAiB3F;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4CzB;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoCpF"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBtE;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmCpF"}
@@ -1,17 +1,17 @@
1
1
  /**
2
- * Metadata and ID map loading for the registry system.
2
+ * Metadata and ID map loading for the registry system (Node-side).
3
+ *
4
+ * Pure helpers (`parseDependencies`, `mergeModuleMetadata`) live in
5
+ * `./metadata-pure.ts` and are re-exported here so existing
6
+ * `import { … } from './metadata.js'` paths keep working from Node.
7
+ * Browser consumers must import from `./metadata-pure.js` directly to
8
+ * avoid pulling `node:fs` into the bundle.
3
9
  */
10
+ import { existsSync, readFileSync } from 'node:fs';
4
11
  import yaml from 'js-yaml';
5
12
  import { ConfigError, ConfigNotFoundError } from '../errors.js';
6
- import { mergeAnnotations, mergeExamples } from '../schema/annotations.js';
7
- // Lazy-load Node.js built-in modules for browser compatibility
8
- let _nodeFs = null;
9
- try {
10
- _nodeFs = await import('node:fs');
11
- }
12
- catch { /* browser environment */ }
13
+ export { parseDependencies, mergeModuleMetadata } from './metadata-pure.js';
13
14
  export function loadMetadata(metaPath) {
14
- const { existsSync, readFileSync } = _nodeFs;
15
15
  if (!existsSync(metaPath))
16
16
  return {};
17
17
  const content = readFileSync(metaPath, 'utf-8');
@@ -29,68 +29,7 @@ export function loadMetadata(metaPath) {
29
29
  }
30
30
  return parsed;
31
31
  }
32
- export function parseDependencies(depsRaw) {
33
- if (!depsRaw || depsRaw.length === 0)
34
- return [];
35
- const result = [];
36
- for (const dep of depsRaw) {
37
- const moduleId = dep['module_id'];
38
- if (!moduleId) {
39
- console.warn(`[apcore:metadata] Dependency entry missing 'module_id', skipping`);
40
- continue;
41
- }
42
- result.push({
43
- moduleId,
44
- version: dep['version'] ?? null,
45
- optional: dep['optional'] ?? false,
46
- });
47
- }
48
- return result;
49
- }
50
- export function mergeModuleMetadata(moduleObj, meta) {
51
- const codeDesc = moduleObj['description'] ?? '';
52
- const codeName = moduleObj['name'] ?? null;
53
- const codeTags = moduleObj['tags'] ?? [];
54
- const codeVersion = moduleObj['version'] ?? '1.0.0';
55
- const codeAnnotations = moduleObj['annotations'] ?? null;
56
- const codeExamples = moduleObj['examples'] ?? null;
57
- const codeMetadata = moduleObj['metadata'] ?? {};
58
- const codeDocs = moduleObj['documentation'] ?? null;
59
- const yamlMetadata = meta['metadata'] ?? {};
60
- const mergedMetadata = { ...codeMetadata, ...yamlMetadata };
61
- // Spec PROTOCOL_SPEC.md §4.13: annotations must be FIELD-LEVEL merged
62
- // (YAML > code > defaults), not whole-replaced. The previous
63
- // implementation passed `meta['annotations']` through verbatim, which
64
- // silently dropped any code-set flag the YAML did not also set.
65
- // Delegates to mergeAnnotations / mergeExamples in schema/annotations.ts.
66
- const yamlAnnotations = meta['annotations'];
67
- let mergedAnnotations;
68
- if (yamlAnnotations == null && codeAnnotations == null) {
69
- mergedAnnotations = null;
70
- }
71
- else {
72
- mergedAnnotations = mergeAnnotations(yamlAnnotations, codeAnnotations);
73
- }
74
- const yamlExamples = meta['examples'];
75
- const mergedExamples = mergeExamples(yamlExamples, codeExamples);
76
- return {
77
- description: meta['description'] || codeDesc,
78
- name: meta['name'] || codeName,
79
- // Tags use an explicit `!= null` check (not `||`) so a deliberately
80
- // empty YAML list (`tags: []`) overrides code-set tags. The other
81
- // scalar fields above use `||` because empty-string YAML is treated
82
- // as "absent". Pinned by the "YAML empty array for tags overrides
83
- // code tags" test in tests/registry/test-metadata.test.ts.
84
- tags: meta['tags'] != null ? meta['tags'] : codeTags || [],
85
- version: meta['version'] || codeVersion,
86
- annotations: mergedAnnotations,
87
- examples: mergedExamples,
88
- metadata: mergedMetadata,
89
- documentation: meta['documentation'] || codeDocs,
90
- };
91
- }
92
32
  export function loadIdMap(idMapPath) {
93
- const { existsSync, readFileSync } = _nodeFs;
94
33
  if (!existsSync(idMapPath)) {
95
34
  throw new ConfigNotFoundError(idMapPath);
96
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/registry/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,WAAW,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,IAAK,MAAkC,CAAC,EAAE,CAAC;QAC1G,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAI,MAAkC,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAA4C,EAAE,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAI,KAAiC,CAAC,MAAM,CAAW,CAAC;QACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,GAAG;YACjB,EAAE,EAAI,KAAiC,CAAC,IAAI,CAAY,IAAI,QAAQ;YACpE,KAAK,EAAG,KAAiC,CAAC,OAAO,CAAC,IAAI,IAAI;SAC3D,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -6,6 +6,20 @@
6
6
  export interface ClassDescriptor {
7
7
  readonly name: string;
8
8
  readonly implementsModule: boolean;
9
+ /**
10
+ * Per-class opt-in marker for multi-class mode (apcore decision-log D-06).
11
+ *
12
+ * When at least one qualifying class in the file has `multiClass: true`,
13
+ * the discovery routine derives a distinct module ID per class. When no
14
+ * qualifying class sets the flag, whole-file mode is used and the bare
15
+ * base_id is returned.
16
+ *
17
+ * This field replaces the previous global `multiClassEnabled` parameter
18
+ * on `Registry.discoverMultiClass`. See apcore commit 973410b for the
19
+ * upstream cleanup that removed the dead `extensions.multi_class_discovery`
20
+ * config toggle.
21
+ */
22
+ readonly multiClass?: boolean;
9
23
  }
10
24
  export interface MultiClassEntry {
11
25
  readonly moduleId: string;
@@ -23,35 +37,4 @@ export interface MultiClassEntry {
23
37
  * 6. Strip leading and trailing `_`.
24
38
  */
25
39
  export declare function classNameToSegment(className: string): string;
26
- /**
27
- * Discover module IDs for classes in a single file under multi-class mode.
28
- *
29
- * Implements the Registry.discover_multi_class contract from PROTOCOL_SPEC §2.1.1.
30
- *
31
- * When multiClassEnabled is false (the default — multi-class mode is opt-in),
32
- * only the first qualifying class is used and the bare base_id is returned.
33
- *
34
- * When multiClassEnabled is true and exactly one class qualifies:
35
- * - If the class segment matches the file's last path segment (class named after
36
- * the file), the bare base_id is returned to preserve existing module IDs.
37
- * - Otherwise the class segment is appended: base_id.class_segment.
38
- *
39
- * @internal Prefer `Registry.discoverMultiClass` (D-15) for the canonical
40
- * cross-language API surface; this free function is retained for backwards
41
- * compatibility and direct use by the scanner.
42
- *
43
- * @throws ModuleIdConflictError — two classes produce the same class_segment
44
- * @throws InvalidSegmentError — a segment does not match ^[a-z][a-z0-9_]*$
45
- * @throws IdTooLongError — a derived module_id exceeds 192 characters
46
- */
47
- export declare function discoverMultiClass(filePath: string, classes: readonly ClassDescriptor[], extensionsRoot?: string, multiClassEnabled?: boolean): MultiClassEntry[];
48
- /**
49
- * Internal alias of {@link discoverMultiClass}. Use {@link Registry.discoverMultiClass}
50
- * instead — this name is preserved so the scanner and other internal callers
51
- * have a stable reference that signals the surface is not part of the public
52
- * API.
53
- *
54
- * @internal
55
- */
56
- export declare const _discoverMultiClass: typeof discoverMultiClass;
57
40
  //# sourceMappingURL=multi-class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-class.d.ts","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO5D;AAYD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,cAAc,GAAE,MAAqB,EACrC,iBAAiB,GAAE,OAAe,GACjC,eAAe,EAAE,CA6DnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,2BAAqB,CAAC"}
1
+ {"version":3,"file":"multi-class.d.ts","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"multi-class.js","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multi-class.js","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"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"}