@a-company/paradigm 3.28.0 → 3.43.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.
Files changed (122) hide show
  1. package/dist/{accept-orchestration-6EM5EHXA.js → accept-orchestration-ZUWQUHSK.js} +6 -6
  2. package/dist/add-VSPZ6FM4.js +81 -0
  3. package/dist/{aggregate-M5WMUI6B.js → aggregate-SV3VGEIL.js} +2 -2
  4. package/dist/assess-UHBDYIK7.js +68 -0
  5. package/dist/{beacon-XL2ALH5O.js → beacon-3SJV4DAP.js} +2 -2
  6. package/dist/calibration-WWHK73WU.js +135 -0
  7. package/dist/{chunk-C5ZE6WEX.js → chunk-2SKXFXIT.js} +91 -1
  8. package/dist/{chunk-AK5M6KJB.js → chunk-36TKPM5Z.js} +20 -2
  9. package/dist/{chunk-W4VFKZVF.js → chunk-7COU5S2Z.js} +3 -3
  10. package/dist/{chunk-3BAMPB6I.js → chunk-7WEKMZ46.js} +2 -147
  11. package/dist/{chunk-SCC77UUP.js → chunk-AKIMFN6I.js} +3 -3
  12. package/dist/{chunk-3DYYXGDC.js → chunk-CDMAMDSG.js} +33 -0
  13. package/dist/{chunk-7IJ5JVKT.js → chunk-CZEIK3Y2.js} +913 -40
  14. package/dist/{chunk-MRENOFTR.js → chunk-EDOAWN7J.js} +6 -1
  15. package/dist/chunk-F3BCHPYT.js +143 -0
  16. package/dist/chunk-GT5QGC2H.js +253 -0
  17. package/dist/{chunk-N6RNYCZD.js → chunk-HIKKOCXY.js} +1 -1
  18. package/dist/{chunk-J26YQVAK.js → chunk-J4E6K5MG.js} +1 -1
  19. package/dist/chunk-L27I3CPZ.js +357 -0
  20. package/dist/{chunk-KWDTBXP2.js → chunk-LHLIAYQ3.js} +1 -1
  21. package/dist/{chunk-OXG5GVDJ.js → chunk-P7XSBJE3.js} +1 -1
  22. package/dist/{chunk-Z7W7HNRG.js → chunk-QDXI2DHR.js} +1 -1
  23. package/dist/{chunk-BRILIG7Z.js → chunk-QIOCFXDQ.js} +42 -0
  24. package/dist/{chunk-ZOH24ZPF.js → chunk-QWA26UNO.js} +7 -7
  25. package/dist/{lore-server-ILPHKWLK.js → chunk-RAB5IKPR.js} +77 -112
  26. package/dist/{chunk-BKMNLROM.js → chunk-RGFANZ4Q.js} +448 -147
  27. package/dist/{chunk-R2SGQ22F.js → chunk-YW5OCVKB.js} +448 -2
  28. package/dist/{chunk-6P4IFIK2.js → chunk-ZGUAAVMA.js} +53 -4
  29. package/dist/{commands-6ZVTD74M.js → commands-LEPFD7S5.js} +452 -1
  30. package/dist/config-schema-3YNIFJCJ.js +152 -0
  31. package/dist/{constellation-NXU6Q2HM.js → constellation-FAGT45TU.js} +2 -2
  32. package/dist/{context-audit-RI4R2WRH.js → context-audit-557EO6PK.js} +138 -8
  33. package/dist/{cost-CTGSLSOC.js → cost-UD3WPEKZ.js} +1 -1
  34. package/dist/{cursorrules-XBWFX66V.js → cursorrules-3TKZ4E4R.js} +2 -2
  35. package/dist/{delete-YTASL4SM.js → delete-RRK4RL6Y.js} +1 -1
  36. package/dist/{diff-AH7L4PRQ.js → diff-IP5CIARP.js} +6 -6
  37. package/dist/{dist-AG5JNIZU-HW2FWNTZ.js → dist-5QE2BB2B-X6DYVSUL.js} +59 -5
  38. package/dist/{dist-KY5HGDDL.js → dist-OGTSAZ55.js} +58 -4
  39. package/dist/{dist-IKBGY7FQ.js → dist-RVKYUCRU.js} +3 -1
  40. package/dist/{dist-7U64HDSC.js → dist-UXWV4OKX.js} +8 -2
  41. package/dist/{dist-RMAIFRTW.js → dist-Y7I3CFY5.js} +5 -3
  42. package/dist/{doctor-INBOLZC7.js → doctor-GKZJU7QG.js} +1 -1
  43. package/dist/{edit-S7NZD7H7.js → edit-4CLNN5JG.js} +1 -1
  44. package/dist/{graph-ERNQQQ7C.js → graph-YYUXI3F7.js} +1 -1
  45. package/dist/graph-server-ZPXRSGCW.js +116 -0
  46. package/dist/{habits-7BORPC2F.js → habits-O37HTUKE.js} +2 -2
  47. package/dist/index.js +207 -89
  48. package/dist/integrity-MK2OP5TA.js +194 -0
  49. package/dist/integrity-checker-J7YXRTBT.js +11 -0
  50. package/dist/{lint-53GPXKKI.js → lint-HYWGS3JJ.js} +1 -1
  51. package/dist/{list-QTFWN35D.js → list-BTLFHSRC.js} +1 -1
  52. package/dist/list-IUCYPGMK.js +57 -0
  53. package/dist/{lore-loader-S5BXMH27.js → lore-loader-VTEEZDX3.js} +3 -1
  54. package/dist/lore-server-NOOAHKJX.js +118 -0
  55. package/dist/mcp.js +2616 -112
  56. package/dist/migrate-FQVGQNXZ.js +889 -0
  57. package/dist/{migrate-assessments-FPR6C35Z.js → migrate-assessments-JP6Q5KME.js} +1 -1
  58. package/dist/{orchestrate-HMSQ2CED.js → orchestrate-A226N6FC.js} +6 -6
  59. package/dist/platform-server-KK4OCRTV.js +891 -0
  60. package/dist/{probe-SN4BNXOC.js → probe-7JK7IDNI.js} +5 -5
  61. package/dist/{providers-YW3FG6DA.js → providers-YNFSL6HK.js} +1 -1
  62. package/dist/quiz-I75NU2QQ.js +99 -0
  63. package/dist/{record-UGN75GTB.js → record-46CLR4OG.js} +11 -2
  64. package/dist/{reindex-YG3KIXAK.js → reindex-NZQRGKPN.js} +3 -2
  65. package/dist/{remember-IEBQHXHZ.js → remember-4EUZKIIB.js} +1 -1
  66. package/dist/{retag-URLJLMSK.js → retag-KC4JVRLE.js} +1 -1
  67. package/dist/{review-725ZKA7U.js → review-Q7M4CRB5.js} +1 -1
  68. package/dist/{ripple-DFMXLFWI.js → ripple-RI3LOT6R.js} +2 -2
  69. package/dist/{sentinel-FUR3QKCJ.js → sentinel-BKYTBT7M.js} +1 -1
  70. package/dist/sentinel-bridge-IZTXYS5M.js +109 -0
  71. package/dist/sentinel-ui/assets/{index-Zh1YM0C9.css → index-CJ1Wx083.css} +1 -1
  72. package/dist/sentinel-ui/assets/index-S1VJ67dT.js +62 -0
  73. package/dist/sentinel-ui/assets/index-S1VJ67dT.js.map +1 -0
  74. package/dist/sentinel-ui/index.html +2 -2
  75. package/dist/sentinel.js +6 -6
  76. package/dist/{serve-DIALBCTU.js → serve-22A4XOIG.js} +1 -1
  77. package/dist/{university-A66BMZ4Z.js → serve-2YJ6D2Y6.js} +9 -8
  78. package/dist/serve-3V2WXLGM.js +33 -0
  79. package/dist/{server-2VICPDUR.js → server-OFEJ2HJP.js} +25 -2
  80. package/dist/{server-OWBK2WFS.js → server-RDLQ3DK7.js} +49 -4
  81. package/dist/{setup-HOI52TN3.js → setup-M2ZKLKNN.js} +4 -4
  82. package/dist/{shift-DRF5M3G6.js → shift-LNMKFYLR.js} +73 -14
  83. package/dist/{show-GEVVQWWG.js → show-P7GYO43X.js} +1 -1
  84. package/dist/show-PKZMYKRN.js +82 -0
  85. package/dist/{snapshot-XHINQBZS.js → snapshot-Y3COXK4T.js} +2 -2
  86. package/dist/{spawn-DIY7T4QW.js → spawn-SSXZX45U.js} +2 -2
  87. package/dist/status-KLHALGW4.js +71 -0
  88. package/dist/{summary-NV7SBV5O.js → summary-5NQNOD3F.js} +2 -2
  89. package/dist/{sweep-5POCF2E4.js → sweep-EZU3GU6S.js} +1 -1
  90. package/dist/symphony-ROEKK7VD.js +999 -0
  91. package/dist/{team-YOGT2Q2X.js → team-HGLJXWQG.js} +7 -7
  92. package/dist/{timeline-RKXNRMKF.js → timeline-ANC7LVDL.js} +1 -1
  93. package/dist/{triage-GJ6GK647.js → triage-POXJ2TIX.js} +2 -2
  94. package/dist/university-content/courses/.purpose +7 -1
  95. package/dist/university-content/courses/para-101.json +53 -0
  96. package/dist/university-content/courses/para-501.json +166 -0
  97. package/dist/university-content/plsat/.purpose +6 -0
  98. package/dist/university-content/plsat/v3.0.json +400 -1
  99. package/dist/university-content/reference.json +48 -0
  100. package/dist/university-ui/assets/{index-TcsCEBMo.js → index-tfi5xN4Q.js} +2 -2
  101. package/dist/university-ui/assets/{index-TcsCEBMo.js.map → index-tfi5xN4Q.js.map} +1 -1
  102. package/dist/university-ui/index.html +1 -1
  103. package/dist/{upgrade-65QOQXRC.js → upgrade-ANX3LVSA.js} +1 -0
  104. package/dist/validate-GD5XWILV.js +134 -0
  105. package/dist/{validate-TKKRGJKC.js → validate-ZVPNN4FL.js} +1 -1
  106. package/dist/{workspace-L27RR5MF.js → workspace-UIUTHZTD.js} +6 -6
  107. package/package.json +4 -2
  108. package/platform-ui/dist/assets/GitSection-C-GQWHcu.css +1 -0
  109. package/platform-ui/dist/assets/GitSection-DvyJBF_-.js +4 -0
  110. package/platform-ui/dist/assets/GraphSection-BiQrXqfs.js +8 -0
  111. package/platform-ui/dist/assets/GraphSection-BlgXTl53.css +1 -0
  112. package/platform-ui/dist/assets/LoreSection-BaH1FaRb.js +1 -0
  113. package/platform-ui/dist/assets/LoreSection-C3EixkjW.css +1 -0
  114. package/platform-ui/dist/assets/SentinelSection-BI-aIYKL.css +1 -0
  115. package/platform-ui/dist/assets/SentinelSection-DemAznjI.js +1 -0
  116. package/platform-ui/dist/assets/index-CfpZFjea.css +1 -0
  117. package/platform-ui/dist/assets/index-DDKhCt-w.js +57 -0
  118. package/platform-ui/dist/index.html +14 -0
  119. package/dist/graph-server-BZ73HTAT.js +0 -251
  120. package/dist/sentinel-ui/assets/index-C_Wstm64.js +0 -62
  121. package/dist/sentinel-ui/assets/index-C_Wstm64.js.map +0 -1
  122. /package/dist/{chunk-5SXMV4SP.js → chunk-FS3WTUHY.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- // ../sentinel/dist/chunk-NTX74ZPM.js
3
+ // ../sentinel/dist/chunk-DANAUKOJ.js
4
4
  import initSqlJs from "sql.js";
5
5
  import { v4 as uuidv4 } from "uuid";
6
6
  import * as path from "path";
@@ -2610,6 +2610,450 @@ function loadServerConfig(projectDir) {
2610
2610
  if (process.env.SENTINEL_MAX_LOGS) config.maxLogs = parseInt(process.env.SENTINEL_MAX_LOGS, 10);
2611
2611
  return config;
2612
2612
  }
2613
+ var PARADIGM_SCHEMA = {
2614
+ id: "paradigm-logger",
2615
+ version: "1.0.0",
2616
+ name: "Paradigm Logger",
2617
+ description: "Structured logs from @a-company/paradigm-logger with symbolic context",
2618
+ scope: {
2619
+ field: "correlationId",
2620
+ type: "string",
2621
+ label: "Correlation",
2622
+ ordering: "independent",
2623
+ sessionField: "sessionId"
2624
+ },
2625
+ eventTypes: [
2626
+ {
2627
+ type: "log:debug",
2628
+ category: "logs",
2629
+ label: "Debug Log",
2630
+ severity: "debug",
2631
+ frequency: "high",
2632
+ fields: [
2633
+ { name: "symbol", type: "string", indexed: true, display: true },
2634
+ { name: "symbolType", type: "string", indexed: true, display: true },
2635
+ { name: "message", type: "string", display: true },
2636
+ { name: "service", type: "string", indexed: true, display: true },
2637
+ { name: "durationMs", type: "number", display: true }
2638
+ ]
2639
+ },
2640
+ {
2641
+ type: "log:info",
2642
+ category: "logs",
2643
+ label: "Info Log",
2644
+ severity: "info",
2645
+ frequency: "high",
2646
+ fields: [
2647
+ { name: "symbol", type: "string", indexed: true, display: true },
2648
+ { name: "symbolType", type: "string", indexed: true, display: true },
2649
+ { name: "message", type: "string", display: true },
2650
+ { name: "service", type: "string", indexed: true, display: true },
2651
+ { name: "durationMs", type: "number", display: true }
2652
+ ]
2653
+ },
2654
+ {
2655
+ type: "log:warn",
2656
+ category: "logs",
2657
+ label: "Warning Log",
2658
+ severity: "warn",
2659
+ frequency: "medium",
2660
+ fields: [
2661
+ { name: "symbol", type: "string", indexed: true, display: true },
2662
+ { name: "symbolType", type: "string", indexed: true, display: true },
2663
+ { name: "message", type: "string", display: true },
2664
+ { name: "service", type: "string", indexed: true, display: true }
2665
+ ]
2666
+ },
2667
+ {
2668
+ type: "log:error",
2669
+ category: "logs",
2670
+ label: "Error Log",
2671
+ severity: "error",
2672
+ frequency: "low",
2673
+ fields: [
2674
+ { name: "symbol", type: "string", indexed: true, display: true },
2675
+ { name: "symbolType", type: "string", indexed: true, display: true },
2676
+ { name: "message", type: "string", display: true },
2677
+ { name: "service", type: "string", indexed: true, display: true }
2678
+ ]
2679
+ },
2680
+ {
2681
+ type: "metric:counter",
2682
+ category: "metrics",
2683
+ label: "Counter Metric",
2684
+ severity: "info",
2685
+ frequency: "high",
2686
+ fields: [
2687
+ { name: "name", type: "string", indexed: true, display: true },
2688
+ { name: "value", type: "number", display: true },
2689
+ { name: "tags", type: "object" }
2690
+ ]
2691
+ },
2692
+ {
2693
+ type: "metric:gauge",
2694
+ category: "metrics",
2695
+ label: "Gauge Metric",
2696
+ severity: "info",
2697
+ frequency: "medium",
2698
+ fields: [
2699
+ { name: "name", type: "string", indexed: true, display: true },
2700
+ { name: "value", type: "number", display: true },
2701
+ { name: "tags", type: "object" }
2702
+ ]
2703
+ },
2704
+ {
2705
+ type: "metric:histogram",
2706
+ category: "metrics",
2707
+ label: "Histogram Metric",
2708
+ severity: "info",
2709
+ frequency: "medium",
2710
+ fields: [
2711
+ { name: "name", type: "string", indexed: true, display: true },
2712
+ { name: "value", type: "number", display: true },
2713
+ { name: "tags", type: "object" }
2714
+ ]
2715
+ },
2716
+ {
2717
+ type: "trace:span",
2718
+ category: "traces",
2719
+ label: "Trace Span",
2720
+ severity: "info",
2721
+ frequency: "medium",
2722
+ fields: [
2723
+ { name: "traceId", type: "string", indexed: true, display: true },
2724
+ { name: "spanId", type: "string", indexed: true },
2725
+ { name: "operation", type: "string", display: true },
2726
+ { name: "durationMs", type: "number", display: true },
2727
+ { name: "status", type: "string", display: true }
2728
+ ]
2729
+ },
2730
+ {
2731
+ type: "incident:recorded",
2732
+ category: "incidents",
2733
+ label: "Incident Recorded",
2734
+ severity: "error",
2735
+ frequency: "low",
2736
+ fields: [
2737
+ { name: "incidentId", type: "string", indexed: true, display: true },
2738
+ { name: "errorMessage", type: "string", display: true },
2739
+ { name: "symbols", type: "object" },
2740
+ { name: "environment", type: "string", display: true }
2741
+ ]
2742
+ }
2743
+ ],
2744
+ visualization: {
2745
+ defaultView: "table",
2746
+ categoryColors: {
2747
+ logs: "#3b82f6",
2748
+ metrics: "#22c55e",
2749
+ traces: "#a855f7",
2750
+ incidents: "#ef4444"
2751
+ },
2752
+ summaryFields: ["symbol", "message", "service"],
2753
+ defaultExcluded: ["log:debug"]
2754
+ },
2755
+ tags: ["builtin", "paradigm"]
2756
+ };
2757
+ var SYMPHONY_SCHEMA = {
2758
+ id: "paradigm-symphony",
2759
+ version: "1.0.0",
2760
+ name: "Symphony Conversations",
2761
+ description: "Agent-to-agent messaging events from The Score protocol",
2762
+ scope: {
2763
+ field: "threadId",
2764
+ type: "string",
2765
+ label: "Thread",
2766
+ ordering: "independent",
2767
+ sessionField: "sessionId"
2768
+ },
2769
+ eventTypes: [
2770
+ // ── Dialogue (5) ──────────────────────────────────────
2771
+ {
2772
+ type: "note:question",
2773
+ category: "dialogue",
2774
+ label: "Question",
2775
+ severity: "info",
2776
+ frequency: "high",
2777
+ fields: [
2778
+ { name: "sender", type: "string", indexed: true, display: true },
2779
+ { name: "senderRole", type: "string", indexed: true, display: true },
2780
+ { name: "text", type: "string", display: true },
2781
+ { name: "symbols", type: "object" },
2782
+ { name: "parentId", type: "string", indexed: true }
2783
+ ]
2784
+ },
2785
+ {
2786
+ type: "note:context",
2787
+ category: "dialogue",
2788
+ label: "Context",
2789
+ severity: "info",
2790
+ frequency: "high",
2791
+ fields: [
2792
+ { name: "sender", type: "string", indexed: true, display: true },
2793
+ { name: "senderRole", type: "string", indexed: true, display: true },
2794
+ { name: "text", type: "string", display: true },
2795
+ { name: "symbols", type: "object" },
2796
+ { name: "parentId", type: "string", indexed: true }
2797
+ ]
2798
+ },
2799
+ {
2800
+ type: "note:clarification",
2801
+ category: "dialogue",
2802
+ label: "Clarification",
2803
+ severity: "info",
2804
+ frequency: "medium",
2805
+ fields: [
2806
+ { name: "sender", type: "string", indexed: true, display: true },
2807
+ { name: "senderRole", type: "string", indexed: true, display: true },
2808
+ { name: "text", type: "string", display: true },
2809
+ { name: "symbols", type: "object" },
2810
+ { name: "parentId", type: "string", indexed: true }
2811
+ ]
2812
+ },
2813
+ {
2814
+ type: "note:verification",
2815
+ category: "dialogue",
2816
+ label: "Verification",
2817
+ severity: "info",
2818
+ frequency: "medium",
2819
+ fields: [
2820
+ { name: "sender", type: "string", indexed: true, display: true },
2821
+ { name: "senderRole", type: "string", indexed: true, display: true },
2822
+ { name: "text", type: "string", display: true },
2823
+ { name: "symbols", type: "object" },
2824
+ { name: "parentId", type: "string", indexed: true }
2825
+ ]
2826
+ },
2827
+ {
2828
+ type: "note:reference",
2829
+ category: "dialogue",
2830
+ label: "Reference",
2831
+ severity: "info",
2832
+ frequency: "medium",
2833
+ fields: [
2834
+ { name: "sender", type: "string", indexed: true, display: true },
2835
+ { name: "senderRole", type: "string", indexed: true, display: true },
2836
+ { name: "text", type: "string", display: true },
2837
+ { name: "symbols", type: "object" },
2838
+ { name: "parentId", type: "string", indexed: true }
2839
+ ]
2840
+ },
2841
+ // ── Action (2) ────────────────────────────────────────
2842
+ {
2843
+ type: "note:proposal",
2844
+ category: "action",
2845
+ label: "Proposal",
2846
+ severity: "info",
2847
+ frequency: "medium",
2848
+ fields: [
2849
+ { name: "sender", type: "string", indexed: true, display: true },
2850
+ { name: "senderRole", type: "string", indexed: true, display: true },
2851
+ { name: "text", type: "string", display: true },
2852
+ { name: "diff", type: "string" },
2853
+ { name: "symbols", type: "object" },
2854
+ { name: "parentId", type: "string", indexed: true }
2855
+ ]
2856
+ },
2857
+ {
2858
+ type: "note:action",
2859
+ category: "action",
2860
+ label: "Action",
2861
+ severity: "info",
2862
+ frequency: "medium",
2863
+ fields: [
2864
+ { name: "sender", type: "string", indexed: true, display: true },
2865
+ { name: "senderRole", type: "string", indexed: true, display: true },
2866
+ { name: "text", type: "string", display: true },
2867
+ { name: "diff", type: "string" },
2868
+ { name: "symbols", type: "object" },
2869
+ { name: "parentId", type: "string", indexed: true }
2870
+ ]
2871
+ },
2872
+ // ── Outcome (3) ───────────────────────────────────────
2873
+ {
2874
+ type: "note:decision",
2875
+ category: "outcome",
2876
+ label: "Decision",
2877
+ severity: "warn",
2878
+ frequency: "low",
2879
+ fields: [
2880
+ { name: "sender", type: "string", indexed: true, display: true },
2881
+ { name: "senderRole", type: "string", indexed: true, display: true },
2882
+ { name: "text", type: "string", display: true },
2883
+ { name: "decision", type: "string", display: true },
2884
+ { name: "symbols", type: "object" },
2885
+ { name: "parentId", type: "string", indexed: true }
2886
+ ]
2887
+ },
2888
+ {
2889
+ type: "note:approval",
2890
+ category: "outcome",
2891
+ label: "Approval",
2892
+ severity: "info",
2893
+ frequency: "low",
2894
+ fields: [
2895
+ { name: "sender", type: "string", indexed: true, display: true },
2896
+ { name: "senderRole", type: "string", indexed: true, display: true },
2897
+ { name: "text", type: "string", display: true },
2898
+ { name: "parentId", type: "string", indexed: true }
2899
+ ]
2900
+ },
2901
+ {
2902
+ type: "note:rejection",
2903
+ category: "outcome",
2904
+ label: "Rejection",
2905
+ severity: "warn",
2906
+ frequency: "low",
2907
+ fields: [
2908
+ { name: "sender", type: "string", indexed: true, display: true },
2909
+ { name: "senderRole", type: "string", indexed: true, display: true },
2910
+ { name: "text", type: "string", display: true },
2911
+ { name: "parentId", type: "string", indexed: true }
2912
+ ]
2913
+ },
2914
+ // ── System (1) ────────────────────────────────────────
2915
+ {
2916
+ type: "note:alert",
2917
+ category: "system",
2918
+ label: "Alert",
2919
+ severity: "error",
2920
+ frequency: "low",
2921
+ fields: [
2922
+ { name: "sender", type: "string", indexed: true, display: true },
2923
+ { name: "senderRole", type: "string", indexed: true, display: true },
2924
+ { name: "text", type: "string", display: true },
2925
+ { name: "symbols", type: "object" },
2926
+ { name: "parentId", type: "string", indexed: true }
2927
+ ]
2928
+ },
2929
+ // ── Lifecycle (4) ─────────────────────────────────────
2930
+ {
2931
+ type: "note:handoff",
2932
+ category: "lifecycle",
2933
+ label: "Handoff",
2934
+ severity: "info",
2935
+ frequency: "low",
2936
+ fields: [
2937
+ { name: "sender", type: "string", indexed: true, display: true },
2938
+ { name: "senderRole", type: "string", indexed: true, display: true },
2939
+ { name: "text", type: "string", display: true },
2940
+ { name: "parentId", type: "string", indexed: true }
2941
+ ]
2942
+ },
2943
+ {
2944
+ type: "thread:created",
2945
+ category: "lifecycle",
2946
+ label: "Thread Created",
2947
+ severity: "info",
2948
+ frequency: "low",
2949
+ fields: [
2950
+ { name: "topic", type: "string", display: true },
2951
+ { name: "initiator", type: "string", indexed: true, display: true }
2952
+ ]
2953
+ },
2954
+ {
2955
+ type: "thread:resolved",
2956
+ category: "lifecycle",
2957
+ label: "Thread Resolved",
2958
+ severity: "info",
2959
+ frequency: "low",
2960
+ fields: [
2961
+ { name: "topic", type: "string", display: true },
2962
+ { name: "decision", type: "string", display: true }
2963
+ ]
2964
+ },
2965
+ {
2966
+ type: "participant:joined",
2967
+ category: "lifecycle",
2968
+ label: "Participant Joined",
2969
+ severity: "info",
2970
+ frequency: "low",
2971
+ fields: [
2972
+ { name: "participantId", type: "string", indexed: true, display: true },
2973
+ { name: "participantName", type: "string", display: true },
2974
+ { name: "participantRole", type: "string", display: true }
2975
+ ]
2976
+ },
2977
+ {
2978
+ type: "participant:left",
2979
+ category: "lifecycle",
2980
+ label: "Participant Left",
2981
+ severity: "info",
2982
+ frequency: "low",
2983
+ fields: [
2984
+ { name: "participantId", type: "string", indexed: true, display: true },
2985
+ { name: "participantName", type: "string", display: true }
2986
+ ]
2987
+ },
2988
+ // ── Transfer (4) ──────────────────────────────────────
2989
+ {
2990
+ type: "file:requested",
2991
+ category: "transfer",
2992
+ label: "File Requested",
2993
+ severity: "info",
2994
+ frequency: "low",
2995
+ fields: [
2996
+ { name: "requestId", type: "string", indexed: true, display: true },
2997
+ { name: "filePath", type: "string", display: true },
2998
+ { name: "requester", type: "string", indexed: true, display: true },
2999
+ { name: "reason", type: "string", display: true },
3000
+ { name: "urgency", type: "string", display: true }
3001
+ ]
3002
+ },
3003
+ {
3004
+ type: "file:approved",
3005
+ category: "transfer",
3006
+ label: "File Approved",
3007
+ severity: "info",
3008
+ frequency: "low",
3009
+ fields: [
3010
+ { name: "requestId", type: "string", indexed: true, display: true },
3011
+ { name: "filePath", type: "string", display: true },
3012
+ { name: "size", type: "number", display: true },
3013
+ { name: "hash", type: "string" }
3014
+ ]
3015
+ },
3016
+ {
3017
+ type: "file:denied",
3018
+ category: "transfer",
3019
+ label: "File Denied",
3020
+ severity: "warn",
3021
+ frequency: "low",
3022
+ fields: [
3023
+ { name: "requestId", type: "string", indexed: true, display: true },
3024
+ { name: "filePath", type: "string", display: true },
3025
+ { name: "reason", type: "string", display: true }
3026
+ ]
3027
+ },
3028
+ {
3029
+ type: "file:delivered",
3030
+ category: "transfer",
3031
+ label: "File Delivered",
3032
+ severity: "info",
3033
+ frequency: "low",
3034
+ fields: [
3035
+ { name: "requestId", type: "string", indexed: true, display: true },
3036
+ { name: "filePath", type: "string", display: true },
3037
+ { name: "size", type: "number", display: true },
3038
+ { name: "hash", type: "string" }
3039
+ ]
3040
+ }
3041
+ ],
3042
+ visualization: {
3043
+ defaultView: "tree",
3044
+ categoryColors: {
3045
+ dialogue: "#7dd3fc",
3046
+ action: "#86efac",
3047
+ outcome: "#fbbf24",
3048
+ system: "#f87171",
3049
+ lifecycle: "#a78bfa",
3050
+ transfer: "#34d399"
3051
+ },
3052
+ summaryFields: ["sender", "text", "senderRole"],
3053
+ defaultExcluded: []
3054
+ },
3055
+ tags: ["builtin", "symphony"]
3056
+ };
2613
3057
 
2614
3058
  export {
2615
3059
  SentinelStorage,
@@ -2618,5 +3062,7 @@ export {
2618
3062
  DEFAULT_SERVER_CONFIG,
2619
3063
  loadConfig,
2620
3064
  writeConfig,
2621
- loadServerConfig
3065
+ loadServerConfig,
3066
+ PARADIGM_SCHEMA,
3067
+ SYMPHONY_SCHEMA
2622
3068
  };
@@ -9,7 +9,7 @@ import {
9
9
  extractStates,
10
10
  extractSymbolReferences,
11
11
  getAllPurposeFiles
12
- } from "./chunk-MRENOFTR.js";
12
+ } from "./chunk-EDOAWN7J.js";
13
13
  import {
14
14
  findGateFiles,
15
15
  parseGateConfig
@@ -247,6 +247,7 @@ async function aggregateFromPremise(premiseFile, rootDir) {
247
247
  purposeFiles.push(...parsed.map((p) => p.filePath));
248
248
  const features = extractFeatures(parsed);
249
249
  for (const [id, { item, filePath }] of features) {
250
+ const featureTags = ["feature", ...item.tags || []];
250
251
  symbols.push(createSymbolEntry({
251
252
  id: `purpose-feature-${id}`,
252
253
  symbol: `#${id}`,
@@ -255,7 +256,10 @@ async function aggregateFromPremise(premiseFile, rootDir) {
255
256
  filePath,
256
257
  data: item,
257
258
  description: item.description,
258
- tags: ["feature"]
259
+ tags: featureTags,
260
+ componentType: item.type,
261
+ parentSymbol: item.parent,
262
+ anchors: item.anchors?.map((a) => parseAnchorString(a))
259
263
  }));
260
264
  }
261
265
  const components = extractComponents(parsed);
@@ -267,7 +271,11 @@ async function aggregateFromPremise(premiseFile, rootDir) {
267
271
  source: "purpose",
268
272
  filePath,
269
273
  data: item,
270
- description: item.description
274
+ description: item.description,
275
+ tags: item.tags,
276
+ componentType: item.type,
277
+ parentSymbol: item.parent,
278
+ anchors: item.anchors?.map((a) => parseAnchorString(a))
271
279
  }));
272
280
  }
273
281
  const gates = extractGates(parsed);
@@ -433,12 +441,27 @@ async function aggregateFromPremise(premiseFile, rootDir) {
433
441
  }));
