@o-lang/olang 1.0.18 → 1.0.20

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 +28 -7
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -90,27 +90,48 @@ 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, pkgName;
98
+
99
+ // Extract clean package name (e.g., @o-lang/extractor → extractor)
100
+ if (specifier.startsWith('./') || specifier.startsWith('../') || specifier.startsWith('/')) {
101
+ // Local file: use filename without extension
102
+ pkgName = path.basename(specifier, path.extname(specifier));
103
+ } else {
104
+ // npm package: strip scope (e.g., @o-lang/extractor → extractor)
105
+ pkgName = specifier.replace(/^@[^/]+\//, '');
106
+ }
107
+
97
108
  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;
109
+ resolver = require(specifier);
102
110
  } catch (e1) {
103
111
  try {
104
112
  const absolutePath = path.resolve(process.cwd(), specifier);
105
- const resolver = require(absolutePath);
113
+ resolver = require(absolutePath);
106
114
  console.log(` 📁 Loaded resolver: ${absolutePath}`);
107
- return resolver;
108
115
  } catch (e2) {
109
116
  throw new Error(
110
117
  `Failed to load resolver '${specifier}':\n npm: ${e1.message}\n file: ${e2.message}`
111
118
  );
112
119
  }
113
120
  }
121
+
122
+ if (typeof resolver !== 'function') {
123
+ throw new Error(`Resolver must export a function`);
124
+ }
125
+
126
+ // ✅ Auto-assign resolverName from package/filename if missing
127
+ if (!resolver.resolverName || typeof resolver.resolverName !== 'string') {
128
+ resolver.resolverName = pkgName;
129
+ console.log(` 🏷️ Auto-assigned resolverName: "${pkgName}" (from ${specifier})`);
130
+ } else {
131
+ console.log(` 📦 Loaded resolver: ${specifier} (name: ${resolver.resolverName})`);
132
+ }
133
+
134
+ return resolver;
114
135
  }
115
136
 
116
137
  /**
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.20",
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",