@metaobjectsdev/sdk 0.7.0-rc.1 → 0.7.0-rc.10

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.
@@ -34,14 +34,23 @@ export declare const FORGE_ATTR_WHAT_WAS_TRIED = "forgeWhatWasTried";
34
34
  export declare const FORGE_ATTR_WHY_IT_FAILED = "forgeWhyItFailed";
35
35
  export declare const FORGE_ATTRS: readonly ["forgeConfidence", "forgeSource", "forgeCapturedAt", "forgeLastValidatedCommit", "forgePrimaryLocation", "forgeOccurrences", "forgeRationale", "forgeAlternatives", "forgeScope", "forgeStatement", "forgeEnforcement", "forgePatternDescription", "forgeExamples", "forgeCounterExamples", "forgeAppliesTo", "forgeTerm", "forgeSynonyms", "forgeDefinition", "forgeCodeAnchors", "forgeSeeAlso", "forgeWhatWasTried", "forgeWhyItFailed"];
36
36
  export type ForgeAttr = (typeof FORGE_ATTRS)[number];
37
- import { TypeRegistry } from "@metaobjectsdev/metadata";
37
+ import { type MetaDataTypeProvider, TypeRegistry } from "@metaobjectsdev/metadata";
38
+ /**
39
+ * The Meta Forge provider — registers Meta Forge's five descriptive top-level
40
+ * types (decision, principle, convention, glossary, failure) plus their
41
+ * subtypes. Composed AFTER `metaobjects-core-types` so the structural attr
42
+ * type is available for forge child rules.
43
+ *
44
+ * Use via `composeRegistry([...coreProviders, forgeTypesProvider])` or via
45
+ * `loadMemory()`'s default bundle (forge is included by default).
46
+ */
47
+ export declare const forgeTypesProvider: MetaDataTypeProvider;
38
48
  /**
39
49
  * Register Meta Forge's five descriptive top-level types into the given
40
50
  * registry. Must be called AFTER `registerCoreTypes()`.
41
51
  *
42
- * Each type accepts `attr` children for expanded-form @forge* attributes.
43
- * Loader's default permissive mode tolerates these new types as children
44
- * of the metadata wrapper (unknowns are warned, not errored).
52
+ * Thin back-compat wrapper over `forgeTypesProvider.registerTypes`; prefer
53
+ * the provider directly for new code (composes correctly with other providers).
45
54
  */
46
55
  export declare function registerForgeTypes(registry: TypeRegistry): void;
47
56
  //# sourceMappingURL=forge-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forge-types.d.ts","sourceRoot":"","sources":["../src/forge-types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,eAAO,MAAM,WAAW,yEAMd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,eAAO,MAAM,uBAAuB,uCAAwC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,2CAA4C,CAAC;AAClF,eAAO,MAAM,yBAAyB,mBAAoB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,mBAAoB,CAAC;AACzD,eAAO,MAAM,sBAAsB,mBAAoB,CAAC;AAOxD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAG3E,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAG7C,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,8BAA8B,4BAA4B,CAAC;AACxE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAGtD,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAGlD,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,eAAO,MAAM,WAAW,ubAuBd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,OAAO,EAIL,YAAY,EAIb,MAAM,0BAA0B,CAAC;AA4BlC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAkB/D"}
1
+ {"version":3,"file":"forge-types.d.ts","sourceRoot":"","sources":["../src/forge-types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,eAAO,MAAM,WAAW,yEAMd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,eAAO,MAAM,uBAAuB,uCAAwC,CAAC;AAC7E,eAAO,MAAM,wBAAwB,2CAA4C,CAAC;AAClF,eAAO,MAAM,yBAAyB,mBAAoB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,mBAAoB,CAAC;AACzD,eAAO,MAAM,sBAAsB,mBAAoB,CAAC;AAOxD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAG3E,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAG7C,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAGzD,eAAO,MAAM,8BAA8B,4BAA4B,CAAC;AACxE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAGtD,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAGlD,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,eAAO,MAAM,WAAW,ubAuBd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,OAAO,EAEL,KAAK,oBAAoB,EAGzB,YAAY,EAIb,MAAM,0BAA0B,CAAC;AA4BlC;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,oBAuBhC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAE/D"}
@@ -104,30 +104,46 @@ function def(type, subType, description, childRules) {
104
104
  attributes: [],
105
105
  };
106
106
  }