434
442
  }
435
443
  resolveReferences(symbols);
444
+ const symbolFileMap = /* @__PURE__ */ new Map();
445
+ for (const sym of symbols) {
446
+ const files = symbolFileMap.get(sym.symbol) || [];
447
+ if (!files.includes(sym.filePath)) {
448
+ files.push(sym.filePath);
449
+ }
450
+ symbolFileMap.set(sym.symbol, files);
451
+ }
452
+ const duplicateSymbols = [];
453
+ for (const [symbol, files] of symbolFileMap) {
454
+ if (files.length > 1) {
455
+ duplicateSymbols.push({ symbol, files });
456
+ }
457
+ }
436
458
  return {
437
459
  symbols,
438
460
  purposeFiles,
439
461
  portalFiles,
440
462
  errors,
441
- timestamp: Date.now()
463
+ timestamp: Date.now(),
464
+ ...duplicateSymbols.length > 0 ? { duplicateSymbols } : {}
442
465
  };
443
466
  }
444
467
  function createSymbolEntry(partial) {
@@ -597,10 +620,33 @@ function searchSymbols(index, query) {
597
620
  }
598
621
  if (entry.tags?.some((tag) => tag.toLowerCase().includes(lowerQuery))) {
599
622
  results.push(entry);
623
+ continue;
624
+ }
625
+ if (entry.componentType?.toLowerCase().includes(lowerQuery)) {
626
+ results.push(entry);
627
+ continue;
600
628
  }
601
629
  }
