@open-mercato/cli 0.6.7-develop.6696.1.4236709f7e → 0.6.7-develop.6725.1.07a748cfc2

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.
Files changed (83) hide show
  1. package/dist/agentic/guides/module-facts.json +110 -109
  2. package/dist/agentic/guides/modules/ai_assistant.md +1 -1
  3. package/dist/agentic/guides/modules/api_docs.md +1 -1
  4. package/dist/agentic/guides/modules/api_keys.md +1 -1
  5. package/dist/agentic/guides/modules/attachments.md +1 -1
  6. package/dist/agentic/guides/modules/audit_logs.md +1 -1
  7. package/dist/agentic/guides/modules/auth.md +1 -1
  8. package/dist/agentic/guides/modules/business_rules.md +1 -1
  9. package/dist/agentic/guides/modules/catalog.md +1 -1
  10. package/dist/agentic/guides/modules/channel_gmail.md +1 -1
  11. package/dist/agentic/guides/modules/channel_imap.md +1 -1
  12. package/dist/agentic/guides/modules/checkout.md +1 -1
  13. package/dist/agentic/guides/modules/communication_channels.md +1 -1
  14. package/dist/agentic/guides/modules/configs.md +1 -1
  15. package/dist/agentic/guides/modules/content.md +1 -1
  16. package/dist/agentic/guides/modules/currencies.md +1 -1
  17. package/dist/agentic/guides/modules/customer_accounts.md +1 -1
  18. package/dist/agentic/guides/modules/customers.md +1 -1
  19. package/dist/agentic/guides/modules/dashboards.md +1 -1
  20. package/dist/agentic/guides/modules/data_sync.md +1 -1
  21. package/dist/agentic/guides/modules/dictionaries.md +1 -1
  22. package/dist/agentic/guides/modules/directory.md +1 -1
  23. package/dist/agentic/guides/modules/entities.md +1 -1
  24. package/dist/agentic/guides/modules/events.md +1 -1
  25. package/dist/agentic/guides/modules/feature_toggles.md +1 -1
  26. package/dist/agentic/guides/modules/gateway_stripe.md +1 -1
  27. package/dist/agentic/guides/modules/generators.md +1 -1
  28. package/dist/agentic/guides/modules/inbox_ops.md +1 -1
  29. package/dist/agentic/guides/modules/integrations.md +1 -1
  30. package/dist/agentic/guides/modules/messages.md +1 -1
  31. package/dist/agentic/guides/modules/notifications.md +1 -1
  32. package/dist/agentic/guides/modules/onboarding.md +1 -1
  33. package/dist/agentic/guides/modules/payment_gateways.md +1 -1
  34. package/dist/agentic/guides/modules/perspectives.md +1 -1
  35. package/dist/agentic/guides/modules/planner.md +1 -1
  36. package/dist/agentic/guides/modules/portal.md +1 -1
  37. package/dist/agentic/guides/modules/progress.md +1 -1
  38. package/dist/agentic/guides/modules/query_index.md +1 -1
  39. package/dist/agentic/guides/modules/record_locks.md +1 -1
  40. package/dist/agentic/guides/modules/resources.md +1 -1
  41. package/dist/agentic/guides/modules/sales.md +2 -2
  42. package/dist/agentic/guides/modules/scheduler.md +1 -1
  43. package/dist/agentic/guides/modules/search.md +1 -1
  44. package/dist/agentic/guides/modules/security.md +1 -1
  45. package/dist/agentic/guides/modules/shipping_carriers.md +1 -1
  46. package/dist/agentic/guides/modules/sso.md +1 -1
  47. package/dist/agentic/guides/modules/staff.md +1 -1
  48. package/dist/agentic/guides/modules/storage_s3.md +1 -1
  49. package/dist/agentic/guides/modules/sync_akeneo.md +1 -1
  50. package/dist/agentic/guides/modules/sync_excel.md +1 -1
  51. package/dist/agentic/guides/modules/system_status_overlays.md +1 -1
  52. package/dist/agentic/guides/modules/translations.md +1 -1
  53. package/dist/agentic/guides/modules/webhooks.md +1 -1
  54. package/dist/agentic/guides/modules/wms.md +1 -1
  55. package/dist/agentic/guides/modules/workflows.md +1 -1
  56. package/dist/agentic/guides/spec-delivery.md +1 -1
  57. package/dist/agentic/guides/testing-debugging.md +6 -0
  58. package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +2 -1
  59. package/dist/agentic/guides/upstream/manifest.json +2 -2
  60. package/dist/agentic/shared/ai/harness/README.md +4 -4
  61. package/dist/agentic/shared/ai/harness/RELEASE.md +5 -5
  62. package/dist/agentic/shared/ai/harness/cases.json +206 -14
  63. package/dist/agentic/shared/ai/harness/cases.schema.json +4 -4
  64. package/dist/agentic/shared/ai/harness/generated-code-review-policy.md +2 -1
  65. package/dist/agentic/shared/ai/harness/release-matrix.json +5 -4
  66. package/dist/agentic/shared/ai/harness/validators.json +2 -2
  67. package/dist/agentic/shared/ai/harness/writable-ast-oracles.mjs +183 -22
  68. package/dist/agentic/shared/ai/review-checklist.md +6 -6
  69. package/dist/agentic/shared/ai/skills/om-data-model-design/references/sensitive-data.md +2 -2
  70. package/dist/agentic/shared/ai/skills/om-evolve-harness/SKILL.md +1 -1
  71. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-template.md +16 -5
  72. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-workflow.md +1 -1
  73. package/dist/agentic/shared/ai/skills/om-implement-spec/SKILL.md +25 -7
  74. package/dist/agentic/shared/ai/skills/om-implement-spec/references/phases-and-gates.md +2 -2
  75. package/dist/agentic/shared/ai/skills/om-implement-spec/references/planning-and-progress.md +40 -0
  76. package/dist/agentic/shared/ai/skills/om-implement-spec/references/report-templates.md +27 -0
  77. package/dist/agentic/shared/ai/skills/om-implement-spec/references/spec-resolution.md +24 -0
  78. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/api-and-domain.md +2 -2
  79. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/business-one-shot-blueprints.md +66 -1
  80. package/dist/agentic/shared/ai/specs/README.md +1 -1
  81. package/dist/agentic/shared/scripts/evaluate-agent-harness.mjs +18 -0
  82. package/dist/agentic/shared/scripts/run-agent-harness-release.mjs +1 -1
  83. package/package.json +5 -5
