@grifhinz/logics-manager 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,6 +37,7 @@
37
37
  <div class="viewer-topbar__meta" id="viewer-meta">Read-only local viewer</div>
38
38
  </div>
39
39
  <div class="viewer-topbar__actions">
40
+ <button class="btn" id="viewer-workspace" type="button" title="Show file explorer" hidden>Explorer</button>
40
41
  <button class="btn" id="viewer-git" type="button" title="Show Git status">Git</button>
41
42
  <button class="btn" id="viewer-ci" type="button" title="Show GitHub Actions CI status" hidden>CI</button>
42
43
  <button class="btn" id="viewer-cdx" type="button" title="Show CDX status">CDX</button>
@@ -65,6 +66,7 @@
65
66
  <div class="viewer-settings-menu__heading">Utilities</div>
66
67
  <button class="btn" id="viewer-insights" type="button" title="Show corpus insights">Insights</button>
67
68
  <button class="btn" id="viewer-health" type="button" title="Show lint and audit health">Health</button>
69
+ <a class="viewer-settings-menu__version" id="viewer-version-link" href="https://github.com/AlexAgo83/logics-manager" target="_blank" rel="noreferrer" title="Open Logics Manager on GitHub">v0.0.0</a>
68
70
  </section>
69
71
  </div>
70
72
  </div>
@@ -265,6 +265,11 @@
265
265
  line-height: 1;
266
266
  }
267
267
 
268
+ .viewer-cdx-button-badge--runs {
269
+ background: rgba(245, 158, 11, 0.16);
270
+ color: #f59e0b;
271
+ }
272
+
268
273
  .viewer-refresh-menu {
269
274
  position: relative;
270
275
  display: inline-flex;
@@ -314,6 +319,19 @@
314
319
  width: 100%;
315
320
  }
316
321
 
