ltcai 11.9.0 → 12.0.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 (127) hide show
  1. package/README.md +80 -59
  2. package/docs/CHANGELOG.md +92 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +267 -119
  5. package/docs/ENTERPRISE.md +1 -1
  6. package/docs/MULTI_AGENT_RUNTIME.md +4 -4
  7. package/docs/ONBOARDING.md +13 -3
  8. package/docs/OPERATIONS.md +13 -4
  9. package/docs/REALTIME_COLLABORATION.md +1 -1
  10. package/docs/ROADMAP.md +113 -0
  11. package/docs/TRUST_MODEL.md +16 -2
  12. package/docs/WHY_LATTICE.md +8 -2
  13. package/docs/WORKFLOW_DESIGNER.md +2 -2
  14. package/docs/kg-schema.md +51 -5
  15. package/docs/mcp-tools.md +17 -0
  16. package/lattice_brain/__init__.py +1 -1
  17. package/lattice_brain/graph/_kg_common/extraction.py +459 -105
  18. package/lattice_brain/graph/_kg_common/normalize.py +305 -0
  19. package/lattice_brain/graph/_kg_common/patterns.py +275 -0
  20. package/lattice_brain/graph/_kg_common/relations.py +12 -3
  21. package/lattice_brain/graph/_kg_common/sections.py +107 -0
  22. package/lattice_brain/graph/_kg_constants.py +7 -0
  23. package/latticeai/__init__.py +1 -1
  24. package/latticeai/api/agent_worker_seam.py +32 -0
  25. package/latticeai/api/worker_compute.py +78 -3
  26. package/latticeai/core/embedding_providers/__init__.py +16 -0
  27. package/latticeai/core/embedding_providers/autodetect.py +302 -0
  28. package/latticeai/core/embedding_providers/base.py +25 -0
  29. package/latticeai/core/embedding_providers/profiles.py +44 -0
  30. package/latticeai/core/embedding_providers/text.py +74 -8
  31. package/latticeai/core/vector_index/__init__.py +61 -0
  32. package/latticeai/core/vector_index/hnsw.py +383 -0
  33. package/latticeai/core/vector_index/sidecar.py +329 -0
  34. package/latticeai/models/router/generation.py +101 -22
  35. package/latticeai/models/router/loading.py +109 -4
  36. package/latticeai/runtime/brain_runtime.py +43 -9
  37. package/latticeai/runtime/build_phases/worker_profile.py +13 -4
  38. package/latticeai/services/architecture_readiness.py +2 -2
  39. package/latticeai/services/product_readiness.py +10 -5
  40. package/latticeai/services/search_service.py +7 -0
  41. package/latticeai/tools/__init__.py +6 -1
  42. package/latticeai/tools/documents.py +12 -0
  43. package/latticeai/tools/markup.py +152 -0
  44. package/package.json +2 -1
  45. package/scripts/check_current_release_docs.mjs +1 -1
  46. package/scripts/compose_openapi.py +2 -0
  47. package/scripts/openapi_route_families.json +7 -3
  48. package/scripts/publish_release.mjs +157 -0
  49. package/scripts/release_screen_claims.json +12 -0
  50. package/src-tauri/Cargo.lock +44 -10
  51. package/src-tauri/Cargo.toml +1 -1
  52. package/src-tauri/tauri.conf.json +1 -1
  53. package/static/app/asset-manifest.json +47 -41
  54. package/static/app/assets/Act-Cf1L2709.js +2 -0
  55. package/static/app/assets/AdminConsole-DPAbLTYV.js +1 -0
  56. package/static/app/assets/Brain-DqamGrj-.js +2 -0
  57. package/static/app/assets/BrainHome-MHe2_RYs.js +2 -0
  58. package/static/app/assets/BrainSignals-CQPPfyyH.js +1 -0
  59. package/static/app/assets/Capture-DGdIH_Zc.js +1 -0
  60. package/static/app/assets/Chronicle-C-UlCJoJ.js +1 -0
  61. package/static/app/assets/CommandPalette-WNT4EqUX.js +1 -0
  62. package/static/app/assets/DigitalBrainExplorer-CEBH5Cwc.js +321 -0
  63. package/static/app/assets/Library-C6xd1dlf.js +1 -0
  64. package/static/app/assets/LivingBrain-BEk-0ohw.js +1 -0
  65. package/static/app/assets/ProductFlow-CZLm5iXh.js +1 -0
  66. package/static/app/assets/QueryClientProvider-B3OjqSyJ.js +1 -0
  67. package/static/app/assets/ReviewCard-CEHG6evf.js +3 -0
  68. package/static/app/assets/RunsListPanel-CLtEJSRW.js +1 -0
  69. package/static/app/assets/System-CAxwBUXw.js +1 -0
  70. package/static/app/assets/WorkflowGraph-Dj10RuGE.js +1 -0
  71. package/static/app/assets/WorkflowsPanel-Kyeh_LIT.js +2 -0
  72. package/static/app/assets/actHelpers-CtSmK9Dw.js +1 -0
  73. package/static/app/assets/arrow-left-CRl5EO4D.js +1 -0
  74. package/static/app/assets/{bot-Bc3Q27YR.js → bot-DhUGRel2.js} +1 -1
  75. package/static/app/assets/brain-CLkhHsHF.js +1 -0
  76. package/static/app/assets/button-CmaEqG1T.js +1 -0
  77. package/static/app/assets/circle-check-CFgejkOS.js +1 -0
  78. package/static/app/assets/{circle-pause-BGMiV8UU.js → circle-pause-l96izbxj.js} +1 -1
  79. package/static/app/assets/{circle-play-DoanLHnd.js → circle-play-CrZa25_q.js} +1 -1
  80. package/static/app/assets/{cpu-DwzNf82m.js → cpu-BaXudqwl.js} +1 -1
  81. package/static/app/assets/{download-Ddw49yCV.js → download-hCVFPiyc.js} +1 -1
  82. package/static/app/assets/{folder-open-Brd6Kvto.js → folder-open-CHL82Yp7.js} +1 -1
  83. package/static/app/assets/{hard-drive-Bu-DTJdB.js → hard-drive-DDzET7lk.js} +1 -1
  84. package/static/app/assets/{index-CGdg_aq9.css → index-CB93CZWW.css} +1 -1
  85. package/static/app/assets/index-D2H-wSl6.js +13 -0
  86. package/static/app/assets/input-Df1CAY_I.js +1 -0
  87. package/static/app/assets/jsx-runtime-bzQ4Vb5N.js +1 -0
  88. package/static/app/assets/{link-2-DZ4OA5tJ.js → link-2-xNnTIX1_.js} +1 -1
  89. package/static/app/assets/{permissionCopy-D9TR0F8b.js → permissionCopy-D3aWHco-.js} +1 -1
  90. package/static/app/assets/primitives-BioD2slS.js +1 -0
  91. package/static/app/assets/search-BzBw8YcW.js +1 -0
  92. package/static/app/assets/{share-2-BC5FirFv.js → share-2-FkzGf8Df.js} +1 -1
  93. package/static/app/assets/{shield-alert-DUbR2W2s.js → shield-alert-B3dwzik4.js} +1 -1
  94. package/static/app/assets/sourceMeta-DQSY_tah.js +1 -0
  95. package/static/app/assets/textarea-P8o6pvOP.js +1 -0
  96. package/static/app/assets/useFocusTrap-hswOIkXE.js +1 -0
  97. package/static/app/assets/useMutation-OJLrYSRA.js +1 -0
  98. package/static/app/assets/workspace-BCuk3Ku9.js +1 -0
  99. package/static/app/index.html +4 -4
  100. package/static/sw.js +1 -1
  101. package/static/app/assets/Act-B4WT81kh.js +0 -1
  102. package/static/app/assets/AdminConsole--Wf71m-o.js +0 -1
  103. package/static/app/assets/Brain-CtYaa26c.js +0 -321
  104. package/static/app/assets/BrainHome-Be2VPJEc.js +0 -2
  105. package/static/app/assets/BrainSignals-C0__xgpG.js +0 -1
  106. package/static/app/assets/Capture-DdNi5Peb.js +0 -1
  107. package/static/app/assets/Chronicle-B3hNveeI.js +0 -1
  108. package/static/app/assets/CommandPalette-CIsnSsFL.js +0 -1
  109. package/static/app/assets/Library-Bl5XClFV.js +0 -1
  110. package/static/app/assets/LivingBrain-DjkTB_gh.js +0 -1
  111. package/static/app/assets/ProductFlow-DCUNRNHs.js +0 -1
  112. package/static/app/assets/ReviewCard-CD3yWvUB.js +0 -3
  113. package/static/app/assets/System-BJ6jQ_SL.js +0 -1
  114. package/static/app/assets/arrow-left-6_28Z0qH.js +0 -1
  115. package/static/app/assets/brain-B9BDrMTe.js +0 -1
  116. package/static/app/assets/button-D6JcpYcf.js +0 -1
  117. package/static/app/assets/circle-check-BFu9lD-3.js +0 -1
  118. package/static/app/assets/index-CWKRRsLW.js +0 -10
  119. package/static/app/assets/input-CEqsxtil.js +0 -1
  120. package/static/app/assets/primitives-DORg7Z_7.js +0 -1
  121. package/static/app/assets/search-0NQ21wXe.js +0 -1
  122. package/static/app/assets/textarea-jtQcRSXo.js +0 -1
  123. package/static/app/assets/useFocusTrap-HRemcWId.js +0 -1
  124. package/static/app/assets/useMutation-DqlFE-Bw.js +0 -1
  125. package/static/app/assets/useQuery-BizqBNGw.js +0 -1
  126. package/static/app/assets/utils-WgW4V69R.js +0 -4
  127. package/static/app/assets/workspace-DSek3jCY.js +0 -1
