@topolo/sdk 0.10.5 → 0.11.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/index.cjs CHANGED
@@ -21,9 +21,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
23
  ACTION_CATALOG_DIGEST_ALGORITHM: () => ACTION_CATALOG_DIGEST_ALGORITHM,
24
- APPLICATIONS: () => APPLICATIONS,
25
- APPLICATION_REQUIREMENTS: () => APPLICATION_REQUIREMENTS,
26
- APPLICATION_REQUIREMENTS_VERSION: () => APPLICATION_REQUIREMENTS_VERSION,
27
24
  CrmModule: () => CrmModule,
28
25
  DEFAULT_APP_URLS: () => DEFAULT_APP_URLS,
29
26
  IdentityModule: () => IdentityModule,
@@ -42,11 +39,7 @@ __export(index_exports, {
42
39
  WorkspacesModule: () => WorkspacesModule,
43
40
  actionContractCompleteness: () => actionContractCompleteness,
44
41
  applicationEntryFromCatalog: () => applicationEntryFromCatalog,
45
- applicationRequirementScopes: () => applicationRequirementScopes,
46
42
  assertTopoloServiceUrlEnvironment: () => assertTopoloServiceUrlEnvironment,
47
- auditAllApplicationRequirements: () => auditAllApplicationRequirements,
48
- auditApplicationEntries: () => auditApplicationEntries,
49
- auditApplicationRequirements: () => auditApplicationRequirements,
50
43
  canonicalTopoloErrorCode: () => canonicalTopoloErrorCode,
51
44
  canonicalTopoloRequestId: () => canonicalTopoloRequestId,
52
45
  canonicalTopoloRequired: () => canonicalTopoloRequired,
@@ -55,7 +48,6 @@ __export(index_exports, {
55
48
  compactActionPlan: () => compactActionPlan,
56
49
  compactActionPreparation: () => compactActionPreparation,
57
50
  compactActionValidation: () => compactActionValidation,
58
- compactApplicationAudit: () => compactApplicationAudit,
59
51
  createTopolo: () => createTopolo,
60
52
  createTopoloAgentExecutionContext: () => createTopoloAgentExecutionContext,
61
53
  createTopoloWidgetError: () => createTopoloWidgetError,
@@ -76,11 +68,9 @@ __export(index_exports, {
76
68
  prepareTopoloActionBase64UploadInput: () => prepareTopoloActionBase64UploadInput,
77
69
  prepareTopoloActionUploadInput: () => prepareTopoloActionUploadInput,
78
70
  publicTopoloErrorMessage: () => publicTopoloErrorMessage,
79
- requirementsForApplication: () => requirementsForApplication,
80
71
  resolveApplicationDirectoryEntry: () => resolveApplicationDirectoryEntry,
81
72
  resolveCatalogServiceUrl: () => resolveCatalogServiceUrl,
82
73
  resolveServiceUrl: () => resolveServiceUrl,
83
- staticApplicationDirectory: () => staticApplicationDirectory,
84
74
  topoloErrorHint: () => topoloErrorHint,
85
75
  topoloServiceOrigins: () => topoloServiceOrigins,
86
76
  validateTopoloActionInput: () => validateTopoloActionInput,
@@ -404,8 +394,7 @@ var TOPOLO_ENVIRONMENT_SERVICE_URLS = {
404
394
  },
405
395
  staging: {
406
396
  auth: "https://auth.stg.topolo.us",
407
- developers: "https://developers.stg.topolo.us",
408
- seed: "https://seed.stg.topolo.us"
397
+ developers: "https://developers.stg.topolo.us"
409
398
  },
410
399
  development: {
411
400
  auth: "https://auth.topolo.dev",
@@ -465,1732 +454,6 @@ var APP_API_URLS = {
465
454
  developers: "https://developers.topolo.app"
466
455
  };
467
456
 
468
- // src/applications-fallback.ts
469
- var APPLICATIONS = {
470
- "admin": {
471
- "id": "admin",
472
- "appDir": "TopoloAdmin",
473
- "name": "topolo-admin",
474
- "packageName": "topolo-admin",
475
- "productionUrl": "https://admin.topolo.app",
476
- "services": [],
477
- "deployTargets": [
478
- {
479
- "name": "topolo-admin",
480
- "kind": "worker",
481
- "apiUrl": "https://admin.topolo.app",
482
- "domains": [
483
- "admin.topolo.app"
484
- ],
485
- "routes": [
486
- "admin.topolo.app"
487
- ],
488
- "appId": null
489
- },
490
- {
491
- "name": "topolo-admin-api",
492
- "kind": "worker",
493
- "apiUrl": null,
494
- "domains": [],
495
- "routes": [],
496
- "appId": null
497
- }
498
- ]
499
- },
500
- "agent": {
501
- "id": "agent",
502
- "appDir": "TopoloAgent",
503
- "name": "topolo-agent",
504
- "packageName": "topolo-agent",
505
- "productionUrl": "https://agent.topolo.app",
506
- "services": [
507
- "agent"
508
- ],
509
- "deployTargets": [
510
- {
511
- "name": "topolo-agent",
512
- "kind": "worker",
513
- "apiUrl": "https://agent.topolo.app",
514
- "domains": [
515
- "agent.topolo.app"
516
- ],
517
- "routes": [
518
- "agent.topolo.app"
519
- ],
520
- "appId": "agent"
521
- },
522
- {
523
- "name": "topolo-agent-api",
524
- "kind": "worker",
525
- "apiUrl": null,
526
- "domains": [],
527
- "routes": [],
528
- "appId": null
529
- }
530
- ]
531
- },
532
- "auth": {
533
- "id": "auth",
534
- "appDir": "TopoloAuth",
535
- "name": "topolo-auth",
536
- "packageName": "topolo-auth",
537
- "productionUrl": "https://auth.topolo.app",
538
- "services": [
539
- "auth"
540
- ],
541
- "deployTargets": [
542
- {
543
- "name": "topolo-auth",
544
- "kind": "worker",
545
- "apiUrl": "https://auth.topolo.app",
546
- "domains": [
547
- "auth.topolo.app"
548
- ],
549
- "routes": [
550
- "auth.topolo.app"
551
- ],
552
- "appId": "auth"
553
- }
554
- ]
555
- },
556
- "backup": {
557
- "id": "backup",
558
- "appDir": "TopoloBackup",
559
- "name": "topolo-backup",
560
- "packageName": "topolo-backup",
561
- "productionUrl": "https://backup.topolo.app",
562
- "services": [
563
- "backup"
564
- ],
565
- "deployTargets": [
566
- {
567
- "name": "topolo-backup",
568
- "kind": "worker",
569
- "apiUrl": "https://backup.topolo.app",
570
- "domains": [
571
- "backup.topolo.app"
572
- ],
573
- "routes": [
574
- "backup.topolo.app"
575
- ],
576
- "appId": "backup"
577
- }
578
- ]
579
- },
580
- "blog": {
581
- "id": "blog",
582
- "appDir": "TopoloBlog",
583
- "name": "topolo-blog",
584
- "packageName": "topolo-blog",
585
- "productionUrl": "https://blog.topolo.app",
586
- "services": [
587
- "blog"
588
- ],
589
- "deployTargets": [
590
- {
591
- "name": "topolo-blog",
592
- "kind": "worker",
593
- "apiUrl": "https://blog.topolo.app",
594
- "domains": [
595
- "blog.topolo.app"
596
- ],
597
- "routes": [
598
- "blog.topolo.app"
599
- ],
600
- "appId": "blog"
601
- },
602
- {
603
- "name": "topolo-blog-api",
604
- "kind": "worker",
605
- "apiUrl": null,
606
- "domains": [],
607
- "routes": [],
608
- "appId": null
609
- }
610
- ]
611
- },
612
- "books": {
613
- "id": "books",
614
- "appDir": "TopoloBooks",
615
- "name": "topolo-books",
616
- "packageName": "topolo-books",
617
- "productionUrl": "https://books.topolo.app",
618
- "services": [
619
- "books"
620
- ],
621
- "deployTargets": [
622
- {
623
- "name": "topolo-books",
624
- "kind": "worker",
625
- "apiUrl": "https://books.topolo.app",
626
- "domains": [
627
- "books.topolo.app"
628
- ],
629
- "routes": [
630
- "books.topolo.app"
631
- ],
632
- "appId": "books"
633
- },
634
- {
635
- "name": "topolo-books-api",
636
- "kind": "worker",
637
- "apiUrl": null,
638
- "domains": [],
639
- "routes": [],
640
- "appId": null
641
- }
642
- ]
643
- },
644
- "brand": {
645
- "id": "brand",
646
- "appDir": "TopoloBrand",
647
- "name": "topolo-brand",
648
- "packageName": "@topolo/topolo-brand",
649
- "productionUrl": "https://brand.topolo.app",
650
- "services": [
651
- "brand"
652
- ],
653
- "deployTargets": [
654
- {
655
- "name": "topolo-brand",
656
- "kind": "worker",
657
- "apiUrl": "https://brand.topolo.app",
658
- "domains": [
659
- "brand.topolo.app"
660
- ],
661
- "routes": [
662
- "brand.topolo.app"
663
- ],
664
- "appId": "brand"
665
- },
666
- {
667
- "name": "topolo-brand-api",
668
- "kind": "worker",
669
- "apiUrl": null,
670
- "domains": [],
671
- "routes": [],
672
- "appId": null
673
- }
674
- ]
675
- },
676
- "bugfix": {
677
- "id": "bugfix",
678
- "appDir": "TopoloBugFix",
679
- "name": "topolo-bugfix",
680
- "packageName": "topolo-bugfix",
681
- "productionUrl": "https://bugfix.topolo.app",
682
- "services": [
683
- "bugfix"
684
- ],
685
- "deployTargets": [
686
- {
687
- "name": "topolo-bugfix",
688
- "kind": "worker",
689
- "apiUrl": "https://bugfix.topolo.app",
690
- "domains": [
691
- "bugfix.topolo.app"
692
- ],
693
- "routes": [
694
- "bugfix.topolo.app"
695
- ],
696
- "appId": "bugfix"
697
- }
698
- ]
699
- },
700
- "bytes": {
701
- "id": "bytes",
702
- "appDir": "TopoloBytes",
703
- "name": "topolo-bytes",
704
- "packageName": "topolo-bytes",
705
- "productionUrl": "https://bytes.topolo.app",
706
- "services": [
707
- "bytes"
708
- ],
709
- "deployTargets": [
710
- {
711
- "name": "topolo-bytes",
712
- "kind": "worker",
713
- "apiUrl": "https://bytes.topolo.app",
714
- "domains": [
715
- "bytes.topolo.app"
716
- ],
717
- "routes": [
718
- "bytes.topolo.app"
719
- ],
720
- "appId": "bytes"
721
- },
722
- {
723
- "name": "topolo-bytes-api",
724
- "kind": "worker",
725
- "apiUrl": null,
726
- "domains": [],
727
- "routes": [],
728
- "appId": null
729
- }
730
- ]
731
- },
732
- "calendar": {
733
- "id": "calendar",
734
- "appDir": "TopoloCalendar",
735
- "name": "topolo-calendar",
736
- "packageName": "topolo-calendar",
737
- "productionUrl": "https://calendar.topolo.app",
738
- "services": [
739
- "calendar"
740
- ],
741
- "deployTargets": [
742
- {
743
- "name": "topolo-calendar",
744
- "kind": "worker",
745
- "apiUrl": "https://calendar.topolo.app",
746
- "domains": [
747
- "calendar.topolo.app"
748
- ],
749
- "routes": [
750
- "calendar.topolo.app"
751
- ],
752
- "appId": "calendar"
753
- },
754
- {
755
- "name": "topolo-calendar-api",
756
- "kind": "worker",
757
- "apiUrl": null,
758
- "domains": [],
759
- "routes": [],
760
- "appId": null
761
- }
762
- ]
763
- },
764
- "campaigns": {
765
- "id": "campaigns",
766
- "appDir": "TopoloCampaigns",
767
- "name": "topolo-campaigns",
768
- "packageName": "topolo-campaigns",
769
- "productionUrl": "https://campaigns.topolo.app",
770
- "services": [
771
- "campaigns"
772
- ],
773
- "deployTargets": [
774
- {
775
- "name": "topolo-campaigns",
776
- "kind": "worker",
777
- "apiUrl": "https://campaigns.topolo.app",
778
- "domains": [
779
- "campaigns.topolo.app"
780
- ],
781
- "routes": [
782
- "campaigns.topolo.app"
783
- ],
784
- "appId": "campaigns"
785
- },
786
- {
787
- "name": "topolo-campaigns-api",
788
- "kind": "worker",
789
- "apiUrl": null,
790
- "domains": [],
791
- "routes": [],
792
- "appId": null
793
- }
794
- ]
795
- },
796
- "capacity": {
797
- "id": "capacity",
798
- "appDir": "TopoloCapacity",
799
- "name": "topolo-capacity",
800
- "packageName": "topolo-capacity",
801
- "productionUrl": "https://capacity.topolo.app",
802
- "services": [
803
- "capacity"
804
- ],
805
- "deployTargets": [
806
- {
807
- "name": "topolo-capacity",
808
- "kind": "worker",
809
- "apiUrl": "https://capacity.topolo.app",
810
- "domains": [
811
- "capacity.topolo.app"
812
- ],
813
- "routes": [
814
- "capacity.topolo.app"
815
- ],
816
- "appId": "capacity"
817
- }
818
- ]
819
- },
820
- "chat": {
821
- "id": "chat",
822
- "appDir": "TopoloChat",
823
- "name": "topolo-chat",
824
- "packageName": "topolo-chat",
825
- "productionUrl": "https://chat.topolo.app",
826
- "services": [
827
- "chat"
828
- ],
829
- "deployTargets": [
830
- {
831
- "name": "topolo-chat",
832
- "kind": "worker",
833
- "apiUrl": "https://chat.topolo.app",
834
- "domains": [
835
- "chat.topolo.app"
836
- ],
837
- "routes": [
838
- "chat.topolo.app"
839
- ],
840
- "appId": "chat"
841
- },
842
- {
843
- "name": "topolo-chat-api",
844
- "kind": "worker",
845
- "apiUrl": null,
846
- "domains": [],
847
- "routes": [],
848
- "appId": null
849
- }
850
- ]
851
- },
852
- "commerce": {
853
- "id": "commerce",
854
- "appDir": "TopoloCommerce",
855
- "name": "topolo-commerce",
856
- "packageName": "topolo-commerce",
857
- "productionUrl": "https://commerce.topolo.app",
858
- "services": [
859
- "commerce"
860
- ],
861
- "deployTargets": [
862
- {
863
- "name": "topolo-commerce-api",
864
- "kind": "worker",
865
- "apiUrl": null,
866
- "domains": [],
867
- "routes": [],
868
- "appId": null
869
- },
870
- {
871
- "name": "topolo-commerce-guest-web",
872
- "kind": "worker",
873
- "apiUrl": "https://guest.topolo.app",
874
- "domains": [
875
- "guest.topolo.app"
876
- ],
877
- "routes": [
878
- "guest.topolo.app"
879
- ],
880
- "appId": null
881
- },
882
- {
883
- "name": "topolo-commerce-ops-web",
884
- "kind": "worker",
885
- "apiUrl": "https://commerce.topolo.app",
886
- "domains": [
887
- "commerce.topolo.app"
888
- ],
889
- "routes": [
890
- "commerce.topolo.app"
891
- ],
892
- "appId": "commerce"
893
- },
894
- {
895
- "name": "topolo-commerce-station-web",
896
- "kind": "worker",
897
- "apiUrl": "https://station-commerce.topolo.app",
898
- "domains": [
899
- "station-commerce.topolo.app"
900
- ],
901
- "routes": [
902
- "station-commerce.topolo.app"
903
- ],
904
- "appId": null
905
- }
906
- ]
907
- },
908
- "compose": {
909
- "id": "compose",
910
- "appDir": "TopoloCompose",
911
- "name": "topolo-compose",
912
- "packageName": "@topolo/compose",
913
- "productionUrl": "https://compose.topolo.app",
914
- "services": [
915
- "compose"
916
- ],
917
- "deployTargets": [
918
- {
919
- "name": "topolo-compose",
920
- "kind": "worker",
921
- "apiUrl": "https://compose.topolo.app",
922
- "domains": [
923
- "compose.topolo.app"
924
- ],
925
- "routes": [
926
- "compose.topolo.app"
927
- ],
928
- "appId": "compose"
929
- },
930
- {
931
- "name": "topolo-compose-api",
932
- "kind": "worker",
933
- "apiUrl": null,
934
- "domains": [],
935
- "routes": [],
936
- "appId": null
937
- }
938
- ]
939
- },
940
- "consent": {
941
- "id": "consent",
942
- "appDir": "TopoloConsent",
943
- "name": "topolo-consent",
944
- "packageName": "topolo-consent",
945
- "productionUrl": "https://consent.topolo.app",
946
- "services": [
947
- "consent"
948
- ],
949
- "deployTargets": [
950
- {
951
- "name": "topolo-consent",
952
- "kind": "worker",
953
- "apiUrl": "https://consent.topolo.app",
954
- "domains": [
955
- "consent.topolo.app"
956
- ],
957
- "routes": [
958
- "consent.topolo.app"
959
- ],
960
- "appId": "consent"
961
- },
962
- {
963
- "name": "topolo-consent-api",
964
- "kind": "worker",
965
- "apiUrl": null,
966
- "domains": [],
967
- "routes": [],
968
- "appId": null
969
- }
970
- ]
971
- },
972
- "crm": {
973
- "id": "crm",
974
- "appDir": "TopoloCRM",
975
- "name": "topolo-crm",
976
- "packageName": "topolo-crm",
977
- "productionUrl": "https://crm.topolo.app",
978
- "services": [
979
- "crm"
980
- ],
981
- "deployTargets": [
982
- {
983
- "name": "topolo-crm-api",
984
- "kind": "worker",
985
- "apiUrl": null,
986
- "domains": [],
987
- "routes": [],
988
- "appId": null
989
- },
990
- {
991
- "name": "topolo-crm-app",
992
- "kind": "worker",
993
- "apiUrl": "https://crm.topolo.app",
994
- "domains": [
995
- "crm.topolo.app"
996
- ],
997
- "routes": [
998
- "crm.topolo.app"
999
- ],
1000
- "appId": "crm"
1001
- }
1002
- ]
1003
- },
1004
- "design": {
1005
- "id": "design",
1006
- "appDir": "TopoloDesign",
1007
- "name": "topolo-design",
1008
- "packageName": "@topolo-io/design",
1009
- "productionUrl": "https://design.topolo.app",
1010
- "services": [
1011
- "design"
1012
- ],
1013
- "deployTargets": [
1014
- {
1015
- "name": "topolo-design",
1016
- "kind": "worker",
1017
- "apiUrl": "https://design.topolo.app",
1018
- "domains": [
1019
- "design.topolo.app"
1020
- ],
1021
- "routes": [
1022
- "design.topolo.app"
1023
- ],
1024
- "appId": "design"
1025
- },
1026
- {
1027
- "name": "topolo-design-api",
1028
- "kind": "worker",
1029
- "apiUrl": null,
1030
- "domains": [],
1031
- "routes": [],
1032
- "appId": null
1033
- }
1034
- ]
1035
- },
1036
- "developers": {
1037
- "id": "developers",
1038
- "appDir": "TopoloDevelopers",
1039
- "name": "topolo-developers",
1040
- "packageName": "topolo-developers",
1041
- "productionUrl": "https://developers.topolo.app",
1042
- "services": [
1043
- "developers"
1044
- ],
1045
- "deployTargets": [
1046
- {
1047
- "name": "topolo-catalog-cron",
1048
- "kind": "worker",
1049
- "apiUrl": null,
1050
- "domains": [],
1051
- "routes": [],
1052
- "appId": null
1053
- },
1054
- {
1055
- "name": "topolo-developers",
1056
- "kind": "worker",
1057
- "apiUrl": "https://developers.topolo.app",
1058
- "domains": [
1059
- "developers.topolo.app"
1060
- ],
1061
- "routes": [
1062
- "developers.topolo.app"
1063
- ],
1064
- "appId": "developers"
1065
- },
1066
- {
1067
- "name": "topolo-developers-api",
1068
- "kind": "worker",
1069
- "apiUrl": null,
1070
- "domains": [],
1071
- "routes": [],
1072
- "appId": null
1073
- }
1074
- ]
1075
- },
1076
- "director": {
1077
- "id": "director",
1078
- "appDir": "TopoloDirector",
1079
- "name": "topolo-director",
1080
- "packageName": "topolo-director",
1081
- "productionUrl": "https://director.topolo.app",
1082
- "services": [
1083
- "director"
1084
- ],
1085
- "deployTargets": [
1086
- {
1087
- "name": "topolo-director",
1088
- "kind": "worker",
1089
- "apiUrl": "https://director.topolo.app",
1090
- "domains": [
1091
- "director.topolo.app"
1092
- ],
1093
- "routes": [
1094
- "director.topolo.app"
1095
- ],
1096
- "appId": "director"
1097
- },
1098
- {
1099
- "name": "topolo-director-api",
1100
- "kind": "worker",
1101
- "apiUrl": null,
1102
- "domains": [],
1103
- "routes": [],
1104
- "appId": null
1105
- }
1106
- ]
1107
- },
1108
- "docs": {
1109
- "id": "docs",
1110
- "appDir": "TopoloDocs",
1111
- "name": "topolo-docs",
1112
- "packageName": "topolo-docs",
1113
- "productionUrl": "https://docs.topolo.app",
1114
- "services": [],
1115
- "deployTargets": [
1116
- {
1117
- "name": "topolo-docs",
1118
- "kind": "worker",
1119
- "apiUrl": "https://docs.topolo.app",
1120
- "domains": [
1121
- "docs.topolo.app"
1122
- ],
1123
- "routes": [
1124
- "docs.topolo.app"
1125
- ],
1126
- "appId": null
1127
- },
1128
- {
1129
- "name": "topolo-docs-api",
1130
- "kind": "worker",
1131
- "apiUrl": null,
1132
- "domains": [],
1133
- "routes": [],
1134
- "appId": null
1135
- }
1136
- ]
1137
- },
1138
- "feed": {
1139
- "id": "feed",
1140
- "appDir": "TopoloFeed",
1141
- "name": "TopoloFeed",
1142
- "packageName": "topolo-feed",
1143
- "productionUrl": "https://feed.topolo.app",
1144
- "services": [
1145
- "feed"
1146
- ],
1147
- "deployTargets": [
1148
- {
1149
- "name": "topolo-feed-analytics-api",
1150
- "kind": "worker",
1151
- "apiUrl": "https://feed-analytics-api.topolo.app",
1152
- "domains": [
1153
- "feed-analytics-api.topolo.app"
1154
- ],
1155
- "routes": [
1156
- "feed-analytics-api.topolo.app"
1157
- ],
1158
- "appId": null
1159
- },
1160
- {
1161
- "name": "topolo-feed-api",
1162
- "kind": "worker",
1163
- "apiUrl": "https://feed-api.topolo.app",
1164
- "domains": [
1165
- "feed-api.topolo.app"
1166
- ],
1167
- "routes": [
1168
- "feed-api.topolo.app"
1169
- ],
1170
- "appId": null
1171
- },
1172
- {
1173
- "name": "topolo-feed-web",
1174
- "kind": "worker",
1175
- "apiUrl": "https://feed.topolo.app",
1176
- "domains": [
1177
- "feed.topolo.app"
1178
- ],
1179
- "routes": [
1180
- "feed.topolo.app"
1181
- ],
1182
- "appId": "feed"
1183
- }
1184
- ]
1185
- },
1186
- "flow": {
1187
- "id": "flow",
1188
- "appDir": "TopoloFlow",
1189
- "name": "topolo-flow",
1190
- "packageName": "topolo-flow",
1191
- "productionUrl": "https://flow.topolo.app",
1192
- "services": [
1193
- "flow"
1194
- ],
1195
- "deployTargets": [
1196
- {
1197
- "name": "topolo-flow",
1198
- "kind": "worker",
1199
- "apiUrl": "https://flow.topolo.app",
1200
- "domains": [
1201
- "flow.topolo.app"
1202
- ],
1203
- "routes": [
1204
- "flow.topolo.app"
1205
- ],
1206
- "appId": "flow"
1207
- },
1208
- {
1209
- "name": "topolo-flow-api",
1210
- "kind": "worker",
1211
- "apiUrl": null,
1212
- "domains": [],
1213
- "routes": [],
1214
- "appId": null
1215
- }
1216
- ]
1217
- },
1218
- "forecast": {
1219
- "id": "forecast",
1220
- "appDir": "TopoloForecast",
1221
- "name": "topolo-forecast",
1222
- "packageName": "topolo-forecast",
1223
- "productionUrl": "https://forecast.topolo.app",
1224
- "services": [
1225
- "forecast"
1226
- ],
1227
- "deployTargets": [
1228
- {
1229
- "name": "topolo-forecast",
1230
- "kind": "worker",
1231
- "apiUrl": "https://forecast.topolo.app",
1232
- "domains": [
1233
- "forecast.topolo.app"
1234
- ],
1235
- "routes": [
1236
- "forecast.topolo.app"
1237
- ],
1238
- "appId": "forecast"
1239
- },
1240
- {
1241
- "name": "topolo-forecast-api",
1242
- "kind": "worker",
1243
- "apiUrl": null,
1244
- "domains": [],
1245
- "routes": [],
1246
- "appId": null
1247
- }
1248
- ]
1249
- },
1250
- "forms": {
1251
- "id": "forms",
1252
- "appDir": "TopoloForms",
1253
- "name": "topolo-forms",
1254
- "packageName": "topolo-forms",
1255
- "productionUrl": "https://forms.topolo.app",
1256
- "services": [
1257
- "forms"
1258
- ],
1259
- "deployTargets": [
1260
- {
1261
- "name": "topolo-forms",
1262
- "kind": "worker",
1263
- "apiUrl": "https://forms.topolo.app",
1264
- "domains": [
1265
- "forms.topolo.app"
1266
- ],
1267
- "routes": [
1268
- "forms.topolo.app"
1269
- ],
1270
- "appId": "forms"
1271
- },
1272
- {
1273
- "name": "topolo-forms-api",
1274
- "kind": "worker",
1275
- "apiUrl": null,
1276
- "domains": [],
1277
- "routes": [],
1278
- "appId": null
1279
- }
1280
- ]
1281
- },
1282
- "home": {
1283
- "id": "home",
1284
- "appDir": "TopoloHome",
1285
- "name": "topolo-home",
1286
- "packageName": "topolo-home",
1287
- "productionUrl": "https://home.topolo.app",
1288
- "services": [
1289
- "home"
1290
- ],
1291
- "deployTargets": [
1292
- {
1293
- "name": "topolo-home",
1294
- "kind": "worker",
1295
- "apiUrl": "https://home.topolo.app",
1296
- "domains": [
1297
- "home.topolo.app"
1298
- ],
1299
- "routes": [
1300
- "home.topolo.app"
1301
- ],
1302
- "appId": "home"
1303
- },
1304
- {
1305
- "name": "topolo-home-api",
1306
- "kind": "worker",
1307
- "apiUrl": null,
1308
- "domains": [],
1309
- "routes": [],
1310
- "appId": null
1311
- }
1312
- ]
1313
- },
1314
- "insights": {
1315
- "id": "insights",
1316
- "appDir": "TopoloInsights",
1317
- "name": "topolo-insights",
1318
- "packageName": "topolo-insights",
1319
- "productionUrl": "https://insights.topolo.app",
1320
- "services": [
1321
- "insights"
1322
- ],
1323
- "deployTargets": [
1324
- {
1325
- "name": "topolo-insights",
1326
- "kind": "worker",
1327
- "apiUrl": "https://insights.topolo.app",
1328
- "domains": [
1329
- "insights.topolo.app"
1330
- ],
1331
- "routes": [
1332
- "insights.topolo.app"
1333
- ],
1334
- "appId": "insights"
1335
- },
1336
- {
1337
- "name": "topolo-insights-api",
1338
- "kind": "worker",
1339
- "apiUrl": null,
1340
- "domains": [],
1341
- "routes": [],
1342
- "appId": null
1343
- }
1344
- ]
1345
- },
1346
- "inventory": {
1347
- "id": "inventory",
1348
- "appDir": "TopoloInventory",
1349
- "name": "topolo-inventory",
1350
- "packageName": "topolo-inventory",
1351
- "productionUrl": "https://inventory.topolo.app",
1352
- "services": [
1353
- "inventory"
1354
- ],
1355
- "deployTargets": [
1356
- {
1357
- "name": "topolo-inventory",
1358
- "kind": "worker",
1359
- "apiUrl": "https://inventory.topolo.app",
1360
- "domains": [
1361
- "inventory.topolo.app"
1362
- ],
1363
- "routes": [
1364
- "inventory.topolo.app"
1365
- ],
1366
- "appId": "inventory"
1367
- },
1368
- {
1369
- "name": "topolo-inventory-api",
1370
- "kind": "worker",
1371
- "apiUrl": null,
1372
- "domains": [],
1373
- "routes": [],
1374
- "appId": null
1375
- }
1376
- ]
1377
- },
1378
- "learn": {
1379
- "id": "learn",
1380
- "appDir": "TopoloLearn",
1381
- "name": "topololearn",
1382
- "packageName": "topolo-learn",
1383
- "productionUrl": "https://learn.topolo.app",
1384
- "services": [
1385
- "learn"
1386
- ],
1387
- "deployTargets": [
1388
- {
1389
- "name": "topolo-learn",
1390
- "kind": "worker",
1391
- "apiUrl": "https://learn.topolo.app",
1392
- "domains": [
1393
- "learn.topolo.app"
1394
- ],
1395
- "routes": [
1396
- "learn.topolo.app"
1397
- ],
1398
- "appId": "learn"
1399
- },
1400
- {
1401
- "name": "topolo-learn-api",
1402
- "kind": "worker",
1403
- "apiUrl": null,
1404
- "domains": [],
1405
- "routes": [],
1406
- "appId": null
1407
- }
1408
- ]
1409
- },
1410
- "localize": {
1411
- "id": "localize",
1412
- "appDir": "TopoloLocalize",
1413
- "name": "topolo-localize",
1414
- "packageName": "topolo-localize",
1415
- "productionUrl": "https://localize.topolo.app",
1416
- "services": [
1417
- "localize"
1418
- ],
1419
- "deployTargets": [
1420
- {
1421
- "name": "topolo-localize",
1422
- "kind": "worker",
1423
- "apiUrl": "https://localize.topolo.app",
1424
- "domains": [
1425
- "localize.topolo.app"
1426
- ],
1427
- "routes": [
1428
- "localize.topolo.app"
1429
- ],
1430
- "appId": "localize"
1431
- }
1432
- ]
1433
- },
1434
- "mail": {
1435
- "id": "mail",
1436
- "appDir": "TopoloMail",
1437
- "name": "topolo-mail",
1438
- "packageName": "topolo-mail",
1439
- "productionUrl": "https://mail.topolo.app",
1440
- "services": [
1441
- "mail"
1442
- ],
1443
- "deployTargets": [
1444
- {
1445
- "name": "topolo-mail",
1446
- "kind": "worker",
1447
- "apiUrl": "https://mail.topolo.app",
1448
- "domains": [
1449
- "mail.topolo.app"
1450
- ],
1451
- "routes": [
1452
- "mail.topolo.app"
1453
- ],
1454
- "appId": "mail"
1455
- },
1456
- {
1457
- "name": "topolo-mail-api",
1458
- "kind": "worker",
1459
- "apiUrl": null,
1460
- "domains": [],
1461
- "routes": [],
1462
- "appId": null
1463
- }
1464
- ]
1465
- },
1466
- "mdm": {
1467
- "id": "mdm",
1468
- "appDir": "TopoloMDM",
1469
- "name": "TopoloMDM",
1470
- "packageName": "topolo-mdm",
1471
- "productionUrl": "https://mdm.topolo.app",
1472
- "services": [
1473
- "mdm"
1474
- ],
1475
- "deployTargets": [
1476
- {
1477
- "name": "topolo-mdm-api",
1478
- "kind": "worker",
1479
- "apiUrl": null,
1480
- "domains": [],
1481
- "routes": [],
1482
- "appId": null
1483
- },
1484
- {
1485
- "name": "topolo-mdm-console",
1486
- "kind": "worker",
1487
- "apiUrl": "https://mdm.topolo.app",
1488
- "domains": [
1489
- "mdm.topolo.app"
1490
- ],
1491
- "routes": [
1492
- "mdm.topolo.app"
1493
- ],
1494
- "appId": "mdm"
1495
- }
1496
- ]
1497
- },
1498
- "messages": {
1499
- "id": "messages",
1500
- "appDir": "TopoloMessages",
1501
- "name": "topolo-messages",
1502
- "packageName": "topolo-messages",
1503
- "productionUrl": "https://messages.topolo.app",
1504
- "services": [
1505
- "messages"
1506
- ],
1507
- "deployTargets": [
1508
- {
1509
- "name": "topolo-messages",
1510
- "kind": "worker",
1511
- "apiUrl": "https://messages.topolo.app",
1512
- "domains": [
1513
- "messages.topolo.app"
1514
- ],
1515
- "routes": [
1516
- "messages.topolo.app"
1517
- ],
1518
- "appId": "messages"
1519
- },
1520
- {
1521
- "name": "topolo-messages-api",
1522
- "kind": "worker",
1523
- "apiUrl": null,
1524
- "domains": [],
1525
- "routes": [],
1526
- "appId": null
1527
- },
1528
- {
1529
- "name": "topolo-messages-dispatch",
1530
- "kind": "worker",
1531
- "apiUrl": null,
1532
- "domains": [],
1533
- "routes": [],
1534
- "appId": null
1535
- }
1536
- ]
1537
- },
1538
- "nexus": {
1539
- "id": "nexus",
1540
- "appDir": "TopoloNexus",
1541
- "name": "topolo-nexus",
1542
- "packageName": "topolo-nexus",
1543
- "productionUrl": "https://nexus.topolo.app",
1544
- "services": [
1545
- "nexus"
1546
- ],
1547
- "deployTargets": [
1548
- {
1549
- "name": "topolo-nexus-dashboard",
1550
- "kind": "worker",
1551
- "apiUrl": "https://nexus.topolo.app",
1552
- "domains": [
1553
- "nexus.topolo.app"
1554
- ],
1555
- "routes": [
1556
- "nexus.topolo.app"
1557
- ],
1558
- "appId": null
1559
- },
1560
- {
1561
- "name": "topolo-nexus-gateway",
1562
- "kind": "worker",
1563
- "apiUrl": "https://nexus.topolo.app",
1564
- "domains": [
1565
- "nexus.topolo.app"
1566
- ],
1567
- "routes": [],
1568
- "appId": "nexus"
1569
- }
1570
- ]
1571
- },
1572
- "notify": {
1573
- "id": "notify",
1574
- "appDir": "TopoloNotify",
1575
- "name": "topolo-notify",
1576
- "packageName": "@topolo/notify",
1577
- "productionUrl": "https://notify.topolo.app",
1578
- "services": [
1579
- "notify"
1580
- ],
1581
- "deployTargets": [
1582
- {
1583
- "name": "topolo-notify",
1584
- "kind": "worker",
1585
- "apiUrl": "https://notify.topolo.app",
1586
- "domains": [
1587
- "notify.topolo.app"
1588
- ],
1589
- "routes": [
1590
- "notify.topolo.app"
1591
- ],
1592
- "appId": "notify"
1593
- }
1594
- ]
1595
- },
1596
- "observability_watch": {
1597
- "id": "observability_watch",
1598
- "appDir": "TopoloObservabilityWatch",
1599
- "name": "topolo-observability-watch",
1600
- "packageName": "topolo-observability-watch",
1601
- "productionUrl": "https://observability-watch.topolo.app",
1602
- "services": [
1603
- "observability_watch"
1604
- ],
1605
- "deployTargets": [
1606
- {
1607
- "name": "topolo-observability-watch",
1608
- "kind": "worker",
1609
- "apiUrl": "https://observability-watch.topolo.app",
1610
- "domains": [
1611
- "observability-watch.topolo.app"
1612
- ],
1613
- "routes": [
1614
- "observability-watch.topolo.app"
1615
- ],
1616
- "appId": "observability_watch"
1617
- }
1618
- ]
1619
- },
1620
- "one": {
1621
- "id": "one",
1622
- "appDir": "TopoloOne",
1623
- "name": "TopoloOne",
1624
- "packageName": "topolo-oneclick-sso",
1625
- "productionUrl": "https://one.topolo.app",
1626
- "services": [
1627
- "one"
1628
- ],
1629
- "deployTargets": [
1630
- {
1631
- "name": "topolo-one",
1632
- "kind": "worker",
1633
- "apiUrl": "https://one.topolo.app",
1634
- "domains": [
1635
- "one.topolo.app"
1636
- ],
1637
- "routes": [
1638
- "one.topolo.app/*"
1639
- ],
1640
- "appId": null
1641
- },
1642
- {
1643
- "name": "topolo-one-api",
1644
- "kind": "worker",
1645
- "apiUrl": "https://www.topolo.app",
1646
- "domains": [
1647
- "www.topolo.app"
1648
- ],
1649
- "routes": [
1650
- "www.topolo.app/*"
1651
- ],
1652
- "appId": "one"
1653
- },
1654
- {
1655
- "name": "topolo-one-website",
1656
- "kind": "worker",
1657
- "apiUrl": "https://topolo.io",
1658
- "domains": [
1659
- "topolo.io"
1660
- ],
1661
- "routes": [
1662
- "one.topolo.io",
1663
- "topolo.io",
1664
- "www.topolo.io"
1665
- ],
1666
- "appId": null
1667
- }
1668
- ]
1669
- },
1670
- "p2p": {
1671
- "id": "p2p",
1672
- "appDir": "TopoloP2P",
1673
- "name": "topolo-p2p",
1674
- "packageName": "topolo-p2p",
1675
- "productionUrl": "https://p2p.topolo.app",
1676
- "services": [
1677
- "p2p"
1678
- ],
1679
- "deployTargets": [
1680
- {
1681
- "name": "topolo-p2p",
1682
- "kind": "worker",
1683
- "apiUrl": "https://p2p.topolo.app",
1684
- "domains": [
1685
- "p2p.topolo.app"
1686
- ],
1687
- "routes": [
1688
- "p2p.topolo.app"
1689
- ],
1690
- "appId": "p2p"
1691
- },
1692
- {
1693
- "name": "topolo-p2p-api",
1694
- "kind": "worker",
1695
- "apiUrl": null,
1696
- "domains": [],
1697
- "routes": [],
1698
- "appId": null
1699
- }
1700
- ]
1701
- },
1702
- "pay": {
1703
- "id": "pay",
1704
- "appDir": "TopoloPay",
1705
- "name": "topolo-pay",
1706
- "packageName": "topolo-pay",
1707
- "productionUrl": "https://pay.topolo.app",
1708
- "services": [
1709
- "pay"
1710
- ],
1711
- "deployTargets": [
1712
- {
1713
- "name": "topolo-pay",
1714
- "kind": "worker",
1715
- "apiUrl": "https://pay.topolo.app",
1716
- "domains": [
1717
- "pay.topolo.app"
1718
- ],
1719
- "routes": [
1720
- "pay.topolo.app"
1721
- ],
1722
- "appId": "pay"
1723
- },
1724
- {
1725
- "name": "topolo-pay-api",
1726
- "kind": "worker",
1727
- "apiUrl": null,
1728
- "domains": [],
1729
- "routes": [],
1730
- "appId": null
1731
- }
1732
- ]
1733
- },
1734
- "people": {
1735
- "id": "people",
1736
- "appDir": "TopoloPeople",
1737
- "name": "topolo-people",
1738
- "packageName": "topolo-people",
1739
- "productionUrl": "https://people.topolo.app",
1740
- "services": [
1741
- "people"
1742
- ],
1743
- "deployTargets": [
1744
- {
1745
- "name": "topolo-people",
1746
- "kind": "worker",
1747
- "apiUrl": "https://people.topolo.app",
1748
- "domains": [
1749
- "people.topolo.app"
1750
- ],
1751
- "routes": [
1752
- "people.topolo.app"
1753
- ],
1754
- "appId": "people"
1755
- },
1756
- {
1757
- "name": "topolo-people-api",
1758
- "kind": "worker",
1759
- "apiUrl": null,
1760
- "domains": [],
1761
- "routes": [],
1762
- "appId": null
1763
- }
1764
- ]
1765
- },
1766
- "quro": {
1767
- "id": "quro",
1768
- "appDir": "TopoloQuro",
1769
- "name": "TopoloQuro",
1770
- "packageName": "topolo-quro",
1771
- "productionUrl": "https://quro.topolo.app",
1772
- "services": [
1773
- "quro.api",
1774
- "quro.redirect"
1775
- ],
1776
- "deployTargets": [
1777
- {
1778
- "name": "quro-api",
1779
- "kind": "worker",
1780
- "apiUrl": "https://api.ol0.me",
1781
- "domains": [
1782
- "api.ol0.me"
1783
- ],
1784
- "routes": [
1785
- "api.ol0.me/*"
1786
- ],
1787
- "appId": "quro.api"
1788
- },
1789
- {
1790
- "name": "quro-redirect-system",
1791
- "kind": "worker",
1792
- "apiUrl": "https://ol0.me",
1793
- "domains": [
1794
- "ol0.me"
1795
- ],
1796
- "routes": [
1797
- "ol0.me/*"
1798
- ],
1799
- "appId": "quro.redirect"
1800
- },
1801
- {
1802
- "name": "quro-ui",
1803
- "kind": "worker",
1804
- "apiUrl": "https://quro.topolo.app",
1805
- "domains": [
1806
- "quro.topolo.app"
1807
- ],
1808
- "routes": [
1809
- "quro.topolo.app"
1810
- ],
1811
- "appId": null
1812
- }
1813
- ]
1814
- },
1815
- "roadmapper": {
1816
- "id": "roadmapper",
1817
- "appDir": "TopoloRoadmapper",
1818
- "name": "topolo-roadmapper",
1819
- "packageName": "topolo-roadmapper",
1820
- "productionUrl": "https://roadmapper.topolo.app",
1821
- "services": [
1822
- "roadmapper"
1823
- ],
1824
- "deployTargets": [
1825
- {
1826
- "name": "topolo-roadmapper",
1827
- "kind": "worker",
1828
- "apiUrl": "https://roadmapper.topolo.app",
1829
- "domains": [
1830
- "roadmapper.topolo.app"
1831
- ],
1832
- "routes": [
1833
- "roadmapper.topolo.app"
1834
- ],
1835
- "appId": "roadmapper"
1836
- },
1837
- {
1838
- "name": "topolo-roadmapper-api",
1839
- "kind": "worker",
1840
- "apiUrl": null,
1841
- "domains": [],
1842
- "routes": [],
1843
- "appId": null
1844
- }
1845
- ]
1846
- },
1847
- "sign": {
1848
- "id": "sign",
1849
- "appDir": "TopoloSign",
1850
- "name": "topolo-sign",
1851
- "packageName": "topolo-sign",
1852
- "productionUrl": "https://sign.topolo.app",
1853
- "services": [
1854
- "sign"
1855
- ],
1856
- "deployTargets": [
1857
- {
1858
- "name": "topolo-sign",
1859
- "kind": "worker",
1860
- "apiUrl": "https://sign.topolo.app",
1861
- "domains": [
1862
- "sign.topolo.app"
1863
- ],
1864
- "routes": [
1865
- "sign.topolo.app"
1866
- ],
1867
- "appId": "sign"
1868
- },
1869
- {
1870
- "name": "topolo-sign-api",
1871
- "kind": "worker",
1872
- "apiUrl": null,
1873
- "domains": [],
1874
- "routes": [],
1875
- "appId": null
1876
- }
1877
- ]
1878
- },
1879
- "social_studio": {
1880
- "id": "social_studio",
1881
- "appDir": "TopoloSocialStudio",
1882
- "name": "topolo-social-studio",
1883
- "packageName": "topolo-social-studio",
1884
- "productionUrl": "https://studio.topolo.app",
1885
- "services": [
1886
- "social_studio"
1887
- ],
1888
- "deployTargets": [
1889
- {
1890
- "name": "topolo-social-studio",
1891
- "kind": "worker",
1892
- "apiUrl": "https://studio.topolo.app",
1893
- "domains": [
1894
- "studio.topolo.app"
1895
- ],
1896
- "routes": [
1897
- "studio.topolo.app"
1898
- ],
1899
- "appId": "social_studio"
1900
- },
1901
- {
1902
- "name": "topolo-social-studio-api",
1903
- "kind": "worker",
1904
- "apiUrl": null,
1905
- "domains": [],
1906
- "routes": [],
1907
- "appId": null
1908
- },
1909
- {
1910
- "name": "topolo-social-studio-queue",
1911
- "kind": "worker",
1912
- "apiUrl": null,
1913
- "domains": [],
1914
- "routes": [],
1915
- "appId": null
1916
- }
1917
- ]
1918
- },
1919
- "socialize": {
1920
- "id": "socialize",
1921
- "appDir": "TopoloSocialize",
1922
- "name": "socialize",
1923
- "packageName": "topolo-socialize",
1924
- "productionUrl": "https://socialize.topolo.app",
1925
- "services": [
1926
- "socialize"
1927
- ],
1928
- "deployTargets": [
1929
- {
1930
- "name": "topolo-socialize",
1931
- "kind": "worker",
1932
- "apiUrl": "https://socialize.topolo.app",
1933
- "domains": [
1934
- "socialize.topolo.app"
1935
- ],
1936
- "routes": [
1937
- "socialize.topolo.app"
1938
- ],
1939
- "appId": "socialize"
1940
- },
1941
- {
1942
- "name": "topolo-socialize-api",
1943
- "kind": "worker",
1944
- "apiUrl": "https://socialize-api.topolo.app",
1945
- "domains": [
1946
- "socialize-api.topolo.app"
1947
- ],
1948
- "routes": [
1949
- "socialize-api.topolo.app"
1950
- ],
1951
- "appId": null
1952
- },
1953
- {
1954
- "name": "topolo-socialize-scheduler",
1955
- "kind": "worker",
1956
- "apiUrl": null,
1957
- "domains": [],
1958
- "routes": [],
1959
- "appId": null
1960
- }
1961
- ]
1962
- },
1963
- "spaces": {
1964
- "id": "spaces",
1965
- "appDir": "TopoloSpaces",
1966
- "name": "topolo-spaces",
1967
- "packageName": "@topolo/spaces",
1968
- "productionUrl": "https://spaces.topolo.app",
1969
- "services": [
1970
- "spaces"
1971
- ],
1972
- "deployTargets": [
1973
- {
1974
- "name": "topolo-spaces",
1975
- "kind": "worker",
1976
- "apiUrl": "https://spaces.topolo.app",
1977
- "domains": [
1978
- "spaces.topolo.app"
1979
- ],
1980
- "routes": [
1981
- "spaces.topolo.app"
1982
- ],
1983
- "appId": "spaces"
1984
- },
1985
- {
1986
- "name": "topolo-spaces-api",
1987
- "kind": "worker",
1988
- "apiUrl": null,
1989
- "domains": [],
1990
- "routes": [],
1991
- "appId": null
1992
- }
1993
- ]
1994
- },
1995
- "status": {
1996
- "id": "status",
1997
- "appDir": "TopoloStatus",
1998
- "name": "topolo-status",
1999
- "packageName": "topolo-status",
2000
- "productionUrl": "https://status.topolo.app",
2001
- "services": [
2002
- "status"
2003
- ],
2004
- "deployTargets": [
2005
- {
2006
- "name": "topolo-status",
2007
- "kind": "worker",
2008
- "apiUrl": "https://status.topolo.app",
2009
- "domains": [
2010
- "status.topolo.app"
2011
- ],
2012
- "routes": [
2013
- "status.topolo.app"
2014
- ],
2015
- "appId": "status"
2016
- }
2017
- ]
2018
- },
2019
- "success": {
2020
- "id": "success",
2021
- "appDir": "TopoloSuccess",
2022
- "name": "topolo-success",
2023
- "packageName": "topolo-success",
2024
- "productionUrl": "https://success.topolo.app",
2025
- "services": [
2026
- "success"
2027
- ],
2028
- "deployTargets": [
2029
- {
2030
- "name": "topolo-success",
2031
- "kind": "worker",
2032
- "apiUrl": "https://success.topolo.app",
2033
- "domains": [
2034
- "success.topolo.app"
2035
- ],
2036
- "routes": [
2037
- "success.topolo.app"
2038
- ],
2039
- "appId": "success"
2040
- },
2041
- {
2042
- "name": "topolo-success-api",
2043
- "kind": "worker",
2044
- "apiUrl": null,
2045
- "domains": [],
2046
- "routes": [],
2047
- "appId": null
2048
- }
2049
- ]
2050
- },
2051
- "support": {
2052
- "id": "support",
2053
- "appDir": "TopoloSupport",
2054
- "name": "topolo-support",
2055
- "packageName": "topolo-support",
2056
- "productionUrl": "https://support.topolo.app",
2057
- "services": [
2058
- "support"
2059
- ],
2060
- "deployTargets": [
2061
- {
2062
- "name": "topolo-support",
2063
- "kind": "worker",
2064
- "apiUrl": "https://support.topolo.app",
2065
- "domains": [
2066
- "support.topolo.app"
2067
- ],
2068
- "routes": [
2069
- "support.topolo.app/*"
2070
- ],
2071
- "appId": "support"
2072
- },
2073
- {
2074
- "name": "topolo-support-api",
2075
- "kind": "worker",
2076
- "apiUrl": null,
2077
- "domains": [],
2078
- "routes": [],
2079
- "appId": null
2080
- }
2081
- ]
2082
- },
2083
- "survey": {
2084
- "id": "survey",
2085
- "appDir": "TopoloSurvey",
2086
- "name": "topolo-survey",
2087
- "packageName": "topolo-survey",
2088
- "productionUrl": "https://survey.topolo.app",
2089
- "services": [
2090
- "survey"
2091
- ],
2092
- "deployTargets": [
2093
- {
2094
- "name": "topolo-survey",
2095
- "kind": "worker",
2096
- "apiUrl": "https://survey.topolo.app",
2097
- "domains": [
2098
- "survey.topolo.app"
2099
- ],
2100
- "routes": [
2101
- "survey.topolo.app"
2102
- ],
2103
- "appId": "survey"
2104
- },
2105
- {
2106
- "name": "topolo-survey-api",
2107
- "kind": "worker",
2108
- "apiUrl": null,
2109
- "domains": [],
2110
- "routes": [],
2111
- "appId": null
2112
- }
2113
- ]
2114
- },
2115
- "voice": {
2116
- "id": "voice",
2117
- "appDir": "TopoloVoice",
2118
- "name": "topolo-voice",
2119
- "packageName": "topolo-voice",
2120
- "productionUrl": "https://voice.topolo.app",
2121
- "services": [
2122
- "voice"
2123
- ],
2124
- "deployTargets": [
2125
- {
2126
- "name": "topolo-voice",
2127
- "kind": "worker",
2128
- "apiUrl": "https://voice.topolo.app",
2129
- "domains": [
2130
- "voice.topolo.app"
2131
- ],
2132
- "routes": [
2133
- "voice.topolo.app"
2134
- ],
2135
- "appId": "voice"
2136
- },
2137
- {
2138
- "name": "topolo-voice-api",
2139
- "kind": "worker",
2140
- "apiUrl": null,
2141
- "domains": [],
2142
- "routes": [],
2143
- "appId": null
2144
- }
2145
- ]
2146
- },
2147
- "web": {
2148
- "id": "web",
2149
- "appDir": "TopoloWeb",
2150
- "name": "topoloweb",
2151
- "packageName": "topolo-web",
2152
- "productionUrl": "https://web.topolo.app",
2153
- "services": [
2154
- "web"
2155
- ],
2156
- "deployTargets": [
2157
- {
2158
- "name": "topolo-web-api",
2159
- "kind": "worker",
2160
- "apiUrl": null,
2161
- "domains": [],
2162
- "routes": [],
2163
- "appId": null
2164
- },
2165
- {
2166
- "name": "topolo-web-runtime",
2167
- "kind": "worker",
2168
- "apiUrl": "https://sites.topolo.app",
2169
- "domains": [
2170
- "sites.topolo.app"
2171
- ],
2172
- "routes": [
2173
- "*.sites.topolo.app/*",
2174
- "sites.topolo.app"
2175
- ],
2176
- "appId": null
2177
- },
2178
- {
2179
- "name": "topolo-web-studio",
2180
- "kind": "worker",
2181
- "apiUrl": "https://web.topolo.app",
2182
- "domains": [
2183
- "web.topolo.app"
2184
- ],
2185
- "routes": [
2186
- "web.topolo.app"
2187
- ],
2188
- "appId": "web"
2189
- }
2190
- ]
2191
- }
2192
- };
2193
-
2194
457
  // src/application-directory.ts
2195
458
  function friendlyAppId(entry) {
2196
459
  for (const value of [entry.slug, entry.name, entry.appId]) {
@@ -2209,14 +472,6 @@ function idVariants(value) {
2209
472
  normalized.replace(/_/g, "-")
2210
473
  ])].filter(Boolean);
2211
474
  }
2212
- var STATIC_APPLICATIONS = APPLICATIONS;
2213
- function staticApplicationForId(id) {
2214
- for (const variant of idVariants(id)) {
2215
- const entry = STATIC_APPLICATIONS[variant];
2216
- if (entry) return entry;
2217
- }
2218
- return null;
2219
- }
2220
475
  function applicationEntryFromCatalog(live) {
2221
476
  const id = friendlyAppId(live);
2222
477
  return {
@@ -2231,32 +486,25 @@ function applicationEntryFromCatalog(live) {
2231
486
  }
2232
487
  var DIRECTORY_PAGE_LIMIT = 100;
2233
488
  var DIRECTORY_MAX_PAGES = 100;
2234
- function staticApplicationDirectory() {
2235
- const applications = Object.entries(STATIC_APPLICATIONS).map(([id, application]) => ({
2236
- id,
2237
- application,
2238
- source: "static",
2239
- live: null
2240
- })).sort((left, right) => left.id.localeCompare(right.id));
2241
- return { source: "static_fallback", applications };
2242
- }
2243
489
  function directoryApplicationFromLive(live) {
2244
490
  const id = friendlyAppId(live);
2245
491
  return {
2246
492
  id,
2247
- // Prefer the static snapshot's richer repo/deploy metadata when the live
2248
- // registry confirms the app; synthesize from the live entry otherwise.
2249
- application: staticApplicationForId(id) ?? applicationEntryFromCatalog(live),
493
+ application: applicationEntryFromCatalog(live),
2250
494
  source: "live",
2251
495
  live
2252
496
  };
2253
497
  }
2254
498
  async function listApplicationDirectory(client) {
2255
- if (!client) return staticApplicationDirectory();
2256
- let services;
499
+ if (!client) {
500
+ throw new TopoloSdkError(
501
+ "authentication_required",
502
+ "A credential-scoped client is required to list Topolo applications."
503
+ );
504
+ }
505
+ const services = [];
506
+ let cursor;
2257
507
  try {
2258
- services = [];
2259
- let cursor;
2260
508
  for (let page = 0; page < DIRECTORY_MAX_PAGES; page += 1) {
2261
509
  const result = await client.searchServices({
2262
510
  ...cursor ? { cursor } : {},
@@ -2266,8 +514,11 @@ async function listApplicationDirectory(client) {
2266
514
  if (!result.page.nextCursor) break;
2267
515
  cursor = result.page.nextCursor;
2268
516
  }
2269
- } catch {
2270
- return staticApplicationDirectory();
517
+ } catch (error) {
518
+ throw new TopoloSdkError(
519
+ "application_catalog_unavailable",
520
+ `The credential-scoped Topolo application catalog is unavailable: ${error instanceof Error ? error.message : String(error)}`
521
+ );
2271
522
  }
2272
523
  const seen = /* @__PURE__ */ new Map();
2273
524
  for (const live of services) {
@@ -2281,14 +532,7 @@ async function listApplicationDirectory(client) {
2281
532
  }
2282
533
  function matchesDirectoryApplication(app, needle) {
2283
534
  const candidates = new Set(idVariants(needle));
2284
- const keys = [
2285
- app.id,
2286
- app.application.id,
2287
- app.application.name,
2288
- app.live?.appId,
2289
- app.live?.slug,
2290
- app.live?.name
2291
- ];
535
+ const keys = [app.id, app.application.id, app.application.name, app.live.appId, app.live.slug, app.live.name];
2292
536
  for (const key of keys) {
2293
537
  if (typeof key !== "string" || !key.trim()) continue;
2294
538
  for (const variant of idVariants(key)) {
@@ -2304,439 +548,29 @@ function formatDirectoryApplicationIds(directory) {
2304
548
  const ids = directory.applications.map((app) => app.id).sort();
2305
549
  const preview = ids.slice(0, 50).join(", ");
2306
550
  const suffix = ids.length > 50 ? `, ... +${ids.length - 50} more` : "";
2307
- const label = directory.source === "live" ? "Applications available to this credential" : "Applications in the bundled static snapshot (live registry unreachable)";
2308
- return `${label}: ${preview}${suffix}`;
551
+ return `Applications available to this credential: ${preview}${suffix}`;
2309
552
  }
2310
553
  async function resolveApplicationDirectoryEntry(client, application) {
2311
554
  const needle = typeof application === "string" ? application.trim() : "";
2312
- if (!needle) {
2313
- throw new TopoloSdkError("unknown_application", "application is required");
2314
- }
2315
- if (client) {
2316
- let live = null;
2317
- try {
2318
- live = await client.getService(needle);
2319
- } catch {
2320
- live = null;
2321
- }
2322
- if (live) return directoryApplicationFromLive(live);
2323
- }
2324
- const directory = await listApplicationDirectory(client);
2325
- const match = directory.applications.find((app) => matchesDirectoryApplication(app, needle));
2326
- if (match) return match;
2327
- throw new TopoloSdkError(
2328
- "unknown_application",
2329
- `Unknown application "${application}". ${formatDirectoryApplicationIds(directory)}`
2330
- );
2331
- }
2332
-
2333
- // src/application-requirements.ts
2334
- var STATIC_APPLICATIONS2 = APPLICATIONS;
2335
- var APPLICATION_REQUIREMENTS_VERSION = "2026-08-11.1";
2336
- var APPLICATION_REQUIREMENTS = [
2337
- {
2338
- id: "platform-metadata",
2339
- title: "Register the application in platform metadata",
2340
- summary: "Every app must have a stable application ID, CloudControl metadata for deployed surfaces, and package metadata where code is shipped.",
2341
- appliesTo: ["all"],
2342
- evidence: [
2343
- "topolo.cloudcontrol.json exists for every deployed app surface",
2344
- "package.json names the package or app when the repo ships code",
2345
- "The live platform registry exposes the app through topolo apps and MCP discovery"
2346
- ],
2347
- implementation: [
2348
- "Register the app in the live platform registry (Auth service catalog) before exposing it to agents",
2349
- "Keep production URLs, Worker names, Pages projects, routes, domains, and bindings current in CloudControl metadata",
2350
- "Do not leave a new Topolo* app directory without an explicit application ID"
2351
- ]
2352
- },
2353
- {
2354
- id: "canonical-docs",
2355
- title: "Update canonical docs with the code change",
2356
- summary: "TopoloDocs is the source of truth for application behavior, ownership, deployment shape, auth boundaries, and operations.",
2357
- appliesTo: ["all"],
2358
- evidence: [
2359
- "Matching system registry entry exists in TopoloDocs",
2360
- "Internal handbook coverage exists for the system",
2361
- "npm run validate passes in TopoloDocs when docs are touched"
2362
- ],
2363
- implementation: [
2364
- "Read the matching TopoloDocs system entry before coding",
2365
- "Update docs in the same change when behavior, API, auth, data ownership, deployment, or operations change",
2366
- "Update last_verified dates on touched canonical pages"
2367
- ]
2368
- },
2369
- {
2370
- id: "shared-auth-boundary",
2371
- title: "Use the shared Topolo auth boundary",
2372
- summary: "Applications must derive identity, organization, scopes, and app entitlement from TopoloAuth rather than inventing parallel auth state.",
2373
- appliesTo: ["browser", "api", "tooling", "agent_surface"],
2374
- evidence: [
2375
- "@topolo/auth-client or @topolo-io/worker-runtime is used where applicable",
2376
- "No public command, tool, or SDK method accepts orgId",
2377
- "App slug and Auth app registration are documented for protected APIs"
2378
- ],
2379
- implementation: [
2380
- "Use shared auth/runtime packages instead of copying token parsing, gateway, or browser storage flows",
2381
- "Derive organization from the credential on every request",
2382
- "Route OAuth, refresh, logout, and SSO paths according to the shared Auth contract"
2383
- ]
2384
- },
2385
- {
2386
- id: "shared-shell-and-launcher",
2387
- title: "Use the shared shell, launcher, and account menu",
2388
- summary: "Browser applications should feel like one platform and should not create isolated navigation or account surfaces.",
2389
- appliesTo: ["browser"],
2390
- evidence: [
2391
- "@topolo-io/app-shell is used for the platform shell where the app has authenticated UI",
2392
- "@topolo-io/app-launcher keeps the shared launcher/app switcher reachable from authenticated app chrome",
2393
- "Account menu and sign-out behavior use TopoloAppShell or the ui-kit TopoloAccountMenu primitive",
2394
- "Repeated app body surfaces use shared TopoloAppLayout primitives instead of local stat cards, empty states, or status badges",
2395
- "Local preview supports deterministic visual QA fixtures for overview, list, detail, settings, and empty/loading states",
2396
- "Authenticated app body content stays inside the viewport on mobile and desktop widths"
2397
- ],
2398
- implementation: [
2399
- "Use @topolo-io/app-shell TopoloAppShell for authenticated app layouts",
2400
- "Use the @topolo-io/ui-kit TopoloAccountMenu primitive when a partial-shell surface still needs account chrome",
2401
- "Pass app-specific account actions as additive menu items instead of forking dropdowns",
2402
- "Use shared design tokens and platform UI primitives before creating local equivalents",
2403
- "Use TopoloAppMetricCard, TopoloAppEmptyState, TopoloAppStatusBadge, TopoloAppGrid, and TopoloAppSection for repeated app body patterns",
2404
- "Keep visual QA fixtures available through visualQa=1 or __devpreview=1 so screenshot checks do not depend on live API state",
2405
- "Keep mobile and desktop shell behavior aligned with the platform UI kit",
2406
- "Constrain the app workspace-view layout wrappers with min-width: 0, width: auto, and viewport-aware max-width so shell padding cannot create page-level horizontal overflow"
2407
- ]
2408
- },
2409
- {
2410
- id: "app-registration-and-scopes",
2411
- title: "Register protected APIs as platform apps",
2412
- summary: "Callable app APIs need a stable app ID, app slug, permissions, role bundles, and API-key scopes before agents or users rely on them.",
2413
- appliesTo: ["api"],
2414
- evidence: [
2415
- "Auth app catalog contains the app ID and slug",
2416
- "Permissions, role bundles, and API-key scopes exist for the app",
2417
- "SDK, CLI, and MCP app discovery include the callable production API",
2418
- "CloudControl production HTTP targets classify agent reachability with sdk_app_id or agent_callable:false"
2419
- ],
2420
- implementation: [
2421
- "Add production Worker api_url metadata and sdk_app_id for every agent-callable API target",
2422
- "Mark browser, documentation, and runtime-only Worker targets with agent_callable:false",
2423
- "Expose stable app IDs through live catalog discovery",
2424
- "Keep typed SDK/CLI/MCP surfaces in sync when an API contract stabilizes"
2425
- ]
2426
- },
2427
- {
2428
- id: "organization-scoped-data",
2429
- title: "Keep application data organization-scoped",
2430
- summary: "Protected data access must be scoped by the authenticated organization at the backend boundary, not by client-provided hints.",
2431
- appliesTo: ["api"],
2432
- evidence: [
2433
- "Backend request handlers derive org membership from credential validation",
2434
- "Queries and Durable Object keys include the authenticated organization boundary where data is tenant-owned",
2435
- "MCP and CLI inputs do not include orgId overrides"
2436
- ],
2437
- implementation: [
2438
- "Reject or ignore organization hints supplied by clients",
2439
- "Bind SQL, KV, R2, queue, and Durable Object access to the authenticated organization",
2440
- "Document service-local exceptions explicitly in the system security assurance record"
2441
- ]
2442
- },
2443
- {
2444
- id: "cloudflare-deployment-contract",
2445
- title: "Keep Cloudflare deployment metadata complete",
2446
- summary: "Workers, Pages, bindings, routes, env vars, queues, cron triggers, and deployment commands must be discoverable through CloudControl metadata.",
2447
- appliesTo: ["browser", "api"],
2448
- evidence: [
2449
- "topolo.cloudcontrol.json lists production deploy targets and URLs",
2450
- "Wrangler/Pages configuration matches CloudControl metadata",
2451
- "Secrets and environment variables are not committed"
2452
- ],
2453
- implementation: [
2454
- "Update CloudControl metadata whenever deployment topology changes",
2455
- "Prefer Cloudflare-native runtime surfaces for new Topolo app infrastructure",
2456
- "Keep Worker bindings and Pages domains explicit enough for agents to inspect before deploying"
2457
- ]
2458
- },
2459
- {
2460
- id: "agent-and-operator-surfaces",
2461
- title: "Expose agent-safe operations through SDK, CLI, and MCP",
2462
- summary: "Agent-accessible functionality should be discoverable, scope-gated, and write-confirmed instead of hidden behind ad hoc HTTP calls.",
2463
- appliesTo: ["api", "tooling", "agent_surface"],
2464
- evidence: [
2465
- "Read operations have typed SDK/CLI/MCP surfaces once their contract stabilizes",
2466
- "Mutating generic calls require --confirm or confirm:true",
2467
- "MCP tools never accept orgId and advertise only appropriate scope-gated tools"
2468
- ],
2469
- implementation: [
2470
- "Add SDK types first, then CLI commands and MCP tools for durable workflows",
2471
- "Use generic API passthrough only as a temporary escape hatch",
2472
- "Keep command output JSON-stable for agents and human-readable with --no-json"
2473
- ]
2474
- },
2475
- {
2476
- id: "native-dashboard-widget",
2477
- title: "Expose a native dashboard widget contract",
2478
- summary: "Launchable first-party applications must populate TopoloOne live workspace through an app-owned /api/widget endpoint using the SDK widget response contract.",
2479
- appliesTo: ["api"],
2480
- evidence: [
2481
- "The app-owned API exposes GET /api/widget",
2482
- "The endpoint returns TopoloWidgetApiResponse from @topolo/sdk",
2483
- "Every returned widget includes snapshot.summary with app-owned operational prose",
2484
- "The endpoint derives organization/user context from the app auth boundary"
2485
- ],
2486
- implementation: [
2487
- "Import createTopoloWidgetResponse from @topolo/sdk in the app backend",
2488
- "Return native app metrics or action widgets instead of generic launch-card fallbacks",
2489
- "Populate snapshot.summary in the producing app for every widget instead of synthesizing summaries in TopoloOne",
2490
- "Add a route-level test that validates the response with validateTopoloWidgetResponse"
2491
- ]
2492
- },
2493
- {
2494
- id: "observability-and-audit",
2495
- title: "Emit platform audit and debugging signals",
2496
- summary: "Requests, agent actions, and operational workflows need traceable IDs, client labels, and useful failure evidence.",
2497
- appliesTo: ["api", "tooling", "agent_surface"],
2498
- evidence: [
2499
- "Requests carry X-Topolo-Client and X-Topolo-Request-Id where the SDK is involved",
2500
- "Agent-originated calls can include X-Topolo-Agent",
2501
- "Failure modes are documented with request IDs or deployment/log lookup paths"
2502
- ],
2503
- implementation: [
2504
- "Use TopoloClient for platform API calls rather than raw fetch where practical",
2505
- "Keep logs free of secrets and tokens",
2506
- "Document live smoke commands and request-id correlation in canonical docs"
2507
- ]
2508
- },
2509
- {
2510
- id: "verification-gates",
2511
- title: "Ship with build, test, docs, and smoke verification",
2512
- summary: "A Topolo app change is not complete until the relevant code checks and docs checks have been run or explicitly reported as blocked.",
2513
- appliesTo: ["all"],
2514
- evidence: [
2515
- "Relevant package build/typecheck/test commands pass",
2516
- "TopoloDocs validation passes when docs are touched",
2517
- "Live or local smoke evidence is captured for user-visible or API behavior"
2518
- ],
2519
- implementation: [
2520
- "Prefer existing package scripts before adding new tooling",
2521
- "Run app-specific checks and shared docs validation for behavior changes",
2522
- "Report any skipped verification with the blocker and residual risk"
2523
- ]
2524
- }
2525
- ];
2526
- function applicationRequirementScopes(application) {
2527
- const scopes = /* @__PURE__ */ new Set(["all"]);
2528
- const appId = application.id;
2529
- const hasBrowserSurface = Boolean(application.productionUrl) || // String() keeps this guard valid after the Pages->Worker migration narrowed
2530
- // the generated kind union to "worker" (no "pages" literal remains).
2531
- application.deployTargets.some((target) => String(target.kind) === "pages");
2532
- const hasApiSurface = application.services.length > 0 || application.deployTargets.some((target) => Boolean(target.appId));
2533
- if (hasBrowserSurface) scopes.add("browser");
2534
- if (hasApiSurface) scopes.add("api");
2535
- if (appId === "cli" || appId === "mcp" || appId === "cloudcontrol") {
2536
- scopes.add("tooling");
2537
- }
2538
- if (appId === "cli" || appId === "mcp" || hasApiSurface) {
2539
- scopes.add("agent_surface");
2540
- }
2541
- return Array.from(scopes);
2542
- }
2543
- function fallbackApplication(id) {
2544
- const entry = STATIC_APPLICATIONS2[id];
2545
- if (!entry) {
2546
- throw new Error(
2547
- `Unknown application "${id}" in the static fallback snapshot. Resolve applications from the live registry (resolveApplicationDirectoryEntry) and pass the entry directly.`
555
+ if (!needle) throw new TopoloSdkError("unknown_application", "application is required");
556
+ if (!client) {
557
+ throw new TopoloSdkError(
558
+ "authentication_required",
559
+ "A credential-scoped client is required to resolve a Topolo application."
2548
560
  );
2549
561
  }
2550
- return entry;
2551
- }
2552
- function requirementsForApplication(applicationOrId) {
2553
- const application = typeof applicationOrId === "string" ? fallbackApplication(applicationOrId) : applicationOrId;
2554
- const scopes = new Set(applicationRequirementScopes(application));
2555
- return APPLICATION_REQUIREMENTS.filter(
2556
- (requirement) => requirement.appliesTo.some((scope) => scopes.has(scope))
2557
- );
2558
- }
2559
- function auditApplicationRequirements(applicationOrId) {
2560
- const application = typeof applicationOrId === "string" ? fallbackApplication(applicationOrId) : applicationOrId;
2561
- const scopes = applicationRequirementScopes(application);
2562
- const findings = requirementsForApplication(application).map(
2563
- (requirement) => evaluateRequirement(application, requirement)
2564
- );
2565
- return {
2566
- version: APPLICATION_REQUIREMENTS_VERSION,
2567
- application,
2568
- scopes,
2569
- score: scoreFindings(findings),
2570
- findings
2571
- };
2572
- }
2573
- function auditApplicationEntries(applications) {
2574
- return buildAuditReport(
2575
- applications.map((application) => auditApplicationRequirements(application))
2576
- );
2577
- }
2578
- function auditAllApplicationRequirements(applicationIds = Object.keys(APPLICATIONS).sort()) {
2579
- return buildAuditReport(
2580
- applicationIds.map((applicationId) => auditApplicationRequirements(applicationId))
2581
- );
2582
- }
2583
- function buildAuditReport(applications) {
2584
- const migrationQueue = applications.flatMap(
2585
- (audit) => audit.findings.filter((finding2) => finding2.status !== "met").map((finding2) => ({
2586
- applicationId: audit.application.id,
2587
- applicationName: audit.application.name,
2588
- requirementId: finding2.requirementId,
2589
- title: finding2.title,
2590
- status: finding2.status,
2591
- reason: finding2.reason,
2592
- nextActions: finding2.nextActions
2593
- }))
2594
- ).sort((a, b) => {
2595
- const statusOrder = statusRank(a.status) - statusRank(b.status);
2596
- if (statusOrder !== 0) return statusOrder;
2597
- const appOrder = a.applicationId.localeCompare(b.applicationId);
2598
- if (appOrder !== 0) return appOrder;
2599
- return a.requirementId.localeCompare(b.requirementId);
2600
- });
2601
- return {
2602
- version: APPLICATION_REQUIREMENTS_VERSION,
2603
- applications,
2604
- migrationQueue
2605
- };
2606
- }
2607
- function evaluateRequirement(application, requirement) {
2608
- const evidence = [];
2609
- switch (requirement.id) {
2610
- case "platform-metadata": {
2611
- if (application.packageName) evidence.push(`package=${application.packageName}`);
2612
- if (application.productionUrl) evidence.push(`productionUrl=${application.productionUrl}`);
2613
- if (application.deployTargets.length > 0) {
2614
- evidence.push(`deployTargets=${application.deployTargets.length}`);
2615
- }
2616
- if (application.services.length > 0) {
2617
- evidence.push(`services=${application.services.join(",")}`);
2618
- }
2619
- if (evidence.length === 0) {
2620
- return finding(requirement, "missing", "No package, production URL, deploy target, or service metadata is available.", evidence);
2621
- }
2622
- return finding(requirement, "met", "Catalog metadata exists for this application.", evidence);
2623
- }
2624
- case "canonical-docs":
2625
- return finding(
2626
- requirement,
2627
- "needs_review",
2628
- "Catalog metadata cannot verify matching TopoloDocs system and handbook coverage.",
2629
- evidence
2630
- );
2631
- case "shared-auth-boundary":
2632
- return finding(
2633
- requirement,
2634
- "needs_review",
2635
- "Catalog metadata cannot verify that implementation uses shared Topolo auth packages and derives org from credentials.",
2636
- evidence
2637
- );
2638
- case "shared-shell-and-launcher":
2639
- return finding(
2640
- requirement,
2641
- "needs_review",
2642
- "Catalog metadata cannot verify shared shell, launcher, and account menu adoption.",
2643
- evidence
2644
- );
2645
- case "app-registration-and-scopes": {
2646
- if (application.services.length > 0) {
2647
- evidence.push(`services=${application.services.join(",")}`);
2648
- return finding(
2649
- requirement,
2650
- "partial",
2651
- "SDK service discovery exists, but Auth catalog permissions, role bundles, and API-key scopes still need confirmation.",
2652
- evidence
2653
- );
2654
- }
2655
- return finding(requirement, "missing", "No SDK app API id is registered for this callable API surface.", evidence);
2656
- }
2657
- case "organization-scoped-data":
2658
- return finding(
2659
- requirement,
2660
- "needs_review",
2661
- "Catalog metadata cannot verify backend tenant filters, storage keys, or Durable Object boundaries.",
2662
- evidence
2663
- );
2664
- case "cloudflare-deployment-contract": {
2665
- if (application.deployTargets.length < 1) {
2666
- return finding(requirement, "missing", "No CloudControl deploy targets are registered.", evidence);
2667
- }
2668
- evidence.push(`deployTargets=${application.deployTargets.length}`);
2669
- if (application.productionUrl) evidence.push(`productionUrl=${application.productionUrl}`);
2670
- return finding(requirement, "met", "CloudControl deploy target metadata is present.", evidence);
2671
- }
2672
- case "agent-and-operator-surfaces": {
2673
- const appId = application.id;
2674
- if (application.services.length > 0) {
2675
- evidence.push(`services=${application.services.join(",")}`);
2676
- return finding(requirement, "partial", "SDK service discovery exists; typed SDK/CLI/MCP workflow coverage should be checked as APIs stabilize.", evidence);
2677
- }
2678
- if (appId === "cli" || appId === "mcp" || appId === "cloudcontrol") {
2679
- evidence.push(`tooling=${appId}`);
2680
- return finding(requirement, "met", "This application is itself an agent/operator surface.", evidence);
2681
- }
2682
- return finding(requirement, "missing", "No SDK service or tooling surface is registered.", evidence);
2683
- }
2684
- case "native-dashboard-widget":
2685
- return finding(
2686
- requirement,
2687
- "needs_review",
2688
- "Catalog metadata cannot verify app-owned /api/widget implementation details.",
2689
- evidence
2690
- );
2691
- case "observability-and-audit":
2692
- return finding(
2693
- requirement,
2694
- "needs_review",
2695
- "Catalog metadata cannot verify runtime request IDs, client labels, or log redaction.",
2696
- evidence
2697
- );
2698
- case "verification-gates":
2699
- return finding(
2700
- requirement,
2701
- "needs_review",
2702
- "Catalog metadata cannot verify package checks, docs validation, or smoke evidence.",
2703
- evidence
2704
- );
2705
- default:
2706
- return finding(requirement, "needs_review", "No automated evaluator exists for this requirement yet.", evidence);
562
+ try {
563
+ return directoryApplicationFromLive(await client.getService(needle));
564
+ } catch {
565
+ const directory = await listApplicationDirectory(client);
566
+ const match = directory.applications.find((app) => matchesDirectoryApplication(app, needle));
567
+ if (match) return match;
568
+ throw new TopoloSdkError(
569
+ "unknown_application",
570
+ `Unknown application "${application}". ${formatDirectoryApplicationIds(directory)}`
571
+ );
2707
572
  }
2708
573
  }
2709
- function finding(requirement, status, reason, evidence) {
2710
- return {
2711
- requirementId: requirement.id,
2712
- title: requirement.title,
2713
- status,
2714
- reason,
2715
- evidence,
2716
- nextActions: status === "met" ? [] : requirement.implementation
2717
- };
2718
- }
2719
- function scoreFindings(findings) {
2720
- const met = findings.filter((finding2) => finding2.status === "met").length;
2721
- const partial = findings.filter((finding2) => finding2.status === "partial").length;
2722
- const missing = findings.filter((finding2) => finding2.status === "missing").length;
2723
- const needsReview = findings.filter((finding2) => finding2.status === "needs_review").length;
2724
- const total = findings.length;
2725
- const weighted = met + partial * 0.5;
2726
- return {
2727
- met,
2728
- partial,
2729
- missing,
2730
- needsReview,
2731
- total,
2732
- percent: total === 0 ? 100 : Math.round(weighted / total * 100)
2733
- };
2734
- }
2735
- function statusRank(status) {
2736
- if (status === "missing") return 0;
2737
- if (status === "partial") return 1;
2738
- return 2;
2739
- }
2740
574
 
2741
575
  // src/services.ts
2742
576
  var DEFAULT_APP_URLS = APP_API_URLS;
@@ -3936,28 +1770,6 @@ var TopoloClient = class _TopoloClient {
3936
1770
  confirm: options.confirm === true || entry.readOnly && !entry.destructive && !entry.requiresConfirmation
3937
1771
  });
3938
1772
  }
3939
- /**
3940
- * @deprecated Static fallback snapshot only. Use `searchServices()` (the
3941
- * live credential-scoped registry) for anything that decides behavior; this
3942
- * exists for offline packaging audits when the registry is unreachable.
3943
- */
3944
- listBundledServices() {
3945
- const apps = Object.values(APPLICATIONS);
3946
- return apps.map((app) => ({
3947
- appId: app.id,
3948
- slug: app.id,
3949
- name: app.name ?? app.id,
3950
- description: null,
3951
- apiBaseUrl: null,
3952
- launchUrl: app.productionUrl ?? null,
3953
- status: "bundled",
3954
- surfaceKind: "application",
3955
- launchable: Boolean(app.productionUrl),
3956
- permissions: [],
3957
- apiKeyResource: null,
3958
- apiKeyResources: []
3959
- }));
3960
- }
3961
1773
  /**
3962
1774
  * Introspect the current credential. Returns the caller's resolved identity,
3963
1775
  * organization, and permission set. Used by CLI `whoami` and by MCP to gate
@@ -4446,17 +2258,6 @@ function compactActionPreparation(preparation, context) {
4446
2258
  const compact = compactActionPreparationCore(preparation);
4447
2259
  return context ? { context, ...compact } : compact;
4448
2260
  }
4449
- function compactApplicationAudit(report) {
4450
- return {
4451
- version: report.version,
4452
- applications: report.applications.map((audit) => ({
4453
- applicationId: audit.application.id,
4454
- applicationName: audit.application.name,
4455
- score: audit.score
4456
- })),
4457
- migrationQueueCount: report.migrationQueue.length
4458
- };
4459
- }
4460
2261
 
4461
2262
  // src/action-catalog-digest.ts
4462
2263
  var ACTION_CATALOG_DIGEST_ALGORITHM = "sha256-v1";
@@ -5460,9 +3261,6 @@ function createTopolo(options) {
5460
3261
  // Annotate the CommonJS export names for ESM import in node:
5461
3262
  0 && (module.exports = {
5462
3263
  ACTION_CATALOG_DIGEST_ALGORITHM,
5463
- APPLICATIONS,
5464
- APPLICATION_REQUIREMENTS,
5465
- APPLICATION_REQUIREMENTS_VERSION,
5466
3264
  CrmModule,
5467
3265
  DEFAULT_APP_URLS,
5468
3266
  IdentityModule,
@@ -5481,11 +3279,7 @@ function createTopolo(options) {
5481
3279
  WorkspacesModule,
5482
3280
  actionContractCompleteness,
5483
3281
  applicationEntryFromCatalog,
5484
- applicationRequirementScopes,
5485
3282
  assertTopoloServiceUrlEnvironment,
5486
- auditAllApplicationRequirements,
5487
- auditApplicationEntries,
5488
- auditApplicationRequirements,
5489
3283
  canonicalTopoloErrorCode,
5490
3284
  canonicalTopoloRequestId,
5491
3285
  canonicalTopoloRequired,
@@ -5494,7 +3288,6 @@ function createTopolo(options) {
5494
3288
  compactActionPlan,
5495
3289
  compactActionPreparation,
5496
3290
  compactActionValidation,
5497
- compactApplicationAudit,
5498
3291
  createTopolo,
5499
3292
  createTopoloAgentExecutionContext,
5500
3293
  createTopoloWidgetError,
@@ -5515,11 +3308,9 @@ function createTopolo(options) {
5515
3308
  prepareTopoloActionBase64UploadInput,
5516
3309
  prepareTopoloActionUploadInput,
5517
3310
  publicTopoloErrorMessage,
5518
- requirementsForApplication,
5519
3311
  resolveApplicationDirectoryEntry,
5520
3312
  resolveCatalogServiceUrl,
5521
3313
  resolveServiceUrl,
5522
- staticApplicationDirectory,
5523
3314
  topoloErrorHint,
5524
3315
  topoloServiceOrigins,
5525
3316
  validateTopoloActionInput,