322
+ .viewer-settings-menu__version {
323
+ justify-self: center;
324
+ color: var(--vscode-descriptionForeground, #9da5b4);
325
+ font-size: 11px;
326
+ text-decoration: none;
327
+ }
328
+
329
+ .viewer-settings-menu__version:hover,
330
+ .viewer-settings-menu__version:focus-visible {
331
+ color: var(--vscode-textLink-foreground, #4ea1ff);
332
+ text-decoration: underline;
333
+ }
334
+
317
335
  .viewer-auto-refresh {
318
336
  display: inline-flex;
319
337
  align-items: center;
@@ -657,6 +675,44 @@
657
675
  align-items: start;
658
676
  }
659
677
 
678
+ .viewer-cdx__workspace--missions {
679
+ grid-template-columns: minmax(240px, 0.9fr) minmax(320px, 1.1fr);
680
+ }
681
+
682
+ .viewer-git__summary-card {
683
+ display: grid;
684
+ align-content: start;
685
+ gap: 8px;
686
+ }
687
+
688
+ .viewer-git__summary-segments {
689
+ display: flex;
690
+ flex-wrap: wrap;
691
+ gap: 6px;
692
+ }
693
+
694
+ .viewer-git__summary-segment {
695
+ display: inline-flex;
696
+ align-items: center;
697
+ gap: 6px;
698
+ min-height: 24px;
699
+ border: 1px solid color-mix(in srgb, var(--vscode-panel-border, #333333) 72%, transparent);
700
+ border-radius: 6px;
701
+ padding: 2px 7px;
702
+ background: color-mix(in srgb, var(--vscode-editorWidget-background, #202020) 76%, var(--vscode-textLink-foreground, #4ea1ff));
703
+ font-size: 12px;
704
+ white-space: nowrap;
705
+ }
706
+
707
+ .viewer-git__summary-segment span {
708
+ color: var(--vscode-descriptionForeground, #aaaaaa);
709
+ }
710
+
711
+ .viewer-git__summary-segment strong {
712
+ color: var(--vscode-foreground, #dddddd);
713
+ font-size: 13px;
714
+ }
715
+
660
716
  .viewer-ci {
661
717
  display: grid;
662
718
  gap: 12px;
@@ -685,6 +741,15 @@
685
741
  margin-bottom: 10px;
686
742
  }
687
743
 
744
+ .viewer-ci__heading--actions {
745
+ align-items: flex-start;
746
+ }
747
+
748
+ .viewer-ci__heading--actions > div {
749
+ display: grid;
750
+ gap: 4px;
751
+ }
752
+
688
753
  .viewer-ci__heading h2 {
689
754
  margin: 0;
690
755
  font-size: 13px;
@@ -765,6 +830,142 @@
765
830
  color: var(--vscode-descriptionForeground, #9da5b4);
766
831
  }
767
832
 
833
+ .viewer-workspace {
834
+ display: grid;
835
+ grid-template-columns: minmax(180px, 260px) minmax(0, 1fr);
836
+ gap: 12px;
837
+ min-height: min(62vh, 760px);
838
+ }
839
+
840
+ .viewer-workspace__tree,
841
+ .viewer-workspace__preview {
842
+ min-width: 0;
843
+ border: 1px solid var(--vscode-panel-border, #333333);
844
+ border-radius: 6px;
845
+ background: var(--vscode-editorWidget-background, #202020);
846
+ }
847
+
848
+ .viewer-workspace__tree {
849
+ overflow: auto;
850
+ }
851
+
852
+ .viewer-workspace__preview {
853
+ display: grid;
854
+ align-content: start;
855
+ gap: 10px;
856
+ padding: 12px;
857
+ overflow: auto;
858
+ }
859
+
860
+ .viewer-workspace__tree-header {
861
+ position: sticky;
862
+ top: 0;
863
+ z-index: 1;
864
+ padding: 8px;
865
+ border-bottom: 1px solid var(--vscode-panel-border, #333333);
866
+ background: var(--vscode-editorWidget-background, #202020);
867
+ color: var(--vscode-descriptionForeground, #aaaaaa);
868
+ font-size: 11px;
869
+ font-weight: 700;
870
+ overflow-wrap: anywhere;
871
+ }
872
+
873
+ .viewer-workspace__tree-list {
874
+ display: grid;
875
+ gap: 1px;
876
+ padding: 6px;
877
+ }
878
+
879
+ .viewer-workspace__item {
880
+ width: 100%;
881
+ min-width: 0;
882
+ display: grid;
883
+ grid-template-columns: 18px minmax(0, 1fr);
884
+ gap: 5px;
885
+ align-items: center;
886
+ border: 0;
887
+ border-radius: 4px;
888
+ padding: 5px 6px;
889
+ background: transparent;
890
+ color: var(--vscode-foreground, #d4d4d4);
891
+ font: inherit;
892
+ font-size: 12px;
893
+ text-align: left;
894
+ cursor: pointer;
895
+ }
896
+
897
+ .viewer-workspace__item:hover,
898
+ .viewer-workspace__item.is-selected {
899
+ background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 8%));
900
+ }
901
+
902
+ .viewer-workspace__item.is-muted {
903
+ color: var(--vscode-descriptionForeground, #aaaaaa);
904
+ cursor: default;
905
+ }
906
+
907
+ .viewer-workspace__item-icon {
908
+ color: var(--vscode-descriptionForeground, #aaaaaa);
909
+ text-align: center;
910
+ }
911
+
912
+ .viewer-workspace__item-name {
913
+ min-width: 0;
914
+ overflow: hidden;
915
+ text-overflow: ellipsis;
916
+ white-space: nowrap;
917
+ }
918
+
919
+ .viewer-workspace__preview-header {
920
+ display: flex;
921
+ justify-content: space-between;
922
+ gap: 12px;
923
+ min-width: 0;
924
+ }
925
+
926
+ .viewer-workspace__preview-header > div {
927
+ min-width: 0;
928
+ display: grid;
929
+ gap: 3px;
930
+ }
931
+
932
+ .viewer-workspace__preview-header strong,
933
+ .viewer-workspace__preview-header span {
934
+ min-width: 0;
935
+ overflow-wrap: anywhere;
936
+ }
937
+
938
+ .viewer-workspace__preview-header span,
939
+ .viewer-workspace__preview-header em,
940
+ .viewer-workspace__empty {
941
+ color: var(--vscode-descriptionForeground, #aaaaaa);
942
+ font-size: 12px;
943
+ }
944
+
945
+ .viewer-workspace__code {
946
+ max-height: min(70vh, 760px);
947
+ overflow: auto;
948
+ margin: 0;
949
+ padding: 12px;
950
+ border: 1px solid var(--vscode-panel-border, #333333);
951
+ border-radius: 6px;
952
+ background: var(--vscode-textCodeBlock-background, #111111);
953
+ color: var(--vscode-textPreformat-foreground, #d7ba7d);
954
+ font-size: 12px;
955
+ line-height: 1.45;
956
+ white-space: pre-wrap;
957
+ overflow-wrap: anywhere;
958
+ }
959
+
960
+ .viewer-workspace__image {
961
+ max-width: 100%;
962
+ max-height: min(70vh, 760px);
963
+ object-fit: contain;
964
+ border: 1px solid var(--vscode-panel-border, #333333);
965
+ border-radius: 6px;
966
+ background: var(--vscode-textCodeBlock-background, #111111);
967
+ }
968
+
768
969
  .viewer-cdx__stack {
769
970
  display: grid;
770
971
  gap: 12px;
@@ -832,12 +1033,113 @@
832
1033
  gap: 8px;
833
1034
  }
834
1035
 
1036
+ .viewer-cdx__row--block {
1037
+ display: grid;
1038
+ gap: 8px;
1039
+ }
1040
+
835
1041
  .viewer-cdx__row strong,
836
1042
  .viewer-cdx__entity-main > span {
837
1043
  min-width: 0;
838
1044
  text-align: right;
839
1045
  }
840
1046
 
1047
+ .viewer-cdx__row--block strong,
1048
+ .viewer-cdx__detail-value {
1049
+ min-width: 0;
1050
+ text-align: left;
1051
+ }
1052
+
1053
+ .viewer-cdx__detail-value {
1054
+ display: grid;
1055
+ gap: 8px;
1056
+ color: var(--vscode-editor-foreground, #d4d4d4);
1057
+ line-height: 1.45;
1058
+ }
1059
+
1060
+ .viewer-cdx__detail-list {
1061
+ display: grid;
1062
+ gap: 8px;
1063
+ margin: 0;
1064
+ padding-left: 20px;
1065
+ }
1066
+
1067
+ .viewer-cdx__detail-list li {
1068
+ min-width: 0;
1069
+ }
1070
+
1071
+ .viewer-cdx__detail-code {
1072
+ max-width: 100%;
1073
+ max-height: 280px;
1074
+ overflow: auto;
1075
+ margin: 0;
1076
+ padding: 8px;
1077
+ border-radius: 6px;
1078
+ background: var(--vscode-textCodeBlock-background, #111111);
1079
+ color: var(--vscode-textPreformat-foreground, #d7ba7d);
1080
+ font-size: 11px;
1081
+ line-height: 1.45;
1082
+ white-space: pre-wrap;
1083
+ overflow-wrap: anywhere;
1084
+ }
1085
+
1086
+ .viewer-cdx__log-preview {
1087
+ display: grid;
1088
+ gap: 10px;
1089
+ min-width: 0;
1090
+ }
1091
+
1092
+ .viewer-cdx__log-structured,
1093
+ .viewer-cdx__log-raw {
1094
+ min-width: 0;
1095
+ border: 1px solid var(--vscode-panel-border, #333333);
1096
+ border-radius: 6px;
1097
+ background: color-mix(in srgb, var(--vscode-editorWidget-background, #202020) 76%, transparent);
1098
+ }
1099
+
1100
+ .viewer-cdx__log-structured > summary,
1101
+ .viewer-cdx__log-raw > summary {
1102
+ cursor: pointer;
1103
+ padding: 8px 10px;
1104
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1105
+ font-size: 12px;
1106
+ font-weight: 700;
1107
+ }
1108
+
1109
+ .viewer-cdx__log-structured > .viewer-cdx__detail-value {
1110
+ padding: 0 10px 10px;
1111
+ }
1112
+
1113
+ .viewer-cdx__log-content {
1114
+ max-height: min(70vh, 760px);
1115
+ overflow: auto;
1116
+ margin: 0;
1117
+ padding: 12px;
1118
+ border: 1px solid var(--vscode-panel-border, #333333);
1119
+ border-radius: 6px;
1120
+ background: var(--vscode-textCodeBlock-background, #111111);
1121
+ color: var(--vscode-textPreformat-foreground, #d7ba7d);
1122
+ font-size: 12px;
1123
+ line-height: 1.45;
1124
+ white-space: pre-wrap;
1125
+ overflow-wrap: anywhere;
1126
+ }
1127
+
1128
+ .viewer-cdx__path-link {
1129
+ border: 0;
1130
+ padding: 0;
1131
+ background: transparent;
1132
+ color: var(--vscode-textLink-foreground, #4ea1ff);
1133
+ cursor: pointer;
1134
+ font: inherit;
1135
+ text-align: right;
1136
+ overflow-wrap: anywhere;
1137
+ }
1138
+
1139
+ .viewer-cdx__path-link:hover {
1140
+ text-decoration: underline;
1141
+ }
1142
+
841
1143
  .viewer-cdx__entity-status {
842
1144
  display: flex;
843
1145
  flex-wrap: wrap;
@@ -929,6 +1231,117 @@
929
1231
  margin-top: 8px;
930
1232
  }
931
1233
 
1234
+ .viewer-cdx__controls {
1235
+ display: flex;
1236
+ justify-content: flex-start;
1237
+ gap: 6px;
1238
+ margin: 8px 0 12px;
1239
+ }
1240
+
1241
+ .viewer-cdx__menu {
1242
+ position: relative;
1243
+ }
1244
+
1245
+ .viewer-cdx__menu > summary {
1246
+ list-style: none;
1247
+ }
1248
+
1249
+ .viewer-cdx__menu > summary::-webkit-details-marker {
1250
+ display: none;
1251
+ }
1252
+
1253
+ .viewer-cdx__icon-button {
1254
+ min-width: 30px;
1255
+ height: 30px;
1256
+ display: inline-flex;
1257
+ align-items: center;
1258
+ justify-content: center;
1259
+ gap: 4px;
1260
+ border: 1px solid var(--vscode-panel-border, #333333);
1261
+ border-radius: 6px;
1262
+ box-sizing: border-box;
1263
+ background: var(--vscode-button-secondaryBackground, transparent);
1264
+ color: var(--vscode-button-secondaryForeground, var(--vscode-foreground, #d4d4d4));
1265
+ cursor: pointer;
1266
+ padding: 0 8px;
1267
+ white-space: nowrap;
1268
+ }
1269
+
1270
+ .viewer-cdx__icon-button:hover {
1271
+ border-color: color-mix(in srgb, var(--vscode-textLink-foreground, #4ea1ff) 45%, var(--vscode-panel-border, #333333));
1272
+ color: var(--vscode-textLink-foreground, #4ea1ff);
1273
+ }
1274
+
1275
+ .viewer-cdx__icon-button svg {
1276
+ width: 16px;
1277
+ height: 16px;
1278
+ display: block;
1279
+ }
1280
+
1281
+ .viewer-cdx__icon-count {
1282
+ display: inline-block;
1283
+ min-width: 18px;
1284
+ font-size: 10px;
1285
+ font-weight: 700;
1286
+ text-align: center;
1287
+ }
1288
+
1289
+ .viewer-cdx__menu-panel {
1290
+ position: absolute;
1291
+ z-index: 25;
1292
+ top: calc(100% + 6px);
1293
+ left: 0;
1294
+ min-width: 170px;
1295
+ max-height: min(340px, calc(100vh - 150px));
1296
+ overflow: auto;
1297
+ display: grid;
1298
+ gap: 2px;
1299
+ padding: 6px;
1300
+ border: 1px solid var(--vscode-panel-border, #333333);
1301
+ border-radius: 6px;
1302
+ background: var(--vscode-dropdown-background, var(--vscode-editorWidget-background, #202020));
1303
+ box-shadow: 0 12px 28px rgb(0 0 0 / 28%);
1304
+ }
1305
+
1306
+ .viewer-cdx__menu-check {
1307
+ display: flex;
1308
+ align-items: center;
1309
+ gap: 7px;
1310
+ min-width: 0;
1311
+ padding: 5px 6px;
1312
+ border-radius: 4px;
1313
+ color: var(--vscode-foreground, #d4d4d4);
1314
+ font-size: 12px;
1315
+ cursor: pointer;
1316
+ }
1317
+
1318
+ .viewer-cdx__menu-check:hover,
1319
+ .viewer-cdx__menu-action:hover {
1320
+ background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 8%));
1321
+ }
1322
+
1323
+ .viewer-cdx__menu-check input {
1324
+ flex: 0 0 auto;
1325
+ }
1326
+
1327
+ .viewer-cdx__menu-check span {
1328
+ overflow: hidden;
1329
+ text-overflow: ellipsis;
1330
+ white-space: nowrap;
1331
+ }
1332
+
1333
+ .viewer-cdx__menu-action {
1334
+ border: 0;
1335
+ border-radius: 4px;
1336
+ padding: 6px;
1337
+ background: transparent;
1338
+ color: var(--vscode-textLink-foreground, #4ea1ff);
1339
+ font: inherit;
1340
+ font-size: 12px;
1341
+ text-align: left;
1342
+ cursor: pointer;
1343
+ }
1344
+
932
1345
  .viewer-cdx__table-wrap {
933
1346
  min-width: 0;
934
1347
  overflow-x: auto;
@@ -1016,6 +1429,110 @@
1016
1429
  overflow-wrap: anywhere;
1017
1430
  }
1018
1431
 
1432
+ .viewer-cdx__missions {
1433
+ display: grid;
1434
+ gap: 8px;
1435
+ }
1436
+
1437
+ .viewer-cdx__mission {
1438
+ display: grid;
1439
+ gap: 5px;
1440
+ width: 100%;
1441
+ min-width: 0;
1442
+ padding: 10px;
1443
+ border: 1px solid var(--vscode-panel-border, #333333);
1444
+ border-radius: 6px;
1445
+ background: var(--vscode-input-background, #1f1f1f);
1446
+ color: var(--vscode-foreground, #d4d4d4);
1447
+ font: inherit;
1448
+ text-align: left;
1449
+ cursor: pointer;
1450
+ }
1451
+
1452
+ .viewer-cdx__mission.is-active {
1453
+ border-color: var(--vscode-focusBorder, #4ea1ff);
1454
+ background: color-mix(in srgb, var(--vscode-input-background, #1f1f1f) 72%, var(--vscode-textLink-foreground, #4ea1ff));
1455
+ }
1456
+
1457
+ .viewer-cdx__mission span,
1458
+ .viewer-cdx__mission em {
1459
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1460
+ font-size: 12px;
1461
+ font-style: normal;
1462
+ }
1463
+
1464
+ .viewer-cdx__field {
1465
+ display: grid;
1466
+ gap: 6px;
1467
+ margin-bottom: 10px;
1468
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1469
+ font-size: 12px;
1470
+ }
1471
+
1472
+ .viewer-cdx__field select,
1473
+ .viewer-cdx__field input,
1474
+ .viewer-cdx__field textarea {
1475
+ min-width: 0;
1476
+ width: 100%;
1477
+ border: 1px solid var(--vscode-input-border, var(--vscode-panel-border, #333333));
1478
+ border-radius: 4px;
1479
+ padding: 7px 8px;
1480
+ background: var(--vscode-dropdown-background, var(--vscode-input-background, #1f1f1f));
1481
+ color: var(--vscode-dropdown-foreground, var(--vscode-foreground, #d4d4d4));
1482
+ }
1483
+
1484
+ .viewer-cdx__field textarea {
1485
+ resize: vertical;
1486
+ }
1487
+
1488
+ .viewer-cdx__field--check {
1489
+ grid-template-columns: 16px minmax(0, 1fr);
1490
+ align-items: center;
1491
+ }
1492
+
1493
+ .viewer-cdx__field--check input {
1494
+ width: 16px;
1495
+ height: 16px;
1496
+ padding: 0;
1497
+ }
1498
+
1499
+ .viewer-cdx__strengths,
1500
+ .viewer-cdx__actions {
1501
+ display: flex;
1502
+ flex-wrap: wrap;
1503
+ gap: 8px;
1504
+ }
1505
+
1506
+ .viewer-cdx__actions {
1507
+ margin-top: 12px;
1508
+ }
1509
+
1510
+ .viewer-cdx__code {
1511
+ max-height: 260px;
1512
+ overflow: auto;
1513
+ margin: 0 0 10px;
1514
+ padding: 9px;
1515
+ border-radius: 6px;
1516
+ background: var(--vscode-textCodeBlock-background, #111111);
1517
+ color: var(--vscode-textPreformat-foreground, #d7ba7d);
1518
+ font-size: 12px;
1519
+ white-space: pre-wrap;
1520
+ overflow-wrap: anywhere;
1521
+ }
1522
+
1523
+ .viewer-cdx__code--error {
1524
+ color: #ef4444;
1525
+ }
1526
+
1527
+ .viewer-cdx__warnings {
1528
+ display: grid;
1529
+ gap: 5px;
1530
+ margin: 10px 0 0;
1531
+ padding-left: 18px;
1532
+ color: #f59e0b;
1533
+ font-size: 12px;
1534
+ }
1535
+
1019
1536
  .viewer-cdx__state,
1020
1537
  .viewer-cdx__empty {
1021
1538
  margin: 0;
@@ -1023,10 +1540,26 @@
1023
1540
  overflow-wrap: anywhere;
1024
1541
  }
1025
1542
 
1543
+ .viewer-cdx__state--ok {
1544
+ color: #22c55e;
1545
+ }
1546
+
1547
+ .viewer-cdx__state--warn {
1548
+ color: #f59e0b;
1549
+ }
1550
+
1551
+ .viewer-cdx__state--bad {
1552
+ color: #ef4444;
1553
+ }
1554
+
1026
1555
  @media (max-width: 860px) {
1027
1556
  .viewer-cdx__workspace {
1028
1557
  grid-template-columns: 1fr;
1029
1558
  }
1559
+
1560
+ .viewer-workspace {
1561
+ grid-template-columns: 1fr;
1562
+ }
1030
1563
  }
1031
1564
 
1032
1565
  .viewer-git__section h2 {
@@ -1035,11 +1568,15 @@
1035
1568
 
1036
1569
  .viewer-git__workspace {
1037
1570
  display: grid;
1038
- grid-template-columns: minmax(120px, 0.45fr) minmax(220px, 0.9fr) minmax(280px, 1.3fr);
1571
+ grid-template-columns: minmax(120px, 0.45fr) minmax(0, 2.2fr);
1039
1572
  gap: 12px;
1040
1573
  align-items: start;
1041
1574
  }
1042
1575
 
1576
+ .viewer-git__workspace.has-diff-detail {
1577
+ grid-template-columns: minmax(120px, 0.45fr) minmax(220px, 0.9fr) minmax(280px, 1.3fr);
1578
+ }
1579
+
1043
1580
  .viewer-git__domains {
1044
1581
  display: grid;
1045
1582
  gap: 6px;
@@ -1096,6 +1633,10 @@
1096
1633
  display: none !important;
1097
1634
  }
1098
1635
 
1636
+ .viewer-git__detail[hidden] {
1637
+ display: none !important;
1638
+ }
1639
+
1099
1640
  .viewer-git__panel-header {
1100
1641
  display: flex;
1101
1642
  align-items: center;
@@ -77,12 +77,14 @@ def _build_root_help() -> str:
77
77
  ' logics-manager flow new request --title "My request"',
78
78
  " logics-manager audit --group-by-doc",
79
79
  " logics-manager status",
80
- " logics-manager sync refresh-mermaid-signatures",
80
+ " logics-manager flow show req_001_example",
81
+ " logics-manager sync context-pack req_001_example task_001_example --format json",
82
+ " logics-manager sync refresh-mermaid-signatures task_001_example",
81
83
  " logics-manager mcp tunnel --repo-root . --port 8765",
82
84
  "",
83
85
  "Workflow authoring:",
84
86
  " flow Create, promote, split, close, and finish workflow docs.",
85
- " Subcommands: new, list, companion, deliver, validate-closeout, repair, closeout, promote, split, close, finish",
87
+ " Subcommands: new, list, show, companion, deliver, validate-closeout, repair, closeout, promote, split, close, finish",
86
88
  " sync Maintain generated workflow state and doc metadata.",
87
89
  " Subcommands: close-eligible-requests, refresh-mermaid-signatures,",
88
90
  " schema-status, read-doc, list-docs, search-docs,",
@@ -366,7 +368,7 @@ def main(argv: list[str] | None = None) -> int:
366
368
  if manager == "npm":
367
369
  _print_path_conflict_guidance(_find_executable_paths("logics-manager"))
368
370
  return result.returncode
369
- if command == "flow" and (rest[:1] in (["new"], ["list"], ["companion"], ["deliver"], ["validate-closeout"], ["repair"], ["closeout"], ["promote"], ["split"], ["close"], ["finish"]) or rest[:1] in HELP_ARGV):
371
+ if command == "flow":
370
372
  from .flow import main as flow_main
371
373
 
372
374
  return flow_main(rest)
@@ -408,26 +410,26 @@ def main(argv: list[str] | None = None) -> int:
408
410
  autofix_structure=parsed.autofix_structure,
409
411
  governance_profile=parsed.governance_profile,
410
412
  )
411
- output = render_audit(
412
- repo_root,
413
- stale_days=parsed.stale_days,
414
- skip_ac_traceability=parsed.skip_ac_traceability,
415
- skip_gates=parsed.skip_gates,
416
- legacy_cutoff_version=parsed.legacy_cutoff_version,
417
- output_format=parsed.format,
418
- group_by_doc=parsed.group_by_doc,
419
- autofix_ac_traceability=parsed.autofix_ac_traceability,
420
- paths=parsed.paths,
421
- refs=parsed.refs,
422
- since_version=parsed.since_version,
423
- token_hygiene=parsed.token_hygiene,
424
- autofix_structure=parsed.autofix_structure,
425
- governance_profile=parsed.governance_profile,
426
- )
427
413
  except ConfigError as exc:
428
414
  raise SystemExit(str(exc)) from exc
415
+ output = json.dumps(payload, indent=2, sort_keys=True) if parsed.format == "json" else render_audit(
416
+ repo_root,
417
+ stale_days=parsed.stale_days,
418
+ skip_ac_traceability=parsed.skip_ac_traceability,
419
+ skip_gates=parsed.skip_gates,
420
+ legacy_cutoff_version=parsed.legacy_cutoff_version,
421
+ output_format=parsed.format,
422
+ group_by_doc=parsed.group_by_doc,
423
+ autofix_ac_traceability=parsed.autofix_ac_traceability,
424
+ paths=parsed.paths,
425
+ refs=parsed.refs,
426
+ since_version=parsed.since_version,
427
+ token_hygiene=parsed.token_hygiene,
428
+ autofix_structure=parsed.autofix_structure,
429
+ governance_profile=parsed.governance_profile,
430
+ )
429
431
  print(output)
430
- return 0
432
+ return 0 if payload["ok"] else 1
431
433
  if command == "index":
432
434
  parser = argparse.ArgumentParser(prog="logics-manager index", add_help=False)
433
435
  parser.add_argument("--out", default="logics/INDEX.md")