@dereekb/dbx-components-mcp 13.10.3 → 13.10.5

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.
@@ -290,34 +290,50 @@
290
290
  "canonicalFix": "Update the getter body to return the matching identity constant."
291
291
  },
292
292
  {
293
- "code": "MODEL_FIELD_JSDOC_NO_FULL_NAME",
293
+ "code": "MODEL_FIELD_MISSING_JSDOC",
294
294
  "source": "dbx_model_validate",
295
295
  "severity": "warning",
296
- "title": "A persisted field's JSDoc doesn't open with `<fullName> -- <description>`",
297
- "whatItFlags": "A persisted field's JSDoc doesn't open with `<fullName> -- <description>`.",
298
- "whenItApplies": "Every field with JSDoc — the first line should match the `<fullName> -- <description>` pattern so the long-name extractor and decoder agree on field semantics.",
299
- "whenItDoesNotApply": "When the project deliberately uses a non-standard JSDoc convention (rare).",
300
- "canonicalFix": "Reformat the JSDoc opener to `<longName> -- <one-line description>`."
296
+ "title": "A persisted field has no JSDoc description",
297
+ "whatItFlags": "A persisted field has no JSDoc description.",
298
+ "whenItApplies": "Every persisted field — short field names need a JSDoc description so a reader knows what the field is actually for. The long-name itself is carried by the `@dbxModelVariable` tag, so the JSDoc body just needs a one-line description.",
299
+ "whenItDoesNotApply": "Fields whose name is unambiguously self-describing (rare with 1-4 char abbreviations).",
300
+ "canonicalFix": "Add `/** <one-line description> *\\/` above the field declaration (and append `@dbxModelVariable <longName>` for the canonical long name)."
301
301
  },
302
302
  {
303
- "code": "MODEL_FIELD_MISSING_JSDOC",
303
+ "code": "MODEL_FIELD_MISSING_VARIABLE_TAG",
304
304
  "source": "dbx_model_validate",
305
305
  "severity": "warning",
306
- "title": "A persisted field has no JSDoc",
307
- "whatItFlags": "A persisted field has no JSDoc.",
308
- "whenItApplies": "Every persisted field — short field names need JSDoc to document what they mean.",
309
- "whenItDoesNotApply": "Fields whose name is unambiguously self-describing (rare with 1-4 char abbreviations).",
310
- "canonicalFix": "Add `/** <fullName> -- <description> *\\/` above the field declaration."
306
+ "title": "A persisted field is missing its `@dbxModelVariable <name>` JSDoc tag",
307
+ "whatItFlags": "A persisted field is missing its `@dbxModelVariable <name>` JSDoc tag.",
308
+ "whenItApplies": "Every field on a `@dbxModel` interface — the tag carries the human-readable long name the catalog and decoder use when surfacing the field to operators. The long name is the variable name the field would have unabbreviated, written in camelCase (e.g. `uid` → `userUid`, `n` → `name`, `crAt` → `createdAt`).",
309
+ "whenItDoesNotApply": "Fields on embedded sub-object interfaces (no `@dbxModel` parent) and fields the project deliberately leaves untagged (rare).",
310
+ "canonicalFix": "Append `@dbxModelVariable <longName>` to the field's JSDoc block, where `<longName>` is the field's unabbreviated camelCase variable name."
311
311
  },
