ltcai 12.0.0 → 12.1.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 (69) hide show
  1. package/README.md +46 -52
  2. package/docs/CHANGELOG.md +23 -0
  3. package/docs/CI_AND_RELEASE_GATES.md +13 -7
  4. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  5. package/docs/DEVELOPMENT.md +11 -11
  6. package/docs/ONBOARDING.md +1 -1
  7. package/docs/OPERATIONS.md +1 -1
  8. package/docs/ROADMAP.md +2 -2
  9. package/docs/TRUST_MODEL.md +1 -1
  10. package/docs/WHY_LATTICE.md +1 -1
  11. package/docs/kg-schema.md +1 -1
  12. package/lattice_brain/__init__.py +1 -1
  13. package/latticeai/__init__.py +1 -1
  14. package/latticeai/services/architecture_readiness.py +1 -1
  15. package/latticeai/services/product_readiness.py +1 -1
  16. package/package.json +1 -1
  17. package/scripts/check_current_release_docs.mjs +1 -1
  18. package/scripts/release_screen_claims.json +11 -0
  19. package/src-tauri/Cargo.lock +10 -10
  20. package/src-tauri/Cargo.toml +1 -1
  21. package/src-tauri/tauri.conf.json +1 -1
  22. package/static/app/asset-manifest.json +44 -44
  23. package/static/app/assets/{Act-Cf1L2709.js → Act-DCRUH46a.js} +2 -2
  24. package/static/app/assets/{AdminConsole-DPAbLTYV.js → AdminConsole-BFBj6OvN.js} +1 -1
  25. package/static/app/assets/{Brain-DqamGrj-.js → Brain-BXcoxIvb.js} +2 -2
  26. package/static/app/assets/{BrainHome-MHe2_RYs.js → BrainHome-IhcEPC3v.js} +1 -1
  27. package/static/app/assets/{BrainSignals-CQPPfyyH.js → BrainSignals-DrfYSNjR.js} +1 -1
  28. package/static/app/assets/{Capture-DGdIH_Zc.js → Capture-BsO_OAeh.js} +1 -1
  29. package/static/app/assets/{Chronicle-C-UlCJoJ.js → Chronicle-BUj_UH3D.js} +1 -1
  30. package/static/app/assets/{CommandPalette-WNT4EqUX.js → CommandPalette-B4SWOaR-.js} +1 -1
  31. package/static/app/assets/{DigitalBrainExplorer-CEBH5Cwc.js → DigitalBrainExplorer-S1GSsyIT.js} +1 -1
  32. package/static/app/assets/{Library-C6xd1dlf.js → Library-CKUR2eVb.js} +1 -1
  33. package/static/app/assets/{LivingBrain-BEk-0ohw.js → LivingBrain--2UoV3Ki.js} +1 -1
  34. package/static/app/assets/{ProductFlow-CZLm5iXh.js → ProductFlow-D7rB6Xsu.js} +1 -1
  35. package/static/app/assets/{ReviewCard-CEHG6evf.js → ReviewCard-UzQZ1ULT.js} +1 -1
  36. package/static/app/assets/{RunsListPanel-CLtEJSRW.js → RunsListPanel-CDGFQYMo.js} +1 -1
  37. package/static/app/assets/{System-CAxwBUXw.js → System-0OSxZrTp.js} +1 -1
  38. package/static/app/assets/{WorkflowGraph-Dj10RuGE.js → WorkflowGraph-BIcWZTUQ.js} +1 -1
  39. package/static/app/assets/{WorkflowsPanel-Kyeh_LIT.js → WorkflowsPanel-BeT5fmbk.js} +2 -2
  40. package/static/app/assets/{actHelpers-CtSmK9Dw.js → actHelpers-DhutJObL.js} +1 -1
  41. package/static/app/assets/arrow-left-BwJfcH8J.js +1 -0
  42. package/static/app/assets/{bot-DhUGRel2.js → bot-D8tZzKMD.js} +1 -1
  43. package/static/app/assets/{brain-CLkhHsHF.js → brain-DP2JPXSV.js} +1 -1
  44. package/static/app/assets/{button-CmaEqG1T.js → button-Tzf5D7L1.js} +1 -1
  45. package/static/app/assets/circle-check-D68nHcgS.js +1 -0
  46. package/static/app/assets/{circle-pause-l96izbxj.js → circle-pause-Druue_tZ.js} +1 -1
  47. package/static/app/assets/{circle-play-CrZa25_q.js → circle-play-BAht4SSW.js} +1 -1
  48. package/static/app/assets/{cpu-BaXudqwl.js → cpu-BPbmZRPp.js} +1 -1
  49. package/static/app/assets/{download-hCVFPiyc.js → download-BmxPZEwU.js} +1 -1
  50. package/static/app/assets/{folder-open-CHL82Yp7.js → folder-open-DokOmFQJ.js} +1 -1
  51. package/static/app/assets/{hard-drive-DDzET7lk.js → hard-drive-Cw6aEA2h.js} +1 -1
  52. package/static/app/assets/{index-D2H-wSl6.js → index-DhszK7A3.js} +3 -3
  53. package/static/app/assets/{input-Df1CAY_I.js → input-BCdHoZXA.js} +1 -1
  54. package/static/app/assets/{link-2-xNnTIX1_.js → link-2-CCModn4z.js} +1 -1
  55. package/static/app/assets/{permissionCopy-D3aWHco-.js → permissionCopy-BSp1jYG7.js} +1 -1
  56. package/static/app/assets/{primitives-BioD2slS.js → primitives-D01WcJn7.js} +1 -1
  57. package/static/app/assets/search-C_zAGfvO.js +1 -0
  58. package/static/app/assets/{share-2-FkzGf8Df.js → share-2-DMMkM8Iu.js} +1 -1
  59. package/static/app/assets/{shield-alert-B3dwzik4.js → shield-alert--mrCWQko.js} +1 -1
  60. package/static/app/assets/{sourceMeta-DQSY_tah.js → sourceMeta-nvd3Cdz3.js} +1 -1
  61. package/static/app/assets/{textarea-P8o6pvOP.js → textarea-DfayhQiX.js} +1 -1
  62. package/static/app/assets/{useFocusTrap-hswOIkXE.js → useFocusTrap-C5NsTvsI.js} +1 -1
  63. package/static/app/assets/{useMutation-OJLrYSRA.js → useMutation-D7IMQTeI.js} +1 -1
  64. package/static/app/assets/{workspace-BCuk3Ku9.js → workspace-C7xidB7c.js} +1 -1
  65. package/static/app/index.html +1 -1
  66. package/static/sw.js +1 -1
  67. package/static/app/assets/arrow-left-CRl5EO4D.js +0 -1
  68. package/static/app/assets/circle-check-CFgejkOS.js +0 -1
  69. package/static/app/assets/search-BzBw8YcW.js +0 -1