107
+ /**
108
+ * The Meta Forge provider — registers Meta Forge's five descriptive top-level
109
+ * types (decision, principle, convention, glossary, failure) plus their
110
+ * subtypes. Composed AFTER `metaobjects-core-types` so the structural attr
111
+ * type is available for forge child rules.
112
+ *
113
+ * Use via `composeRegistry([...coreProviders, forgeTypesProvider])` or via
114
+ * `loadMemory()`'s default bundle (forge is included by default).
115
+ */
116
+ export const forgeTypesProvider = {
117
+ id: "metaobjects-forge",
118
+ dependencies: ["metaobjects-core-types"],
119
+ description: "Meta Forge descriptive top-level types (decision, principle, convention, glossary, failure).",
120
+ registerTypes(registry) {
121
+ const forgeChildRules = [wildcardOf(TYPE_ATTR)];
122
+ for (const subType of FORGE_DECISION_SUBTYPES) {
123
+ registry.register(def(FORGE_TYPE_DECISION, subType, `Forge decision (${subType})`, forgeChildRules));
124
+ }
125
+ for (const subType of FORGE_PRINCIPLE_SUBTYPES) {
126
+ registry.register(def(FORGE_TYPE_PRINCIPLE, subType, `Forge principle (${subType})`, forgeChildRules));
127
+ }
128
+ for (const subType of FORGE_CONVENTION_SUBTYPES) {
129
+ registry.register(def(FORGE_TYPE_CONVENTION, subType, `Forge convention (${subType})`, forgeChildRules));
130
+ }
131
+ for (const subType of FORGE_GLOSSARY_SUBTYPES) {
132
+ registry.register(def(FORGE_TYPE_GLOSSARY, subType, `Forge glossary entry (${subType})`, forgeChildRules));
133
+ }
134
+ for (const subType of FORGE_FAILURE_SUBTYPES) {
135
+ registry.register(def(FORGE_TYPE_FAILURE, subType, `Forge failure record (${subType})`, forgeChildRules));
136
+ }
137
+ },
138
+ };
107
139
  /**
108
140
  * Register Meta Forge's five descriptive top-level types into the given
109
141
  * registry. Must be called AFTER `registerCoreTypes()`.
110
142
  *
111
- * Each type accepts `attr` children for expanded-form @forge* attributes.
112
- * Loader's default permissive mode tolerates these new types as children
113
- * of the metadata wrapper (unknowns are warned, not errored).
143
+ * Thin back-compat wrapper over `forgeTypesProvider.registerTypes`; prefer
144
+ * the provider directly for new code (composes correctly with other providers).
114
145
  */
115
146
  export function registerForgeTypes(registry) {
116
- const forgeChildRules = [wildcardOf(TYPE_ATTR)];
117
- for (const subType of FORGE_DECISION_SUBTYPES) {
118
- registry.register(def(FORGE_TYPE_DECISION, subType, `Forge decision (${subType})`, forgeChildRules));
119
- }
120
- for (const subType of FORGE_PRINCIPLE_SUBTYPES) {
121
- registry.register(def(FORGE_TYPE_PRINCIPLE, subType, `Forge principle (${subType})`, forgeChildRules));
122
- }
123
- for (const subType of FORGE_CONVENTION_SUBTYPES) {
124
- registry.register(def(FORGE_TYPE_CONVENTION, subType, `Forge convention (${subType})`, forgeChildRules));
125
- }
126
- for (const subType of FORGE_GLOSSARY_SUBTYPES) {
127
- registry.register(def(FORGE_TYPE_GLOSSARY, subType, `Forge glossary entry (${subType})`, forgeChildRules));
128
- }
129
- for (const subType of FORGE_FAILURE_SUBTYPES) {
130
- registry.register(def(FORGE_TYPE_FAILURE, subType, `Forge failure record (${subType})`, forgeChildRules));
131
- }
147
+ forgeTypesProvider.registerTypes(registry);
132
148
  }
133
149
  //# sourceMappingURL=forge-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forge-types.js","sourceRoot":"","sources":["../src/forge-types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,8CAA8C;AAE9C,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAGX,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAM,CAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,CAAU,CAAC;AACzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAM,CAAU,CAAC;AAExD,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAE9E,qCAAqC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,0BAA0B,CAAC;AAE3E,gBAAgB;AAChB,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD,WAAW;AACX,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,YAAY;AACZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD,aAAa;AACb,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD,WAAW;AACX,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD,UAAU;AACV,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,sBAAsB;IACtB,gCAAgC;IAChC,2BAA2B;IAC3B,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;IACtB,8BAA8B;IAC9B,mBAAmB;IACnB,2BAA2B;IAC3B,qBAAqB;IACrB,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,yBAAyB;IACzB,wBAAwB;CAChB,CAAC;AAGX,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,OAAO,EAGL,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,+EAA+E;AAC/E,MAAM,aAAc,SAAQ,QAAQ;CAAG;AAEvC,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO;QACL,SAAS;QACT,YAAY,EAAE,mBAAmB;QACjC,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CACV,IAAY,EACZ,OAAe,EACf,WAAmB,EACnB,UAAuB;IAEvB,OAAO;QACL,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QACjC,WAAW;QACX,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1D,UAAU;QACV,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC9C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IACvG,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC/C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;QAChD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3G,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC9C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,yBAAyB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"forge-types.js","sourceRoot":"","sources":["../src/forge-types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,9 +10,10 @@ export type { ListOptions } from "./storage/index.js";
10
10
  export { recordPath, resolveMetaRoot } from "./paths.js";
11
11
  export { ConfigSchema, DEFAULT_CONFIG, loadConfig, saveConfig } from "./config.js";
12
12
  export type { Config } from "./config.js";