@@ -15,6 +15,71 @@ Load this reference when the user describes a business outcome rather than files
15
15
 
16
16
  Once a row matches, its route key is binding: invoke every unparenthesized route letter and its skill before implementation. Scalar IDs or snapshots keep modules independent, but they do not remove `U` when the slice still links to, enriches, guards, or renders installed-module behavior. A parenthesized route remains conditional on the parenthesized reason.
17
17
 
18
+ ## Canonical Staff Record Inference
19
+
20
+ Immediately after this file and before any optional specialist reference, directly read all three complete-module procedures: `.ai/skills/om-module-scaffold/references/api-and-domain.md`, `.ai/skills/om-module-scaffold/references/module-surfaces.md`, and `.ai/skills/om-module-scaffold/references/verification.md`. When context is bounded, these required procedures win over allowed-extra references. Their canonical exports, callbacks, placements, and verification paths are binding; do not substitute plausible alternatives such as `locales/` for `i18n/` or module-level tests for `commands/__tests__/`.
21
+
22
+ Business briefs should describe outcomes; translate familiar staff record-management language into the framework's canonical surfaces without making the user name them:
23
+
24
+ - “Browse/search/filter, add, correct, remove, and recover from mistakes” means a controlled-search `DataTable` with an add link and guarded `RowActions`, backed by `CrudForm` create/edit/delete flows. Preserve `initialValues`, use the documented CRUD helpers, and expose stable DataTable and CrudForm host IDs unless the domain requires a purpose-built interaction.
25
+ - “Extra fields administrators add later must survive create, edit, clear, and reload” means one stable custom-field entity ID across the route and forms, `collectCustomFieldValues` at submission, initial custom-field values on edit, and reset/restore maps during update and delete undo.
26
+ - “Permissions, concurrent editors, audit, all-or-nothing changes, retry, undo, and downstream consistency” means registered create/update/delete commands. Every command owns concrete undo through `extractUndoPayload` and `emitCrudUndoSideEffects`; update and delete each restore custom fields with `buildCustomFieldResetMap`; each multi-part write uses `withAtomicFlush`; update/delete enforce optimistic locking; and event/cache/index effects run only after commit in both forward and undo paths.
27
+ - “Protect sensitive notes” requires both a stable encryption map and scoped read paths through `findWithDecryption`, `findOneWithDecryption`, or `findAndCountWithDecryption`; an encryption declaration alone is incomplete.
28
+ - “Other modules can add fields, columns, actions, or response data later” makes `U` mandatory: publish stable widget/form/table IDs and an intentional API enricher host instead of copying or coupling modules.
29
+ - Activating a new app module is additive. Preserve every statically discoverable baseline entry in `src/modules.ts` and append with exactly `enabledModules.push({ id: '<module>', from: '@app' })`; never rewrite the registry from memory or fold the new entry into the baseline array.
30
+
31
+ Treat this mapping as a completion checklist, not optional examples. Verify each contract in the owning command, read path, form, table, API, and activation file before generation.
32
+
33
+ ### Complete Library Contract
34
+
35
+ When the selected row is the complete library app, do a final source-level check against this bounded contract before generation; do not generalize these library IDs into other domains:
36
+
37
+ The required procedures plus this bounded contract resolve the library slice's framework choices. Do not route `framework-context` or load its resolver for this slice; spend that context on the three mandatory complete-module references instead.
38
+
39
+ - Export and default-export `features` with exact IDs `library.books.view` and `library.books.manage`. Export `setup: ModuleSetupConfig = { defaultRoleFeatures }`; a detached `defaultRoleFeatures` export is not discovered setup.
40
+ - Use entity ID `library:book`. The `makeCrudRoute` ORM keys are `tenantField` and `orgField`; its list keys are `schema`, `buildFilters`, and `transformItem`. Keep response transforms in supported `response` callbacks, register `library.books.create`, `library.books.update`, and `library.books.delete` with concrete `registerCommand(...)` calls, and use the installed `createCrudOpenApiFactory` signature exactly.
41
+ - Keep custom fields in the framework data engine rather than an entity JSON column. Submission calls `collectCustomFieldValues`; snapshots call `loadCustomFieldSnapshot`; update and delete undo each call `buildCustomFieldResetMap` and restore through `setCustomFields` in the same `withAtomicFlush` boundary.
42
+ - Each command object owns its calls: create/update/delete undo call `extractUndoPayload` from `@open-mercato/shared/lib/commands/undo` and `emitCrudUndoSideEffects`; update/delete execute call the object-form `enforceCommandOptimisticLock`. Direct book reads call a scoped helper from `@open-mercato/shared/lib/encryption/find`.
43
+ - Export `searchConfig` using `fieldPolicy`, `buildSource` with `checksumSource`, `formatResult`, and `resolveUrl`. The list UI connects `searchValue`/`onSearchChange` to the API `search` filter and exposes add, linked edit, and guarded delete actions.
44
+ - Put Jest command/undo proof in `commands/__tests__/` with imports from `@jest/globals`, and put every visible `library.*` key in `i18n/en.json`. Run generation, the focused test, and typecheck; fix every diagnostic instead of leaving a plausible sketch.
45
+ - Keep the first implementation bounded to the required Books vertical slice. Use one `commands/books.ts` with typed `CommandHandler<Input, Result>` objects and keep every transaction, lock, undo, reset-map, and side-effect call inside its owning exported command object—do not hide oracle-significant behavior in shared helpers. Avoid optional locales, standalone widget/event/enricher files, or extra entities until the required slice generates, tests, and typechecks.
46
+ - Do not guess imports or add unsupported convenience options. In particular, `features` needs no invented ACL type, a CRUD list has no `find`, `response` is a callback rather than a schema, `useConfirmDialog` comes from `@open-mercato/ui/backend/confirm-dialog`, and search checksum data is the inline `checksumSource` object rather than a helper import. Re-open the exact reference for any remaining signature before writing it.
47
+ - A current `CommandHandler<Input, Result>` implements `execute(input, ctx)` and returns `Result` directly. It captures undo state with `prepare(input, ctx)`, `captureAfter(input, result, ctx)`, and `buildLog({ result, snapshots })`; never destructure `{ input, ctx }` in `execute` or return `{ result, undo }`. Lock with `enforceCommandOptimisticLock({ resourceKind, resourceId, current, expected, request: ctx.request })`.
48
+ - Treat every lifecycle signature as a compile-time contract, not pseudocode. Use method syntax exactly as shown below: `async prepare(input, ctx)`, `async execute(input, ctx)`, and `async captureAfter(input, result, ctx)`. The only lifecycle callback that receives an object containing `input` is `buildLog({ input, result, ctx, snapshots })`; `undo` receives `{ input, ctx, logEntry }`. Never write `execute: async ({ input, ctx })`, `prepare: async ({ input, ctx })`, or `captureAfter: async ({ result })`.
49
+ - Import only `loadCustomFieldSnapshot` and `buildCustomFieldResetMap` from `@open-mercato/shared/lib/commands/customFieldSnapshots`; call the former with `(em, { entityId, recordId, tenantId, organizationId })`. Persist through `dataEngine.setCustomFields({ entityId, recordId, tenantId, organizationId, values, notify: false })`; there is no shared `lib/data/custom-fields` helper and UI-only `collectCustomFieldValues` never belongs in a command.
50
+ - Normalize command-side `Record<string, unknown>` custom-field payloads with `normalizeCustomFieldValues` from `@open-mercato/shared/lib/commands/helpers` before passing them to `dataEngine.setCustomFields`; do not cast an unknown-valued record to satisfy its primitive-value contract.
51
+ - The concrete direct-book finder calls `findOneWithDecryption(em, Book, { id, tenant_id, organization_id }, undefined, { tenantId, organizationId })` and rejects null. Do not attach a decryption finder to `makeCrudRoute`; its QueryEngine already decrypts the list.
52
+ - Import `Input` from `@open-mercato/ui/primitives/input` and use shared `Input`, `Button`, and `Alert` primitives for any filter/retry controls—never raw `<input>` or `<button>`. Do not create any test outside `commands/__tests__/` until typecheck is green; avoid speculative API tests, and express database uniqueness in the reviewed migration rather than an unsupported `unique` option on `@Index`.
53
+
54
+ Use this shape literally for the command lifecycle and direct read, filling in the mutations and snapshots without changing the signatures:
55
+
56
+ ```ts
57
+ const findBook = async (em: EntityManager, id: string, scope: Scope) => {
58
+ const book = await findOneWithDecryption(
59
+ em,
60
+ Book,
61
+ { id, tenant_id: scope.tenantId, organization_id: scope.organizationId },
62
+ undefined,
63
+ { tenantId: scope.tenantId, organizationId: scope.organizationId },
64
+ )
65
+ if (!book) throw new Error('library.book_not_found')
66
+ return book
67
+ }
68
+
69
+ export const updateBook: CommandHandler<UpdateInput, Result> = {
70
+ id: 'library.books.update',
71
+ async prepare(input, ctx) { /* return { before } */ },
72
+ async execute(input, ctx) { /* mutate atomically; return { id, updatedAt } */ },
73
+ async captureAfter(input, result, ctx) { /* return after snapshot */ },
74
+ buildLog({ input, result, ctx, snapshots }) { /* store snapshots in payload.undo */ },
75
+ async undo({ input, ctx, logEntry }) { /* extract payload, call buildCustomFieldResetMap, restore, emit undo effects */ },
76
+ }
77
+ ```
78
+
79
+ Create and delete use these exact same lifecycle signatures; do not convert any of them to single-argument arrow callbacks. Delete undo must call `buildCustomFieldResetMap` inside the delete command before restoring custom fields; create/update/delete undo each call `extractUndoPayload` and `emitCrudUndoSideEffects` inside their own object.
80
+
81
+ Before stopping, run `yarn generate` and then `yarn typecheck`. Any diagnostic mentioning a lifecycle property on the input type (for example, “Property 'input' does not exist on type …”) proves a callback was incorrectly destructured: repair all create/update/delete callbacks to the method signatures above and rerun until the typecheck is silent. Then run the command test; a written-but-unchecked module is not complete.
82
+
18
83
  ## Customers and CRM