@@ -1,55 +1,55 @@
1
1
  {
2
- "version": "12.0.0",
2
+ "version": "12.1.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
- "app": "/static/app/assets/index-D2H-wSl6.js"
5
+ "app": "/static/app/assets/index-DhszK7A3.js"
6
6
  },
7
7
  "assets": {
8
8
  "../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
9
- "_BrainSignals-CQPPfyyH.js": "/static/app/assets/BrainSignals-CQPPfyyH.js",
10
- "_LivingBrain-BEk-0ohw.js": "/static/app/assets/LivingBrain-BEk-0ohw.js",
9
+ "_BrainSignals-DrfYSNjR.js": "/static/app/assets/BrainSignals-DrfYSNjR.js",
10
+ "_LivingBrain--2UoV3Ki.js": "/static/app/assets/LivingBrain--2UoV3Ki.js",
11
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",
12
+ "_ReviewCard-UzQZ1ULT.js": "/static/app/assets/ReviewCard-UzQZ1ULT.js",
13
+ "_actHelpers-DhutJObL.js": "/static/app/assets/actHelpers-DhutJObL.js",
14
+ "_arrow-left-BwJfcH8J.js": "/static/app/assets/arrow-left-BwJfcH8J.js",
15
+ "_bot-D8tZzKMD.js": "/static/app/assets/bot-D8tZzKMD.js",
16
+ "_brain-DP2JPXSV.js": "/static/app/assets/brain-DP2JPXSV.js",
17
+ "_button-Tzf5D7L1.js": "/static/app/assets/button-Tzf5D7L1.js",
18
+ "_circle-check-D68nHcgS.js": "/static/app/assets/circle-check-D68nHcgS.js",
19
+ "_circle-pause-Druue_tZ.js": "/static/app/assets/circle-pause-Druue_tZ.js",
20
+ "_circle-play-BAht4SSW.js": "/static/app/assets/circle-play-BAht4SSW.js",
21
+ "_cpu-BPbmZRPp.js": "/static/app/assets/cpu-BPbmZRPp.js",
22
+ "_download-BmxPZEwU.js": "/static/app/assets/download-BmxPZEwU.js",
23
+ "_folder-open-DokOmFQJ.js": "/static/app/assets/folder-open-DokOmFQJ.js",
24
+ "_hard-drive-Cw6aEA2h.js": "/static/app/assets/hard-drive-Cw6aEA2h.js",
25
+ "_input-BCdHoZXA.js": "/static/app/assets/input-BCdHoZXA.js",
26
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",
27
+ "_link-2-CCModn4z.js": "/static/app/assets/link-2-CCModn4z.js",
28
+ "_permissionCopy-BSp1jYG7.js": "/static/app/assets/permissionCopy-BSp1jYG7.js",
29
+ "_primitives-D01WcJn7.js": "/static/app/assets/primitives-D01WcJn7.js",
30
+ "_search-C_zAGfvO.js": "/static/app/assets/search-C_zAGfvO.js",
31
+ "_share-2-DMMkM8Iu.js": "/static/app/assets/share-2-DMMkM8Iu.js",
32
+ "_shield-alert--mrCWQko.js": "/static/app/assets/shield-alert--mrCWQko.js",
33
+ "_sourceMeta-nvd3Cdz3.js": "/static/app/assets/sourceMeta-nvd3Cdz3.js",
34
+ "_textarea-DfayhQiX.js": "/static/app/assets/textarea-DfayhQiX.js",
35
+ "_useFocusTrap-C5NsTvsI.js": "/static/app/assets/useFocusTrap-C5NsTvsI.js",
36
+ "_useMutation-D7IMQTeI.js": "/static/app/assets/useMutation-D7IMQTeI.js",
37
+ "_workspace-C7xidB7c.js": "/static/app/assets/workspace-C7xidB7c.js",
38
+ "index.html": "/static/app/assets/index-DhszK7A3.js",
39
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"
40
+ "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-D7rB6Xsu.js",
41
+ "src/features/act/RunsListPanel.tsx": "/static/app/assets/RunsListPanel-CDGFQYMo.js",
42
+ "src/features/act/WorkflowGraph.tsx": "/static/app/assets/WorkflowGraph-BIcWZTUQ.js",
43
+ "src/features/act/WorkflowsPanel.tsx": "/static/app/assets/WorkflowsPanel-BeT5fmbk.js",
44
+ "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole-BFBj6OvN.js",
45
+ "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-IhcEPC3v.js",
46
+ "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-B4SWOaR-.js",
47
+ "src/pages/Act.tsx": "/static/app/assets/Act-DCRUH46a.js",
48
+ "src/pages/Brain.tsx": "/static/app/assets/Brain-BXcoxIvb.js",
49
+ "src/pages/Capture.tsx": "/static/app/assets/Capture-BsO_OAeh.js",
50
+ "src/pages/Chronicle.tsx": "/static/app/assets/Chronicle-BUj_UH3D.js",
51
+ "src/pages/Library.tsx": "/static/app/assets/Library-CKUR2eVb.js",
52
+ "src/pages/System.tsx": "/static/app/assets/System-0OSxZrTp.js",
53
+ "src/pages/brain/DigitalBrainExplorer.tsx": "/static/app/assets/DigitalBrainExplorer-S1GSsyIT.js"
54
54
  }
