@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/cli",
3
- "version": "0.7.0-rc.1",
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.1",
40
- "@metaobjectsdev/metadata": "0.7.0-rc.1",
41
- "@metaobjectsdev/render": "0.7.0-rc.1",
42
- "@metaobjectsdev/codegen-ts": "0.7.0-rc.1",
43
- "@metaobjectsdev/codegen-ts-react": "0.7.0-rc.1",
44
- "@metaobjectsdev/codegen-ts-tanstack": "0.7.0-rc.1",
45
- "@metaobjectsdev/migrate-ts": "0.7.0-rc.1",
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": {
@@ -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")) {
@@ -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")) {
@@ -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")) {