@metaobjectsdev/cli 0.7.0-rc.1 → 0.7.0-rc.3
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/package.json +9 -8
- package/src/commands/gen.ts +3 -1
- package/src/commands/migrate.ts +27 -3
- package/src/commands/prompt-snapshot.ts +16 -1
- package/src/commands/verify.ts +17 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/cli",
|
|
3
|
-
"version": "0.7.0-rc.
|
|
3
|
+
"version": "0.7.0-rc.3",
|
|
4
4
|
"description": "CLI for MetaObjects: scaffold, codegen, migrate, and drift-detection commands.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -36,13 +36,14 @@
|
|
|
36
36
|
},
|
|
37
37
|
"keywords": ["metaobjects", "cli", "scaffold", "codegen", "drift-detection"],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@metaobjectsdev/sdk": "0.7.0-rc.
|
|
40
|
-
"@metaobjectsdev/metadata": "0.7.0-rc.
|
|
41
|
-
"@metaobjectsdev/render": "0.7.0-rc.
|
|
42
|
-
"@metaobjectsdev/codegen-ts": "0.7.0-rc.
|
|
43
|
-
"@metaobjectsdev/codegen-ts-react": "0.7.0-rc.
|
|
44
|
-
"@metaobjectsdev/codegen-ts-tanstack": "0.7.0-rc.
|
|
45
|
-
"@metaobjectsdev/migrate-ts": "0.7.0-rc.
|
|
39
|
+
"@metaobjectsdev/sdk": "0.7.0-rc.3",
|
|
40
|
+
"@metaobjectsdev/metadata": "0.7.0-rc.3",
|
|
41
|
+
"@metaobjectsdev/render": "0.7.0-rc.3",
|
|
42
|
+
"@metaobjectsdev/codegen-ts": "0.7.0-rc.3",
|
|
43
|
+
"@metaobjectsdev/codegen-ts-react": "0.7.0-rc.3",
|
|
44
|
+
"@metaobjectsdev/codegen-ts-tanstack": "0.7.0-rc.3",
|
|
45
|
+
"@metaobjectsdev/migrate-ts": "0.7.0-rc.3",
|
|
46
|
+
"@metaobjectsdev/runtime-ts": "0.7.0-rc.3",
|
|
46
47
|
"jiti": "^2.4.0"
|
|
47
48
|
},
|
|
48
49
|
"peerDependencies": {
|
package/src/commands/gen.ts
CHANGED
|
@@ -35,7 +35,9 @@ export async function genCommand(args: string[], cwd: string): Promise<number> {
|
|
|
35
35
|
|
|
36
36
|
let metadata;
|
|
37
37
|
try {
|
|
38
|
-
metadata = await loadMemory(projectRoot
|
|
38
|
+
metadata = await loadMemory(projectRoot, {
|
|
39
|
+
...(forgeConfig.providers !== undefined ? { providers: forgeConfig.providers } : {}),
|
|
40
|
+
});
|
|
39
41
|
} catch (err) {
|
|
40
42
|
const msg = (err as Error).message;
|
|
41
43
|
if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
|
package/src/commands/migrate.ts
CHANGED
|
@@ -160,9 +160,22 @@ export async function migrateCommand(
|
|
|
160
160
|
return 2;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
// Best-effort load of metaobjects.config.ts to pick up consumer-supplied
|
|
164
|
+
// providers. migrate's postgres/sqlite path also reads the config later
|
|
165
|
+
// for columnNamingStrategy; we load it once here and reuse below.
|
|
166
|
+
let postgresConfigProviders: readonly import("@metaobjectsdev/codegen-ts").MetaDataTypeProvider[] | undefined;
|
|
167
|
+
try {
|
|
168
|
+
const forgeConfig = await loadMetaobjectsConfig(metaRoot);
|
|
169
|
+
postgresConfigProviders = forgeConfig.providers;
|
|
170
|
+
} catch {
|
|
171
|
+
postgresConfigProviders = undefined;
|
|
172
|
+
}
|
|
173
|
+
|
|
163
174
|
let metadata;
|
|
164
175
|
try {
|
|
165
|
-
metadata = await loadMemory(metaRoot
|
|
176
|
+
metadata = await loadMemory(metaRoot, {
|
|
177
|
+
...(postgresConfigProviders !== undefined ? { providers: postgresConfigProviders } : {}),
|
|
178
|
+
});
|
|
166
179
|
} catch (err) {
|
|
167
180
|
const msg = (err as Error).message;
|
|
168
181
|
if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
|
|
@@ -420,10 +433,21 @@ async function runD1Migrate(
|
|
|
420
433
|
return stdout;
|
|
421
434
|
};
|
|
422
435
|
|
|
423
|
-
// 3. Load metadata.
|
|
436
|
+
// 3. Load metadata. Best-effort config read for consumer providers; falls
|
|
437
|
+
// back to default core+forge bundle if metaobjects.config.ts is absent.
|
|
438
|
+
let d1ConfigProviders: readonly import("@metaobjectsdev/codegen-ts").MetaDataTypeProvider[] | undefined;
|
|
439
|
+
try {
|
|
440
|
+
const forgeConfig = await loadMetaobjectsConfig(metaRoot);
|
|
441
|
+
d1ConfigProviders = forgeConfig.providers;
|
|
442
|
+
} catch {
|
|
443
|
+
d1ConfigProviders = undefined;
|
|
444
|
+
}
|
|
445
|
+
|
|
424
446
|
let metadata;
|
|
425
447
|
try {
|
|
426
|
-
metadata = await loadMemory(metaRoot
|
|
448
|
+
metadata = await loadMemory(metaRoot, {
|
|
449
|
+
...(d1ConfigProviders !== undefined ? { providers: d1ConfigProviders } : {}),
|
|
450
|
+
});
|
|
427
451
|
} catch (err) {
|
|
428
452
|
const msg = (err as Error).message;
|
|
429
453
|
if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
|
|
@@ -14,6 +14,7 @@ import { parsePromptSnapshotArgs } from "../lib/args.js";
|
|
|
14
14
|
import { log } from "../lib/log.js";
|
|
15
15
|
import { FileProvider } from "../lib/file-provider.js";
|
|
16
16
|
import { snapshotPaths, unifiedDiff } from "../lib/snapshot.js";
|
|
17
|
+
import { loadMetaobjectsConfig } from "../lib/load-metaobjects-config.js";
|
|
17
18
|
import { loadMemory } from "@metaobjectsdev/sdk";
|
|
18
19
|
import { TYPE_TEMPLATE, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_FORMAT } from "@metaobjectsdev/metadata";
|
|
19
20
|
import { render, ESCAPERS, type RenderFormat } from "@metaobjectsdev/render";
|
|
@@ -29,9 +30,23 @@ export async function promptSnapshotCommand(args: string[], cwd: string): Promis
|
|
|
29
30
|
return 2;
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
// Best-effort load of metaobjects.config.ts to pick up consumer-supplied
|
|
34
|
+
// providers. prompt-snapshot doesn't require codegen config; if it's absent
|
|
35
|
+
// or invalid, fall back to defaults — the loader still works for any
|
|
36
|
+
// metadata that only uses core+forge subtypes.
|
|
37
|
+
let configProviders: NonNullable<Awaited<ReturnType<typeof loadMetaobjectsConfig>>["providers"]> | undefined;
|
|
38
|
+
try {
|
|
39
|
+
const forgeConfig = await loadMetaobjectsConfig(cwd);
|
|
40
|
+
configProviders = forgeConfig.providers;
|
|
41
|
+
} catch {
|
|
42
|
+
configProviders = undefined;
|
|
43
|
+
}
|
|
44
|
+
|
|
32
45
|
let root;
|
|
33
46
|
try {
|
|
34
|
-
root = await loadMemory(cwd
|
|
47
|
+
root = await loadMemory(cwd, {
|
|
48
|
+
...(configProviders !== undefined ? { providers: configProviders } : {}),
|
|
49
|
+
});
|
|
35
50
|
} catch (err) {
|
|
36
51
|
const msg = (err as Error).message;
|
|
37
52
|
if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
|
package/src/commands/verify.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { parseVerifyArgs } from "../lib/args.js";
|
|
|
12
12
|
import { log } from "../lib/log.js";
|
|
13
13
|
import { FileProvider } from "../lib/file-provider.js";
|
|
14
14
|
import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
|
|
15
|
+
import { loadMetaobjectsConfig } from "../lib/load-metaobjects-config.js";
|
|
15
16
|
import { loadMemory } from "@metaobjectsdev/sdk";
|
|
16
17
|
import {
|
|
17
18
|
TYPE_TEMPLATE,
|
|
@@ -42,9 +43,24 @@ export async function verifyCommand(args: string[], cwd: string): Promise<number
|
|
|
42
43
|
return 2;
|
|
43
44
|
}
|
|
44
45
|
|
|
46
|
+
// Best-effort load of metaobjects.config.ts to pick up consumer-supplied
|
|
47
|
+
// providers (e.g. a project's `template.toolcall` subtype). verify doesn't
|
|
48
|
+
// require codegen config; if it's absent or invalid, fall back to defaults
|
|
49
|
+
// — the loader will surface a stable ERR_UNKNOWN_SUBTYPE if the metadata
|
|
50
|
+
// actually uses a non-default subtype.
|
|
51
|
+
let configProviders: NonNullable<Awaited<ReturnType<typeof loadMetaobjectsConfig>>["providers"]> | undefined;
|
|
52
|
+
try {
|
|
53
|
+
const forgeConfig = await loadMetaobjectsConfig(cwd);
|
|
54
|
+
configProviders = forgeConfig.providers;
|
|
55
|
+
} catch {
|
|
56
|
+
configProviders = undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
45
59
|
let root;
|
|
46
60
|
try {
|
|
47
|
-
root = await loadMemory(cwd
|
|
61
|
+
root = await loadMemory(cwd, {
|
|
62
|
+
...(configProviders !== undefined ? { providers: configProviders } : {}),
|
|
63
|
+
});
|
|
48
64
|
} catch (err) {
|
|
49
65
|
const msg = (err as Error).message;
|
|
50
66
|
if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
|