13
- export { FORGE_TYPE_DECISION, FORGE_TYPE_PRINCIPLE, FORGE_TYPE_CONVENTION, FORGE_TYPE_GLOSSARY, FORGE_TYPE_FAILURE, FORGE_TYPES, FORGE_DECISION_SUBTYPES, FORGE_PRINCIPLE_SUBTYPES, FORGE_CONVENTION_SUBTYPES, FORGE_GLOSSARY_SUBTYPES, FORGE_FAILURE_SUBTYPES, FORGE_ATTR_CONFIDENCE, FORGE_ATTR_SOURCE, FORGE_ATTR_CAPTURED_AT, FORGE_ATTR_LAST_VALIDATED_COMMIT, FORGE_ATTR_PRIMARY_LOCATION, FORGE_ATTR_OCCURRENCES, FORGE_ATTR_RATIONALE, FORGE_ATTR_ALTERNATIVES, FORGE_ATTR_SCOPE, FORGE_ATTR_STATEMENT, FORGE_ATTR_ENFORCEMENT, FORGE_ATTR_PATTERN_DESCRIPTION, FORGE_ATTR_EXAMPLES, FORGE_ATTR_COUNTER_EXAMPLES, FORGE_ATTR_APPLIES_TO, FORGE_ATTR_TERM, FORGE_ATTR_SYNONYMS, FORGE_ATTR_DEFINITION, FORGE_ATTR_CODE_ANCHORS, FORGE_ATTR_SEE_ALSO, FORGE_ATTR_WHAT_WAS_TRIED, FORGE_ATTR_WHY_IT_FAILED, FORGE_ATTRS, registerForgeTypes, } from "./forge-types.js";
13
+ export { FORGE_TYPE_DECISION, FORGE_TYPE_PRINCIPLE, FORGE_TYPE_CONVENTION, FORGE_TYPE_GLOSSARY, FORGE_TYPE_FAILURE, FORGE_TYPES, FORGE_DECISION_SUBTYPES, FORGE_PRINCIPLE_SUBTYPES, FORGE_CONVENTION_SUBTYPES, FORGE_GLOSSARY_SUBTYPES, FORGE_FAILURE_SUBTYPES, FORGE_ATTR_CONFIDENCE, FORGE_ATTR_SOURCE, FORGE_ATTR_CAPTURED_AT, FORGE_ATTR_LAST_VALIDATED_COMMIT, FORGE_ATTR_PRIMARY_LOCATION, FORGE_ATTR_OCCURRENCES, FORGE_ATTR_RATIONALE, FORGE_ATTR_ALTERNATIVES, FORGE_ATTR_SCOPE, FORGE_ATTR_STATEMENT, FORGE_ATTR_ENFORCEMENT, FORGE_ATTR_PATTERN_DESCRIPTION, FORGE_ATTR_EXAMPLES, FORGE_ATTR_COUNTER_EXAMPLES, FORGE_ATTR_APPLIES_TO, FORGE_ATTR_TERM, FORGE_ATTR_SYNONYMS, FORGE_ATTR_DEFINITION, FORGE_ATTR_CODE_ANCHORS, FORGE_ATTR_SEE_ALSO, FORGE_ATTR_WHAT_WAS_TRIED, FORGE_ATTR_WHY_IT_FAILED, FORGE_ATTRS, registerForgeTypes, forgeTypesProvider, } from "./forge-types.js";
14
14
  export type { ForgeType, ForgeAttr } from "./forge-types.js";
15
- export { loadMemory, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR } from "./memory.js";
15
+ export { loadMemory, defaultLoadMemoryProviders, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR, } from "./memory.js";
16
+ export type { LoadMemoryOptions } from "./memory.js";
16
17
  export { discoverWorkspace, resolveExtendsOrder, packageLabel } from "./workspace.js";
17
18
  export type { Workspace, WorkspacePackage } from "./workspace.js";
18
19
  export { PackageManifestSchema, readPackageManifest, resolveMetaobjectsPackage, PACKAGE_MANIFEST_FILE, } from "./package.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C,OAAO,EAEL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EAEX,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EAEtB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,EAEX,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGxF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtF,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOlE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C,OAAO,EAEL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EAEX,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EAEtB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,EAEX,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7D,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtF,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOlE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -22,12 +22,12 @@ FORGE_TYPE_DECISION, FORGE_TYPE_PRINCIPLE, FORGE_TYPE_CONVENTION, FORGE_TYPE_GLO
22
22
  FORGE_DECISION_SUBTYPES, FORGE_PRINCIPLE_SUBTYPES, FORGE_CONVENTION_SUBTYPES, FORGE_GLOSSARY_SUBTYPES, FORGE_FAILURE_SUBTYPES,
23
23
  // Attribute names
24
24
  FORGE_ATTR_CONFIDENCE, FORGE_ATTR_SOURCE, FORGE_ATTR_CAPTURED_AT, FORGE_ATTR_LAST_VALIDATED_COMMIT, FORGE_ATTR_PRIMARY_LOCATION, FORGE_ATTR_OCCURRENCES, FORGE_ATTR_RATIONALE, FORGE_ATTR_ALTERNATIVES, FORGE_ATTR_SCOPE, FORGE_ATTR_STATEMENT, FORGE_ATTR_ENFORCEMENT, FORGE_ATTR_PATTERN_DESCRIPTION, FORGE_ATTR_EXAMPLES, FORGE_ATTR_COUNTER_EXAMPLES, FORGE_ATTR_APPLIES_TO, FORGE_ATTR_TERM, FORGE_ATTR_SYNONYMS, FORGE_ATTR_DEFINITION, FORGE_ATTR_CODE_ANCHORS, FORGE_ATTR_SEE_ALSO, FORGE_ATTR_WHAT_WAS_TRIED, FORGE_ATTR_WHY_IT_FAILED, FORGE_ATTRS,