19
84
 
20
85
  | One-shot business brief | Mechanism | Routes | Smallest complete vertical slice | Key invariants |
@@ -35,7 +100,7 @@ Once a row matches, its route key is binding: invoke every unparenthesized route
35
100
 
36
101
  | One-shot business brief | Mechanism | Routes | Smallest complete vertical slice | Key invariants |
37
102
  |---|---|---|---|---|
38
- | “Generate an app that gathers website leads and adds them to the CRM.” | App module owns public capture + UMES/events create or link CRM customer/deal; MUST invoke `om-data-model-design` and report `smallest-validation` for the lead record and scalar CRM link | `M+U+B` (`+W` for async handoff) | public form, spam/consent validation, lead inbox, dedupe, qualification command, CRM handoff, attribution, success/error paths | public input never supplies scope; idempotent submission key; PII encryption; CRM optional/degraded; handoff retry cannot duplicate |
103
+ | “Generate an app that gathers website leads and adds them to the CRM.” | App module owns public capture + UMES/events create or link CRM customer/deal; MUST read `.ai/guides/modules/customers.md`, invoke `om-data-model-design`, and report `smallest-validation` for the lead record and scalar CRM link | `M+U+B` (`+W` for async handoff) | public form, spam/consent validation, lead inbox, dedupe, qualification command, CRM handoff, attribution, success/error paths | public input never supplies scope; an explicit trusted config/domain binding selects the exact tenant+organization and missing, partial, or ambiguous bindings fail closed—never select or persist the first/oldest active tenant or organization; idempotency lookup and database uniqueness include tenant+organization; merge and revalidate mutation guards' `modifiedPayload` before command dispatch; PII encryption with `TenantDataEncryptionService` and `lookupHashCandidates`; CRM optional/degraded; handoff retry cannot duplicate |
39
104
  | “Build partner referral intake connected to CRM.” | App module + UMES CRM handoff | `M+U+B` | partner-authenticated form, referral record/status, customer/deal match, owner assignment, partner-visible outcome | partner sees only its referrals; deterministic dedupe; immutable attribution; CRM IDs stored as scalars |
