@metaobjectsdev/sdk 0.6.0 → 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.
- package/dist/forge-types.d.ts +13 -4
- package/dist/forge-types.d.ts.map +1 -1
- package/dist/forge-types.js +35 -19
- package/dist/forge-types.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +32 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +47 -19
- package/dist/memory.js.map +1 -1
- package/package.json +2 -2
- package/src/forge-types.ts +38 -20
- package/src/index.ts +9 -2
- package/src/memory.ts +77 -20
package/dist/forge-types.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
43
|
-
*
|
|
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,
|
|
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"}
|
package/dist/forge-types.js
CHANGED
|
@@ -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
|
-
*
|
|
112
|
-
*
|
|
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
|
-
|
|
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
|
package/dist/forge-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-types.js","sourceRoot":"","sources":["../src/forge-types.ts"],"names":[],"mappings":"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
|
|
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,EAIL,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;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAyB;IACtD,EAAE,EAAE,mBAAmB;IACvB,YAAY,EAAE,CAAC,wBAAwB,CAAC;IACxC,WAAW,EAAE,8FAA8F;IAC3G,aAAa,CAAC,QAAsB;QAClC,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;YAC9C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;YAC/C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;YAChD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;YAC9C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,yBAAyB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;YAC7C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,OAAO,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC"}
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"
|
|
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 {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { composeRegistry, coreProviders, MetaDataLoader, } from "@metaobjectsdev/metadata";
|
|
4
|
+
import { FileSource } from "@metaobjectsdev/metadata/core";
|
|
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,24 +31,37 @@ 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
|
|
36
|
-
|
|
37
|
-
|
|
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.
|
|
41
62
|
const paths = await collectMetadataPaths(repoRoot);
|
|
42
|
-
const loader = new
|
|
43
|
-
const result = await loader.
|
|
63
|
+
const loader = new MetaDataLoader({ registry });
|
|
64
|
+
const result = await loader.load(paths.map((p) => new FileSource(p)));
|
|
44
65
|
if (result.errors.length > 0) {
|
|
45
66
|
const first = result.errors[0];
|
|
46
67
|
throw first;
|
|
@@ -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
|
|
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
|
|
90
|
+
return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
|
|
70
91
|
}
|
|
71
92
|
/**
|
|
72
|
-
* Recursively list *.json
|
|
73
|
-
* any level. Subdirectories (e.g. projections/) are
|
|
74
|
-
* Files within a directory are sorted alphabetically for
|
|
75
|
-
* order; subdirectories are visited after files at the
|
|
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
|
|
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
|
|
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
|
|
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
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/sdk",
|
|
3
|
-
"version": "0.
|
|
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.
|
|
41
|
+
"@metaobjectsdev/metadata": "0.7.0-rc.10",
|
|
42
42
|
"zod": "^3.23.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
package/src/forge-types.ts
CHANGED
|
@@ -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
|
-
*
|
|
146
|
-
*
|
|
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
|
-
|
|
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 {
|
|
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,12 +1,14 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { readdir, stat } from "node:fs/promises";
|
|
3
|
-
import { FileMetaDataLoader } from "@metaobjectsdev/metadata/core";
|
|
4
3
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
composeRegistry,
|
|
5
|
+
coreProviders,
|
|
6
|
+
MetaDataLoader,
|
|
7
|
+
type MetaDataTypeProvider,
|
|
7
8
|
type MetaRoot,
|
|
8
9
|
} from "@metaobjectsdev/metadata";
|
|
9
|
-
import {
|
|
10
|
+
import { FileSource } from "@metaobjectsdev/metadata/core";
|
|
11
|
+
import { forgeTypesProvider } from "./forge-types.js";
|
|
10
12
|
import { discoverWorkspace, resolveExtendsOrder } from "./workspace.js";
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -22,6 +24,36 @@ export const DEFAULT_METADATA_DIR = "metaobjects";
|
|
|
22
24
|
*/
|
|
23
25
|
export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
|
|
24
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
|
+
|
|
25
57
|
/**
|
|
26
58
|
* Load all metadata files from `<repoRoot>/metaobjects/` into a single
|
|
27
59
|
* MetaData. If `<repoRoot>/.meta/package.meta.json` declares `extends:` deps
|
|
@@ -30,26 +62,43 @@ export const DEFAULT_METAOBJECTS_DIR = ".metaobjects";
|
|
|
30
62
|
*
|
|
31
63
|
* Excludes `_pending/`. Registers metaobjects core types plus Meta Forge's
|
|
32
64
|
* descriptive top-level types (decision, principle, etc.) so mixed content
|
|
33
|
-
* 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.
|
|
34
68
|
*
|
|
35
69
|
* Throws if `metaobjects/` doesn't exist (callers should run `meta init`).
|
|
36
70
|
*
|
|
37
71
|
* @param repoRoot The project's working-directory root (e.g. process.cwd()).
|
|
38
72
|
* `loadMemory` resolves `metaobjects/` and (if workspace-aware) the
|
|
39
73
|
* transitive `extends:` graph automatically.
|
|
74
|
+
* @param options Optional {@link LoadMemoryOptions} — supply additional
|
|
75
|
+
* providers or replace the default bundle entirely.
|
|
40
76
|
*/
|
|
41
|
-
export async function loadMemory(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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);
|
|
45
94
|
|
|
46
95
|
// Collect all metadata file paths to load. Order matters for the parser's
|
|
47
96
|
// deferred-resolution pass (it parses in array order, then resolves supers
|
|
48
97
|
// against the merged tree afterwards) — dep packages first, current last.
|
|
49
98
|
const paths = await collectMetadataPaths(repoRoot);
|
|
50
99
|
|
|
51
|
-
const loader = new
|
|
52
|
-
const result = await loader.
|
|
100
|
+
const loader = new MetaDataLoader({ registry });
|
|
101
|
+
const result = await loader.load(paths.map((p) => new FileSource(p)));
|
|
53
102
|
|
|
54
103
|
if (result.errors.length > 0) {
|
|
55
104
|
const first = result.errors[0]!;
|
|
@@ -73,23 +122,27 @@ async function collectMetadataPaths(repoRoot: string): Promise<string[]> {
|
|
|
73
122
|
for (const pkg of ordered) {
|
|
74
123
|
// Each workspace package's metadata lives alongside its .meta/ dir
|
|
75
124
|
const pkgRoot = join(pkg.metaDir, "..");
|
|
76
|
-
paths.push(...(await
|
|
125
|
+
paths.push(...(await listMetadataFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
|
|
77
126
|
}
|
|
78
127
|
return paths;
|
|
79
128
|
}
|
|
80
129
|
}
|
|
81
130
|
|
|
82
131
|
// Single-package path: scan metaobjects/ at the project root
|
|
83
|
-
return
|
|
132
|
+
return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
|
|
84
133
|
}
|
|
85
134
|
|
|
86
135
|
/**
|
|
87
|
-
* Recursively list *.json
|
|
88
|
-
* any level. Subdirectories (e.g. projections/) are
|
|
89
|
-
* Files within a directory are sorted alphabetically for
|
|
90
|
-
* order; subdirectories are visited after files at the
|
|
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.
|
|
91
144
|
*/
|
|
92
|
-
async function
|
|
145
|
+
async function listMetadataFiles(dir: string): Promise<string[]> {
|
|
93
146
|
let entries: string[];
|
|
94
147
|
try {
|
|
95
148
|
entries = await readdir(dir);
|
|
@@ -104,13 +157,17 @@ async function listJsonFiles(dir: string): Promise<string[]> {
|
|
|
104
157
|
const s = await stat(full);
|
|
105
158
|
if (s.isDirectory()) {
|
|
106
159
|
subdirs.push(full);
|
|
107
|
-
} else if (s.isFile() && entry
|
|
160
|
+
} else if (s.isFile() && isMetadataFile(entry)) {
|
|
108
161
|
paths.push(full);
|
|
109
162
|
}
|
|
110
163
|
}
|
|
111
164
|
// Recurse into subdirectories after collecting files at this level
|
|
112
165
|
for (const sub of subdirs.sort()) {
|
|
113
|
-
paths.push(...(await
|
|
166
|
+
paths.push(...(await listMetadataFiles(sub)));
|
|
114
167
|
}
|
|
115
168
|
return paths;
|
|
116
169
|
}
|
|
170
|
+
|
|
171
|
+
function isMetadataFile(name: string): boolean {
|
|
172
|
+
return name.endsWith(".json") || name.endsWith(".yaml") || name.endsWith(".yml");
|
|
173
|
+
}
|