25
- // Registration helper
26
- registerForgeTypes, } from "./forge-types.js";
25
+ // Registration helper + provider
26
+ registerForgeTypes, forgeTypesProvider, } from "./forge-types.js";
27
27
  // Memory loader — read metaobjects/ into a MetaData tree
28
28
  // (workspace-aware: walks extends: deps via pnpm-workspace.yaml or
29
29
  // package.json workspaces field if present)
30
- export { loadMemory, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR } from "./memory.js";
30
+ export { loadMemory, defaultLoadMemoryProviders, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR, } from "./memory.js";
31
31
  // Workspace discovery — finds peer metadata packages in a monorepo
32
32
  export { discoverWorkspace, resolveExtendsOrder, packageLabel } from "./workspace.js";
33
33
  // Package manifest — the v0.3 package.meta.json model. Three-field manifest
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,UAAU;AACV,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzD,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnF,0EAA0E;AAC1E,0EAA0E;AAC1E,gCAAgC;AAChC,OAAO;AACL,aAAa;AACb,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW;AACX,WAAW;AACX,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB;AACtB,kBAAkB;AAClB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW;AACX,sBAAsB;AACtB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,yDAAyD;AACzD,mEAAmE;AACnE,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAExF,mEAAmE;AACnE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGtF,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,UAAU;AACV,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzD,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGnF,0EAA0E;AAC1E,0EAA0E;AAC1E,gCAAgC;AAChC,OAAO;AACL,aAAa;AACb,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW;AACX,WAAW;AACX,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB;AACtB,kBAAkB;AAClB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW;AACX,iCAAiC;AACjC,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,yDAAyD;AACzD,mEAAmE;AACnE,6CAA6C;AAC7C,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB,mEAAmE;AACnE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGtF,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
package/dist/memory.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type MetaRoot } from "@metaobjectsdev/metadata";
1
+ import { type MetaDataTypeProvider, type MetaRoot } from "@metaobjectsdev/metadata";
2
2
  /**
3
3
  * Default directory name (relative to project root) where metadata JSON files
4
4
  * are scanned. Scaffold via `meta init`; the directory is committed to git.
@@ -10,6 +10,31 @@ export declare const DEFAULT_METADATA_DIR = "metaobjects";
10
10
  * Scaffold via `meta init`; most contents are committed to git.
11
11
  */
12
12
  export declare const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
13
+ /**
14
+ * Options for {@link loadMemory}. Consumers can supply additional
15
+ * {@link MetaDataTypeProvider}s to extend the metamodel with their own
16
+ * subtypes/attrs (e.g. a `template.toolcall` subtype).
17
+ */
18
+ export interface LoadMemoryOptions {
19
+ /**
20
+ * Consumer-supplied providers. Composed AFTER the default core providers
21
+ * (core-types + db + documentation + forge) unless `replaceDefaults: true`
22
+ * is set. Use this to register additional subtypes or extend existing
23
+ * ones without forking the loader.
24
+ */
25
+ providers?: readonly MetaDataTypeProvider[];
26
+ /**
27
+ * Skip the default core providers; supply your own full set. Advanced —
28
+ * use only when you need to compose a custom metamodel from scratch.
29
+ * Throws if `providers` is absent or empty.
30
+ */
31
+ replaceDefaults?: boolean;
32
+ }
33
+ /** Default provider bundle threaded by {@link loadMemory} when no options
34
+ * override is supplied. Exposed for tests/inspection; callers shouldn't need
35
+ * to spread this manually — `loadMemory(root, { providers: [mine] })`
36
+ * composes `[...defaultLoadMemoryProviders, mine]` automatically. */
37
+ export declare const defaultLoadMemoryProviders: readonly MetaDataTypeProvider[];
13
38
  /**
14
39
  * Load all metadata files from `<repoRoot>/metaobjects/` into a single
15
40
  * MetaData. If `<repoRoot>/.meta/package.meta.json` declares `extends:` deps
@@ -18,13 +43,17 @@ export declare const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
18
43
  *
19
44
  * Excludes `_pending/`. Registers metaobjects core types plus Meta Forge's
20
45
  * descriptive top-level types (decision, principle, etc.) so mixed content
21
- * parses without warnings.
46
+ * parses without warnings. Consumer-supplied providers (via
47
+ * {@link LoadMemoryOptions.providers}) are composed AFTER the defaults so
48
+ * they may depend on core/forge ids.
22
49
  *
23
50
  * Throws if `metaobjects/` doesn't exist (callers should run `meta init`).
24
51
  *
25
52
  * @param repoRoot The project's working-directory root (e.g. process.cwd()).
26
53
  * `loadMemory` resolves `metaobjects/` and (if workspace-aware) the
27
54
  * transitive `extends:` graph automatically.
55
+ * @param options Optional {@link LoadMemoryOptions} — supply additional
56
+ * providers or replace the default bundle entirely.
28
57
  */