@@ -1863,7 +1863,7 @@ dependencies = [
1863
1863
 
1864
1864
  [[package]]
1865
1865
  name = "lattice-agent"
1866
- version = "11.9.0"
1866
+ version = "12.0.0"
1867
1867
  dependencies = [
1868
1868
  "axum",
1869
1869
  "base64 0.22.1",
@@ -1880,7 +1880,7 @@ dependencies = [
1880
1880
 
1881
1881
  [[package]]
1882
1882
  name = "lattice-ai-desktop"
1883
- version = "11.9.0"
1883
+ version = "12.0.0"
1884
1884
  dependencies = [
1885
1885
  "lattice-host",
1886
1886
  "lattice-jobs",
@@ -1895,7 +1895,7 @@ dependencies = [
1895
1895
 
1896
1896
  [[package]]
1897
1897
  name = "lattice-auth"
1898
- version = "11.9.0"
1898
+ version = "12.0.0"
1899
1899
  dependencies = [
1900
1900
  "axum",
1901
1901
  "base64 0.22.1",
@@ -1912,7 +1912,7 @@ dependencies = [
1912
1912
 
1913
1913
  [[package]]
1914
1914
  name = "lattice-chat"
1915
- version = "11.9.0"
1915
+ version = "12.0.0"
1916
1916
  dependencies = [
1917
1917
  "axum",
1918
1918
  "bytes",
@@ -1928,12 +1928,13 @@ dependencies = [
1928
1928
  "serde",
1929
1929
  "serde_json",
1930
1930
  "sha2",
1931
+ "tempfile",
1931
1932
  "tokio",
1932
1933
  ]
1933
1934
 
1934
1935
  [[package]]
1935
1936
  name = "lattice-core"
1936
- version = "11.9.0"
1937
+ version = "12.0.0"
1937
1938
  dependencies = [
1938
1939
  "blake2",
1939
1940
  "bytes",
@@ -1949,7 +1950,7 @@ dependencies = [
1949
1950
 
1950
1951
  [[package]]
1951
1952
  name = "lattice-host"
1952
- version = "11.9.0"
1953
+ version = "12.0.0"
1953
1954
  dependencies = [
1954
1955
  "axum",
1955
1956
  "lattice-agent",
@@ -1965,11 +1966,12 @@ dependencies = [
1965
1966
  "serde",
1966
1967
  "serde_json",
1967
1968
  "tokio",
1969
+ "tower",
1968
1970
  ]
1969
1971
 
1970
1972
  [[package]]
1971
1973
  name = "lattice-ingest"
1972
- version = "11.9.0"
1974
+ version = "12.0.0"
1973
1975
  dependencies = [
1974
1976
  "axum",
1975
1977
  "lattice-auth",
@@ -1984,7 +1986,7 @@ dependencies = [
1984
1986
 
1985
1987
  [[package]]
1986
1988
  name = "lattice-jobs"
1987
- version = "11.9.0"
1989
+ version = "12.0.0"
1988
1990
  dependencies = [
1989
1991
  "axum",
1990
1992
  "lattice-auth",
@@ -1999,7 +2001,7 @@ dependencies = [
1999
2001
 
2000
2002
  [[package]]
2001
2003
  name = "lattice-platform"
2002
- version = "11.9.0"
2004
+ version = "12.0.0"
2003
2005
  dependencies = [
2004
2006
  "axum",
2005
2007
  "base64 0.22.1",
@@ -2022,7 +2024,7 @@ dependencies = [
2022
2024
 
2023
2025
  [[package]]
2024
2026
  name = "lattice-retrieval"
2025
- version = "11.9.0"
2027
+ version = "12.0.0"
2026
2028
  dependencies = [
2027
2029
  "axum",
2028
2030
  "fancy-regex",
@@ -2105,6 +2107,12 @@ dependencies = [
2105
2107
  "vcpkg",
2106
2108
  ]
2107
2109
 
2110
+ [[package]]
2111
+ name = "linux-raw-sys"
2112
+ version = "0.12.1"
2113
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2114
+ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
2115
+
2108
2116
  [[package]]
2109
2117
  name = "litemap"
2110
2118
  version = "0.8.2"
@@ -2963,6 +2971,19 @@ dependencies = [
2963
2971
  "semver",
2964
2972
  ]
2965
2973
 
2974
+ [[package]]
2975
+ name = "rustix"
2976
+ version = "1.1.4"
2977
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2978
+ checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
2979
+ dependencies = [
2980
+ "bitflags 2.13.0",
2981
+ "errno",
2982
+ "libc",
2983
+ "linux-raw-sys",
2984
+ "windows-sys 0.61.2",
2985
+ ]
2986
+
2966
2987
  [[package]]
2967
2988
  name = "rustversion"
2968
2989
  version = "1.0.22"
@@ -3798,6 +3819,19 @@ dependencies = [
3798
3819
  "toml 1.1.2+spec-1.1.0",
3799
3820
  ]
3800
3821
 
3822
+ [[package]]
3823
+ name = "tempfile"
3824
+ version = "3.27.0"
3825
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3826
+ checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
3827
+ dependencies = [
3828
+ "fastrand",
3829
+ "getrandom 0.4.3",
3830
+ "once_cell",
3831
+ "rustix",
3832
+ "windows-sys 0.61.2",
3833
+ ]
3834
+
3801
3835
  [[package]]
3802
3836
  name = "tendril"
3803
3837
  version = "0.5.0"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "11.9.0"
3
+ version = "12.0.0"
4
4
  description = "Lattice AI Digital Brain desktop shell"
5
5
  authors = ["TaeSoo Park"]
6
6
  edition = "2021"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Lattice AI",
4
- "version": "11.9.0",
4
+ "version": "12.0.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,49 +1,55 @@
1
1
  {
2
- "version": "11.9.0",
2
+ "version": "12.0.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
- "app": "/static/app/assets/index-CWKRRsLW.js"
5
+ "app": "/static/app/assets/index-D2H-wSl6.js"
6
6
  },
7
7
  "assets": {
8
8
  "../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
9
- "_BrainSignals-C0__xgpG.js": "/static/app/assets/BrainSignals-C0__xgpG.js",
10
- "_LivingBrain-DjkTB_gh.js": "/static/app/assets/LivingBrain-DjkTB_gh.js",
11
- "_ReviewCard-CD3yWvUB.js": "/static/app/assets/ReviewCard-CD3yWvUB.js",
12
- "_arrow-left-6_28Z0qH.js": "/static/app/assets/arrow-left-6_28Z0qH.js",
13
- "_bot-Bc3Q27YR.js": "/static/app/assets/bot-Bc3Q27YR.js",
14
- "_brain-B9BDrMTe.js": "/static/app/assets/brain-B9BDrMTe.js",
15
- "_button-D6JcpYcf.js": "/static/app/assets/button-D6JcpYcf.js",
16
- "_circle-check-BFu9lD-3.js": "/static/app/assets/circle-check-BFu9lD-3.js",
17
- "_circle-pause-BGMiV8UU.js": "/static/app/assets/circle-pause-BGMiV8UU.js",
18
- "_circle-play-DoanLHnd.js": "/static/app/assets/circle-play-DoanLHnd.js",
19
- "_cpu-DwzNf82m.js": "/static/app/assets/cpu-DwzNf82m.js",
20
- "_download-Ddw49yCV.js": "/static/app/assets/download-Ddw49yCV.js",
21
- "_folder-open-Brd6Kvto.js": "/static/app/assets/folder-open-Brd6Kvto.js",
22
- "_hard-drive-Bu-DTJdB.js": "/static/app/assets/hard-drive-Bu-DTJdB.js",
23
- "_input-CEqsxtil.js": "/static/app/assets/input-CEqsxtil.js",
24
- "_link-2-DZ4OA5tJ.js": "/static/app/assets/link-2-DZ4OA5tJ.js",
25
- "_permissionCopy-D9TR0F8b.js": "/static/app/assets/permissionCopy-D9TR0F8b.js",
26
- "_primitives-DORg7Z_7.js": "/static/app/assets/primitives-DORg7Z_7.js",
27
- "_search-0NQ21wXe.js": "/static/app/assets/search-0NQ21wXe.js",
28
- "_share-2-BC5FirFv.js": "/static/app/assets/share-2-BC5FirFv.js",
29
- "_shield-alert-DUbR2W2s.js": "/static/app/assets/shield-alert-DUbR2W2s.js",
30
- "_textarea-jtQcRSXo.js": "/static/app/assets/textarea-jtQcRSXo.js",
31
- "_useFocusTrap-HRemcWId.js": "/static/app/assets/useFocusTrap-HRemcWId.js",
32
- "_useMutation-DqlFE-Bw.js": "/static/app/assets/useMutation-DqlFE-Bw.js",
33
- "_useQuery-BizqBNGw.js": "/static/app/assets/useQuery-BizqBNGw.js",
34
- "_utils-WgW4V69R.js": "/static/app/assets/utils-WgW4V69R.js",
35
- "_workspace-DSek3jCY.js": "/static/app/assets/workspace-DSek3jCY.js",
36
- "index.html": "/static/app/assets/index-CWKRRsLW.js",
37
- "assets/index-CGdg_aq9.css": "/static/app/assets/index-CGdg_aq9.css",
38
- "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-DCUNRNHs.js",
39
- "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole--Wf71m-o.js",
40
- "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-Be2VPJEc.js",
41
- "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-CIsnSsFL.js",
42
- "src/pages/Act.tsx": "/static/app/assets/Act-B4WT81kh.js",
43
- "src/pages/Brain.tsx": "/static/app/assets/Brain-CtYaa26c.js",
44
- "src/pages/Capture.tsx": "/static/app/assets/Capture-DdNi5Peb.js",
45
- "src/pages/Chronicle.tsx": "/static/app/assets/Chronicle-B3hNveeI.js",
46
- "src/pages/Library.tsx": "/static/app/assets/Library-Bl5XClFV.js",
47
- "src/pages/System.tsx": "/static/app/assets/System-BJ6jQ_SL.js"
9
+ "_BrainSignals-CQPPfyyH.js": "/static/app/assets/BrainSignals-CQPPfyyH.js",
10
+ "_LivingBrain-BEk-0ohw.js": "/static/app/assets/LivingBrain-BEk-0ohw.js",
11
+ "_QueryClientProvider-B3OjqSyJ.js": "/static/app/assets/QueryClientProvider-B3OjqSyJ.js",
12
+ "_ReviewCard-CEHG6evf.js": "/static/app/assets/ReviewCard-CEHG6evf.js",
13
+ "_actHelpers-CtSmK9Dw.js": "/static/app/assets/actHelpers-CtSmK9Dw.js",
14
+ "_arrow-left-CRl5EO4D.js": "/static/app/assets/arrow-left-CRl5EO4D.js",
15
+ "_bot-DhUGRel2.js": "/static/app/assets/bot-DhUGRel2.js",
16
+ "_brain-CLkhHsHF.js": "/static/app/assets/brain-CLkhHsHF.js",
17
+ "_button-CmaEqG1T.js": "/static/app/assets/button-CmaEqG1T.js",
18
+ "_circle-check-CFgejkOS.js": "/static/app/assets/circle-check-CFgejkOS.js",
19
+ "_circle-pause-l96izbxj.js": "/static/app/assets/circle-pause-l96izbxj.js",
20
+ "_circle-play-CrZa25_q.js": "/static/app/assets/circle-play-CrZa25_q.js",
21
+ "_cpu-BaXudqwl.js": "/static/app/assets/cpu-BaXudqwl.js",
22
+ "_download-hCVFPiyc.js": "/static/app/assets/download-hCVFPiyc.js",
23
+ "_folder-open-CHL82Yp7.js": "/static/app/assets/folder-open-CHL82Yp7.js",
24
+ "_hard-drive-DDzET7lk.js": "/static/app/assets/hard-drive-DDzET7lk.js",
25
+ "_input-Df1CAY_I.js": "/static/app/assets/input-Df1CAY_I.js",
26
+ "_jsx-runtime-bzQ4Vb5N.js": "/static/app/assets/jsx-runtime-bzQ4Vb5N.js",
27
+ "_link-2-xNnTIX1_.js": "/static/app/assets/link-2-xNnTIX1_.js",
28
+ "_permissionCopy-D3aWHco-.js": "/static/app/assets/permissionCopy-D3aWHco-.js",
29
+ "_primitives-BioD2slS.js": "/static/app/assets/primitives-BioD2slS.js",
30
+ "_search-BzBw8YcW.js": "/static/app/assets/search-BzBw8YcW.js",
31
+ "_share-2-FkzGf8Df.js": "/static/app/assets/share-2-FkzGf8Df.js",
32
+ "_shield-alert-B3dwzik4.js": "/static/app/assets/shield-alert-B3dwzik4.js",
33
+ "_sourceMeta-DQSY_tah.js": "/static/app/assets/sourceMeta-DQSY_tah.js",
34
+ "_textarea-P8o6pvOP.js": "/static/app/assets/textarea-P8o6pvOP.js",
35
+ "_useFocusTrap-hswOIkXE.js": "/static/app/assets/useFocusTrap-hswOIkXE.js",
36
+ "_useMutation-OJLrYSRA.js": "/static/app/assets/useMutation-OJLrYSRA.js",
37
+ "_workspace-BCuk3Ku9.js": "/static/app/assets/workspace-BCuk3Ku9.js",
38
+ "index.html": "/static/app/assets/index-D2H-wSl6.js",
39
+ "assets/index-CB93CZWW.css": "/static/app/assets/index-CB93CZWW.css",
40
+ "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-CZLm5iXh.js",
41
+ "src/features/act/RunsListPanel.tsx": "/static/app/assets/RunsListPanel-CLtEJSRW.js",
42
+ "src/features/act/WorkflowGraph.tsx": "/static/app/assets/WorkflowGraph-Dj10RuGE.js",
43
+ "src/features/act/WorkflowsPanel.tsx": "/static/app/assets/WorkflowsPanel-Kyeh_LIT.js",
44
+ "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole-DPAbLTYV.js",
45
+ "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-MHe2_RYs.js",
46
+ "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-WNT4EqUX.js",
47
+ "src/pages/Act.tsx": "/static/app/assets/Act-Cf1L2709.js",
48
+ "src/pages/Brain.tsx": "/static/app/assets/Brain-DqamGrj-.js",
49
+ "src/pages/Capture.tsx": "/static/app/assets/Capture-DGdIH_Zc.js",
50
+ "src/pages/Chronicle.tsx": "/static/app/assets/Chronicle-C-UlCJoJ.js",
51
+ "src/pages/Library.tsx": "/static/app/assets/Library-C6xd1dlf.js",
52
+ "src/pages/System.tsx": "/static/app/assets/System-CAxwBUXw.js",
53
+ "src/pages/brain/DigitalBrainExplorer.tsx": "/static/app/assets/DigitalBrainExplorer-CEBH5Cwc.js"
48
54
  }
49
55
  }
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunsListPanel-CLtEJSRW.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-D2H-wSl6.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-CB93CZWW.css","assets/primitives-BioD2slS.js","assets/button-CmaEqG1T.js","assets/useMutation-OJLrYSRA.js","assets/circle-check-CFgejkOS.js","assets/actHelpers-CtSmK9Dw.js","assets/circle-play-CrZa25_q.js","assets/workspace-BCuk3Ku9.js","assets/WorkflowsPanel-Kyeh_LIT.js","assets/input-Df1CAY_I.js","assets/textarea-P8o6pvOP.js","assets/folder-open-CHL82Yp7.js"])))=>i.map(i=>d[i]);
2
+ import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-OJLrYSRA.js";import{t as a}from"./bot-DhUGRel2.js";import{_ as o,c as s,d as c,g as l,h as u,i as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b}from"./primitives-BioD2slS.js";import{t as x}from"./circle-pause-l96izbxj.js";import{a as S,i as C,n as w,r as T}from"./ReviewCard-CEHG6evf.js";import{D as E,H as D,R as O,S as k,b as A,i as j,k as M,o as N,v as P,z as F}from"./index-D2H-wSl6.js";import{t as I}from"./button-CmaEqG1T.js";import{t as L}from"./input-Df1CAY_I.js";import"./workspace-BCuk3Ku9.js";import{t as R}from"./textarea-P8o6pvOP.js";var z=O(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),B=e(t()),V=n();function H(){let e=F(e=>e.language),t=r(),[n,i]=B.useState(`pending`),[a,o]=B.useState(`all`),[s,l]=B.useState({}),u=D({queryKey:[`automationReviews`,n,a],queryFn:()=>P.automationReviews({...n===`all`?{}:{status:n},...a===`all`?{}:{source:a}})}),d=u.data?.data.items||[],f=D({queryKey:[`proposalCounts`],queryFn:P.proposalCounts}),p=Number(f.data?.data?.pending||0),h=async(n,r,i=!1,a)=>{let o=await(r===`approve`?()=>P.approveReviewItem(n.id):r===`dismiss`?n.source===`change_proposal`?()=>P.rejectProposal(n.id,a||``):()=>P.dismissReviewItem(n.id):r===`snooze`?()=>P.snoozeReviewItem(n.id,T()):r===`unsnooze`?()=>P.unsnoozeReviewItem(n.id):()=>P.runNowReviewItem(n.id))();if(!o.ok){let t=r===`approve`&&n.source===`change_proposal`&&o.status===409;return l(r=>({...r,[n.id]:t?{tone:`error`,message:k(e,`proposals.conflict.title`),conflict:!0}:{tone:`error`,message:k(e,`review.feedback.error`),...o.error?{detail:o.error}:{}}})),o}if(r===`run_now`){let t=o.data.payload||{},r=o.data.provenance||{},a=String(t.last_run_id||r.run_id||``),s=i?k(e,`review.regenerated`):k(e,`review.executed`);l(e=>({...e,[n.id]:{tone:`success`,message:a?`${s} · ${a}`:s}}))}else l(e=>{let t={...e};return delete t[n.id],t});return await Promise.all([t.invalidateQueries({queryKey:[`automationReviews`]}),t.invalidateQueries({queryKey:[`proposalCounts`]}),t.invalidateQueries({queryKey:[`pendingProposals`]})]),o};return u.isLoading?(0,V.jsx)(m,{title:k(e,`review.inbox.title`)}):(0,V.jsxs)(`div`,{className:`review-inbox`,children:[(0,V.jsxs)(`div`,{className:`review-inbox-head`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`h2`,{className:`text-xl font-bold`,children:k(e,`review.inbox.title`)}),(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:k(e,`review.inbox.description`)})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p>0?(0,V.jsx)(b,{variant:`warning`,"data-testid":`proposal-count-badge`,children:k(e,`review.proposal.badge`,{count:p})}):null,u.data?(0,V.jsx)(b,{variant:u.data.ok?`success`:`warning`,children:u.data.ok?k(e,`review.status.connected`):k(e,`review.status.unavailable`)}):null]})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-6 gap-y-2 py-1`,children:[(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,V.jsx)(`span`,{id:`review-status-filter-label`,className:`text-xs font-semibold tracking-wide text-muted-foreground`,children:k(e,`review.status.title`)}),(0,V.jsx)(c,{tabs:S.map(t=>({id:t.id,label:k(e,t.labelKey)})),value:n,onChange:e=>i(e),ariaLabelledBy:`review-status-filter-label`})]}),(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,V.jsx)(`span`,{id:`review-source-filter-label`,className:`text-xs font-semibold tracking-wide text-muted-foreground`,children:k(e,`review.source.title`)}),(0,V.jsx)(c,{tabs:C.map(t=>({id:t.id,label:k(e,t.labelKey)})),value:a,onChange:e=>o(e),ariaLabelledBy:`review-source-filter-label`})]})]}),(0,V.jsx)(`div`,{className:`pt-2`,children:u.isError||u.data&&!u.data.ok?(0,V.jsx)(g,{title:k(e,`review.inbox.loadError`),detail:(0,V.jsxs)(V.Fragment,{children:[k(e,`review.inbox.unavailable`),u.data?.error?(0,V.jsx)(`span`,{className:`mt-1 block text-xs opacity-75`,children:u.data.error}):null]})}):d.length?(0,V.jsx)(`div`,{className:`flex flex-col gap-3`,children:d.map(e=>(0,V.jsx)(w,{item:e,feedback:s[e.id],onAction:h},e.id))}):(0,V.jsx)(g,{title:k(e,`review.inbox.empty`),detail:n===`snoozed`?k(e,`review.inbox.emptySnoozed`):k(e,`review.inbox.emptyPending`)})})]})}var U=[{id:`review`,labelKey:`act.tab.review`},{id:`runs`,labelKey:`act.tab.runsHistory`}],W={runs:{titleKey:`act.title.runs`,copyKey:`act.copy.runs`},agents:{titleKey:`act.title.goals`,copyKey:`act.copy.goals`},workflows:{titleKey:`act.title.workflows`,copyKey:`act.copy.workflows`},hooks:{titleKey:`act.title.safeguards`,copyKey:`act.copy.safeguards`},tools:{titleKey:`act.title.permissions`,copyKey:`act.copy.permissions`}},G=[{id:`runs`,labelKey:`act.tab.runs`},{id:`agents`,labelKey:`act.tab.goals`},{id:`workflows`,labelKey:`act.tab.recipes`},{id:`hooks`,labelKey:`act.tab.safeguards`,advancedLabelKey:`act.tab.hooks`},{id:`tools`,labelKey:`act.tab.permissions`,advancedLabelKey:`act.tab.tools`}],K=B.lazy(()=>A(()=>import(`./RunsListPanel-CLtEJSRW.js`).then(e=>({default:e.RunsListPanel})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]))),q=B.lazy(()=>A(()=>import(`./WorkflowsPanel-Kyeh_LIT.js`).then(e=>({default:e.WorkflowsPanel})),__vite__mapDeps([12,1,2,3,4,5,6,7,8,13,14,9,10,11,15])));function J({initialTab:e}){let t=F(e=>e.mode),n=F(e=>e.language),[r,i]=B.useState(()=>e===`agents`||e===`workflows`||e===`hooks`||e===`tools`?e:`runs`),[a,o]=B.useState(e===`runs`?`runs`:`review`);B.useEffect(()=>{if(e===`review`){i(`runs`),o(`review`);return}if(e===`runs`){i(`runs`),o(`runs`);return}G.some(t=>t.id===e)&&i(e)},[e]);let s=e=>{i(e),N(`/`+e)},l=e=>{o(e),N(e===`review`?`/review`:`/runs`)},{titleKey:u,copyKey:d}=W[r];return(0,V.jsxs)(`div`,{className:`product-page act-page space-y-5`,children:[(0,V.jsxs)(`header`,{className:`page-hero`,children:[(0,V.jsxs)(`div`,{className:`page-kicker`,children:[(0,V.jsx)(E,{className:`h-4 w-4`}),` `,k(n,`act.kicker`)]}),(0,V.jsx)(`h1`,{className:`page-title`,children:k(n,u)}),(0,V.jsx)(`p`,{className:`page-copy`,children:k(n,d)})]}),(0,V.jsx)(c,{tabs:(t===`basic`?G.filter(e=>e.id===`runs`||e.id===`agents`||e.id===`workflows`):G).map(e=>({id:e.id,label:k(n,t===`basic`||!e.advancedLabelKey?e.labelKey:e.advancedLabelKey)})),value:r,onChange:e=>s(e)}),r===`runs`?(0,V.jsx)(X,{subTab:a,onSubTabChange:l}):null,r===`agents`?(0,V.jsx)(Y,{}):null,r===`workflows`?(0,V.jsx)(j,{language:n,resetKey:`act-workflows`,children:(0,V.jsx)(q,{})}):null,r===`hooks`?(0,V.jsx)(Z,{}):null,r===`tools`?(0,V.jsx)(Q,{}):null]})}function Y(){let e=r(),t=F(e=>e.mode),n=F(e=>e.language),[c,m]=B.useState(``),g=D({queryKey:[`agentRuntime`],queryFn:P.agentRuntime}),_=D({queryKey:[`agentRegistry`],queryFn:P.agentRegistry,enabled:t!==`basic`}),v=D({queryKey:[`agentCapabilities`],queryFn:P.agentCapabilities,enabled:t!==`basic`}),x=i({mutationFn:()=>P.runAgent(c,[`planner`,`executor`,`reviewer`]),onSuccess:()=>e.invalidateQueries({queryKey:[`agentRuntime`]})}),[S,C]=B.useState(``),w=i({mutationFn:()=>P.registerAgent({name:S,type:`custom`,capabilities:[]}),onSuccess:()=>e.invalidateQueries({queryKey:[`agentRegistry`]})}),T=(g.data?.data||{}).runtime||{},E=!!T.ready,O=t===`basic`?k(n,`act.goal.modelRequired`):String(T.unavailable_reason||k(n,`act.runtime.modelUnavailable`)),A=!!c.trim()&&E&&!x.isPending;return(0,V.jsxs)(`div`,{className:`work-start-flow flex flex-col gap-4`,children:[(0,V.jsxs)(h,{className:`work-goal-card`,children:[(0,V.jsxs)(l,{children:[(0,V.jsxs)(o,{className:`flex items-center gap-2`,children:[(0,V.jsx)(a,{className:`h-4 w-4`}),` `,k(n,`act.goal.title`)]}),(0,V.jsx)(u,{children:k(n,`act.goal.description`)})]}),(0,V.jsxs)(f,{className:`space-y-3`,children:[(0,V.jsx)(R,{value:c,onChange:e=>m(e.target.value),placeholder:k(n,`act.goal.placeholder`)}),E?null:(0,V.jsx)(b,{variant:`warning`,children:O}),(0,V.jsxs)(I,{className:`w-full`,variant:E?`default`:`outline`,disabled:!A,onClick:()=>x.mutate(),children:[(0,V.jsx)(z,{className:`h-4 w-4`}),` `,E?k(n,`act.goal.start`):k(n,`act.goal.needsModel`)]}),x.data?(0,V.jsx)(s,{result:x.data,successLabel:k(n,`act.goal.completed`)}):null,x.data&&x.data?.data?(0,V.jsx)(`div`,{className:`text-xs text-emerald-600`,children:k(n,`act.goal.brainSaved`)}):null]})]}),t===`basic`?(0,V.jsxs)(`div`,{className:`work-safety-note`,children:[(0,V.jsx)(M,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,V.jsx)(`span`,{children:k(n,`act.goal.safety`)})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(p,{title:k(n,`act.panel.readiness`),result:g.data,children:e=>(0,V.jsx)(y,{value:e})}),(0,V.jsx)(p,{title:k(n,`act.panel.agentTeam`),result:_.data,children:e=>(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(d,{items:e.agents,titleKey:`name`,metaKey:`type`,labelPrefix:`act.agentRole`}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(L,{value:S,onChange:e=>C(e.target.value),placeholder:k(n,`act.agent.namePlaceholder`)}),(0,V.jsx)(I,{disabled:!S.trim()||w.isPending,onClick:()=>w.mutate(),children:k(n,`act.agent.register`)})]})]})}),(0,V.jsx)(p,{title:k(n,`act.panel.capabilities`),result:v.data,children:e=>(0,V.jsx)(y,{value:e})})]})]})}function X({subTab:e,onSubTabChange:t}){let n=F(e=>e.language);return(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsx)(c,{tabs:U.map(e=>({id:e.id,label:k(n,e.labelKey)})),value:e,onChange:e=>t(e)}),e===`runs`?(0,V.jsx)(j,{language:n,resetKey:`act-runs`,children:(0,V.jsx)(K,{})}):(0,V.jsx)(H,{})]})}function Z(){let e=F(e=>e.mode),t=F(e=>e.language),n=D({queryKey:[`hooks`],queryFn:P.hooks}),r=D({queryKey:[`hookRuns`],queryFn:P.hookRuns});return e===`basic`?(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,V.jsx)(p,{title:k(t,`act.panel.safeguards`),result:n.data,children:e=>(0,V.jsx)(d,{items:e.hooks,titleKey:`name`,metaKey:`kind`})}),(0,V.jsx)(_,{title:k(t,`act.hooks.detailed`),detail:k(t,`act.hooks.detailedHint`)})]}):(0,V.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,V.jsx)(p,{title:k(t,`act.panel.hooks`),result:n.data,children:e=>(0,V.jsx)(d,{items:e.hooks,titleKey:`name`,metaKey:`kind`})}),(0,V.jsx)(p,{title:k(t,`act.panel.hookRuns`),result:r.data,children:e=>(0,V.jsx)(d,{items:e.runs,titleKey:`hook_id`,metaKey:`status`})}),(0,V.jsxs)(h,{children:[(0,V.jsxs)(l,{children:[(0,V.jsxs)(o,{className:`flex items-center gap-2`,children:[(0,V.jsx)(x,{className:`h-4 w-4`}),` `,k(t,`act.hooks.runManual`)]}),(0,V.jsx)(u,{children:k(t,`act.hooks.runManualHint`)})]}),(0,V.jsx)(f,{children:(0,V.jsx)(v,{label:k(t,`act.hooks.runAll`),action:()=>P.hookRun({event:`manual`}),invalidate:[`hookRuns`]})})]})]})}function Q(){let e=F(e=>e.language),t=D({queryKey:[`toolPermissions`],queryFn:P.toolPermissions});return(0,V.jsx)(p,{title:k(e,`act.panel.permissions`),result:t.data,children:e=>(0,V.jsx)(d,{items:e.permissions||e,titleKey:`tool`,metaKey:`risk`})})}export{J as ActPage};
@@ -0,0 +1 @@
1
+ import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-OJLrYSRA.js";import{t as a}from"./arrow-left-CRl5EO4D.js";import{t as o}from"./search-BzBw8YcW.js";import{A as s,H as c,R as l,S as u,c as d,k as f,p,r as m,s as h,v as g,z as _}from"./index-D2H-wSl6.js";import{t as v}from"./button-CmaEqG1T.js";import"./workspace-BCuk3Ku9.js";var y=l(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),b=e(t()),x=n();function S({onBack:e}){let t=r(),n=_(e=>e.language),[o,c]=b.useState({q:``,actor:``,action:``,severity:``,limit:50}),{summaryQ:l,statsQ:p,usersQ:y,auditQ:S,securityQ:N,securityEventsQ:P,policiesQ:F,rolesQ:I,retentionQ:L,indexQ:R,agentRuntimeQ:z,toolRegistryQ:B,healthSummaryQ:V}=C(o),H=i({mutationFn:g.rebuildIndex,onSuccess:()=>void t.invalidateQueries({queryKey:[`indexStatus`]})}),U=d(y.data?.data),W=d(S.data?.data?.recent_events),G=d(P.data?.data?.events),K=d(F.data?.data?.policies),q=d(I.data?.data?.roles),J=L.data?.data||{},Y=V.data?.data||V.data,X=Y?.status===`attention`||typeof Y?.issue_count==`number`&&Y.issue_count>0;return(0,x.jsxs)(`main`,{className:`admin-console`,"aria-label":u(n,`admin.aria.console`),children:[(0,x.jsxs)(`header`,{className:`admin-console-header`,children:[(0,x.jsxs)(`button`,{className:`admin-back-button`,type:`button`,onClick:e,children:[(0,x.jsx)(a,{className:`h-4 w-4`}),u(n,`admin.back`)]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`span`,{children:u(n,`admin.kicker`)}),(0,x.jsx)(`h1`,{children:u(n,`admin.title`)}),(0,x.jsx)(`p`,{children:u(n,`admin.body`)})]}),(0,x.jsx)(h,{compact:!0})]}),(0,x.jsxs)(`section`,{className:`admin-metrics-statement`,"aria-label":u(n,`admin.overview`),children:[(0,x.jsxs)(`div`,{className:`admin-metrics-statement-main`,children:[(0,x.jsx)(f,{className:`h-4 w-4 ${X?`is-warn`:`is-ok`}`}),(0,x.jsx)(`span`,{children:X?u(n,`admin.health.attention`,{count:String(Y?.issue_count||1)}):u(n,`admin.health.ok`)})]}),(0,x.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:u(n,`admin.summaryStatement`,{users:U.length,logs:W.length+G.length,security:k(N.data?.data,`status`)||(N.data?.ok?u(n,`admin.status.ready`):u(n,`admin.status.unavailable`)),index:k(R.data?.data,`status`)||(R.data?.ok?u(n,`admin.status.indexed`):u(n,`admin.status.unknown`))})})]}),(0,x.jsxs)(`section`,{className:`admin-accordion-list flex flex-col gap-4 mt-4`,children:[(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,open:!0,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.users`),` · `,u(n,`admin.panel.people`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-users`,children:(0,x.jsx)(E,{title:u(n,`admin.panel.users`),eyebrow:u(n,`admin.panel.people`),children:(0,x.jsx)(D,{items:U.slice(0,8),empty:u(n,`admin.empty.users`),render:e=>{let t=e;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`strong`,{children:M(t.name||t.email||t.id,u(n,`admin.fallback.localUser`))}),(0,x.jsx)(`span`,{children:M(t.role||t.status||t.workspace_id,u(n,`admin.fallback.member`))})]})}})})})]}),(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.roles`),` · `,u(n,`admin.panel.access`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-roles`,children:(0,x.jsx)(E,{title:u(n,`admin.panel.roles`),eyebrow:u(n,`admin.panel.access`),children:(0,x.jsx)(D,{items:q.slice(0,6),empty:u(n,`admin.empty.roles`),render:e=>{let t=e;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`strong`,{children:[M(t.role,u(n,`admin.fallback.role`)),` · `,M(t.members,`0`),` `,u(n,`admin.metric.users`)]}),(0,x.jsx)(`span`,{children:d(t.caps).slice(0,4).map(e=>M(e,``)).filter(Boolean).join(`, `)||u(n,`admin.fallback.noCaps`)})]})}})})})]}),(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.logs`),` · `,u(n,`admin.panel.audit`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-logs`,children:(0,x.jsxs)(E,{title:u(n,`admin.panel.logs`),eyebrow:u(n,`admin.panel.audit`),children:[(0,x.jsx)(T,{language:n,filters:o,onChange:c,matched:S.data?.data?.filters}),(0,x.jsx)(D,{items:W.slice(0,8),empty:u(n,`admin.empty.audit`),render:e=>O(e,n)})]})})]}),(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.securityEvents`),` · `,u(n,`admin.panel.protection`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-security`,children:(0,x.jsx)(E,{title:u(n,`admin.panel.securityEvents`),eyebrow:u(n,`admin.panel.protection`),children:(0,x.jsx)(D,{items:G.slice(0,8),empty:u(n,`admin.empty.security`),render:e=>O(e,n)})})})]}),(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.brainOps`),` · `,u(n,`admin.panel.maintenance`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-brain-ops`,children:(0,x.jsxs)(E,{title:u(n,`admin.panel.brainOps`),eyebrow:u(n,`admin.panel.maintenance`),children:[(0,x.jsxs)(`div`,{className:`admin-operation`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`strong`,{children:A(R.data?.data,n)}),(0,x.jsx)(`span`,{children:j(l.data?.data)||j(p.data?.data)||u(n,`admin.brain.summaryFallback`)})]}),(0,x.jsxs)(v,{variant:`outline`,size:`sm`,disabled:H.isPending,onClick:()=>H.mutate(),children:[(0,x.jsx)(s,{className:`h-3.5 w-3.5`}),H.isPending?u(n,`admin.brain.rebuilding`):u(n,`admin.brain.rebuild`)]})]}),(0,x.jsxs)(`div`,{className:`admin-policy-strip`,children:[K.slice(0,5).map((e,t)=>{let r=e;return(0,x.jsx)(`span`,{children:M(r.label||r.name||r.id,u(n,`admin.policy.fallback`))},`${M(r.id||r.name,`policy`)}-${t}`)}),K.length?null:(0,x.jsx)(`span`,{children:u(n,`admin.policy.quiet`)})]}),(0,x.jsxs)(`div`,{className:`admin-retention`,children:[(0,x.jsx)(`strong`,{children:u(n,`admin.retention.days`,{days:M(J.retention_days,`90`)})}),(0,x.jsx)(`span`,{children:u(n,`admin.retention.detail`,{events:M(J.retained_events,`0`),candidates:M(J.prune_candidates,`0`)})})]})]})})]}),(0,x.jsxs)(`details`,{className:`admin-accordion-details border border-border rounded-lg bg-card p-4`,children:[(0,x.jsx)(`summary`,{className:`font-semibold text-base cursor-pointer mb-3`,children:(0,x.jsxs)(`h2`,{className:`inline font-semibold text-base`,children:[u(n,`admin.panel.runtimeTrust`),` · `,u(n,`admin.panel.contracts`)]})}),(0,x.jsx)(m,{surface:`panel`,resetKey:`admin-runtime`,children:(0,x.jsx)(E,{title:u(n,`admin.panel.runtimeTrust`),eyebrow:u(n,`admin.panel.contracts`),children:(0,x.jsx)(w,{runtime:z.data?.data,registry:B.data?.data,language:n})})})]})]})]})}function C(e){let t=b.useMemo(()=>({q:e.q||void 0,actor:e.actor||void 0,action:e.action||void 0,severity:e.severity||void 0,limit:e.limit}),[e]);return{summaryQ:c({queryKey:[`adminSummary`],queryFn:g.adminSummary}),statsQ:c({queryKey:[`adminStats`],queryFn:g.adminStats}),usersQ:c({queryKey:[`adminUsers`],queryFn:g.adminUsers}),auditQ:c({queryKey:[`adminAudit`,t],queryFn:()=>g.adminAudit(t)}),securityQ:c({queryKey:[`adminSecurity`],queryFn:g.adminSecurity}),securityEventsQ:c({queryKey:[`adminSecurityEvents`],queryFn:()=>g.adminSecurityEvents(50)}),policiesQ:c({queryKey:[`adminPolicies`],queryFn:g.adminPolicies}),rolesQ:c({queryKey:[`adminRoles`],queryFn:g.adminRoles}),retentionQ:c({queryKey:[`adminLogRetention`],queryFn:g.adminLogRetention}),indexQ:c({queryKey:[`indexStatus`],queryFn:g.indexStatus}),agentRuntimeQ:c({queryKey:[`agentRuntime`],queryFn:g.agentRuntime}),toolRegistryQ:c({queryKey:[`toolRegistryDiagnostics`],queryFn:g.toolRegistryDiagnostics}),healthSummaryQ:c({queryKey:[`adminHealthSummary`],queryFn:g.adminHealthSummary})}}function w({runtime:e,registry:t,language:n}){let r=e?.runtime||{},i=e?.health||{},a=t?.diagnostics||{},o=!!r.ready,s=!!a.ready,c=M(r.unavailable_reason,o?u(n,`admin.runtime.readyDetail`):u(n,`admin.runtime.blockedFallback`));return(0,x.jsxs)(`div`,{className:`admin-runtime-trust`,children:[(0,x.jsxs)(`div`,{className:`admin-runtime-row`,children:[(0,x.jsx)(`strong`,{children:u(n,`admin.runtime.agent`)}),(0,x.jsx)(`span`,{className:o?`is-ok`:`is-warn`,children:o?u(n,`admin.status.ready`):u(n,`admin.status.unavailable`)}),(0,x.jsx)(`small`,{children:c})]}),(0,x.jsxs)(`div`,{className:`admin-runtime-row`,children:[(0,x.jsx)(`strong`,{children:u(n,`admin.runtime.tools`)}),(0,x.jsx)(`span`,{className:s?`is-ok`:`is-warn`,children:s?u(n,`admin.runtime.aligned`):u(n,`admin.runtime.drift`)}),(0,x.jsx)(`small`,{children:u(n,`admin.runtime.toolCounts`,{registered:M(a.registered_tools,`0`),governed:M(a.governed_tools,`0`),described:M(a.described_tools,`0`)})})]}),(0,x.jsxs)(`div`,{className:`admin-policy-strip`,children:[(0,x.jsx)(`span`,{children:u(n,`admin.runtime.mode`,{mode:M(r.mode,`unknown`)})}),(0,x.jsx)(`span`,{children:u(n,`admin.runtime.execution`,{mode:M(r.execution_mode,`unknown`)})}),(0,x.jsx)(`span`,{children:u(n,`admin.runtime.health`,{status:M(i.status,`unknown`)})})]})]})}function T({filters:e,matched:t,onChange:n,language:r}){return(0,x.jsxs)(`div`,{className:`admin-log-filters`,"aria-label":u(r,`admin.filters.label`),children:[(0,x.jsxs)(`label`,{children:[(0,x.jsx)(o,{className:`h-3.5 w-3.5`}),(0,x.jsx)(`input`,{value:e.q,onChange:e=>n(t=>({...t,q:e.target.value})),placeholder:u(r,`admin.filters.search`),"aria-label":u(r,`admin.filters.searchAria`)})]}),(0,x.jsxs)(`label`,{children:[(0,x.jsx)(y,{className:`h-3.5 w-3.5`}),(0,x.jsxs)(`select`,{value:e.severity,onChange:e=>n(t=>({...t,severity:e.target.value})),"aria-label":u(r,`admin.filters.severityAria`),children:[(0,x.jsx)(`option`,{value:``,children:u(r,`admin.filters.all`)}),(0,x.jsx)(`option`,{value:`informational`,children:u(r,`admin.filters.informational`)}),(0,x.jsx)(`option`,{value:`notice`,children:u(r,`admin.filters.notice`)}),(0,x.jsx)(`option`,{value:`warning`,children:u(r,`admin.filters.warning`)}),(0,x.jsx)(`option`,{value:`high`,children:u(r,`admin.filters.high`)})]})]}),(0,x.jsx)(`span`,{children:u(r,`admin.filters.matched`,{count:M(t?.matched_events,`0`)})})]})}function E({eyebrow:e,title:t,children:n}){return(0,x.jsxs)(`section`,{className:`admin-panel`,children:[(0,x.jsxs)(`div`,{className:`admin-panel-head`,children:[(0,x.jsx)(`span`,{children:e}),(0,x.jsx)(`h2`,{children:t})]}),n]})}function D({items:e,empty:t,render:n}){return e.length?(0,x.jsx)(`div`,{className:`admin-list`,children:e.map((e,t)=>(0,x.jsx)(`div`,{className:`admin-list-row`,children:n(e)},t))}):(0,x.jsx)(`div`,{className:`admin-empty`,children:t})}function O(e,t){let n=M(e.action||e.event||e.type||e.name,u(t,`admin.log.event`)),r=M(e.actor||e.user||e.user_id||e.workspace_id,u(t,`admin.log.system`)),i=M(e.timestamp||e.time||e.created_at||e.ts,u(t,`admin.log.recently`));return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`strong`,{children:n}),(0,x.jsxs)(`span`,{children:[r,` · `,i]})]})}function k(e,t){return N(p(e)?e:{},[t,`health`,`state`,`overall_status`])}function A(e,t){let n=p(e)?e:{},r=n.documents??n.document_count??n.docs,i=n.chunks??n.chunk_count??n.vectors;return r!==void 0||i!==void 0?`${M(r,`0`)} docs · ${M(i,`0`)} chunks`:N(n,[`message`,`detail`,`status`],u(t,`admin.index.ready`))}function j(e){return N(p(e)?e:{},[`summary`,`message`,`status`,`detail`])}function M(e,t=``){return typeof e==`string`&&e.trim()?e:typeof e==`number`&&Number.isFinite(e)?String(e):typeof e==`boolean`?e?`true`:`false`:t}function N(e,t,n=``){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t;if(typeof t==`number`&&Number.isFinite(t))return String(t)}return n}export{S as AdminConsole};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DigitalBrainExplorer-CEBH5Cwc.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-D2H-wSl6.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-CB93CZWW.css","assets/primitives-BioD2slS.js","assets/button-CmaEqG1T.js","assets/useMutation-OJLrYSRA.js","assets/circle-check-CFgejkOS.js","assets/input-Df1CAY_I.js","assets/brain-CLkhHsHF.js","assets/sourceMeta-DQSY_tah.js","assets/search-BzBw8YcW.js"])))=>i.map(i=>d[i]);
2
+ import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-OJLrYSRA.js";import{t as a}from"./arrow-left-CRl5EO4D.js";import{O as o,i as s,k as c,r as l}from"./BrainSignals-CQPPfyyH.js";import{_ as u,c as d,d as f,g as p,h as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,t as S,v as C,y as w}from"./primitives-BioD2slS.js";import{t as T}from"./search-BzBw8YcW.js";import{t as E}from"./share-2-FkzGf8Df.js";import{H as D,R as O,S as k,b as A,c as j,d as M,i as N,o as P,v as F,z as I}from"./index-D2H-wSl6.js";import"./brain-CLkhHsHF.js";import{t as L}from"./button-CmaEqG1T.js";import{t as R}from"./input-Df1CAY_I.js";import"./workspace-BCuk3Ku9.js";import{t as z}from"./textarea-P8o6pvOP.js";import{i as B,o as V,r as H}from"./sourceMeta-DQSY_tah.js";var U=O(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),W=e(t()),G=n(),K=W.lazy(()=>A(()=>import(`./DigitalBrainExplorer-CEBH5Cwc.js`).then(e=>({default:e.DigitalBrainExplorer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),q=[{id:`knowledge`,labelKey:`brain.tab.knowledge`},{id:`memory`,labelKey:`brain.tab.memory`}],J={knowledge:`hybrid-search`,memory:`memory`,graph:`knowledge-graph`};function Y({initialTab:e}){I(e=>e.mode);let t=I(e=>e.language),[n,r]=W.useState(()=>X(e));W.useEffect(()=>{r(X(e))},[e]);let i=e=>{r(e),P(`/`+J[e])},o=D({queryKey:[`graph`],queryFn:F.graph}),u=D({queryKey:[`coverage`],queryFn:F.graphCoverage}),p=n===`graph`;return(0,G.jsxs)(`div`,{className:`product-page memory-page space-y-5`,children:[(0,G.jsxs)(`header`,{className:`brain-layer-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`page-kicker`,children:[(0,G.jsx)(c,{className:`h-4 w-4`}),` `,Q(t,n)]}),(0,G.jsx)(`h1`,{children:k(t,`brain.headline.${n}`)})]}),(0,G.jsx)(Z,{language:t,data:u.data?.data})]}),p?(0,G.jsxs)(`nav`,{className:`memory-subview-bar`,"aria-label":k(t,`brain.graph.subviewAria`),children:[(0,G.jsxs)(`button`,{type:`button`,className:`memory-subview-back`,onClick:()=>i(`knowledge`),children:[(0,G.jsx)(a,{className:`h-4 w-4`,"aria-hidden":`true`}),k(t,`brain.graph.back`)]}),(0,G.jsx)(`span`,{className:`memory-subview-title`,children:k(t,`brain.tab.graph`)})]}):(0,G.jsx)(f,{tabs:q.map(e=>({id:e.id,label:k(t,e.labelKey)})),value:n,onChange:e=>i(e)}),(0,G.jsx)(l,{language:t}),(0,G.jsx)(s,{language:t}),n===`knowledge`?(0,G.jsx)($,{}):null,n===`memory`?(0,G.jsx)(ee,{}):null,p?o.isLoading?(0,G.jsx)(y,{title:k(t,`graph.deep.title`)}):o.data?.ok===!1?(0,G.jsx)(d,{result:o.data}):(0,G.jsx)(N,{language:t,resetKey:`brain-graph`,children:(0,G.jsx)(K,{data:o.data?.data??o.data})}):(0,G.jsxs)(`button`,{type:`button`,className:`memory-map-entry`,"data-testid":`open-connections-map`,onClick:()=>i(`graph`),children:[(0,G.jsx)(E,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,G.jsxs)(`span`,{className:`memory-map-entry-copy`,children:[(0,G.jsx)(`strong`,{children:k(t,`brain.graph.open`)}),(0,G.jsx)(`small`,{children:k(t,`brain.graph.openHint`)})]})]})]})}function X(e){return e===`graph`||e===`knowledge-graph`?`graph`:e===`memory`||e===`relationships`||e===`provenance`||e===`sources`||e===`portability`||e===`care`?`memory`:`knowledge`}function Z({language:e,data:t}){let n=Math.max(0,Math.round(Number(t?.total_nodes)||0)),r=Math.max(0,Math.round(Number(t?.nodes_with_provenance)||0));if(!n)return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.empty`)})]});let i=k(e,`graph.coverage.detail`,{covered:M(r),total:M(n)});return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,title:i,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.value`,{covered:M(r),total:M(n)})}),(0,G.jsx)(`small`,{children:i})]})}function Q(e,t){if(t===`graph`)return k(e,`brain.tab.graph`);let n=q.find(e=>e.id===t)?.labelKey;return n?k(e,n):k(e,`brain.title`)}function $(){let e=I(e=>e.language),[t,n]=W.useState(``),r=i({mutationFn:()=>F.hybridSearch(t)});return(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(T,{className:`h-4 w-4`}),` `,k(e,`brain.search.title`)]}),(0,G.jsx)(m,{children:k(e,`brain.search.detail`)})]}),(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{placeholder:k(e,`brain.search.placeholder`),value:t,onChange:e=>n(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&r.mutate()}),(0,G.jsx)(L,{onClick:()=>r.mutate(),disabled:!t.trim()||r.isPending,children:k(e,`brain.search.cta`)})]}),r.data?(0,G.jsx)(v,{title:k(e,`brain.search.results`),result:r.data,children:e=>(0,G.jsx)(h,{items:e.matches||e,titleKey:`title`,metaKey:`type`,limit:12})}):null]})]})}function ee(){let e=r(),t=I(e=>e.mode),n=I(e=>e.language),[a,s]=W.useState(``),[c,l]=W.useState(``),[f,h]=W.useState(`recall`),v=D({queryKey:[`memoryManager`],queryFn:F.memoryManager}),x=D({queryKey:[`provenance`],queryFn:()=>F.graphProvenance(80)}),C=D({queryKey:[`portability`],queryFn:F.graphPortability}),T=i({mutationFn:()=>F.memoryRecall(a,25)}),E=i({mutationFn:async()=>{try{return await F.graphImport(JSON.parse(c),!0)}catch(e){return{ok:!1,status:0,data:{},source:`unavailable`,error:e instanceof Error?e.message:String(e)}}},onSuccess:()=>e.invalidateQueries({queryKey:[`portability`]})}),O=V(v.data?.data)?v.data.data:{},A=V(C.data?.data)?C.data.data:{};V(A.stats)&&A.stats;let j=V(A.storage)?A.storage:{},M=V(O.usage)?O.usage:{},N=e=>h(t=>t===e?null:e);return(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(b,{children:(0,G.jsx)(_,{className:`py-4`,children:(0,G.jsx)(g,{stats:t===`basic`?[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.savedWhere`),value:k(n,`brain.stats.savedWhere.local`)},{label:k(n,`brain.stats.exportable`),value:k(n,C.data?.ok?`brain.stats.exportable.yes`:`brain.stats.exportable.unknown`)}]:[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.format`),value:A.graph_schema_version||A.schema_version||`–`},{label:k(n,`brain.stats.storage`),value:j.engine||`–`}]})})}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`recall`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(w,{className:`h-4 w-4`}),k(n,`brain.memory.recall.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`recall`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.memory.recall.detail`)})]}),f===`recall`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{value:a,onChange:e=>s(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&a.trim()&&T.mutate(),placeholder:k(n,`brain.memory.recall.placeholder`)}),(0,G.jsx)(L,{disabled:!a.trim()||T.isPending,onClick:()=>T.mutate(),children:k(n,`brain.memory.recall.action`)})]}),t!==`basic`&&(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.memory.compact`),action:()=>F.memoryCompact()}),(0,G.jsx)(S,{label:k(n,`brain.memory.rebuildVector`),action:()=>F.memoryRebuild()})]}),T.data?(0,G.jsx)(d,{result:T.data,successLabel:k(n,`brain.memory.recall.completed`)}):null]})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`sources`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(U,{className:`h-4 w-4`}),k(n,`brain.sources.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`sources`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.sources.detail`)})]}),f===`sources`&&(0,G.jsx)(_,{className:`space-y-3`,children:x.isLoading?(0,G.jsx)(y,{title:k(n,`brain.sources.loading`)}):(0,G.jsx)(te,{items:V(x.data?.data)?x.data.data.items||x.data.data:x.data,limit:10})})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`backup`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(o,{className:`h-4 w-4`}),k(n,`brain.portability.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`backup`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.portability.detail`)})]}),f===`backup`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.portability.export`),action:()=>F.graphExport()}),(0,G.jsx)(S,{label:k(n,`brain.portability.backup`),action:()=>F.graphBackup()})]}),(0,G.jsx)(z,{value:c,onChange:e=>l(e.target.value),placeholder:k(n,`brain.portability.importPlaceholder`)}),(0,G.jsx)(L,{variant:`outline`,disabled:!c.trim()||E.isPending,onClick:()=>E.mutate(),children:k(n,`brain.portability.previewImport`)}),E.data?(0,G.jsx)(d,{result:E.data,successLabel:k(n,`brain.portability.importCompleted`)}):null]})]})]})}function te({items:e,limit:t=8}){let n=I(e=>e.language),r=j(e).slice(0,t);return r.length?(0,G.jsx)(`div`,{className:`grid gap-2`,children:r.map((e,t)=>{let r=`brain.memoryTier.${String(e.id||``)}`,i=k(n,r),a=i===r?String(e.title||e.label||e.source_title||e.filename||e.path||e.source||k(n,`brain.sources.fallback`,{index:t+1})):i,o=String(e.path||e.source_path||e.source||e.conversation_id||``),s=B(e,n),c=H(e);return(0,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`font-medium`,children:a}),(0,G.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[s,` · `,c||k(n,`brain.sources.createdUnknown`)]})]}),(0,G.jsx)(C,{variant:`muted`,children:k(n,o?`brain.sources.inspectable`:`brain.sources.missingProvenance`)})]}),o?(0,G.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,G.jsx)(`span`,{className:`break-all`,children:o}),(0,G.jsx)(L,{variant:`outline`,size:`sm`,onClick:()=>void navigator.clipboard?.writeText(o),children:k(n,`brain.sources.copy`)})]}):(0,G.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:k(n,`brain.sources.legacyMissing`)})]},String(e.id||e.source_id||a))})}):(0,G.jsx)(x,{title:k(n,`brain.sources.empty`),detail:k(n,`brain.sources.emptyDetail`)})}export{Y as BrainPage};