40
105
  | “Assign incoming leads fairly across eligible staff.” | App assignment policy + UMES customer/staff seams | `M+U` | read both `customers` and `staff` facts; scoped cursor, deterministic selector, availability resolver, assignment command/audit, fallback | concurrency-safe round robin; retries preserve the winner; unauthorized/unavailable staff excluded; staff module optional |
41
106
  | “Import trade-show badge scans and turn qualified leads into deals.” | App module + data-sync provider when scanner API is reusable + UMES | `M+P+U+W` | upload/sync, mapping preview, lead staging, dedupe, qualification queue, CRM conversion report | resumable/idempotent batches; row-level errors; encrypted credentials; no partial duplicate conversions |
@@ -24,4 +24,4 @@ Example: 2026-03-01-inventory-module.md
24
24
  1. Route every new application, multi-module feature, or non-trivial business slice through `om-spec-writing` and `.ai/guides/spec-delivery.md`.
25
25
  2. After invoking the skill, create the skeleton from `SPEC-000-template.md`; keep it `Draft` while blocking questions or incomplete contracts remain.
26
26
  3. Set `Ready for implementation` only after the final compliance report and requirement traceability pass and the user approves implementation.
27
- 4. Implement through `om-implement-spec` (local) or `om-auto-implement-spec` (PR), one dependency-ordered phase at a time; update the Changelog, acceptance evidence, and phase state as work lands.
27
+ 4. Implement through `om-implement-spec` (interactive local) or `om-auto-implement-spec` (whole-spec PR), one dependency-ordered phase at a time; update the Changelog, acceptance evidence, and phase state as work lands. Local delivery confirms its phase-derived plan before coding and ends with the stable `Spec:` reference without implying PR automation.
@@ -447,6 +447,24 @@ function validateCatalog({ root, cases, registry, releaseMatrix, fixtures, seeds
447
447
  if (!Number.isInteger(item.maxContextFiles) || item.maxContextFiles < requiredInitialContextFiles || item.maxContextFiles > registry.catalog.maxContextFiles) add(id, 'maxContextFiles is impossible or excessive')
448
448
  if (!Number.isInteger(item.maxInitialContextBytes) || item.maxInitialContextBytes < 4096 || item.maxInitialContextBytes > registry.catalog.maxInitialContextBytes) add(id, 'maxInitialContextBytes is invalid')
449
449
  if (!Number.isInteger(item.maxTotalContextBytes) || item.maxTotalContextBytes < item.maxInitialContextBytes || item.maxTotalContextBytes > registry.catalog.maxTotalContextBytes) add(id, 'maxTotalContextBytes is invalid')
450
+ // A case must be satisfiable against the assets this app actually ships: an agent that
451
+ // reads exactly what the case requires, or exactly what it declares, can never be failed
452
+ // by that case's own budget. Measured from disk, so a grown guide or fact-sheet surfaces
453
+ // here instead of as a live routing failure that looks like a model mistake.
454
+ if (Number.isInteger(item.maxContextFiles) && Number.isInteger(item.maxInitialContextBytes) && Number.isInteger(item.maxTotalContextBytes)) {
455
+ const required = contextStats(root, item.context?.required ?? [])
456
+ const declared = contextStats(root, [...(item.context?.required ?? []), ...(item.context?.allowedExtra ?? [])])
457
+ // `required` is a guaranteed false negative and `declared` only a latent one, so each
458
+ // budget reports the sharper of the two rather than both.
459
+ for (const [measure, limit, budget] of [
460
+ ['initialBytes', item.maxInitialContextBytes, 'maxInitialContextBytes'],
461
+ ['bytes', item.maxTotalContextBytes, 'maxTotalContextBytes'],
462
+ ['initialFiles', item.maxContextFiles, 'maxContextFiles'],
463
+ ]) {
464
+ if (required[measure] > limit) add(id, `required context exceeds ${budget}: ${required[measure]}/${limit}`)
465
+ else if (declared[measure] > limit) add(id, `declared context exceeds ${budget}: ${declared[measure]}/${limit}`)
466
+ }
467
+ }
450
468
  if (!isUniqueStringArray(item.relatedCases, { min: 1 })) add(id, 'relatedCases must not be empty')
451
469
  for (const related of item.relatedCases ?? []) if (!idSet.has(related)) add(id, `dangling related case ${related}`)
452
470
  const writable = WRITABLE_KINDS.has(item.evaluationKind)
@@ -47,7 +47,7 @@ Usage:
47
47
  Options:
48
48
  --root <absolute-app> Controller/generated app root (default: current directory)
49
49
  --runner <codex|claude> Required primary runner for every blocking live lane
50
- --portability-runner <runner> Optional different runner for the 45-case read-only portability lane
50
+ --portability-runner <runner> Optional different runner for the 46-case read-only portability lane
51
51
  --prepare-targets <absolute> Clone this fresh scaffold once per writable case under an empty/new directory
52
52
  --writable-targets <absolute> JSON map of every writable case to a fresh disposable app
53
53
  --case-timeout <ms> Per-model invocation timeout floor (default: 120000; a writable case may raise it)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/cli",
3
- "version": "0.6.7-develop.6696.1.4236709f7e",
3
+ "version": "0.6.7-develop.6725.1.07a748cfc2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -60,8 +60,8 @@
60
60
  "@mikro-orm/decorators": "^7.1.5",
61
61
  "@mikro-orm/migrations": "^7.1.5",
62
62
  "@mikro-orm/postgresql": "^7.1.5",
63
- "@open-mercato/queue": "0.6.7-develop.6696.1.4236709f7e",
64
- "@open-mercato/shared": "0.6.7-develop.6696.1.4236709f7e",
63
+ "@open-mercato/queue": "0.6.7-develop.6725.1.07a748cfc2",
64
+ "@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2",
65
65
  "cross-spawn": "^7.0.6",
66
66
  "pg": "8.22.0",
67
67
  "semver": "^7.8.5",
@@ -72,10 +72,10 @@
72
72
  "typescript-js": "npm:typescript@6.0.3"
73
73
  },
74
74
  "peerDependencies": {
75
- "@open-mercato/shared": "0.6.7-develop.6696.1.4236709f7e"
75
+ "@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2"
76
76
  },
77
77
  "devDependencies": {
78
- "@open-mercato/shared": "0.6.7-develop.6696.1.4236709f7e",
78
+ "@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2",
79
79
  "@types/jest": "^30.0.0",
80
80
  "jest": "^30.4.2",
81
81
  "ts-jest": "^29.4.11"