@refrakt-md/cli 0.10.1 → 0.11.0

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.
@@ -0,0 +1,243 @@
1
+ /**
2
+ * `refrakt config <subcommand>` — utilities for managing refrakt.config.json.
3
+ *
4
+ * Initially supports `migrate` for moving between the three valid input shapes
5
+ * (flat / singular `site` / plural `sites`) defined in ADR-010.
6
+ */
7
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
8
+ import { resolve } from 'node:path';
9
+ import { discoverPlugins } from '../lib/plugins.js';
10
+ const SITE_FIELDS = [
11
+ 'contentDir',
12
+ 'theme',
13
+ 'target',
14
+ 'overrides',
15
+ 'routeRules',
16
+ 'highlight',
17
+ 'icons',
18
+ 'packages',
19
+ 'tints',
20
+ 'backgrounds',
21
+ 'sandbox',
22
+ 'baseUrl',
23
+ 'siteName',
24
+ 'defaultImage',
25
+ 'logo',
26
+ 'runes',
27
+ ];
28
+ export async function runConfigCommand(args) {
29
+ const sub = args[0];
30
+ if (!sub || sub === '--help' || sub === '-h') {
31
+ printConfigUsage();
32
+ process.exit(sub ? 0 : 1);
33
+ }
34
+ if (sub === 'migrate') {
35
+ await runConfigMigrate(args.slice(1));
36
+ return;
37
+ }
38
+ console.error(`Error: Unknown config subcommand "${sub}"\n`);
39
+ printConfigUsage();
40
+ process.exit(1);
41
+ }
42
+ async function runConfigMigrate(args) {
43
+ const opts = parseMigrateArgs(args);
44
+ if (!existsSync(opts.configPath)) {
45
+ console.error(`Error: ${opts.configPath} not found.`);
46
+ process.exit(1);
47
+ }
48
+ const original = readFileSync(opts.configPath, 'utf-8');
49
+ let raw;
50
+ try {
51
+ raw = JSON.parse(original);
52
+ }
53
+ catch (err) {
54
+ console.error(`Error: Could not parse ${opts.configPath}: ${err.message}`);
55
+ process.exit(1);
56
+ }
57
+ if (raw.site !== undefined && raw.sites !== undefined) {
58
+ console.error('Error: refrakt.config.json declares both "site" and "sites". Resolve the conflict before migrating.');
59
+ process.exit(1);
60
+ }
61
+ let migrated = migrate(raw, opts);
62
+ // On flat → nested migration, populate `plugins` from installed packages
63
+ // if absent. Gives users a working config plugin list immediately without
64
+ // having to remember to declare each plugin manually.
65
+ if (opts.to === 'nested' && migrated.plugins === undefined) {
66
+ try {
67
+ const discovered = await discoverPlugins({ cwd: process.cwd(), warn: false });
68
+ if (discovered.length > 0) {
69
+ migrated = { ...migrated, plugins: discovered.map((p) => p.packageName) };
70
+ }
71
+ }
72
+ catch {
73
+ // Discovery failure is non-blocking — the migration still applies.
74
+ }
75
+ }
76
+ const wasIdempotent = JSON.stringify(migrated) === JSON.stringify(raw);
77
+ if (wasIdempotent) {
78
+ console.log(`No changes needed — ${opts.configPath} is already in the requested shape.`);
79
+ return;
80
+ }
81
+ const indent = detectIndent(original);
82
+ const newText = JSON.stringify(migrated, null, indent) + '\n';
83
+ if (opts.apply) {
84
+ writeFileSync(opts.configPath, newText);
85
+ console.log(`Updated ${opts.configPath}`);
86
+ return;
87
+ }
88
+ // Dry run — print a unified-style diff.
89
+ console.log(formatDiff(original, newText, opts.configPath));
90
+ console.log('\n(Dry run — pass --apply to write changes.)');
91
+ }
92
+ /** Apply the requested migration to the raw config. */
93
+ function migrate(raw, opts) {
94
+ if (opts.to === 'nested') {
95
+ return migrateFlatToNested(raw);
96
+ }
97
+ if (opts.to === 'multi-site') {
98
+ return migrateSingularToMultiSite(raw, opts.name);
99
+ }
100
+ return raw;
101
+ }
102
+ /** Flat shape (top-level contentDir, theme, target, …) → singular `site`. */
103
+ function migrateFlatToNested(raw) {
104
+ if (raw.site !== undefined || raw.sites !== undefined) {
105
+ // Already nested — nothing to migrate.
106
+ return raw;
107
+ }
108
+ const siteFields = {};
109
+ const rest = {};
110
+ const rawAsRecord = raw;
111
+ for (const [key, value] of Object.entries(rawAsRecord)) {
112
+ if (SITE_FIELDS.includes(key)) {
113
+ siteFields[key] = value;
114
+ }
115
+ else {
116
+ rest[key] = value;
117
+ }
118
+ }
119
+ if (Object.keys(siteFields).length === 0) {
120
+ return raw;
121
+ }
122
+ // Promote to singular `site`. Preserve `plugins`, `plan`, and any other
123
+ // project-level fields.
124
+ const result = { ...rest, site: siteFields };
125
+ return result;
126
+ }
127
+ /** Singular `site` → plural `sites: { [name]: site }`. */
128
+ function migrateSingularToMultiSite(raw, name) {
129
+ if (raw.sites !== undefined) {
130
+ // Already multi-site — nothing to migrate.
131
+ return raw;
132
+ }
133
+ if (raw.site === undefined) {
134
+ console.error(`Error: refrakt.config.json has no "site" section to promote. Run --to=nested first if your config is in flat shape.`);
135
+ process.exit(1);
136
+ }
137
+ const { site, ...rest } = raw;
138
+ const result = { ...rest, sites: { [name]: site } };
139
+ return result;
140
+ }
141
+ function parseMigrateArgs(args) {
142
+ let apply = false;
143
+ let to = 'nested';
144
+ let name;
145
+ let configPath = resolve(process.cwd(), 'refrakt.config.json');
146
+ for (let i = 0; i < args.length; i++) {
147
+ const arg = args[i];
148
+ if (arg === '--apply') {
149
+ apply = true;
150
+ }
151
+ else if (arg === '--to') {
152
+ const next = args[++i];
153
+ if (next !== 'nested' && next !== 'multi-site') {
154
+ console.error(`Error: --to must be "nested" or "multi-site"`);
155
+ process.exit(1);
156
+ }
157
+ to = next;
158
+ }
159
+ else if (arg === '--name') {
160
+ name = args[++i];
161
+ if (!name) {
162
+ console.error('Error: --name requires a value');
163
+ process.exit(1);
164
+ }
165
+ }
166
+ else if (arg === '--config') {
167
+ const next = args[++i];
168
+ if (!next) {
169
+ console.error('Error: --config requires a path');
170
+ process.exit(1);
171
+ }
172
+ configPath = resolve(process.cwd(), next);
173
+ }
174
+ else if (arg === '--help' || arg === '-h') {
175
+ printConfigUsage();
176
+ process.exit(0);
177
+ }
178
+ else {
179
+ console.error(`Error: Unknown migrate option "${arg}"`);
180
+ process.exit(1);
181
+ }
182
+ }
183
+ if (to === 'multi-site' && !name) {
184
+ console.error('Error: --to multi-site requires --name <site-name>');
185
+ process.exit(1);
186
+ }
187
+ return { apply, to, name, configPath };
188
+ }
189
+ function printConfigUsage() {
190
+ console.log(`
191
+ Usage: refrakt config <subcommand> [options]
192
+
193
+ Subcommands:
194
+ migrate Rewrite refrakt.config.json to a different shape
195
+
196
+ Migrate Options:
197
+ --to <shape> "nested" (flat → singular site) or "multi-site" (singular → sites)
198
+ Default: nested
199
+ --name <name> Required for --to multi-site; the key for the site under "sites"
200
+ --apply Write changes to disk (default: dry-run prints a diff)
201
+ --config <path> Path to refrakt.config.json (default: ./refrakt.config.json)
202
+
203
+ Examples:
204
+ refrakt config migrate # Preview flat → singular
205
+ refrakt config migrate --apply # Write the migration
206
+ refrakt config migrate --to multi-site --name main --apply
207
+ `);
208
+ }
209
+ function detectIndent(text) {
210
+ const lines = text.split('\n').slice(0, 20);
211
+ for (const line of lines) {
212
+ if (line.startsWith('\t'))
213
+ return '\t';
214
+ const match = line.match(/^( +)\S/);
215
+ if (match)
216
+ return match[1].length;
217
+ }
218
+ return '\t';
219
+ }
220
+ /** Tiny line-based diff renderer — fine for short JSON files where the visual
221
+ * goal is "I can see what changed." Not a real diff implementation. */
222
+ function formatDiff(before, after, label) {
223
+ const beforeLines = before.split('\n');
224
+ const afterLines = after.split('\n');
225
+ const lines = [`--- ${label}`, `+++ ${label}`];
226
+ const max = Math.max(beforeLines.length, afterLines.length);
227
+ for (let i = 0; i < max; i++) {
228
+ const b = beforeLines[i];
229
+ const a = afterLines[i];
230
+ if (b === a) {
231
+ if (b !== undefined)
232
+ lines.push(` ${b}`);
233
+ }
234
+ else {
235
+ if (b !== undefined)
236
+ lines.push(`- ${b}`);
237
+ if (a !== undefined)
238
+ lines.push(`+ ${a}`);
239
+ }
240
+ }
241
+ return lines.join('\n');
242
+ }
243
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"package-validate.d.ts","sourceRoot":"","sources":["../../src/commands/package-validate.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACtC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxF"}
1
+ {"version":3,"file":"package-validate.d.ts","sourceRoot":"","sources":["../../src/commands/package-validate.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACtC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxF"}
@@ -1,5 +1,6 @@
1
1
  import { readFileSync, existsSync } from 'fs';
2
- import { resolve, join, relative } from 'path';
2
+ import { resolve, join, relative, dirname } from 'path';
3
+ import { discoverPlugins } from '../lib/plugins.js';
3
4
  /**
4
5
  * Validate a rune package before publishing.
5
6
  *
@@ -155,8 +156,145 @@ async function validatePackage(packageDir) {
155
156
  message: `${runesWithoutDescription.length} rune(s) without descriptions: ${runesWithoutDescription.join(', ')}. Descriptions improve AI prompt generation.`,
156
157
  });
157
158
  }
159
+ // Step 10: Validate the cli-plugin export shape if the package contributes one.
160
+ const cliPluginResult = await validateCliPlugin(packageDir, pkgJson, npmName);
161
+ errors.push(...cliPluginResult.errors);
162
+ warnings.push(...cliPluginResult.warnings);
158
163
  return { valid: errors.length === 0, packageName: npmName, errors, warnings };
159
164
  }
165
+ /** Validate a package's `cli-plugin` export when present.
166
+ *
167
+ * Skipped silently when the package does not declare a cli-plugin export —
168
+ * most rune packages don't ship CLI commands. When the export exists, this
169
+ * checks structural integrity (namespace, commands, schemas) and warns when
170
+ * optional MCP-friendly fields are missing.
171
+ */
172
+ async function validateCliPlugin(packageDir, pkgJson, npmName) {
173
+ const errors = [];
174
+ const warnings = [];
175
+ const exports = pkgJson.exports;
176
+ const cliPluginExport = exports?.['./cli-plugin'];
177
+ if (!cliPluginExport) {
178
+ // No cli-plugin contribution — nothing to lint.
179
+ return { errors, warnings };
180
+ }
181
+ const candidates = [
182
+ join(packageDir, 'dist', 'cli-plugin.js'),
183
+ join(packageDir, 'src', 'cli-plugin.js'),
184
+ join(packageDir, 'src', 'cli-plugin.ts'),
185
+ join(packageDir, 'cli-plugin.js'),
186
+ ];
187
+ let plugin = null;
188
+ let importError;
189
+ for (const path of candidates) {
190
+ if (!existsSync(path))
191
+ continue;
192
+ try {
193
+ const mod = await import(path);
194
+ const candidate = mod.default ?? mod;
195
+ if (isPluginLike(candidate)) {
196
+ plugin = candidate;
197
+ break;
198
+ }
199
+ }
200
+ catch (err) {
201
+ importError = err.message;
202
+ }
203
+ }
204
+ if (!plugin) {
205
+ errors.push({
206
+ path: 'cli-plugin',
207
+ message: importError
208
+ ? `Could not load cli-plugin export: ${importError}`
209
+ : 'Could not find a valid CliPlugin export in dist/cli-plugin.js or src/cli-plugin.ts',
210
+ });
211
+ return { errors, warnings };
212
+ }
213
+ if (typeof plugin.namespace !== 'string' || plugin.namespace.length === 0) {
214
+ errors.push({ path: 'cli-plugin.namespace', message: 'Required and must be a non-empty string' });
215
+ }
216
+ if (!Array.isArray(plugin.commands)) {
217
+ errors.push({ path: 'cli-plugin.commands', message: 'Required and must be an array' });
218
+ return { errors, warnings };
219
+ }
220
+ if (plugin.commands.length === 0) {
221
+ warnings.push({ path: 'cli-plugin.commands', message: 'No commands declared — the plugin contributes nothing' });
222
+ }
223
+ for (let i = 0; i < plugin.commands.length; i++) {
224
+ const rawCmd = plugin.commands[i];
225
+ const cmd = rawCmd;
226
+ const prefix = `cli-plugin.commands[${i}]`;
227
+ if (!cmd || typeof cmd !== 'object') {
228
+ errors.push({ path: prefix, message: 'Must be an object' });
229
+ continue;
230
+ }
231
+ if (typeof cmd.name !== 'string' || cmd.name.length === 0) {
232
+ errors.push({ path: `${prefix}.name`, message: 'Required and must be a non-empty string' });
233
+ }
234
+ if (typeof cmd.description !== 'string') {
235
+ errors.push({ path: `${prefix}.description`, message: 'Required and must be a string' });
236
+ }
237
+ else if (cmd.description.length === 0) {
238
+ warnings.push({ path: `${prefix}.description`, message: 'Empty description — used in --help output and as MCP tool fallback' });
239
+ }
240
+ if (typeof cmd.handler !== 'function') {
241
+ errors.push({ path: `${prefix}.handler`, message: 'Required and must be a function' });
242
+ }
243
+ if (cmd.inputSchema !== undefined && !isPlausibleJsonSchema(cmd.inputSchema)) {
244
+ errors.push({ path: `${prefix}.inputSchema`, message: 'Must be a JSON Schema object' });
245
+ }
246
+ if (cmd.outputSchema !== undefined && !isPlausibleJsonSchema(cmd.outputSchema)) {
247
+ errors.push({ path: `${prefix}.outputSchema`, message: 'Must be a JSON Schema object' });
248
+ }
249
+ if (cmd.mcpHandler !== undefined && typeof cmd.mcpHandler !== 'function') {
250
+ errors.push({ path: `${prefix}.mcpHandler`, message: 'Must be a function' });
251
+ }
252
+ const cmdName = typeof cmd.name === 'string' ? cmd.name : `[${i}]`;
253
+ if (cmd.inputSchema === undefined) {
254
+ warnings.push({
255
+ path: `${prefix}`,
256
+ message: `Command "${cmdName}" has no inputSchema — recommended so the command surfaces as a typed MCP tool`,
257
+ });
258
+ }
259
+ if (cmd.mcpHandler === undefined && cmd.inputSchema !== undefined) {
260
+ warnings.push({
261
+ path: `${prefix}`,
262
+ message: `Command "${cmdName}" declares inputSchema but no mcpHandler — MCP will fall back to argv-shimming, losing structured I/O`,
263
+ });
264
+ }
265
+ }
266
+ // Namespace-clash check against other plugins discovered in the same project.
267
+ try {
268
+ // Discover from the parent of the package directory (so its node_modules
269
+ // includes peer packages); falling back to packageDir is fine when the
270
+ // package is published rather than in a workspace.
271
+ const discoveryRoot = dirname(packageDir);
272
+ const others = await discoverPlugins({ cwd: discoveryRoot, warn: false });
273
+ for (const other of others) {
274
+ if (other.packageName === npmName)
275
+ continue;
276
+ if (other.namespace === plugin.namespace) {
277
+ warnings.push({
278
+ path: 'cli-plugin.namespace',
279
+ message: `Namespace "${plugin.namespace}" is already provided by ${other.packageName} in this project`,
280
+ });
281
+ }
282
+ }
283
+ }
284
+ catch {
285
+ // Discovery failures are non-blocking — the lint is best-effort.
286
+ }
287
+ return { errors, warnings };
288
+ }
289
+ function isPluginLike(value) {
290
+ if (!value || typeof value !== 'object')
291
+ return false;
292
+ const obj = value;
293
+ return (typeof obj.namespace === 'string' && Array.isArray(obj.commands));
294
+ }
295
+ function isPlausibleJsonSchema(value) {
296
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
297
+ }
160
298
  function validateRuneEntry(runeName, entry, errors, warnings) {
161
299
  const prefix = `runes.${runeName}`;
162
300
  // transform is required
@@ -1 +1 @@
1
- {"version":3,"file":"package-validate.js","sourceRoot":"","sources":["../../src/commands/package-validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-validate.js","sourceRoot":"","sources":["../../src/commands/package-validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** Entry point for `refrakt plugins ...`. */
2
+ export declare function runPluginsCommand(args: string[]): Promise<void>;
3
+ /** Used by `refrakt --help`: append a short "Installed plugins:" section
4
+ * to the static usage output. Silently does nothing on discovery error. */
5
+ export declare function appendPluginsToHelp(): Promise<void>;
6
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAIA,6CAA6C;AAC7C,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;AAoFD;4EAC4E;AAC5E,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAezD"}
@@ -0,0 +1,117 @@
1
+ import { discoverPlugins } from '../lib/plugins.js';
2
+ const SUBCOMMANDS = ['list'];
3
+ /** Entry point for `refrakt plugins ...`. */
4
+ export async function runPluginsCommand(args) {
5
+ const sub = args[0];
6
+ if (!sub || sub === '--help' || sub === '-h') {
7
+ printPluginsUsage();
8
+ process.exit(sub ? 0 : 1);
9
+ }
10
+ if (sub === 'list') {
11
+ await runPluginsList(args.slice(1));
12
+ return;
13
+ }
14
+ console.error(`Error: Unknown plugins subcommand "${sub}"\n`);
15
+ printPluginsUsage();
16
+ process.exit(1);
17
+ }
18
+ /** `refrakt plugins list` — text or JSON output. */
19
+ async function runPluginsList(args) {
20
+ const format = parseFormat(args);
21
+ const plugins = await discoverPlugins();
22
+ if (format === 'json') {
23
+ console.log(JSON.stringify(plugins.map(toJson), null, 2));
24
+ return;
25
+ }
26
+ if (plugins.length === 0) {
27
+ console.log('No refrakt plugins are installed in this project.');
28
+ console.log('Install one to get started, e.g.: npm install @refrakt-md/plan');
29
+ return;
30
+ }
31
+ console.log('\nInstalled refrakt plugins:\n');
32
+ const nsWidth = Math.max(...plugins.map((p) => p.namespace.length), 8);
33
+ const pkgWidth = Math.max(...plugins.map((p) => `${p.packageName}@${p.packageVersion}`.length), 12);
34
+ for (const plugin of plugins) {
35
+ const ns = plugin.namespace.padEnd(nsWidth);
36
+ const pkg = `${plugin.packageName}@${plugin.packageVersion}`.padEnd(pkgWidth);
37
+ const count = `${plugin.commands.length} ${plugin.commands.length === 1 ? 'command' : 'commands'}`;
38
+ console.log(` ${ns} ${pkg} ${count}`);
39
+ const cmdNames = plugin.commands.map((c) => c.name).join(', ');
40
+ console.log(` ${cmdNames}`);
41
+ console.log();
42
+ }
43
+ console.log(`Run \`refrakt <namespace> --help\` for command details.`);
44
+ }
45
+ function parseFormat(args) {
46
+ for (let i = 0; i < args.length; i++) {
47
+ const a = args[i];
48
+ if (a === '--format') {
49
+ const next = args[i + 1];
50
+ if (next === 'json' || next === 'text')
51
+ return next;
52
+ console.error(`Error: --format must be "text" or "json"`);
53
+ process.exit(1);
54
+ }
55
+ if (a === '--format=json')
56
+ return 'json';
57
+ if (a === '--format=text')
58
+ return 'text';
59
+ if (a === '--json')
60
+ return 'json';
61
+ }
62
+ return 'text';
63
+ }
64
+ function toJson(plugin) {
65
+ return {
66
+ namespace: plugin.namespace,
67
+ packageName: plugin.packageName,
68
+ packageVersion: plugin.packageVersion,
69
+ source: plugin.source,
70
+ description: plugin.description,
71
+ commands: plugin.commands.map((c) => ({
72
+ name: c.name,
73
+ description: c.description,
74
+ hasInputSchema: c.inputSchema !== undefined,
75
+ hasOutputSchema: c.outputSchema !== undefined,
76
+ hasMcpHandler: c.mcpHandler !== undefined,
77
+ })),
78
+ };
79
+ }
80
+ function printPluginsUsage() {
81
+ console.log(`
82
+ Usage: refrakt plugins <subcommand> [options]
83
+
84
+ Subcommands:
85
+ list List installed plugins and their commands
86
+
87
+ Options:
88
+ --format <fmt> Output format: text (default) or json
89
+ --json Shorthand for --format=json (list)
90
+
91
+ Examples:
92
+ refrakt plugins list
93
+ refrakt plugins list --format json
94
+ `);
95
+ void SUBCOMMANDS;
96
+ }
97
+ /** Used by `refrakt --help`: append a short "Installed plugins:" section
98
+ * to the static usage output. Silently does nothing on discovery error. */
99
+ export async function appendPluginsToHelp() {
100
+ let plugins;
101
+ try {
102
+ plugins = await discoverPlugins({ warn: false });
103
+ }
104
+ catch {
105
+ return;
106
+ }
107
+ if (plugins.length === 0)
108
+ return;
109
+ console.log(`Installed plugins:`);
110
+ const width = Math.max(...plugins.map((p) => p.namespace.length));
111
+ for (const plugin of plugins) {
112
+ const desc = plugin.description ?? plugin.packageName;
113
+ console.log(` ${plugin.namespace.padEnd(width + 2)} ${desc}`);
114
+ }
115
+ console.log();
116
+ }
117
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,21 @@
1
1
  import type { RefraktConfig } from '@refrakt-md/types';
2
+ import { type NormalizedRefraktConfig } from '@refrakt-md/transform/node';
2
3
  export interface PackageManager {
3
4
  name: 'npm' | 'pnpm' | 'yarn' | 'bun';
4
5
  installCmd: (source: string) => string;
5
6
  }
6
7
  /** Detect the project's package manager by checking for lockfiles */
7
8
  export declare function detectPackageManager(cwd?: string): PackageManager;
8
- /** Load refrakt.config.json from a directory */
9
+ /** Load and normalize refrakt.config.json from a directory.
10
+ *
11
+ * Delegates to `@refrakt-md/transform/node` so the CLI and framework adapters
12
+ * share one normalization path. Returns both the raw input (for tools that
13
+ * need to round-trip the original shape) and the normalized form. */
9
14
  export declare function loadRefraktConfigFile(cwd?: string): {
10
15
  path: string;
11
- config: RefraktConfig;
16
+ config: NormalizedRefraktConfig;
17
+ raw: RefraktConfig;
12
18
  };
13
- /** Write refrakt.config.json, preserving formatting */
19
+ /** Write refrakt.config.json, preserving tab-indented formatting. */
14
20
  export declare function writeRefraktConfigFile(path: string, config: RefraktConfig): void;
15
21
  //# sourceMappingURL=config-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACtC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AA0BD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc,CAKhF;AAED,gDAAgD;AAChD,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAQ1G;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAEhF"}
1
+ {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACtC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AA0BD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc,CAKhF;AAED;;;;sEAIsE;AACtE,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,uBAAuB,CAAC;IAChC,GAAG,EAAE,aAAa,CAAC;CACnB,CAOA;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAEhF"}