29
- export declare function loadMemory(repoRoot: string): Promise<MetaRoot>;
58
+ export declare function loadMemory(repoRoot: string, options?: LoadMemoryOptions): Promise<MetaRoot>;
30
59
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAKlC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBpE"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAKlC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;sEAGsE;AACtE,eAAO,MAAM,0BAA0B,EAAE,SAAS,oBAAoB,EAGrE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA6BnB"}
package/dist/memory.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { join } from "node:path";
2
2
  import { readdir, stat } from "node:fs/promises";
3
- import { MetaDataLoader, TypeRegistry, registerCoreTypes, } from "@metaobjectsdev/metadata";
3
+ import { composeRegistry, coreProviders, MetaDataLoader, } from "@metaobjectsdev/metadata";
4
4
  import { FileSource } from "@metaobjectsdev/metadata/core";
5
- import { registerForgeTypes } from "./forge-types.js";
5
+ import { forgeTypesProvider } from "./forge-types.js";
6
6
  import { discoverWorkspace, resolveExtendsOrder } from "./workspace.js";
7
7
  /**
8
8
  * Default directory name (relative to project root) where metadata JSON files
@@ -15,6 +15,14 @@ export const DEFAULT_METADATA_DIR = "metaobjects";
15
15
  * Scaffold via `meta init`; most contents are committed to git.
16
16
  */
17
17
  export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
18
+ /** Default provider bundle threaded by {@link loadMemory} when no options
19
+ * override is supplied. Exposed for tests/inspection; callers shouldn't need
20
+ * to spread this manually — `loadMemory(root, { providers: [mine] })`
21
+ * composes `[...defaultLoadMemoryProviders, mine]` automatically. */
22
+ export const defaultLoadMemoryProviders = [
23
+ ...coreProviders,
24
+ forgeTypesProvider,
25
+ ];
18
26
  /**
19
27
  * Load all metadata files from `<repoRoot>/metaobjects/` into a single
20
28
  * MetaData. If `<repoRoot>/.meta/package.meta.json` declares `extends:` deps
@@ -23,18 +31,31 @@ export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
23
31
  *
24
32
  * Excludes `_pending/`. Registers metaobjects core types plus Meta Forge's
25
33
  * descriptive top-level types (decision, principle, etc.) so mixed content
26
- * parses without warnings.
34
+ * parses without warnings. Consumer-supplied providers (via
35
+ * {@link LoadMemoryOptions.providers}) are composed AFTER the defaults so
36
+ * they may depend on core/forge ids.
27
37
  *
28
38
  * Throws if `metaobjects/` doesn't exist (callers should run `meta init`).
29
39
  *
30
40
  * @param repoRoot The project's working-directory root (e.g. process.cwd()).
31
41
  * `loadMemory` resolves `metaobjects/` and (if workspace-aware) the
32
42
  * transitive `extends:` graph automatically.
43
+ * @param options Optional {@link LoadMemoryOptions} — supply additional
44
+ * providers or replace the default bundle entirely.
33
45
  */
