@o-lang/olang 1.0.18 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.js +19 -7
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -90,27 +90,39 @@ function createResolverChain(resolvers, verbose = false) {
90
90
  * Load a single resolver — NO fallback to defaultMockResolver
91
91
  */
92
92
  function loadSingleResolver(specifier) {
93
- // ❌ Remove fallback: do NOT return defaultMockResolver
94
93
  if (!specifier) {
95
94
  throw new Error('Empty resolver specifier provided');
96
95
  }
96
+
97
+ let resolver;
97
98
  try {
98
- const resolver = require(specifier);
99
- if (typeof resolver !== 'function') throw new Error(`Resolver must export a function`);
100
- console.log(` 📦 Loaded resolver: ${specifier}`);
101
- return resolver;
99
+ resolver = require(specifier);
102
100
  } catch (e1) {
103
101
  try {
104
102
  const absolutePath = path.resolve(process.cwd(), specifier);
105
- const resolver = require(absolutePath);
103
+ resolver = require(absolutePath);
106
104
  console.log(` 📁 Loaded resolver: ${absolutePath}`);
107
- return resolver;
108
105
  } catch (e2) {
109
106
  throw new Error(
110
107
  `Failed to load resolver '${specifier}':\n npm: ${e1.message}\n file: ${e2.message}`
111
108
  );
112
109
  }
113
110
  }
111
+
112
+ if (typeof resolver !== 'function') {
113
+ throw new Error(`Resolver must export a function`);
114
+ }
115
+
116
+ // ✅ Enforce that resolvers self-identify
117
+ if (!resolver.resolverName || typeof resolver.resolverName !== 'string') {
118
+ throw new Error(
119
+ `Resolver from '${specifier}' is missing a valid .resolverName property.\n` +
120
+ `All O-Lang resolvers must export: \`module.exports.resolverName = "MyResolver";\``
121
+ );
122
+ }
123
+
124
+ console.log(` 📦 Loaded resolver: ${specifier} (name: ${resolver.resolverName})`);
125
+ return resolver;
114
126
  }
115
127
 
116
128
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o-lang/olang",
3
- "version": "1.0.18",
3
+ "version": "1.0.19",
4
4
  "author": "Olalekan Ogundipe <info@workfily.com>",
5
5
  "description": "O-Lang: A governance language for user-directed, rule-enforced agent workflows",
6
6
  "main": "./src/index.js",