@metaobjectsdev/cli 0.6.0-rc.1 → 0.7.0-rc.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAiCA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6EhF"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAmCA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoGhF"}
@@ -12,7 +12,7 @@ import { log } from "../lib/log.js";
12
12
  import { FileProvider } from "../lib/file-provider.js";
13
13
  import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
14
14
  import { loadMemory } from "@metaobjectsdev/sdk";
15
- import { TYPE_TEMPLATE, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_REQUIRED_SLOTS, TEMPLATE_ATTR_REQUIRED_TAGS, } from "@metaobjectsdev/metadata";
15
+ import { TYPE_TEMPLATE, TEMPLATE_SUBTYPE_PROMPT, TEMPLATE_SUBTYPE_OUTPUT, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_REQUIRED_SLOTS, TEMPLATE_ATTR_REQUIRED_TAGS, } from "@metaobjectsdev/metadata";
16
16
  import { verify, ERR_REQUIRED_SLOT_UNUSED, ERR_PARTIAL_UNRESOLVED } from "@metaobjectsdev/render";
17
17
  const DEFAULT_PROMPTS_DIR = "prompts";
18
18
  /** Coerce a string-array attr (array, or a single string) into a string[]. */
@@ -61,26 +61,48 @@ export async function verifyCommand(args, cwd) {
61
61
  // Absent/typeless required attrs are a loader-schema concern, not verify's.
62
62
  if (typeof textRef !== "string" || typeof payloadRef !== "string")
63
63
  continue;
64
- const text = provider.resolve(textRef);
65
- if (text === undefined) {
66
- log.error(`[${tmpl.name}] ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`);
64
+ // Both subtypes verify that @payloadRef resolves to a loaded object.value.
65
+ // The render-engine `verify()` would also throw on missing refs, but the
66
+ // output branch doesn't call it explicit check keeps the error symmetric.
67
+ const fieldTree = derivePayloadFieldTree(root, payloadRef);
68
+ if (fieldTree.length === 0) {
69
+ log.error(`[${tmpl.name}] (${tmpl.subType}) ${ERR_PARTIAL_UNRESOLVED}: ` +
70
+ `@payloadRef "${payloadRef}" did not resolve to a loaded object.value`);
67
71
  errorCount++;
68
72
  continue;
69
73
  }
70
- const fieldTree = derivePayloadFieldTree(root, payloadRef);
71
- const requiredSlots = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_SLOTS));
72
- const requiredTags = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_TAGS));
73
- const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
74
- checked++;
75
- for (const e of drift) {
76
- if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
77
- log.warn(`[${tmpl.name}] ${e.code}: ${e.path}`);
78
- warnCount++;
79
- }
80
- else {
81
- log.error(`[${tmpl.name}] ${e.code}: ${e.path}`);
74
+ if (tmpl.subType === TEMPLATE_SUBTYPE_PROMPT) {
75
+ // Render-engine drift check: template variables ↔ payload field names.
76
+ const text = provider.resolve(textRef);
77
+ if (text === undefined) {
78
+ log.error(`[${tmpl.name}] (prompt) ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`);
82
79
  errorCount++;
80
+ continue;
83
81
  }
82
+ const requiredSlots = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_SLOTS));
83
+ const requiredTags = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_TAGS));
84
+ const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
85
+ checked++;
86
+ for (const e of drift) {
87
+ if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
88
+ log.warn(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
89
+ warnCount++;
90
+ }
91
+ else {
92
+ log.error(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
93
+ errorCount++;
94
+ }
95
+ }
96
+ }
97
+ else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
98
+ // Output drift check: re-derive the payload field tree (already done above);
99
+ // if it resolved, the parser codegen can produce a schema. Field-type
100
+ // unsupported-by-Zod issues are caught by the codegen itself if/when
101
+ // `meta gen` runs; verify confines itself to ref-resolution checks.
102
+ checked++;
103
+ }
104
+ else {
105
+ // Unknown subtype — ignore (loader-schema concern).
84
106
  }
85
107
  }
86
108
  if (errorCount > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAE5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAElG,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,IAAa;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IACvF,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,GAAW;IAC7D,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,CAAC;QACnC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,KAAK,CAAC,4BAA4B,GAAG,+BAA+B,CAAC,CAAC;YAC1E,OAAO,CAAC,CAAC;QACX,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAC7E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC3D,4EAA4E;QAC5E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,SAAS;QAE5E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,CACP,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,eAAe,OAAO,2BAA2B,UAAU,EAAE,CACtG,CAAC;YACF,UAAU,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChD,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,GAAG,CAAC,KAAK,CACP,iBAAiB,UAAU,0BAA0B,SAAS,CAAC,MAAM,eAAe,CACrF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CAAC,IAAI,CACN,iBAAiB,OAAO,qBAAqB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAClG,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/cli",
3
- "version": "0.6.0-rc.1",
3
+ "version": "0.7.0-rc.1",
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,13 @@
36
36
  },
