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.
- package/dist/acl-file.d.ts +12 -0
- package/dist/acl-file.d.ts.map +1 -0
- package/dist/acl-file.js +46 -0
- package/dist/acl-file.js.map +1 -0
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +20 -37
- package/dist/acl.js.map +1 -1
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +2 -21
- package/dist/bindings.js.map +1 -1
- package/dist/browser/index.d.ts +77 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +78 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/builtin-steps.js +2 -2
- package/dist/builtin-steps.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -4
- package/dist/client.js.map +1 -1
- package/dist/config-defaults.d.ts +30 -0
- package/dist/config-defaults.d.ts.map +1 -0
- package/dist/config-defaults.js +83 -0
- package/dist/config-defaults.js.map +1 -0
- package/dist/config.d.ts +12 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -125
- package/dist/config.js.map +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +39 -1
- package/dist/executor.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/tracing-otel-default.d.ts +16 -0
- package/dist/middleware/tracing-otel-default.d.ts.map +1 -0
- package/dist/middleware/tracing-otel-default.js +25 -0
- package/dist/middleware/tracing-otel-default.js.map +1 -0
- package/dist/middleware/tracing.d.ts.map +1 -1
- package/dist/middleware/tracing.js +9 -10
- package/dist/middleware/tracing.js.map +1 -1
- package/dist/module.d.ts +94 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +99 -2
- package/dist/module.js.map +1 -1
- package/dist/registry/metadata-pure.d.ts +13 -0
- package/dist/registry/metadata-pure.d.ts.map +1 -0
- package/dist/registry/metadata-pure.js +67 -0
- package/dist/registry/metadata-pure.js.map +1 -0
- package/dist/registry/metadata.d.ts +8 -4
- package/dist/registry/metadata.d.ts.map +1 -1
- package/dist/registry/metadata.js +9 -70
- package/dist/registry/metadata.js.map +1 -1
- package/dist/registry/multi-class.d.ts +14 -31
- package/dist/registry/multi-class.d.ts.map +1 -1
- package/dist/registry/multi-class.js.map +1 -1
- package/dist/registry/registry.d.ts +149 -4
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +318 -19
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/scanner.d.ts.map +1 -1
- package/dist/registry/scanner.js +3 -15
- package/dist/registry/scanner.js.map +1 -1
- package/dist/schema/annotations.d.ts.map +1 -1
- package/dist/schema/annotations.js +1 -0
- package/dist/schema/annotations.js.map +1 -1
- package/dist/schema/loader-pure.d.ts +24 -0
- package/dist/schema/loader-pure.d.ts.map +1 -0
- package/dist/schema/loader-pure.js +153 -0
- package/dist/schema/loader-pure.js.map +1 -0
- package/dist/schema/loader.d.ts +14 -30
- package/dist/schema/loader.d.ts.map +1 -1
- package/dist/schema/loader.js +20 -201
- package/dist/schema/loader.js.map +1 -1
- package/dist/schema/ref-resolver.d.ts.map +1 -1
- package/dist/schema/ref-resolver.js +5 -19
- package/dist/schema/ref-resolver.js.map +1 -1
- package/dist/sys-modules/control.d.ts +0 -78
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/health.d.ts +0 -138
- package/dist/sys-modules/health.d.ts.map +1 -1
- package/dist/sys-modules/install.d.ts +12 -0
- package/dist/sys-modules/install.d.ts.map +1 -0
- package/dist/sys-modules/install.js +14 -0
- package/dist/sys-modules/install.js.map +1 -0
- package/dist/sys-modules/manifest.d.ts +1 -141
- package/dist/sys-modules/manifest.d.ts.map +1 -1
- package/dist/sys-modules/overrides-file.d.ts +14 -0
- package/dist/sys-modules/overrides-file.d.ts.map +1 -0
- package/dist/sys-modules/overrides-file.js +31 -0
- package/dist/sys-modules/overrides-file.js.map +1 -0
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +41 -12
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts +0 -70
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/usage.d.ts +1 -132
- package/dist/sys-modules/usage.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -11
- package/dist/utils/index.js.map +1 -1
- 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
|
|
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. */
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
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
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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":"AAAA
|
|
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;
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,UAAU,GAAG,mBAAmB,CAAC;AACvC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAChE,MAAM,iBAAiB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"multi-class.js","sourceRoot":"","sources":["../../src/registry/multi-class.ts"],"names":[],"mappings":"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"}
|