34
- export async function loadMemory(repoRoot) {
35
- const registry = new TypeRegistry();
36
- registerCoreTypes(registry);
37
- registerForgeTypes(registry);
46
+ export async function loadMemory(repoRoot, options) {
47
+ const extra = options?.providers ?? [];
48
+ let providers;
49
+ if (options?.replaceDefaults === true) {
50
+ if (extra.length === 0) {
51
+ throw new Error("loadMemory: `replaceDefaults: true` requires at least one provider in `providers`.");
52
+ }
53
+ providers = extra;
54
+ }
55
+ else {
56
+ providers = [...defaultLoadMemoryProviders, ...extra];
57
+ }
58
+ const registry = composeRegistry(providers);
38
59
  // Collect all metadata file paths to load. Order matters for the parser's
39
60
  // deferred-resolution pass (it parses in array order, then resolves supers
40
61
  // against the merged tree afterwards) — dep packages first, current last.
@@ -60,21 +81,25 @@ async function collectMetadataPaths(repoRoot) {
60
81
  for (const pkg of ordered) {
61
82
  // Each workspace package's metadata lives alongside its .meta/ dir
62
83
  const pkgRoot = join(pkg.metaDir, "..");
63
- paths.push(...(await listJsonFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
84
+ paths.push(...(await listMetadataFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
64
85
  }
65
86
  return paths;
66
87
  }
67
88
  }
68
89
  // Single-package path: scan metaobjects/ at the project root
69
- return listJsonFiles(join(repoRoot, DEFAULT_METADATA_DIR));
90
+ return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
70
91
  }
71
92
  /**
72
- * Recursively list *.json files under a directory, excluding _pending/ at
73
- * any level. Subdirectories (e.g. projections/) are walked depth-first.
74
- * Files within a directory are sorted alphabetically for deterministic load
75
- * order; subdirectories are visited after files at the same level.
93
+ * Recursively list metadata files (*.json, *.yaml, *.yml) under a directory,
94
+ * excluding _pending/ at any level. Subdirectories (e.g. projections/) are
95
+ * walked depth-first. Files within a directory are sorted alphabetically for
96
+ * deterministic load order; subdirectories are visited after files at the
97
+ * same level.
98
+ *
99
+ * Format selection (parsing) happens downstream in `FileSource` from
100
+ * `@metaobjectsdev/metadata`, which infers the parser from file extension.
76
101
  */
77
- async function listJsonFiles(dir) {
102
+ async function listMetadataFiles(dir) {
78
103
  let entries;
79
104
  try {
80
105
  entries = await readdir(dir);
@@ -92,14 +117,17 @@ async function listJsonFiles(dir) {
92
117
  if (s.isDirectory()) {
93
118
  subdirs.push(full);
94
119
  }
95
- else if (s.isFile() && entry.endsWith(".json")) {
120
+ else if (s.isFile() && isMetadataFile(entry)) {
96
121
  paths.push(full);
97
122
  }
98
123
  }
99
124
  // Recurse into subdirectories after collecting files at this level
100
125
  for (const sub of subdirs.sort()) {
101
- paths.push(...(await listJsonFiles(sub)));
126
+ paths.push(...(await listMetadataFiles(sub)));
102
127
  }
103
128
  return paths;
104
129
  }
130
+ function isMetadataFile(name) {
131
+ return name.endsWith(".json") || name.endsWith(".yaml") || name.endsWith(".yml");
132
+ }
105
133
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAuBtD;;;sEAGsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAoC;IACzE,GAAG,aAAa;IAChB,kBAAkB;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,OAA2B;IAE3B,MAAM,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;IACvC,IAAI,SAA0C,CAAC;IAC/C,IAAI,OAAO,EAAE,eAAe,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,CAAC,GAAG,0BAA0B,EAAE,GAAG,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5C,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE7C,iEAAiE;IACjE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC;QACzE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YACxD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,mEAAmE;gBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,KAAK,UAAU;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,mEAAmE;IACnE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/sdk",
3
- "version": "0.7.0-rc.1",
3
+ "version": "0.7.0-rc.10",
4
4
  "description": "Workspace helpers and agent-docs utilities for MetaObjects projects.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -38,7 +38,7 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@metaobjectsdev/metadata": "0.7.0-rc.1",
41
+ "@metaobjectsdev/metadata": "0.7.0-rc.10",
42
42
  "zod": "^3.23.0"
43
43
  },
44
44
  "devDependencies": {
@@ -104,6 +104,7 @@ export type ForgeAttr = (typeof FORGE_ATTRS)[number];
104
104
 
105
105
  import {
106
106
  type ChildRule,
107
+ type MetaDataTypeProvider,
107
108
  type TypeDefinition,
108
109
  TypeId,
109
110
  TypeRegistry,
@@ -138,30 +139,47 @@ function def(
138
139
  };
139
140
  }
140
141
 
142
+ /**
143
+ * The Meta Forge provider — registers Meta Forge's five descriptive top-level
144
+ * types (decision, principle, convention, glossary, failure) plus their
145
+ * subtypes. Composed AFTER `metaobjects-core-types` so the structural attr
146
+ * type is available for forge child rules.
147
+ *
148
+ * Use via `composeRegistry([...coreProviders, forgeTypesProvider])` or via
149
+ * `loadMemory()`'s default bundle (forge is included by default).
150
+ */
151
+ export const forgeTypesProvider: MetaDataTypeProvider = {
152
+ id: "metaobjects-forge",
153
+ dependencies: ["metaobjects-core-types"],
154
+ description: "Meta Forge descriptive top-level types (decision, principle, convention, glossary, failure).",
155
+ registerTypes(registry: TypeRegistry): void {
156
+ const forgeChildRules = [wildcardOf(TYPE_ATTR)];
157
+
158
+ for (const subType of FORGE_DECISION_SUBTYPES) {
159
+ registry.register(def(FORGE_TYPE_DECISION, subType, `Forge decision (${subType})`, forgeChildRules));
160
+ }
161
+ for (const subType of FORGE_PRINCIPLE_SUBTYPES) {
162
+ registry.register(def(FORGE_TYPE_PRINCIPLE, subType, `Forge principle (${subType})`, forgeChildRules));
163
+ }
164
+ for (const subType of FORGE_CONVENTION_SUBTYPES) {
165
+ registry.register(def(FORGE_TYPE_CONVENTION, subType, `Forge convention (${subType})`, forgeChildRules));
166
+ }
167
+ for (const subType of FORGE_GLOSSARY_SUBTYPES) {
168
+ registry.register(def(FORGE_TYPE_GLOSSARY, subType, `Forge glossary entry (${subType})`, forgeChildRules));
169
+ }
170
+ for (const subType of FORGE_FAILURE_SUBTYPES) {
171
+ registry.register(def(FORGE_TYPE_FAILURE, subType, `Forge failure record (${subType})`, forgeChildRules));
172
+ }
173
+ },
174
+ };
175
+
141
176
  /**
142
177
  * Register Meta Forge's five descriptive top-level types into the given
143
178
  * registry. Must be called AFTER `registerCoreTypes()`.
144
179
  *
145
- * Each type accepts `attr` children for expanded-form @forge* attributes.
146
- * Loader's default permissive mode tolerates these new types as children
147
- * of the metadata wrapper (unknowns are warned, not errored).
180
+ * Thin back-compat wrapper over `forgeTypesProvider.registerTypes`; prefer
181
+ * the provider directly for new code (composes correctly with other providers).
148
182
  */
149
183
  export function registerForgeTypes(registry: TypeRegistry): void {
150
- const forgeChildRules = [wildcardOf(TYPE_ATTR)];
151
-
152
- for (const subType of FORGE_DECISION_SUBTYPES) {
153
- registry.register(def(FORGE_TYPE_DECISION, subType, `Forge decision (${subType})`, forgeChildRules));
154
- }
155
- for (const subType of FORGE_PRINCIPLE_SUBTYPES) {
156
- registry.register(def(FORGE_TYPE_PRINCIPLE, subType, `Forge principle (${subType})`, forgeChildRules));
157
- }
158
- for (const subType of FORGE_CONVENTION_SUBTYPES) {
159
- registry.register(def(FORGE_TYPE_CONVENTION, subType, `Forge convention (${subType})`, forgeChildRules));
160
- }
161
- for (const subType of FORGE_GLOSSARY_SUBTYPES) {
162
- registry.register(def(FORGE_TYPE_GLOSSARY, subType, `Forge glossary entry (${subType})`, forgeChildRules));
163
- }
164
- for (const subType of FORGE_FAILURE_SUBTYPES) {
165
- registry.register(def(FORGE_TYPE_FAILURE, subType, `Forge failure record (${subType})`, forgeChildRules));
166
- }
184
+ forgeTypesProvider.registerTypes(registry);
167
185
  }
package/src/index.ts CHANGED
@@ -70,15 +70,22 @@ export {
70
70
  FORGE_ATTR_WHAT_WAS_TRIED,
71
71
  FORGE_ATTR_WHY_IT_FAILED,
72
72
  FORGE_ATTRS,
73
- // Registration helper
73
+ // Registration helper + provider
74
74
  registerForgeTypes,
75
+ forgeTypesProvider,
75
76
  } from "./forge-types.js";
76
77
  export type { ForgeType, ForgeAttr } from "./forge-types.js";
77
78
 
78
79
  // Memory loader — read metaobjects/ into a MetaData tree
79
80
  // (workspace-aware: walks extends: deps via pnpm-workspace.yaml or
80
81
  // package.json workspaces field if present)
81
- export { loadMemory, DEFAULT_METADATA_DIR, DEFAULT_METAOBJECTS_DIR } from "./memory.js";
82
+ export {
83
+ loadMemory,
84
+ defaultLoadMemoryProviders,
85
+ DEFAULT_METADATA_DIR,
86
+ DEFAULT_METAOBJECTS_DIR,
87
+ } from "./memory.js";
88
+ export type { LoadMemoryOptions } from "./memory.js";
82
89
 
83
90
  // Workspace discovery — finds peer metadata packages in a monorepo
84
91
  export { discoverWorkspace, resolveExtendsOrder, packageLabel } from "./workspace.js";
package/src/memory.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import { join } from "node:path";
2
2
  import { readdir, stat } from "node:fs/promises";
3
3
  import {
4
+ composeRegistry,
5
+ coreProviders,
4
6
  MetaDataLoader,
5
- TypeRegistry,
6
- registerCoreTypes,
7
+ type MetaDataTypeProvider,
7
8
  type MetaRoot,
8
9
  } from "@metaobjectsdev/metadata";
9
10
  import { FileSource } from "@metaobjectsdev/metadata/core";
10
- import { registerForgeTypes } from "./forge-types.js";
11
+ import { forgeTypesProvider } from "./forge-types.js";
11
12
  import { discoverWorkspace, resolveExtendsOrder } from "./workspace.js";
12
13
 
13
14
  /**
@@ -23,6 +24,36 @@ export const DEFAULT_METADATA_DIR = "metaobjects";
23
24
  */
24
25
  export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
25
26
 
27
+ /**
28
+ * Options for {@link loadMemory}. Consumers can supply additional
29
+ * {@link MetaDataTypeProvider}s to extend the metamodel with their own
30
+ * subtypes/attrs (e.g. a `template.toolcall` subtype).
31
+ */
32
+ export interface LoadMemoryOptions {
33
+ /**
34
+ * Consumer-supplied providers. Composed AFTER the default core providers
35
+ * (core-types + db + documentation + forge) unless `replaceDefaults: true`
36
+ * is set. Use this to register additional subtypes or extend existing
37
+ * ones without forking the loader.
38
+ */
39
+ providers?: readonly MetaDataTypeProvider[];
40
+ /**
41
+ * Skip the default core providers; supply your own full set. Advanced —
42
+ * use only when you need to compose a custom metamodel from scratch.
43
+ * Throws if `providers` is absent or empty.
44
+ */
45
+ replaceDefaults?: boolean;
46
+ }
47
+
48
+ /** Default provider bundle threaded by {@link loadMemory} when no options
49
+ * override is supplied. Exposed for tests/inspection; callers shouldn't need
50
+ * to spread this manually — `loadMemory(root, { providers: [mine] })`
51
+ * composes `[...defaultLoadMemoryProviders, mine]` automatically. */
52
+ export const defaultLoadMemoryProviders: readonly MetaDataTypeProvider[] = [
53
+ ...coreProviders,
54
+ forgeTypesProvider,
55
+ ];
56
+
26
57
  /**
27
58
  * Load all metadata files from `<repoRoot>/metaobjects/` into a single
28
59
  * MetaData. If `<repoRoot>/.meta/package.meta.json` declares `extends:` deps
@@ -31,18 +62,35 @@ export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
31
62
  *
32
63
  * Excludes `_pending/`. Registers metaobjects core types plus Meta Forge's
33
64
  * descriptive top-level types (decision, principle, etc.) so mixed content
34
- * parses without warnings.
65
+ * parses without warnings. Consumer-supplied providers (via
66
+ * {@link LoadMemoryOptions.providers}) are composed AFTER the defaults so
67
+ * they may depend on core/forge ids.
35
68
  *
36
69
  * Throws if `metaobjects/` doesn't exist (callers should run `meta init`).
37
70
  *
38
71
  * @param repoRoot The project's working-directory root (e.g. process.cwd()).
39
72
  * `loadMemory` resolves `metaobjects/` and (if workspace-aware) the
40
73
  * transitive `extends:` graph automatically.
74
+ * @param options Optional {@link LoadMemoryOptions} — supply additional
75
+ * providers or replace the default bundle entirely.
41
76
  */
42
- export async function loadMemory(repoRoot: string): Promise<MetaRoot> {
43
- const registry = new TypeRegistry();
44
- registerCoreTypes(registry);
45
- registerForgeTypes(registry);
77
+ export async function loadMemory(
78
+ repoRoot: string,
79
+ options?: LoadMemoryOptions,
80
+ ): Promise<MetaRoot> {
81
+ const extra = options?.providers ?? [];
82
+ let providers: readonly MetaDataTypeProvider[];
83
+ if (options?.replaceDefaults === true) {
84
+ if (extra.length === 0) {
85
+ throw new Error(
86
+ "loadMemory: `replaceDefaults: true` requires at least one provider in `providers`.",
87
+ );
88
+ }
89
+ providers = extra;
90
+ } else {
91
+ providers = [...defaultLoadMemoryProviders, ...extra];
92
+ }
93
+ const registry = composeRegistry(providers);
46
94
 
47
95
  // Collect all metadata file paths to load. Order matters for the parser's
48
96
  // deferred-resolution pass (it parses in array order, then resolves supers
@@ -74,23 +122,27 @@ async function collectMetadataPaths(repoRoot: string): Promise<string[]> {
74
122
  for (const pkg of ordered) {
75
123
  // Each workspace package's metadata lives alongside its .meta/ dir
76
124
  const pkgRoot = join(pkg.metaDir, "..");
77
- paths.push(...(await listJsonFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
125
+ paths.push(...(await listMetadataFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
78
126
  }
79
127
  return paths;
80
128
  }
81
129
  }
82
130
 
83
131
  // Single-package path: scan metaobjects/ at the project root
84
- return listJsonFiles(join(repoRoot, DEFAULT_METADATA_DIR));
132
+ return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
85
133
  }
86
134
 
87
135
  /**
88
- * Recursively list *.json files under a directory, excluding _pending/ at
89
- * any level. Subdirectories (e.g. projections/) are walked depth-first.
90
- * Files within a directory are sorted alphabetically for deterministic load
91
- * order; subdirectories are visited after files at the same level.
136
+ * Recursively list metadata files (*.json, *.yaml, *.yml) under a directory,
137
+ * excluding _pending/ at any level. Subdirectories (e.g. projections/) are
138
+ * walked depth-first. Files within a directory are sorted alphabetically for
139
+ * deterministic load order; subdirectories are visited after files at the
140
+ * same level.
141
+ *
142
+ * Format selection (parsing) happens downstream in `FileSource` from
143
+ * `@metaobjectsdev/metadata`, which infers the parser from file extension.
92
144
  */
93
- async function listJsonFiles(dir: string): Promise<string[]> {
145
+ async function listMetadataFiles(dir: string): Promise<string[]> {
94
146
  let entries: string[];
95
147
  try {
96
148
  entries = await readdir(dir);
@@ -105,13 +157,17 @@ async function listJsonFiles(dir: string): Promise<string[]> {
105
157
  const s = await stat(full);
106
158
  if (s.isDirectory()) {
107
159
  subdirs.push(full);
108
- } else if (s.isFile() && entry.endsWith(".json")) {
160
+ } else if (s.isFile() && isMetadataFile(entry)) {
109
161
  paths.push(full);
110
162
  }
111
163
  }
112
164
  // Recurse into subdirectories after collecting files at this level
113
165
  for (const sub of subdirs.sort()) {
114
- paths.push(...(await listJsonFiles(sub)));
166
+ paths.push(...(await listMetadataFiles(sub)));
115
167
  }
116
168
  return paths;
117
169
  }
170
+
171
+ function isMetadataFile(name: string): boolean {
172
+ return name.endsWith(".json") || name.endsWith(".yaml") || name.endsWith(".yml");
173
+ }