55
55
  }
@@ -1,2 +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};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunsListPanel-CDGFQYMo.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-DhszK7A3.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-CB93CZWW.css","assets/primitives-D01WcJn7.js","assets/button-Tzf5D7L1.js","assets/useMutation-D7IMQTeI.js","assets/circle-check-D68nHcgS.js","assets/actHelpers-DhutJObL.js","assets/circle-play-BAht4SSW.js","assets/workspace-C7xidB7c.js","assets/WorkflowsPanel-BeT5fmbk.js","assets/input-BCdHoZXA.js","assets/textarea-DfayhQiX.js","assets/folder-open-DokOmFQJ.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-D7IMQTeI.js";import{t as a}from"./bot-D8tZzKMD.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-D01WcJn7.js";import{t as x}from"./circle-pause-Druue_tZ.js";import{a as S,i as C,n as w,r as T}from"./ReviewCard-UzQZ1ULT.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-DhszK7A3.js";import{t as I}from"./button-Tzf5D7L1.js";import{t as L}from"./input-BCdHoZXA.js";import"./workspace-C7xidB7c.js";import{t as R}from"./textarea-DfayhQiX.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-CDGFQYMo.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-BeT5fmbk.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};
@@ -1 +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};
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-D7IMQTeI.js";import{t as a}from"./arrow-left-BwJfcH8J.js";import{t as o}from"./search-C_zAGfvO.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-DhszK7A3.js";import{t as v}from"./button-Tzf5D7L1.js";import"./workspace-C7xidB7c.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};
@@ -1,2 +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};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DigitalBrainExplorer-S1GSsyIT.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-DhszK7A3.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-CB93CZWW.css","assets/primitives-D01WcJn7.js","assets/button-Tzf5D7L1.js","assets/useMutation-D7IMQTeI.js","assets/circle-check-D68nHcgS.js","assets/input-BCdHoZXA.js","assets/brain-DP2JPXSV.js","assets/sourceMeta-nvd3Cdz3.js","assets/search-C_zAGfvO.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-D7IMQTeI.js";import{t as a}from"./arrow-left-BwJfcH8J.js";import{O as o,i as s,k as c,r as l}from"./BrainSignals-DrfYSNjR.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-D01WcJn7.js";import{t as T}from"./search-C_zAGfvO.js";import{t as E}from"./share-2-DMMkM8Iu.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-DhszK7A3.js";import"./brain-DP2JPXSV.js";import{t as L}from"./button-Tzf5D7L1.js";import{t as R}from"./input-BCdHoZXA.js";import"./workspace-C7xidB7c.js";import{t as z}from"./textarea-DfayhQiX.js";import{i as B,o as V,r as H}from"./sourceMeta-nvd3Cdz3.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-S1GSsyIT.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};