312
312
  {
313
313
  "code": "MODEL_FIELD_NAME_TOO_LONG",
314
314
  "source": "dbx_model_validate",
315
315
  "severity": "warning",
316
- "title": "A persisted field's name exceeds the workspace's 4-character convention",
317
- "whatItFlags": "A persisted field's name exceeds the workspace's 4-character convention.",
318
- "whenItApplies": "Every persisted field on a model interface (or sub-object interface).",
319
- "whenItDoesNotApply": "Fields that compose well-known multi-character abbreviations the project intentionally allows.",
320
- "canonicalFix": "Rename the field to a 1–4 character abbreviation (e.g. `name` → `n`, `userId` → `uid`)."
316
+ "title": "A persisted field's name exceeds the workspace's 5-character convention",
317
+ "whatItFlags": "A persisted field's name exceeds the workspace's 5-character convention.",
318
+ "whenItApplies": "Every persisted field on a model interface (or sub-object interface). The default limit is 5; override via `dbx-mcp.config.json` `modelValidate.maxFieldNameLength`.",
319
+ "whenItDoesNotApply": "Fields whose name is listed in `dbx-mcp.config.json` `modelValidate.ignoredFieldNames`, or fields that compose well-known multi-character abbreviations the project intentionally allows.",
320
+ "canonicalFix": "Rename the field to a 1–5 character abbreviation (e.g. `name` → `n`, `userId` → `uid`). To exempt specific names workspace-wide, add them to `modelValidate.ignoredFieldNames` in `dbx-mcp.config.json`."
321
+ },
322
+ {
323
+ "code": "MODEL_GROUP_INTERFACE_MISSING_TAG",
324
+ "source": "dbx_model_validate",
325
+ "severity": "error",
326
+ "title": "The `<Group>FirestoreCollections` interface is missing its `@dbxModelGroup` JSDoc tag",
327
+ "whatItFlags": "The `<Group>FirestoreCollections` interface is missing its `@dbxModelGroup` JSDoc tag.",
328
+ "whenItApplies": "Every group container — the rich catalog extractor (`scan/extract-models`) requires the tag to register the group, and downstream traversal/referencing depends on that registration.",
329
+ "whenItDoesNotApply": "Files in `@dereekb/firebase` itself (upstream-owned sources).",
330
+ "canonicalFix": "Add `@dbxModelGroup <Group>` to the JSDoc above the `<Group>FirestoreCollections` declaration.",
331
+ "seeAlso": [
332
+ {
333
+ "kind": "artifact",
334
+ "target": "firestore-model"
335
+ }
336
+ ]
321
337
  },
322
338
  {
323
339
  "code": "MODEL_IDENTITY_BAD_ARGS",
@@ -339,6 +355,38 @@
339
355
  "whenItDoesNotApply": "When intentionally module-private (rare).",
340
356
  "canonicalFix": "Add `export` to the identity constant declaration."
341
357
  },
358
+ {
359
+ "code": "MODEL_IDENTITY_NOT_TAGGED",
360
+ "source": "dbx_model_validate",
361
+ "severity": "error",
362
+ "title": "`firestoreModelIdentity(...)` was found but its corresponding model interface lacks the `@dbxModel` JSDoc tag, leaving the model invisible to the catalog and to downstream traversal/referencing code",
363
+ "whatItFlags": "`firestoreModelIdentity(...)` was found but its corresponding model interface lacks the `@dbxModel` JSDoc tag, leaving the model invisible to the catalog and to downstream traversal/referencing code.",
364
+ "whenItApplies": "Every `firestoreModelIdentity(...)` call whose `<PascalName>` interface is missing `@dbxModel`. Anchored at the identity line so the fix points at both the interface and the identity.",
365
+ "whenItDoesNotApply": "Files in `@dereekb/firebase` itself.",
366
+ "canonicalFix": "Add `@dbxModel` to the JSDoc on the `<PascalName>` interface so the catalog and decoder recognise it as a model.",
367
+ "seeAlso": [
368
+ {
369
+ "kind": "artifact",
370
+ "target": "firestore-model"
371
+ }
372
+ ]
373
+ },
374
+ {
375
+ "code": "MODEL_INTERFACE_MISSING_TAG",
376
+ "source": "dbx_model_validate",
377
+ "severity": "error",
378
+ "title": "The model's data interface is missing its `@dbxModel` JSDoc tag",
379
+ "whatItFlags": "The model's data interface is missing its `@dbxModel` JSDoc tag.",
380
+ "whenItApplies": "Every `<PascalName>` interface that anchors a `firestoreModelIdentity(...)` model — the rich catalog extractor (`scan/extract-models`) requires the tag to register the model.",
381
+ "whenItDoesNotApply": "Embedded sub-object interfaces (no matching identity) and files in `@dereekb/firebase` itself.",
382
+ "canonicalFix": "Add `@dbxModel` to the JSDoc above the `<PascalName>` interface declaration.",
383
+ "seeAlso": [
384
+ {
385
+ "kind": "artifact",
386
+ "target": "firestore-model"
387
+ }
388
+ ]
389
+ },
342
390
  {
343
391
  "code": "MODEL_INTERFACE_NOT_EXPORTED",
344
392
  "source": "dbx_model_validate",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-components-mcp",
3
- "version": "13.10.3",
3
+ "version": "13.10.5",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "dbx-components-mcp": "dbx-components-mcp.js"