37
37
  "keywords": ["metaobjects", "cli", "scaffold", "codegen", "drift-detection"],
38
38
  "dependencies": {
39
- "@metaobjectsdev/sdk": "0.6.0-rc.1",
40
- "@metaobjectsdev/metadata": "0.6.0-rc.1",
41
- "@metaobjectsdev/render": "0.6.0-rc.1",
42
- "@metaobjectsdev/codegen-ts": "0.6.0-rc.1",
43
- "@metaobjectsdev/codegen-ts-react": "0.6.0-rc.1",
44
- "@metaobjectsdev/codegen-ts-tanstack": "0.6.0-rc.1",
45
- "@metaobjectsdev/migrate-ts": "0.6.0-rc.1",
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",
46
46
  "jiti": "^2.4.0"
47
47
  },
48
48
  "peerDependencies": {
@@ -15,6 +15,8 @@ import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
15
15
  import { loadMemory } from "@metaobjectsdev/sdk";
16
16
  import {
17
17
  TYPE_TEMPLATE,
18
+ TEMPLATE_SUBTYPE_PROMPT,
19
+ TEMPLATE_SUBTYPE_OUTPUT,
18
20
  TEMPLATE_ATTR_PAYLOAD_REF,
19
21
  TEMPLATE_ATTR_TEXT_REF,
20
22
  TEMPLATE_ATTR_REQUIRED_SLOTS,
@@ -72,29 +74,52 @@ export async function verifyCommand(args: string[], cwd: string): Promise<number
72
74
  // Absent/typeless required attrs are a loader-schema concern, not verify's.
73
75
  if (typeof textRef !== "string" || typeof payloadRef !== "string") continue;
74
76
 
75
- const text = provider.resolve(textRef);
76
- if (text === undefined) {
77
+ // Both subtypes verify that @payloadRef resolves to a loaded object.value.
78
+ // The render-engine `verify()` would also throw on missing refs, but the
79
+ // output branch doesn't call it — explicit check keeps the error symmetric.
80
+ const fieldTree = derivePayloadFieldTree(root, payloadRef);
81
+ if (fieldTree.length === 0) {
77
82
  log.error(
78
- `[${tmpl.name}] ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`,
83
+ `[${tmpl.name}] (${tmpl.subType}) ${ERR_PARTIAL_UNRESOLVED}: ` +
84
+ `@payloadRef "${payloadRef}" did not resolve to a loaded object.value`,
79
85
  );
80
86
  errorCount++;
81
87
  continue;
82
88
  }
83
89
 
84
- const fieldTree = derivePayloadFieldTree(root, payloadRef);
85
- const requiredSlots = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_SLOTS));
86
- const requiredTags = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_TAGS));
87
-
88
- const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
89
- checked++;
90
- for (const e of drift) {
91
- if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
92
- log.warn(`[${tmpl.name}] ${e.code}: ${e.path}`);
93
- warnCount++;
94
- } else {
95
- log.error(`[${tmpl.name}] ${e.code}: ${e.path}`);
90
+ if (tmpl.subType === TEMPLATE_SUBTYPE_PROMPT) {
91
+ // Render-engine drift check: template variables ↔ payload field names.
92
+ const text = provider.resolve(textRef);
93
+ if (text === undefined) {
94
+ log.error(
95
+ `[${tmpl.name}] (prompt) ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`,
96
+ );
96
97
  errorCount++;
98
+ continue;
99
+ }
100
+
101
+ const requiredSlots = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_SLOTS));
102
+ const requiredTags = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_TAGS));
103
+
104
+ const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
105
+ checked++;
106
+ for (const e of drift) {
107
+ if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
108
+ log.warn(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
109
+ warnCount++;
110
+ } else {
111
+ log.error(`[${tmpl.name}] (prompt) ${e.code}: ${e.path}`);
112
+ errorCount++;
113
+ }
97
114
  }
115
+ } else if (tmpl.subType === TEMPLATE_SUBTYPE_OUTPUT) {
116
+ // Output drift check: re-derive the payload field tree (already done above);
117
+ // if it resolved, the parser codegen can produce a schema. Field-type
118
+ // unsupported-by-Zod issues are caught by the codegen itself if/when
119
+ // `meta gen` runs; verify confines itself to ref-resolution checks.
120
+ checked++;
121
+ } else {
122
+ // Unknown subtype — ignore (loader-schema concern).
98
123
  }
99
124
  }
100
125