@open-mercato/cli 0.7.1-develop.7203.1.9396450b78 → 0.8.0
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/dist/agentic/guides/module-facts.json +142 -142
- package/dist/agentic/guides/module-facts.v2.json +142 -142
- package/dist/agentic/guides/modules/agent_orchestrator/index.md +1 -1
- package/dist/agentic/guides/modules/ai_assistant/index.md +1 -1
- package/dist/agentic/guides/modules/api_docs/index.md +1 -1
- package/dist/agentic/guides/modules/api_keys/index.md +1 -1
- package/dist/agentic/guides/modules/attachments/index.md +1 -1
- package/dist/agentic/guides/modules/audit_logs/index.md +1 -1
- package/dist/agentic/guides/modules/auth/index.md +1 -1
- package/dist/agentic/guides/modules/business_rules/index.md +1 -1
- package/dist/agentic/guides/modules/catalog/index.md +1 -1
- package/dist/agentic/guides/modules/channel_apns/index.md +1 -1
- package/dist/agentic/guides/modules/channel_discord/index.md +1 -1
- package/dist/agentic/guides/modules/channel_expo/index.md +1 -1
- package/dist/agentic/guides/modules/channel_fcm/index.md +1 -1
- package/dist/agentic/guides/modules/channel_gmail/index.md +1 -1
- package/dist/agentic/guides/modules/channel_imap/index.md +1 -1
- package/dist/agentic/guides/modules/channel_resend/index.md +1 -1
- package/dist/agentic/guides/modules/channel_ses/index.md +1 -1
- package/dist/agentic/guides/modules/checkout/index.md +1 -1
- package/dist/agentic/guides/modules/communication_channels/index.md +1 -1
- package/dist/agentic/guides/modules/configs/index.md +1 -1
- package/dist/agentic/guides/modules/content/index.md +1 -1
- package/dist/agentic/guides/modules/currencies/index.md +1 -1
- package/dist/agentic/guides/modules/customer_accounts/index.md +1 -1
- package/dist/agentic/guides/modules/customers/index.md +1 -1
- package/dist/agentic/guides/modules/dashboards/index.md +1 -1
- package/dist/agentic/guides/modules/data_sync/index.md +1 -1
- package/dist/agentic/guides/modules/design_system/index.md +1 -1
- package/dist/agentic/guides/modules/devices/index.md +1 -1
- package/dist/agentic/guides/modules/dictionaries/index.md +1 -1
- package/dist/agentic/guides/modules/directory/index.md +1 -1
- package/dist/agentic/guides/modules/documents/index.md +1 -1
- package/dist/agentic/guides/modules/entities/index.md +1 -1
- package/dist/agentic/guides/modules/eudr/index.md +1 -1
- package/dist/agentic/guides/modules/events/index.md +1 -1
- package/dist/agentic/guides/modules/feature_toggles/index.md +1 -1
- package/dist/agentic/guides/modules/gateway_stripe/index.md +1 -1
- package/dist/agentic/guides/modules/generators/index.md +1 -1
- package/dist/agentic/guides/modules/inbox_ops/index.md +1 -1
- package/dist/agentic/guides/modules/integrations/index.md +1 -1
- package/dist/agentic/guides/modules/messages/index.md +1 -1
- package/dist/agentic/guides/modules/notifications/index.md +1 -1
- package/dist/agentic/guides/modules/onboarding/index.md +1 -1
- package/dist/agentic/guides/modules/payment_gateways/index.md +1 -1
- package/dist/agentic/guides/modules/perspectives/index.md +1 -1
- package/dist/agentic/guides/modules/phone_calls/index.md +1 -1
- package/dist/agentic/guides/modules/planner/index.md +1 -1
- package/dist/agentic/guides/modules/portal/index.md +1 -1
- package/dist/agentic/guides/modules/progress/index.md +1 -1
- package/dist/agentic/guides/modules/push_notifications/index.md +1 -1
- package/dist/agentic/guides/modules/query_index/index.md +1 -1
- package/dist/agentic/guides/modules/record_locks/index.md +1 -1
- package/dist/agentic/guides/modules/resources/index.md +1 -1
- package/dist/agentic/guides/modules/sales/index.md +1 -1
- package/dist/agentic/guides/modules/scheduler/index.md +1 -1
- package/dist/agentic/guides/modules/search/index.md +1 -1
- package/dist/agentic/guides/modules/security/index.md +1 -1
- package/dist/agentic/guides/modules/seeds/index.md +1 -1
- package/dist/agentic/guides/modules/shipping_carriers/index.md +1 -1
- package/dist/agentic/guides/modules/sso/index.md +1 -1
- package/dist/agentic/guides/modules/staff/index.md +1 -1
- package/dist/agentic/guides/modules/storage_s3/index.md +1 -1
- package/dist/agentic/guides/modules/sync_akeneo/index.md +1 -1
- package/dist/agentic/guides/modules/sync_excel/index.md +1 -1
- package/dist/agentic/guides/modules/system_status_overlays/index.md +1 -1
- package/dist/agentic/guides/modules/tillio/index.md +1 -1
- package/dist/agentic/guides/modules/translations/index.md +1 -1
- package/dist/agentic/guides/modules/warranty_claims/index.md +1 -1
- package/dist/agentic/guides/modules/webhooks/index.md +1 -1
- package/dist/agentic/guides/modules/wms/index.md +1 -1
- package/dist/agentic/guides/modules/workflows/index.md +1 -1
- package/dist/agentic/guides/reference-module-facts.json +2 -2
- package/dist/agentic/guides/reference-modules/example/index.md +1 -1
- package/dist/agentic/guides/upstream/manifest.json +1 -1
- package/dist/agentic/shared/ai/harness/cases.json +1 -1
- package/dist/agentic/shared/ai/harness/design-system-inventory.json +3309 -967
- package/dist/agentic/shared/ai/harness/source-link-inventory.json +249 -29
- package/dist/agentic/shared/ai/skills/om-auto-upgrade-0.7.0-to-0.8.0/SKILL.md +93 -0
- package/dist/agentic/shared/ai/skills/tiers.json +2 -1
- package/dist/lib/generators/extensions/agent-files.js +37 -16
- package/dist/lib/generators/extensions/agent-files.js.map +2 -2
- package/dist/lib/generators/extensions/index.js +2 -2
- package/dist/lib/generators/extensions/index.js.map +2 -2
- package/dist/lib/generators/module-registry.js +1 -1
- package/dist/lib/generators/module-registry.js.map +2 -2
- package/package.json +7 -8
- package/src/lib/generators/__tests__/agent-files-extension.test.ts +118 -0
- package/src/lib/generators/extensions/agent-files.ts +85 -15
- package/src/lib/generators/extensions/index.ts +8 -3
- package/src/lib/generators/module-registry.ts +1 -1
|
@@ -523,6 +523,7 @@
|
|
|
523
523
|
"galleryItemIds": [
|
|
524
524
|
"buttons/button",
|
|
525
525
|
"buttons/button-group",
|
|
526
|
+
"buttons/compact-button",
|
|
526
527
|
"buttons/fancy-button",
|
|
527
528
|
"buttons/icon-button",
|
|
528
529
|
"buttons/link-button",
|
|
@@ -551,7 +552,7 @@
|
|
|
551
552
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
552
553
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
553
554
|
"packageName": "@open-mercato/ui",
|
|
554
|
-
"packageVersion": "0.
|
|
555
|
+
"packageVersion": "0.8.0",
|
|
555
556
|
"packageContentHash": null,
|
|
556
557
|
"tokenApplicability": "not-applicable",
|
|
557
558
|
"snapshotAvailability": "unavailable",
|
|
@@ -561,10 +562,53 @@
|
|
|
561
562
|
"codeConnectExportStatus": "not-exported",
|
|
562
563
|
"codeConnectSourceReferenceId": "node_modules/@open-mercato/ui/figma/button.figma.tsx",
|
|
563
564
|
"mappingCoverage": "partial",
|
|
564
|
-
"galleryNodeStatus": "
|
|
565
|
-
"galleryNodeId":
|
|
566
|
-
"codeConnectNodeStatus": "
|
|
567
|
-
"codeConnectNodeId": "
|
|
565
|
+
"galleryNodeStatus": "known",
|
|
566
|
+
"galleryNodeId": "129:1422",
|
|
567
|
+
"codeConnectNodeStatus": "known",
|
|
568
|
+
"codeConnectNodeId": "129:1422",
|
|
569
|
+
"nodeComparison": "match",
|
|
570
|
+
"publicationStatus": "not-evidenced",
|
|
571
|
+
"designSkillAvailability": "unavailable",
|
|
572
|
+
"designSkillSourceReferenceId": null,
|
|
573
|
+
"designSkillUnavailableReason": "the standalone skill manifest declares no \"design\" tier, om-figma-design-with-ds is not selected, no portable copy is emitted"
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"galleryItemId": "buttons/compact-button",
|
|
578
|
+
"familyId": "buttons",
|
|
579
|
+
"entryId": "compact-button",
|
|
580
|
+
"importPath": "@open-mercato/ui/primitives/compact-button",
|
|
581
|
+
"route": "/backend/design-system?family=buttons&entry=compact-button",
|
|
582
|
+
"availabilityByPreset": {
|
|
583
|
+
"classic": "source-only",
|
|
584
|
+
"crm": "source-only",
|
|
585
|
+
"empty": "source-only",
|
|
586
|
+
"wms": "source-only"
|
|
587
|
+
},
|
|
588
|
+
"featureId": "design_system.view",
|
|
589
|
+
"baselinePrUrl": "https://github.com/open-mercato/open-mercato/pull/4301",
|
|
590
|
+
"provenanceHeadSha": "186af58044c7530885a889c41f53bb36a5093d82",
|
|
591
|
+
"baselineSha": "bf25803d7a8c85c8552db9e76c7cc4398d1768be",
|
|
592
|
+
"designFoundation": {
|
|
593
|
+
"prUrl": "https://github.com/open-mercato/open-mercato/pull/4277",
|
|
594
|
+
"landedPrUrl": "https://github.com/open-mercato/open-mercato/pull/4891",
|
|
595
|
+
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
596
|
+
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
597
|
+
"packageName": "@open-mercato/ui",
|
|
598
|
+
"packageVersion": "0.8.0",
|
|
599
|
+
"packageContentHash": null,
|
|
600
|
+
"tokenApplicability": "not-applicable",
|
|
601
|
+
"snapshotAvailability": "unavailable",
|
|
602
|
+
"snapshotSourceReferenceId": null,
|
|
603
|
+
"codeConnectStatus": "unmapped",
|
|
604
|
+
"codeConnectArtifactAvailability": "not-emitted",
|
|
605
|
+
"codeConnectExportStatus": "not-exported",
|
|
606
|
+
"codeConnectSourceReferenceId": null,
|
|
607
|
+
"mappingCoverage": "none",
|
|
608
|
+
"galleryNodeStatus": "known",
|
|
609
|
+
"galleryNodeId": "189:3646",
|
|
610
|
+
"codeConnectNodeStatus": "absent",
|
|
611
|
+
"codeConnectNodeId": null,
|
|
568
612
|
"nodeComparison": "not-comparable",
|
|
569
613
|
"publicationStatus": "not-evidenced",
|
|
570
614
|
"designSkillAvailability": "unavailable",
|
|
@@ -594,7 +638,7 @@
|
|
|
594
638
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
595
639
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
596
640
|
"packageName": "@open-mercato/ui",
|
|
597
|
-
"packageVersion": "0.
|
|
641
|
+
"packageVersion": "0.8.0",
|
|
598
642
|
"packageContentHash": null,
|
|
599
643
|
"tokenApplicability": "not-applicable",
|
|
600
644
|
"snapshotAvailability": "unavailable",
|
|
@@ -637,7 +681,7 @@
|
|
|
637
681
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
638
682
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
639
683
|
"packageName": "@open-mercato/ui",
|
|
640
|
-
"packageVersion": "0.
|
|
684
|
+
"packageVersion": "0.8.0",
|
|
641
685
|
"packageContentHash": null,
|
|
642
686
|
"tokenApplicability": "not-applicable",
|
|
643
687
|
"snapshotAvailability": "unavailable",
|
|
@@ -680,7 +724,7 @@
|
|
|
680
724
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
681
725
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
682
726
|
"packageName": "@open-mercato/ui",
|
|
683
|
-
"packageVersion": "0.
|
|
727
|
+
"packageVersion": "0.8.0",
|
|
684
728
|
"packageContentHash": null,
|
|
685
729
|
"tokenApplicability": "not-applicable",
|
|
686
730
|
"snapshotAvailability": "unavailable",
|
|
@@ -690,8 +734,8 @@
|
|
|
690
734
|
"codeConnectExportStatus": "not-exported",
|
|
691
735
|
"codeConnectSourceReferenceId": null,
|
|
692
736
|
"mappingCoverage": "none",
|
|
693
|
-
"galleryNodeStatus": "
|
|
694
|
-
"galleryNodeId":
|
|
737
|
+
"galleryNodeStatus": "known",
|
|
738
|
+
"galleryNodeId": "180:4264",
|
|
695
739
|
"codeConnectNodeStatus": "absent",
|
|
696
740
|
"codeConnectNodeId": null,
|
|
697
741
|
"nodeComparison": "not-comparable",
|
|
@@ -723,7 +767,7 @@
|
|
|
723
767
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
724
768
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
725
769
|
"packageName": "@open-mercato/ui",
|
|
726
|
-
"packageVersion": "0.
|
|
770
|
+
"packageVersion": "0.8.0",
|
|
727
771
|
"packageContentHash": null,
|
|
728
772
|
"tokenApplicability": "not-applicable",
|
|
729
773
|
"snapshotAvailability": "unavailable",
|
|
@@ -766,7 +810,7 @@
|
|
|
766
810
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
767
811
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
768
812
|
"packageName": "@open-mercato/ui",
|
|
769
|
-
"packageVersion": "0.
|
|
813
|
+
"packageVersion": "0.8.0",
|
|
770
814
|
"packageContentHash": null,
|
|
771
815
|
"tokenApplicability": "not-applicable",
|
|
772
816
|
"snapshotAvailability": "unavailable",
|
|
@@ -776,8 +820,8 @@
|
|
|
776
820
|
"codeConnectExportStatus": "not-exported",
|
|
777
821
|
"codeConnectSourceReferenceId": null,
|
|
778
822
|
"mappingCoverage": "none",
|
|
779
|
-
"galleryNodeStatus": "
|
|
780
|
-
"galleryNodeId":
|
|
823
|
+
"galleryNodeStatus": "known",
|
|
824
|
+
"galleryNodeId": "493:8644",
|
|
781
825
|
"codeConnectNodeStatus": "absent",
|
|
782
826
|
"codeConnectNodeId": null,
|
|
783
827
|
"nodeComparison": "not-comparable",
|
|
@@ -838,7 +882,7 @@
|
|
|
838
882
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
839
883
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
840
884
|
"packageName": "@open-mercato/ui",
|
|
841
|
-
"packageVersion": "0.
|
|
885
|
+
"packageVersion": "0.8.0",
|
|
842
886
|
"packageContentHash": null,
|
|
843
887
|
"tokenApplicability": "not-applicable",
|
|
844
888
|
"snapshotAvailability": "unavailable",
|
|
@@ -848,11 +892,11 @@
|
|
|
848
892
|
"codeConnectExportStatus": "not-exported",
|
|
849
893
|
"codeConnectSourceReferenceId": "node_modules/@open-mercato/ui/figma/button.figma.tsx",
|
|
850
894
|
"mappingCoverage": "partial",
|
|
851
|
-
"galleryNodeStatus": "
|
|
852
|
-
"galleryNodeId":
|
|
853
|
-
"codeConnectNodeStatus": "
|
|
854
|
-
"codeConnectNodeId": "
|
|
855
|
-
"nodeComparison": "
|
|
895
|
+
"galleryNodeStatus": "known",
|
|
896
|
+
"galleryNodeId": "129:1422",
|
|
897
|
+
"codeConnectNodeStatus": "known",
|
|
898
|
+
"codeConnectNodeId": "129:1422",
|
|
899
|
+
"nodeComparison": "match",
|
|
856
900
|
"publicationStatus": "not-evidenced",
|
|
857
901
|
"designSkillAvailability": "unavailable",
|
|
858
902
|
"designSkillSourceReferenceId": null,
|
|
@@ -910,7 +954,7 @@
|
|
|
910
954
|
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
911
955
|
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
912
956
|
"packageName": "@open-mercato/ui",
|
|
913
|
-
"packageVersion": "0.
|
|
957
|
+
"packageVersion": "0.8.0",
|
|
914
958
|
"packageContentHash": null,
|
|
915
959
|
"tokenApplicability": "not-applicable",
|
|
916
960
|
"snapshotAvailability": "unavailable",
|
|
@@ -920,11 +964,11 @@
|
|
|
920
964
|
"codeConnectExportStatus": "not-exported",
|
|
921
965
|
"codeConnectSourceReferenceId": "node_modules/@open-mercato/ui/figma/button.figma.tsx",
|
|
922
966
|
"mappingCoverage": "partial",
|
|
923
|
-
"galleryNodeStatus": "
|
|
924
|
-
"galleryNodeId":
|
|
925
|
-
"codeConnectNodeStatus": "
|
|
926
|
-
"codeConnectNodeId": "
|
|
927
|
-
"nodeComparison": "
|
|
967
|
+
"galleryNodeStatus": "known",
|
|
968
|
+
"galleryNodeId": "129:1422",
|
|
969
|
+
"codeConnectNodeStatus": "known",
|
|
970
|
+
"codeConnectNodeId": "129:1422",
|
|
971
|
+
"nodeComparison": "match",
|
|
928
972
|
"publicationStatus": "not-evidenced",
|
|
929
973
|
"designSkillAvailability": "unavailable",
|
|
930
974
|
"designSkillSourceReferenceId": null,
|
|
@@ -960,7 +1004,11 @@
|
|
|
960
1004
|
"foundations/color-roles",
|
|
961
1005
|
"foundations/color-tokens",
|
|
962
1006
|
"foundations/corner-radius",
|
|
963
|
-
"foundations/
|
|
1007
|
+
"foundations/motion",
|
|
1008
|
+
"foundations/shadows",
|
|
1009
|
+
"foundations/spacing",
|
|
1010
|
+
"foundations/state-tokens",
|
|
1011
|
+
"foundations/typography"
|
|
964
1012
|
],
|
|
965
1013
|
"visualReferences": [
|
|
966
1014
|
{
|
|
@@ -1210,8 +1258,180 @@
|
|
|
1210
1258
|
"codeConnectExportStatus": "not-exported",
|
|
1211
1259
|
"codeConnectSourceReferenceId": null,
|
|
1212
1260
|
"mappingCoverage": "not-applicable",
|
|
1213
|
-
"galleryNodeStatus": "
|
|
1214
|
-
"galleryNodeId":
|
|
1261
|
+
"galleryNodeStatus": "known",
|
|
1262
|
+
"galleryNodeId": "553:14961",
|
|
1263
|
+
"codeConnectNodeStatus": "absent",
|
|
1264
|
+
"codeConnectNodeId": null,
|
|
1265
|
+
"nodeComparison": "not-comparable",
|
|
1266
|
+
"publicationStatus": "not-evidenced",
|
|
1267
|
+
"designSkillAvailability": "unavailable",
|
|
1268
|
+
"designSkillSourceReferenceId": null,
|
|
1269
|
+
"designSkillUnavailableReason": "the standalone skill manifest declares no \"design\" tier, om-figma-design-with-ds is not selected, no portable copy is emitted"
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
"galleryItemId": "foundations/typography",
|
|
1274
|
+
"familyId": "foundations",
|
|
1275
|
+
"entryId": "typography",
|
|
1276
|
+
"importPath": "apps/mercato/src/app/globals.css",
|
|
1277
|
+
"route": "/backend/design-system?family=foundations&entry=typography",
|
|
1278
|
+
"availabilityByPreset": {
|
|
1279
|
+
"classic": "source-only",
|
|
1280
|
+
"crm": "source-only",
|
|
1281
|
+
"empty": "source-only",
|
|
1282
|
+
"wms": "source-only"
|
|
1283
|
+
},
|
|
1284
|
+
"featureId": "design_system.view",
|
|
1285
|
+
"baselinePrUrl": "https://github.com/open-mercato/open-mercato/pull/4301",
|
|
1286
|
+
"provenanceHeadSha": "186af58044c7530885a889c41f53bb36a5093d82",
|
|
1287
|
+
"baselineSha": "bf25803d7a8c85c8552db9e76c7cc4398d1768be",
|
|
1288
|
+
"designFoundation": {
|
|
1289
|
+
"prUrl": "https://github.com/open-mercato/open-mercato/pull/4277",
|
|
1290
|
+
"landedPrUrl": "https://github.com/open-mercato/open-mercato/pull/4891",
|
|
1291
|
+
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
1292
|
+
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
1293
|
+
"packageName": null,
|
|
1294
|
+
"packageVersion": null,
|
|
1295
|
+
"packageContentHash": null,
|
|
1296
|
+
"tokenApplicability": "local-css",
|
|
1297
|
+
"snapshotAvailability": "unavailable",
|
|
1298
|
+
"snapshotSourceReferenceId": null,
|
|
1299
|
+
"codeConnectStatus": "not-applicable",
|
|
1300
|
+
"codeConnectArtifactAvailability": "not-emitted",
|
|
1301
|
+
"codeConnectExportStatus": "not-exported",
|
|
1302
|
+
"codeConnectSourceReferenceId": null,
|
|
1303
|
+
"mappingCoverage": "not-applicable",
|
|
1304
|
+
"galleryNodeStatus": "known",
|
|
1305
|
+
"galleryNodeId": "553:14957",
|
|
1306
|
+
"codeConnectNodeStatus": "absent",
|
|
1307
|
+
"codeConnectNodeId": null,
|
|
1308
|
+
"nodeComparison": "not-comparable",
|
|
1309
|
+
"publicationStatus": "not-evidenced",
|
|
1310
|
+
"designSkillAvailability": "unavailable",
|
|
1311
|
+
"designSkillSourceReferenceId": null,
|
|
1312
|
+
"designSkillUnavailableReason": "the standalone skill manifest declares no \"design\" tier, om-figma-design-with-ds is not selected, no portable copy is emitted"
|
|
1313
|
+
}
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"galleryItemId": "foundations/spacing",
|
|
1317
|
+
"familyId": "foundations",
|
|
1318
|
+
"entryId": "spacing",
|
|
1319
|
+
"importPath": "apps/mercato/src/app/globals.css",
|
|
1320
|
+
"route": "/backend/design-system?family=foundations&entry=spacing",
|
|
1321
|
+
"availabilityByPreset": {
|
|
1322
|
+
"classic": "source-only",
|
|
1323
|
+
"crm": "source-only",
|
|
1324
|
+
"empty": "source-only",
|
|
1325
|
+
"wms": "source-only"
|
|
1326
|
+
},
|
|
1327
|
+
"featureId": "design_system.view",
|
|
1328
|
+
"baselinePrUrl": "https://github.com/open-mercato/open-mercato/pull/4301",
|
|
1329
|
+
"provenanceHeadSha": "186af58044c7530885a889c41f53bb36a5093d82",
|
|
1330
|
+
"baselineSha": "bf25803d7a8c85c8552db9e76c7cc4398d1768be",
|
|
1331
|
+
"designFoundation": {
|
|
1332
|
+
"prUrl": "https://github.com/open-mercato/open-mercato/pull/4277",
|
|
1333
|
+
"landedPrUrl": "https://github.com/open-mercato/open-mercato/pull/4891",
|
|
1334
|
+
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
1335
|
+
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
1336
|
+
"packageName": null,
|
|
1337
|
+
"packageVersion": null,
|
|
1338
|
+
"packageContentHash": null,
|
|
1339
|
+
"tokenApplicability": "local-css",
|
|
1340
|
+
"snapshotAvailability": "unavailable",
|
|
1341
|
+
"snapshotSourceReferenceId": null,
|
|
1342
|
+
"codeConnectStatus": "not-applicable",
|
|
1343
|
+
"codeConnectArtifactAvailability": "not-emitted",
|
|
1344
|
+
"codeConnectExportStatus": "not-exported",
|
|
1345
|
+
"codeConnectSourceReferenceId": null,
|
|
1346
|
+
"mappingCoverage": "not-applicable",
|
|
1347
|
+
"galleryNodeStatus": "known",
|
|
1348
|
+
"galleryNodeId": "553:14958",
|
|
1349
|
+
"codeConnectNodeStatus": "absent",
|
|
1350
|
+
"codeConnectNodeId": null,
|
|
1351
|
+
"nodeComparison": "not-comparable",
|
|
1352
|
+
"publicationStatus": "not-evidenced",
|
|
1353
|
+
"designSkillAvailability": "unavailable",
|
|
1354
|
+
"designSkillSourceReferenceId": null,
|
|
1355
|
+
"designSkillUnavailableReason": "the standalone skill manifest declares no \"design\" tier, om-figma-design-with-ds is not selected, no portable copy is emitted"
|
|
1356
|
+
}
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"galleryItemId": "foundations/shadows",
|
|
1360
|
+
"familyId": "foundations",
|
|
1361
|
+
"entryId": "shadows",
|
|
1362
|
+
"importPath": "apps/mercato/src/app/globals.css",
|
|
1363
|
+
"route": "/backend/design-system?family=foundations&entry=shadows",
|
|
1364
|
+
"availabilityByPreset": {
|
|
1365
|
+
"classic": "source-only",
|
|
1366
|
+
"crm": "source-only",
|
|
1367
|
+
"empty": "source-only",
|
|
1368
|
+
"wms": "source-only"
|
|
1369
|
+
},
|
|
1370
|
+
"featureId": "design_system.view",
|
|
1371
|
+
"baselinePrUrl": "https://github.com/open-mercato/open-mercato/pull/4301",
|
|
1372
|
+
"provenanceHeadSha": "186af58044c7530885a889c41f53bb36a5093d82",
|
|
1373
|
+
"baselineSha": "bf25803d7a8c85c8552db9e76c7cc4398d1768be",
|
|
1374
|
+
"designFoundation": {
|
|
1375
|
+
"prUrl": "https://github.com/open-mercato/open-mercato/pull/4277",
|
|
1376
|
+
"landedPrUrl": "https://github.com/open-mercato/open-mercato/pull/4891",
|
|
1377
|
+
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
1378
|
+
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
1379
|
+
"packageName": null,
|
|
1380
|
+
"packageVersion": null,
|
|
1381
|
+
"packageContentHash": null,
|
|
1382
|
+
"tokenApplicability": "local-css",
|
|
1383
|
+
"snapshotAvailability": "unavailable",
|
|
1384
|
+
"snapshotSourceReferenceId": null,
|
|
1385
|
+
"codeConnectStatus": "not-applicable",
|
|
1386
|
+
"codeConnectArtifactAvailability": "not-emitted",
|
|
1387
|
+
"codeConnectExportStatus": "not-exported",
|
|
1388
|
+
"codeConnectSourceReferenceId": null,
|
|
1389
|
+
"mappingCoverage": "not-applicable",
|
|
1390
|
+
"galleryNodeStatus": "known",
|
|
1391
|
+
"galleryNodeId": "553:14959",
|
|
1392
|
+
"codeConnectNodeStatus": "absent",
|
|
1393
|
+
"codeConnectNodeId": null,
|
|
1394
|
+
"nodeComparison": "not-comparable",
|
|
1395
|
+
"publicationStatus": "not-evidenced",
|
|
1396
|
+
"designSkillAvailability": "unavailable",
|
|
1397
|
+
"designSkillSourceReferenceId": null,
|
|
1398
|
+
"designSkillUnavailableReason": "the standalone skill manifest declares no \"design\" tier, om-figma-design-with-ds is not selected, no portable copy is emitted"
|
|
1399
|
+
}
|
|
1400
|
+
},
|
|
1401
|
+
{
|
|
1402
|
+
"galleryItemId": "foundations/motion",
|
|
1403
|
+
"familyId": "foundations",
|
|
1404
|
+
"entryId": "motion",
|
|
1405
|
+
"importPath": "apps/mercato/src/app/globals.css",
|
|
1406
|
+
"route": "/backend/design-system?family=foundations&entry=motion",
|
|
1407
|
+
"availabilityByPreset": {
|
|
1408
|
+
"classic": "source-only",
|
|
1409
|
+
"crm": "source-only",
|
|
1410
|
+
"empty": "source-only",
|
|
1411
|
+
"wms": "source-only"
|
|
1412
|
+
},
|
|
1413
|
+
"featureId": "design_system.view",
|
|
1414
|
+
"baselinePrUrl": "https://github.com/open-mercato/open-mercato/pull/4301",
|
|
1415
|
+
"provenanceHeadSha": "186af58044c7530885a889c41f53bb36a5093d82",
|
|
1416
|
+
"baselineSha": "bf25803d7a8c85c8552db9e76c7cc4398d1768be",
|
|
1417
|
+
"designFoundation": {
|
|
1418
|
+
"prUrl": "https://github.com/open-mercato/open-mercato/pull/4277",
|
|
1419
|
+
"landedPrUrl": "https://github.com/open-mercato/open-mercato/pull/4891",
|
|
1420
|
+
"auditedHeadSha": "fb9b8ddfe4470ef11d312caa4628c46af7d48adf",
|
|
1421
|
+
"baselineSha": "b2d26489c683edc44265212ac8a79be1b981774f",
|
|
1422
|
+
"packageName": null,
|
|
1423
|
+
"packageVersion": null,
|
|
1424
|
+
"packageContentHash": null,
|
|
1425
|
+
"tokenApplicability": "local-css",
|
|
1426
|
+
"snapshotAvailability": "unavailable",
|
|
1427
|
+
"snapshotSourceReferenceId": null,
|
|
1428
|
+
"codeConnectStatus": "not-applicable",
|
|
1429
|
+
"codeConnectArtifactAvailability": "not-emitted",
|
|
1430
|
+
"codeConnectExportStatus": "not-exported",
|
|
1431
|
+
"codeConnectSourceReferenceId": null,
|
|
1432
|
+
"mappingCoverage": "not-applicable",
|
|
1433
|
+
"galleryNodeStatus": "known",
|
|
1434
|
+
"galleryNodeId": "553:14960",
|
|
1215
1435
|
"codeConnectNodeStatus": "absent",
|
|
1216
1436
|
"codeConnectNodeId": null,
|
|
1217
1437
|
"nodeComparison": "not-comparable",
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: om-auto-upgrade-0.7.0-to-0.8.0
|
|
3
|
+
description: Migrate downstream Open Mercato code from 0.7.0 to 0.8.0 — audit entry.overrides CLI/worker/scheduler dispatch, sales line discount_amount semantics, AlertDescription ref types, devices API camelCase, deal-status "lost" spelling and canonical vocabulary, the outbound-email Communications Hub provider module, interaction participant userId, makeCrudRoute repeated query params, and createTimeProjectFixture's customerId; validate the app; and report manual work. Use for "upgrade Open Mercato to 0.8.0", "migrate 0.7.0 to 0.8.0", "apply the 0.8.0 upgrade notes", or "zaktualizuj Open Mercato do 0.8.0".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Auto upgrade 0.7.0 to 0.8.0
|
|
7
|
+
|
|
8
|
+
Apply the mechanical parts of the Open Mercato `0.7.0 → 0.8.0` upgrade to a downstream app. Treat the matching section of `UPGRADE_NOTES.md` as the source of truth and leave every intent-sensitive change as an explicit manual finding.
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
Operate on a standalone app or downstream repository that depends on `@open-mercato/*`. Never modify the framework monorepo, framework-owned `packages/`, dependency pins, lockfiles, generated output, vendored dependencies, or secrets. Run after the user has selected and installed `0.8.0`.
|
|
13
|
+
|
|
14
|
+
## Arguments
|
|
15
|
+
|
|
16
|
+
- `--path <dir>`: downstream repository root; defaults to the current directory.
|
|
17
|
+
- `--dry-run`: detect, classify, and report without editing files or running mutating commands.
|
|
18
|
+
- `--only <id[,id...]>`: limit work to named checks.
|
|
19
|
+
- `--skip <id[,id...]>`: omit named checks and record the omission in the report.
|
|
20
|
+
|
|
21
|
+
Reject unknown flags and combining `--only` with `--skip`.
|
|
22
|
+
|
|
23
|
+
## Upgrade checks
|
|
24
|
+
|
|
25
|
+
| ID | Classification | Detect | Action |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| `locale-registry-widen` | No code action | Any use of the published `Locale` type from `@open-mercato/shared/lib/i18n/config` | Explain that `Locale` now derives from an augmentable `LocaleRegistry` interface but resolves identically when unaugmented — no action unless the app wants to serve an additional language via `declare module` + `registerLocales` |
|
|
28
|
+
| `translations-locale-switcher-review` | No code action | N/A — this is a tenant configuration review, not a code pattern | Report that a tenant with a narrowed `translations.supported_locales` selection now also narrows the admin UI language switcher and the accepted `POST`/`GET /api/auth/locale` set; require reviewing that saved selection before deploying |
|
|
29
|
+
| `entry-overrides-cli-worker-scheduler` | Detect and report | `overrides.encryption`, `overrides.cli`, `overrides.setup.seedDefaults`, `overrides.workers`, or `overrides.events` declared in the app's `src/modules.ts` | Report that these now dispatch in CLI/worker/scheduler processes too (previously Next.js-runtime only); flag `overrides.encryption.maps` specifically and require re-running `mercato entities seed-encryption` after upgrading; never rewrite override intent automatically |
|
|
30
|
+
| `sync-role-acls-portal` | No code action | N/A — operational command | Recommend running `yarn mercato auth sync-role-acls` once after upgrading so newly declared `setup.defaultCustomerRoleFeatures` portal grants reach existing customer/portal roles |
|
|
31
|
+
| `sales-line-discount-amount-contract` | Detect and report | Callers of `/api/sales/orders`, `/api/sales/quotes`, `/api/sales/order-lines`, `/api/sales/quote-lines` that send `discountAmount` and `discountPercent` together, or send `discountAmount: 0` to suppress an inherited percent | Report the new precedence (percent wins when set and non-zero; a stored `discountAmount` of `0` now counts as absent) and the `discountAmountBasis: 'unit' \| 'line'` escape hatch; flag `discountAmount: 0` call sites as the dangerous case; never rewrite request payloads automatically |
|
|
32
|
+
| `search-token-fold-reindex` | No code action | Direct imports/calls of `tokenizeText` from `@open-mercato/shared/lib/search/tokenize` outside the search module, or any stored copy of its output | Recommend `yarn mercato search reindex` after upgrading (harmless if run unconditionally); if `tokenizeText` output was persisted elsewhere, report that it must be recomputed |
|
|
33
|
+
| `alert-description-html-element` | Detect and report | `useRef<HTMLParagraphElement>` or a `React.*Event<HTMLParagraphElement>` annotation used together with `AlertDescription` from `@open-mercato/ui/primitives/alert` | Report that `AlertDescription` now renders a `<div>`, so the ref/event element type must become `HTMLDivElement`; never rewrite a ref type automatically since a false-positive match compiles silently wrong |
|
|
34
|
+
| `devices-api-camelcase` | Detect and report | Reads of the deprecated snake_case keys (`device_id`, `user_id`, `last_seen_at`, `client_app_version`, `os_version`, `push_provider`, `push_token_updated_at`, `created_at`, `updated_at`, `tenant_id`, `organization_id`) from `GET /api/devices`, `GET /api/devices/admin/devices`, or `GET /api/devices/admin/devices/:id` responses | Report the canonical camelCase key for each match; both spellings are served today, so this is forward migration, not urgent breakage |
|
|
35
|
+
| `deal-status-lost-not-loose` | Detect and report | References to `DEAL_STATUS_LOSE`, or a literal `'loose'` string comparison against `customer_deals.status` outside `@open-mercato/core/modules/customers/lib/dealStatus.ts` | Report the `DEAL_STATUS_LOST` rename (`DEAL_STATUS_LOSE` still exports `'loose'`, deprecated, removal no earlier than 0.9.0) and require `isLostDealStatus` for literal comparisons; never rewrite a comparison automatically since intent (matching stored vs. canonical) varies |
|
|
36
|
+
| `outbound-email-communications-hub` | Detect and report | An app that calls `sendEmail` from `@open-mercato/shared/lib/email/send` (directly or via password-reset/invitation/MFA/notification flows) but whose `src/modules.ts` has no `channel_resend` and no `channel_ses` entry | Report that the provider package (`@open-mercato/channel-resend` and/or `@open-mercato/channel-ses`) must be added as a dependency at the app's `@open-mercato/*` version and registered in `src/modules.ts`, matching `SYSTEM_EMAIL_PROVIDER` — an app scaffolded before 0.8.0 that skips this throws `No ChannelAdapter registered for providerKey 'resend'` on first send with no boot-time warning; never add the dependency or edit `package.json` automatically |
|
|
37
|
+
| `interaction-participant-optional-userid` | Detect and report | Code that reads `participants[].userId` from `GET /api/customers/interactions` (or the generated OpenAPI type) and assumes it is always present | Report that `userId` is now optional and a userId-less participant carries `email` instead; recommend keying on `userId` when present, falling back to normalized `email` (matching `lib/calendar/participantIdentity.ts`) |
|
|
38
|
+
| `deal-status-canonical-vocabulary` | Detect and report | Deal-status filtering or comparison code outside `expandDealStatusAliases` / `isClosedDealStatus` in `@open-mercato/core/modules/customers/lib/dealStatus.ts` that matches raw `win`/`won`/`loose`/`lost`/`closed` spellings | Report the shared helpers and that the seeded `closed` option now matches the whole terminal set instead of the literal string `closed`; never rewrite filter logic automatically |
|
|
39
|
+
| `crud-route-repeated-query-params` | Detect and report | A `makeCrudRoute` list-route schema that types a filter param as a plain `z.string()` where a client may legitimately repeat the query parameter | Report that a repeated occurrence of that param now returns `400` instead of silently keeping the last value; where the param is genuinely multi-valued, recommend widening it to `z.union([z.string(), z.array(z.string())])` and normalizing with `toQueryValueList`; never widen a schema automatically |
|
|
40
|
+
| `time-project-fixture-customer-id` | Detect and report | Calls to `createTimeProjectFixture` from `@open-mercato/core/helpers/integration/timesheetFixtures` that omit the `customerId` field in the options object | Report that the call now throws before the request is made (previously a `422` from the route with no indication of the cause) and require passing a `customerId`, e.g. from `createCompanyFixture` |
|
|
41
|
+
| `phone-calls-pii-encryption-backfill` | No code action | N/A — operational data migration | Explain that `yarn db:migrate` runs a forward-only idempotent migration that backfills `phone_calls` encryption maps for every scope with active encryption; report the `phone_calls.seed-call-encryption-maps` Upgrade Action and the manual `entities seed-encryption` CLI as fallback heal paths for a tenant that enabled encryption after upgrading |
|
|
42
|
+
|
|
43
|
+
## Workflow
|
|
44
|
+
|
|
45
|
+
### 1. Gate the target
|
|
46
|
+
|
|
47
|
+
Resolve `--path`, require a regular `package.json`, and confirm at least one dependency or development dependency starts with `@open-mercato/`. Refuse to run when the target has the framework monorepo signature, including its core and shared workspace packages.
|
|
48
|
+
|
|
49
|
+
Inspect installed and pinned Open Mercato versions. Continue when they resolve to `0.8.0`; otherwise warn with the detected versions and require explicit user confirmation before edits. A dry run may continue without confirmation.
|
|
50
|
+
|
|
51
|
+
Exclude `.git/`, `node_modules/`, `.yarn/`, `.next/`, `dist/`, `build/`, `coverage/`, `.mercato/generated/`, generated registries, vendor directories, and framework-owned packages from every scan. Follow symlinks neither while scanning nor editing. Never print environment-variable values or other secret-bearing content.
|
|
52
|
+
|
|
53
|
+
### 2. Build and show the plan
|
|
54
|
+
|
|
55
|
+
Run every selected detection before editing. Report each match as `{checkId, file, line, classification, proposedAction}`. Distinguish exact automatic matches (none in this window) from detect-and-report candidates, and list every no-code-action reminder even when no file match applies.
|
|
56
|
+
|
|
57
|
+
With `--dry-run`, print the complete plan, all no-code-action reminders, and unresolved manual work, then stop without edits, package-manager commands, generation, tests, or builds.
|
|
58
|
+
|
|
59
|
+
### 3. Apply bounded edits
|
|
60
|
+
|
|
61
|
+
This upgrade window has no check classified purely `Automatic` — every match requires human judgement about intent (a ref-type rewrite, a filter-schema widening, a dependency addition). Skip straight to reporting; do not perform speculative edits.
|
|
62
|
+
|
|
63
|
+
### 4. Verify
|
|
64
|
+
|
|
65
|
+
Use the package manager and scripts declared by the downstream app; do not assume monorepo-only commands exist. Run, in order when present:
|
|
66
|
+
|
|
67
|
+
1. the configured generation script;
|
|
68
|
+
2. the configured typecheck script;
|
|
69
|
+
3. the smallest affected test script, otherwise the configured test script;
|
|
70
|
+
4. the configured build script.
|
|
71
|
+
|
|
72
|
+
Preserve and report pre-existing failures rather than rewriting unrelated code or weakening checks.
|
|
73
|
+
|
|
74
|
+
### 5. Report
|
|
75
|
+
|
|
76
|
+
Report:
|
|
77
|
+
|
|
78
|
+
- the target path and detected Open Mercato versions;
|
|
79
|
+
- the complete plan (this window produces no automatic edits, so no edited-file list);
|
|
80
|
+
- every detect-and-report finding, with exact file and line;
|
|
81
|
+
- every no-code-action reminder, no-match check, and skipped check;
|
|
82
|
+
- validation commands and outcomes;
|
|
83
|
+
- unresolved operational work: the `entry.overrides` re-review (and `seed-encryption` re-run if `overrides.encryption.maps` is declared), `yarn mercato auth sync-role-acls`, the sales line `discountAmount: 0` audit, the search reindex, the outbound-email provider package/module registration, and the phone_calls encryption-map heal path if the app runs that module.
|
|
84
|
+
|
|
85
|
+
If no code changes were required, still report that all fifteen upgrade categories ran. Recommend reviewing the complete `0.7.0 → 0.8.0` section of `UPGRADE_NOTES.md` before deployment.
|
|
86
|
+
|
|
87
|
+
## Rules
|
|
88
|
+
|
|
89
|
+
- Never change dependency versions, lockfiles, generated output, vendor files, framework-owned packages, or secrets.
|
|
90
|
+
- Never widen a `makeCrudRoute` schema, rewrite a deal-status comparison, or change a ref/event generic type automatically — every match in this window is intent-sensitive.
|
|
91
|
+
- Never register the email provider module or edit `package.json` automatically — report the exact lines to add instead.
|
|
92
|
+
- Never weaken typecheck, tests, or build to make the upgrade appear green.
|
|
93
|
+
- Always show the edit plan before mutation and the exact changed-file list afterward (empty for this window unless a future revision adds an automatic check).
|
|
@@ -513,6 +513,32 @@ function findRepoRoot(start) {
|
|
|
513
513
|
}
|
|
514
514
|
return null;
|
|
515
515
|
}
|
|
516
|
+
function resolveAgentFilesTargets(resolver, fallbackRepoRoot) {
|
|
517
|
+
if (resolver && !resolver.isMonorepo()) {
|
|
518
|
+
const appDir = resolver.getAppDir();
|
|
519
|
+
return {
|
|
520
|
+
manifestPath: path.join(resolver.getOutputDir(), "file-agents.generated.ts"),
|
|
521
|
+
dockerAgentsDir: path.join(appDir, "docker", "opencode", "agents"),
|
|
522
|
+
dockerSkillsDir: path.join(appDir, "docker", "opencode", "skills")
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
const repoRoot = resolver?.getRootDir() ?? fallbackRepoRoot;
|
|
526
|
+
if (!repoRoot) return null;
|
|
527
|
+
return {
|
|
528
|
+
manifestPath: path.join(
|
|
529
|
+
repoRoot,
|
|
530
|
+
"packages",
|
|
531
|
+
"enterprise",
|
|
532
|
+
"src",
|
|
533
|
+
"modules",
|
|
534
|
+
"agent_orchestrator",
|
|
535
|
+
"generated",
|
|
536
|
+
"file-agents.generated.ts"
|
|
537
|
+
),
|
|
538
|
+
dockerAgentsDir: path.join(repoRoot, "docker", "opencode", "agents"),
|
|
539
|
+
dockerSkillsDir: path.join(repoRoot, "docker", "opencode", "skills")
|
|
540
|
+
};
|
|
541
|
+
}
|
|
516
542
|
function listAgentDirs(agentsBase) {
|
|
517
543
|
if (!fs.existsSync(agentsBase)) return [];
|
|
518
544
|
return fs.readdirSync(agentsBase, { withFileTypes: true }).filter((entry) => entry.isDirectory() && entry.name !== "__tests__").map((entry) => path.join(agentsBase, entry.name));
|
|
@@ -656,8 +682,8 @@ function renderManifest(agents) {
|
|
|
656
682
|
// \`compileOutcome\` at load time and registers it with \`runtime:'opencode'\`.
|
|
657
683
|
//
|
|
658
684
|
// Regenerate with \`yarn generate\`.
|
|
659
|
-
import type { JsonSchemaNode, OutcomeKind } from
|
|
660
|
-
import type { AgentTokenUsage, FileAgentFile } from
|
|
685
|
+
import type { JsonSchemaNode, OutcomeKind } from '../lib/sdk/outcomeSchema'
|
|
686
|
+
import type { AgentTokenUsage, FileAgentFile } from '../lib/tokens/types'
|
|
661
687
|
|
|
662
688
|
export type FileAgentScript = {
|
|
663
689
|
name: string
|
|
@@ -744,7 +770,7 @@ ${descriptors}
|
|
|
744
770
|
` : ""}]
|
|
745
771
|
`;
|
|
746
772
|
}
|
|
747
|
-
function createAgentFilesExtension() {
|
|
773
|
+
function createAgentFilesExtension(resolver) {
|
|
748
774
|
const discovered = [];
|
|
749
775
|
const seenIds = /* @__PURE__ */ new Set();
|
|
750
776
|
let repoRoot = null;
|
|
@@ -840,25 +866,21 @@ function createAgentFilesExtension() {
|
|
|
840
866
|
},
|
|
841
867
|
generateOutput() {
|
|
842
868
|
const sorted = [...discovered].sort((a, b) => a.id.localeCompare(b.id));
|
|
843
|
-
|
|
869
|
+
const targets = resolveAgentFilesTargets(resolver, repoRoot);
|
|
870
|
+
if (!targets) {
|
|
871
|
+
if (sawOrchestratorModule || sorted.length > 0) {
|
|
872
|
+
console.warn(
|
|
873
|
+
`[agent-files] Could not resolve an output root, so the file-agent manifest and docker/opencode/{agents,skills} were NOT written. Discovered ${sorted.length} file agent(s). In a standalone app this means the generator ran without a package resolver.`
|
|
874
|
+
);
|
|
875
|
+
}
|
|
844
876
|
return /* @__PURE__ */ new Map();
|
|
845
877
|
}
|
|
846
878
|
if (!sawOrchestratorModule && sorted.length === 0) {
|
|
847
879
|
return /* @__PURE__ */ new Map();
|
|
848
880
|
}
|
|
849
|
-
const manifestPath =
|
|
850
|
-
repoRoot,
|
|
851
|
-
"packages",
|
|
852
|
-
"enterprise",
|
|
853
|
-
"src",
|
|
854
|
-
"modules",
|
|
855
|
-
"agent_orchestrator",
|
|
856
|
-
"generated",
|
|
857
|
-
"file-agents.generated.ts"
|
|
858
|
-
);
|
|
881
|
+
const { manifestPath, dockerAgentsDir, dockerSkillsDir } = targets;
|
|
859
882
|
fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
|
|
860
883
|
fs.writeFileSync(manifestPath, renderManifest(sorted), "utf8");
|
|
861
|
-
const dockerAgentsDir = path.join(repoRoot, "docker", "opencode", "agents");
|
|
862
884
|
fs.mkdirSync(dockerAgentsDir, { recursive: true });
|
|
863
885
|
const desiredFiles = /* @__PURE__ */ new Map();
|
|
864
886
|
for (const agent of sorted) {
|
|
@@ -876,7 +898,6 @@ function createAgentFilesExtension() {
|
|
|
876
898
|
fs.writeFileSync(path.join(dockerAgentsDir, fileName), content, "utf8");
|
|
877
899
|
}
|
|
878
900
|
const allAgents = sorted.flatMap((agent) => [agent, ...agent.subAgentsContent]);
|
|
879
|
-
const dockerSkillsDir = path.join(repoRoot, "docker", "opencode", "skills");
|
|
880
901
|
const isNativeSkill = (skill) => skill.id !== AGENT_TOOLS_SKILL_ID;
|
|
881
902
|
const desiredSkillNames = /* @__PURE__ */ new Set();
|
|
882
903
|
for (const agent of allAgents) {
|