602
630
  return results;
603
631
  }
632
+ function getComponentsByType(index, componentType) {
633
+ const components = getSymbolsByType(index, "component");
634
+ return components.filter((c) => c.componentType === componentType);
635
+ }
636
+ function getAllComponentTypes(index) {
637
+ const types = /* @__PURE__ */ new Set();
638
+ const components = getSymbolsByType(index, "component");
639
+ for (const comp of components) {
640
+ if (comp.componentType) {
641
+ types.add(comp.componentType);
642
+ }
643
+ }
644
+ return Array.from(types).sort();
645
+ }
646
+ function getChildComponents(index, parentSymbol) {
647
+ const components = getSymbolsByType(index, "component");
648
+ return components.filter((c) => c.parentSymbol === parentSymbol);
649
+ }
604
650
  function getReferencesTo(index, symbol) {
605
651
  const entry = getSymbol(index, symbol);
606
652
  if (!entry) return [];
@@ -694,6 +740,9 @@ export {
694
740
  getSymbolsByType,
695
741
  getSymbolsBySource,
696
742
  searchSymbols,
743
+ getComponentsByType,
744
+ getAllComponentTypes,
745
+ getChildComponents,
697
746
  getReferencesTo,
698
747
  getReferencesFrom,
699
748
  getSymbolsByTag,