dsh-mnemon 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.en.md +31 -2
  2. package/README.md +31 -2
  3. package/SECURITY.md +89 -0
  4. package/docs/en/README.md +1 -0
  5. package/docs/en/configuration.md +6 -1
  6. package/docs/en/getting-started.md +19 -3
  7. package/docs/en/interfaces.md +12 -0
  8. package/docs/en/operations.md +6 -2
  9. package/docs/zh-CN/README.md +1 -0
  10. package/docs/zh-CN/configuration.md +6 -1
  11. package/docs/zh-CN/getting-started.md +19 -3
  12. package/docs/zh-CN/interfaces.md +12 -0
  13. package/docs/zh-CN/operations.md +6 -2
  14. package/lib/client.js +2164 -624
  15. package/lib/client.js.map +1 -1
  16. package/lib/index.js +3608 -2457
  17. package/lib/types/activity.d.ts +32 -0
  18. package/lib/types/activity.d.ts.map +1 -0
  19. package/lib/types/activity.js +93 -0
  20. package/lib/types/activity.js.map +1 -0
  21. package/lib/types/client/MnemonPackSection.d.ts +11 -0
  22. package/lib/types/client/MnemonPackSection.d.ts.map +1 -0
  23. package/lib/types/client/MnemonPackSection.js +136 -0
  24. package/lib/types/client/MnemonPackSection.js.map +1 -0
  25. package/lib/types/client/MnemonSaveAction.d.ts +13 -0
  26. package/lib/types/client/MnemonSaveAction.d.ts.map +1 -0
  27. package/lib/types/client/MnemonSaveAction.js +141 -0
  28. package/lib/types/client/MnemonSaveAction.js.map +1 -0
  29. package/lib/types/client/MnemonSettingsCard.d.ts +11 -3
  30. package/lib/types/client/MnemonSettingsCard.d.ts.map +1 -1
  31. package/lib/types/client/MnemonSettingsCard.js +112 -48
  32. package/lib/types/client/MnemonSettingsCard.js.map +1 -1
  33. package/lib/types/client/MnemonToolviews.d.ts +19 -0
  34. package/lib/types/client/MnemonToolviews.d.ts.map +1 -0
  35. package/lib/types/client/MnemonToolviews.js +172 -0
  36. package/lib/types/client/MnemonToolviews.js.map +1 -0
  37. package/lib/types/client/MnemonTurnTail.d.ts +18 -0
  38. package/lib/types/client/MnemonTurnTail.d.ts.map +1 -0
  39. package/lib/types/client/MnemonTurnTail.js +44 -0
  40. package/lib/types/client/MnemonTurnTail.js.map +1 -0
  41. package/lib/types/client/MnemonView.d.ts.map +1 -1
  42. package/lib/types/client/MnemonView.js +19 -8
  43. package/lib/types/client/MnemonView.js.map +1 -1
  44. package/lib/types/client/anchor.d.ts +28 -0
  45. package/lib/types/client/anchor.d.ts.map +1 -0
  46. package/lib/types/client/anchor.js +46 -0
  47. package/lib/types/client/anchor.js.map +1 -0
  48. package/lib/types/client/api.d.ts +14 -1
  49. package/lib/types/client/api.d.ts.map +1 -1
  50. package/lib/types/client/api.js +56 -3
  51. package/lib/types/client/api.js.map +1 -1
  52. package/lib/types/client/dsh-compat.d.ts +21 -0
  53. package/lib/types/client/dsh-compat.d.ts.map +1 -0
  54. package/lib/types/client/dsh-compat.js +2 -0
  55. package/lib/types/client/dsh-compat.js.map +1 -0
  56. package/lib/types/client/index.d.ts.map +1 -1
  57. package/lib/types/client/index.js +131 -16
  58. package/lib/types/client/index.js.map +1 -1
  59. package/lib/types/client/locales.d.ts +252 -4
  60. package/lib/types/client/locales.d.ts.map +1 -1
  61. package/lib/types/client/locales.js +268 -20
  62. package/lib/types/client/locales.js.map +1 -1
  63. package/lib/types/client/settings.d.ts +10 -5
  64. package/lib/types/client/settings.d.ts.map +1 -1
  65. package/lib/types/client/settings.js +32 -11
  66. package/lib/types/client/settings.js.map +1 -1
  67. package/lib/types/config.d.ts +37 -1
  68. package/lib/types/config.d.ts.map +1 -1
  69. package/lib/types/config.js +78 -6
  70. package/lib/types/config.js.map +1 -1
  71. package/lib/types/contracts.d.ts +17 -38
  72. package/lib/types/contracts.d.ts.map +1 -1
  73. package/lib/types/guidance.d.ts +2 -1
  74. package/lib/types/guidance.d.ts.map +1 -1
  75. package/lib/types/guidance.js +6 -2
  76. package/lib/types/guidance.js.map +1 -1
  77. package/lib/types/index.d.ts +4 -2
  78. package/lib/types/index.d.ts.map +1 -1
  79. package/lib/types/index.js +27 -18
  80. package/lib/types/index.js.map +1 -1
  81. package/lib/types/lifecycle.d.ts +14 -1
  82. package/lib/types/lifecycle.d.ts.map +1 -1
  83. package/lib/types/lifecycle.js +81 -12
  84. package/lib/types/lifecycle.js.map +1 -1
  85. package/lib/types/live-runtime.d.ts +42 -0
  86. package/lib/types/live-runtime.d.ts.map +1 -0
  87. package/lib/types/live-runtime.js +76 -0
  88. package/lib/types/live-runtime.js.map +1 -0
  89. package/lib/types/memory-bodies.d.ts +2 -0
  90. package/lib/types/memory-bodies.d.ts.map +1 -1
  91. package/lib/types/memory-bodies.js +29 -10
  92. package/lib/types/memory-bodies.js.map +1 -1
  93. package/lib/types/pack.d.ts +74 -0
  94. package/lib/types/pack.d.ts.map +1 -0
  95. package/lib/types/pack.js +709 -0
  96. package/lib/types/pack.js.map +1 -0
  97. package/lib/types/rpc.d.ts +5 -1
  98. package/lib/types/rpc.d.ts.map +1 -1
  99. package/lib/types/rpc.js +47 -5
  100. package/lib/types/rpc.js.map +1 -1
  101. package/lib/types/runner.d.ts +2 -0
  102. package/lib/types/runner.d.ts.map +1 -1
  103. package/lib/types/runner.js +5 -0
  104. package/lib/types/runner.js.map +1 -1
  105. package/lib/types/settings.d.ts +1 -0
  106. package/lib/types/settings.d.ts.map +1 -1
  107. package/lib/types/settings.js +45 -16
  108. package/lib/types/settings.js.map +1 -1
  109. package/lib/types/tools.js +4 -2
  110. package/lib/types/tools.js.map +1 -1
  111. package/package.json +23 -12
package/lib/client.js CHANGED
@@ -29,38 +29,56 @@ window.__ModuleLoader__.load({
29
29
  let react = require("react");
30
30
  react = __toESM(react, 1);
31
31
  let react_jsx_runtime = require("react/jsx-runtime");
32
- //#region \0dsh-mnemon-css:/root/github.com/omdsh-dev/dsh-mnemon/src/client/MnemonSettingsCard.module.css.mjs
33
- const css$1 = ".SqmQ5W_card{box-sizing:border-box;width:100%;max-width:720px;color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3,var(--dsw-alias-bg-layer-1));border-radius:12px;overflow:clip}.SqmQ5W_panelHeader{box-sizing:border-box;align-items:flex-start;gap:20px;min-height:76px;padding:16px;display:flex}.SqmQ5W_headerCopy{flex:1;min-width:0}.SqmQ5W_panelHeader h3{margin:0;font-size:15px;font-weight:600;line-height:22px}.SqmQ5W_panelHeader p{max-width:60ch;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:2px 0 0;font-size:12px;line-height:18px}.SqmQ5W_status{background:var(--dsw-alias-bg-layer-2);min-height:22px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:999px;flex:none;align-items:center;margin-top:1px;padding:0 8px;font-size:11px;font-weight:500;line-height:18px;display:inline-flex}.SqmQ5W_statusDirty{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-label-primary));background:var(--dsw-alias-interactive-bg-hover)}.SqmQ5W_body{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:16px;padding:16px;display:flex}.SqmQ5W_notice{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);overflow-wrap:anywhere;border-radius:8px;margin:0;padding:10px 12px;font-size:12px;line-height:18px}.SqmQ5W_notice code{font-family:var(--dsw-font-family-mono,var(--ds-font-family-code,monospace));font-size:.95em}.SqmQ5W_loading{min-height:48px;color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:12px;line-height:48px}.SqmQ5W_primarySettings{gap:16px;width:100%;max-width:660px;display:grid}.SqmQ5W_field{gap:6px;min-width:0;display:grid}.SqmQ5W_fieldHeading{align-items:center;gap:6px;min-height:20px;display:flex}.SqmQ5W_fieldTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:500;line-height:18px}.SqmQ5W_overridden{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;flex:none;padding:1px 6px;font-size:10px;font-style:normal;font-weight:400;line-height:16px}.SqmQ5W_reset{color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;flex:none;margin-left:auto;padding:2px 0;font-size:11px;line-height:16px}.SqmQ5W_reset:hover{color:var(--dsw-alias-label-primary)}.SqmQ5W_reset:disabled{cursor:not-allowed;opacity:.5}.SqmQ5W_field input,.SqmQ5W_field select{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;height:38px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-2));font:inherit;border-radius:8px;outline:0;padding:0 10px;font-size:12px;transition:border-color .12s,box-shadow .12s,background-color .12s}.SqmQ5W_field input{font-family:var(--dsw-font-family-mono,var(--ds-font-family-code,monospace))}.SqmQ5W_field input:focus,.SqmQ5W_field select:focus{border-color:var(--dsw-alias-state-business-primary);box-shadow:0 0 0 2px var(--dsw-alias-interactive-bg-hover)}.SqmQ5W_field input[aria-invalid=true]{border-color:var(--dsw-alias-state-error-primary)}.SqmQ5W_field input:disabled,.SqmQ5W_field select:disabled{cursor:not-allowed;opacity:.55}.SqmQ5W_fieldHint{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin:0;font-size:11px;line-height:16px}.SqmQ5W_feedback:empty{display:none}.SqmQ5W_error,.SqmQ5W_readOnly{background:var(--dsw-alias-bg-layer-2);overflow-wrap:anywhere;border-radius:7px;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.SqmQ5W_error{color:var(--dsw-alias-state-error-primary)}.SqmQ5W_readOnly{color:var(--dsw-alias-label-tertiary)}.SqmQ5W_feedback{gap:6px;display:grid}.SqmQ5W_actions{justify-content:flex-end;gap:8px;padding-top:2px;display:flex}.SqmQ5W_actions button{cursor:pointer;min-width:88px;min-height:34px;font:inherit;touch-action:manipulation;border-radius:999px;padding:7px 14px;font-size:12px;font-weight:500;line-height:18px;transition:background-color .12s,border-color .12s,color .12s,opacity .12s}.SqmQ5W_actions button:disabled{cursor:not-allowed;opacity:.5}.SqmQ5W_actions button:focus-visible,.SqmQ5W_reset:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.SqmQ5W_discard{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3,transparent);border:1px solid var(--dsw-alias-border-l2)}.SqmQ5W_discard:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid,var(--dsw-alias-interactive-bg-hover))}.SqmQ5W_save{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,var(--dsw-alias-state-business-primary));border:1px solid #0000}.SqmQ5W_save:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover,var(--dsw-alias-state-business-primary))}@media (width<=560px){.SqmQ5W_body{padding:14px}.SqmQ5W_panelHeader{flex-direction:column;gap:8px;padding:14px}.SqmQ5W_status{margin-top:0}.SqmQ5W_field input,.SqmQ5W_field select{height:40px}.SqmQ5W_actions button{flex:1}}@media (width<=360px){.SqmQ5W_actions{flex-direction:column-reverse}.SqmQ5W_fieldHeading{flex-wrap:wrap}.SqmQ5W_reset{margin-left:0}}@media (prefers-reduced-motion:reduce){.SqmQ5W_field input,.SqmQ5W_field select,.SqmQ5W_actions button{transition:none}}";
34
- const tagId$1 = "dsh-mnemon/MnemonSettingsCard.module.css";
35
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
32
+ //#region src/settings.ts
33
+ const MNEMON_SETTINGS_CHANNEL = "/dsh-mnemon-settings";
34
+ const MNEMON_SETTINGS_NAMESPACE = "mnemon";
35
+ const MNEMON_UI_SETTINGS_NAMESPACE = "mnemon-ui";
36
+ //#endregion
37
+ //#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonSettingsCard.module.css.mjs
38
+ const css$4 = ".mNPJPq_page{box-sizing:border-box;width:100%;min-width:0;max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:28px;padding-bottom:28px;font-family:inherit;display:flex}.mNPJPq_page *,.mNPJPq_page :before,.mNPJPq_page :after{box-sizing:border-box}.mNPJPq_page button,.mNPJPq_page input{color:inherit;font:inherit}.mNPJPq_loading{min-height:140px;color:var(--dsw-alias-label-tertiary);text-align:center;margin:0;font-size:13px;line-height:140px}.mNPJPq_pageHeader h1{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.mNPJPq_pageHeader p{max-width:64ch;color:var(--dsw-alias-label-tertiary);margin:8px 0 0;font-size:14px;line-height:22px}.mNPJPq_section{flex-direction:column;gap:12px;min-width:0;display:flex}.mNPJPq_sectionHeading{justify-content:space-between;align-items:flex-start;gap:18px;min-width:0;display:flex}.mNPJPq_sectionHeading>div{flex:1;min-width:0}.mNPJPq_sectionHeading h2{color:var(--dsw-alias-label-primary);margin:0;font-size:14px;font-weight:500;line-height:22px}.mNPJPq_sectionHeading p{max-width:66ch;color:var(--dsw-alias-label-tertiary);margin:1px 0 0;font-size:12px;line-height:18px}.mNPJPq_choiceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.mNPJPq_choiceCard{cursor:pointer;min-width:0;display:block}.mNPJPq_choiceCard>input,.mNPJPq_toggleRow>input,.mNPJPq_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mNPJPq_choiceFace{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;flex-direction:column;justify-content:center;gap:1px;min-width:0;min-height:66px;padding:10px 34px 10px 13px;transition:border-color .14s,background-color .14s;display:flex;position:relative}.mNPJPq_choiceFace:hover{background:var(--dsw-alias-interactive-bg-hover)}.mNPJPq_choiceFace strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:21px;overflow:hidden}.mNPJPq_choiceFace small{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:17px;overflow:hidden}.mNPJPq_check{font-size:14px;line-height:18px;display:none;position:absolute;top:11px;right:12px}.mNPJPq_choiceCard>input:checked+.mNPJPq_choiceFace{border-color:var(--dsw-alias-border-l1);background:var(--dsw-alias-interactive-bg-hover)}.mNPJPq_choiceCard>input:checked+.mNPJPq_choiceFace .mNPJPq_check{display:block}.mNPJPq_choiceCard>input:disabled+.mNPJPq_choiceFace{cursor:default;opacity:.42}.mNPJPq_choiceCard:has(input:disabled){cursor:default}.mNPJPq_settingRow,.mNPJPq_toggleRow{border-top:1px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:18px;min-width:0;min-height:62px;padding:11px 0;display:flex}.mNPJPq_settingCopy{flex-direction:column;flex:1;min-width:0;display:flex}.mNPJPq_settingCopy strong{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:21px}.mNPJPq_settingCopy small{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:17px}.mNPJPq_settingCopy code{font-family:var(--ds-font-family-code,ui-monospace, monospace)}.mNPJPq_directoryControl{align-items:center;gap:8px;min-width:0;max-width:60%;display:flex}.mNPJPq_directoryControl code{min-width:0;color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, monospace);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.mNPJPq_rowGroup{border-bottom:1px solid var(--dsw-alias-border-l2)}.mNPJPq_toggleRow{cursor:pointer}.mNPJPq_toggleRow:first-child{border-top:1px solid var(--dsw-alias-border-l2)}.mNPJPq_toggleRow:has(input:disabled){cursor:default;opacity:.46}.mNPJPq_switch{background:var(--dsw-alias-bg-layer-2);width:40px;height:24px;box-shadow:inset 0 0 0 1px var(--dsw-alias-border-l2);border-radius:999px;flex:none;transition:background-color .14s;display:block;position:relative}.mNPJPq_switch i{background:var(--dsw-alias-bg-layer-3);width:18px;height:18px;box-shadow:0 1px 3px color-mix(in srgb, var(--dsw-alias-label-primary) 22%, transparent);border-radius:50%;transition:transform .14s;position:absolute;top:3px;left:3px}.mNPJPq_toggleRow>input:checked+.mNPJPq_switch{background:var(--dsw-alias-label-primary);box-shadow:none}.mNPJPq_toggleRow>input:checked+.mNPJPq_switch i{transform:translate(16px)}.mNPJPq_pillButton,.mNPJPq_primaryPill,.mNPJPq_actions button{appearance:none;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:36px;color:var(--dsw-alias-label-primary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.mNPJPq_pillButton:hover:not(:disabled),.mNPJPq_actions button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.mNPJPq_pillButton:disabled,.mNPJPq_primaryPill:disabled,.mNPJPq_actions button:disabled,.mNPJPq_textButton:disabled{cursor:default;opacity:.4}.mNPJPq_primaryPill,.mNPJPq_save{color:var(--dsw-alias-label-primary-foreground)!important;background:var(--dsw-alias-button-primary-fill)!important;border-color:#0000!important}.mNPJPq_primaryPill:hover:not(:disabled),.mNPJPq_save:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)!important}.mNPJPq_textButton{appearance:none;box-sizing:border-box;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:14px;flex:none;justify-content:center;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.mNPJPq_textButton:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.mNPJPq_activePath{width:fit-content;max-width:100%;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:11px;line-height:17px;overflow:hidden}.mNPJPq_scopeMeta{color:var(--dsw-alias-label-tertiary);margin-top:1px;font-size:10px;font-style:normal;line-height:15px}.mNPJPq_rowActions{flex:none;align-items:center;gap:8px;display:flex}.mNPJPq_importBar{background:var(--dsw-alias-bg-layer-2);border-radius:12px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:grid}.mNPJPq_importBar>div{min-width:0;display:grid}.mNPJPq_importBar strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;line-height:18px;overflow:hidden}.mNPJPq_importBar small{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:15px}.mNPJPq_importBar .mNPJPq_textButton{padding:0 10px}.mNPJPq_feedback,.mNPJPq_packFeedback{gap:4px;display:grid}.mNPJPq_feedback:empty,.mNPJPq_packFeedback:empty{display:none}.mNPJPq_feedback p,.mNPJPq_packFeedback p{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.mNPJPq_error{color:var(--dsw-alias-state-error-primary)}.mNPJPq_success{color:var(--dsw-alias-state-success-primary)}.mNPJPq_readOnly{color:var(--dsw-alias-label-tertiary)}.mNPJPq_packSuccess{color:var(--dsw-alias-state-success-primary)}.mNPJPq_actions{display:none}.mNPJPq_actionsVisible{border-top:1px solid var(--dsw-alias-border-l2);justify-content:space-between;align-items:center;gap:16px;padding-top:14px;display:flex}.mNPJPq_actions>span{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.mNPJPq_actions>div{gap:8px;display:flex}.mNPJPq_discard{color:var(--dsw-alias-label-primary);background:0 0;border-color:var(--dsw-alias-border-l2)!important}.mNPJPq_settingsNote{color:var(--dsw-alias-label-tertiary);margin:-14px 0 0;font-size:10px;line-height:16px}.mNPJPq_settingsNote code{color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, monospace)}.mNPJPq_choiceCard>input:focus-visible+.mNPJPq_choiceFace,.mNPJPq_toggleRow>input:focus-visible+.mNPJPq_switch,.mNPJPq_pillButton:focus-visible,.mNPJPq_primaryPill:focus-visible,.mNPJPq_textButton:focus-visible,.mNPJPq_actions button:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}@media (width<=620px){.mNPJPq_page{gap:24px}.mNPJPq_choiceGrid{grid-template-columns:minmax(0,1fr)}.mNPJPq_settingRow{flex-direction:column;align-items:stretch;gap:9px}.mNPJPq_directoryControl{justify-content:space-between;max-width:none}.mNPJPq_rowActions{width:100%}.mNPJPq_rowActions button{flex:1}.mNPJPq_importBar{grid-template-columns:minmax(0,1fr) auto}.mNPJPq_importBar .mNPJPq_primaryPill{grid-column:1/-1}.mNPJPq_actionsVisible{flex-direction:column;align-items:stretch}.mNPJPq_actions>div,.mNPJPq_actions button{flex:1}}@media (prefers-reduced-motion:reduce){.mNPJPq_choiceFace,.mNPJPq_switch,.mNPJPq_switch i{transition:none}}";
39
+ const tagId$4 = "dsh-mnemon/MnemonSettingsCard.module.css";
40
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
36
41
  const tag = document.createElement("style");
37
42
  tag.dataset.plugin = "dsh-mnemon";
38
- tag.dataset.pluginCss = tagId$1;
39
- tag.textContent = css$1;
43
+ tag.dataset.pluginCss = tagId$4;
44
+ tag.textContent = css$4;
40
45
  document.head.appendChild(tag);
41
46
  }
42
47
  var MnemonSettingsCard_module_css_default = {
43
- "loading": "SqmQ5W_loading",
44
- "discard": "SqmQ5W_discard",
45
- "feedback": "SqmQ5W_feedback",
46
- "fieldTitle": "SqmQ5W_fieldTitle",
47
- "fieldHint": "SqmQ5W_fieldHint",
48
- "primarySettings": "SqmQ5W_primarySettings",
49
- "reset": "SqmQ5W_reset",
50
- "status": "SqmQ5W_status",
51
- "readOnly": "SqmQ5W_readOnly",
52
- "body": "SqmQ5W_body",
53
- "card": "SqmQ5W_card",
54
- "error": "SqmQ5W_error",
55
- "save": "SqmQ5W_save",
56
- "headerCopy": "SqmQ5W_headerCopy",
57
- "statusDirty": "SqmQ5W_statusDirty",
58
- "notice": "SqmQ5W_notice",
59
- "panelHeader": "SqmQ5W_panelHeader",
60
- "field": "SqmQ5W_field",
61
- "fieldHeading": "SqmQ5W_fieldHeading",
62
- "actions": "SqmQ5W_actions",
63
- "overridden": "SqmQ5W_overridden"
48
+ "feedback": "mNPJPq_feedback",
49
+ "discard": "mNPJPq_discard",
50
+ "choiceGrid": "mNPJPq_choiceGrid",
51
+ "choiceCard": "mNPJPq_choiceCard",
52
+ "settingCopy": "mNPJPq_settingCopy",
53
+ "error": "mNPJPq_error",
54
+ "actions": "mNPJPq_actions",
55
+ "success": "mNPJPq_success",
56
+ "pageHeader": "mNPJPq_pageHeader",
57
+ "textButton": "mNPJPq_textButton",
58
+ "settingsNote": "mNPJPq_settingsNote",
59
+ "visuallyHidden": "mNPJPq_visuallyHidden",
60
+ "directoryControl": "mNPJPq_directoryControl",
61
+ "settingRow": "mNPJPq_settingRow",
62
+ "section": "mNPJPq_section",
63
+ "actionsVisible": "mNPJPq_actionsVisible",
64
+ "pillButton": "mNPJPq_pillButton",
65
+ "packSuccess": "mNPJPq_packSuccess",
66
+ "choiceFace": "mNPJPq_choiceFace",
67
+ "toggleRow": "mNPJPq_toggleRow",
68
+ "activePath": "mNPJPq_activePath",
69
+ "scopeMeta": "mNPJPq_scopeMeta",
70
+ "switch": "mNPJPq_switch",
71
+ "save": "mNPJPq_save",
72
+ "rowActions": "mNPJPq_rowActions",
73
+ "rowGroup": "mNPJPq_rowGroup",
74
+ "page": "mNPJPq_page",
75
+ "loading": "mNPJPq_loading",
76
+ "primaryPill": "mNPJPq_primaryPill",
77
+ "importBar": "mNPJPq_importBar",
78
+ "packFeedback": "mNPJPq_packFeedback",
79
+ "sectionHeading": "mNPJPq_sectionHeading",
80
+ "readOnly": "mNPJPq_readOnly",
81
+ "check": "mNPJPq_check"
64
82
  };
65
83
  //#endregion
66
84
  //#region src/client/locales.ts
@@ -296,6 +314,48 @@ window.__ModuleLoader__.load({
296
314
  "card.related": "查看关联",
297
315
  "card.clone": "基于此新建",
298
316
  "card.forget": "忘记",
317
+ "toolview.recallTitle": "记忆召回",
318
+ "toolview.writeTitle": "记忆沉淀",
319
+ "toolview.genericSummary": "Mnemon 工具调用",
320
+ "toolview.running": "处理中…",
321
+ "toolview.recallSummary": "{query} · {count} 条命中",
322
+ "toolview.relatedSummary": "{id} · 关联 {count} 条",
323
+ "toolview.documentSearchSummary": "{query} · {count} 份档案命中",
324
+ "toolview.statusHealthy": "Mnemon 引擎正常",
325
+ "toolview.statusUnhealthy": "Mnemon 引擎异常",
326
+ "toolview.bodiesSummary": "{count} 个记忆体 · {active} 个激活",
327
+ "toolview.runtimeSummary": "{action} {target} 热记忆",
328
+ "toolview.runtimeSummaryWithContent": "{action} {target} 热记忆 · {content}",
329
+ "toolview.documentManageSummary": "{action} 项目档案",
330
+ "toolview.documentManageSummaryWithTitle": "{action} 项目档案 · {title}",
331
+ "toolview.bodyUpdateSummary": "更新记忆体 {id}",
332
+ "toolview.bodyMergeSummary": "合并到 {target} · {count} 个来源",
333
+ "toolview.openView": "在记忆视图中打开",
334
+ "toolview.inspect": "查看轨迹",
335
+ "toolview.args": "参数",
336
+ "toolview.result": "结果",
337
+ "toolview.noResult": "尚无结果",
338
+ "turnTail.label": "本回合记忆",
339
+ "turnTail.recall": "召回 {count}",
340
+ "turnTail.write": "沉淀 {count}",
341
+ "turnTail.documents": "档案检索 {count}",
342
+ "turnTail.inspect": "检查 {count}",
343
+ "turnTail.failed": "失败 {count}",
344
+ "turnTail.toolList": "本回合记忆工具",
345
+ "turnTail.openView": "打开记忆视图",
346
+ "saveAction.button": "存入记忆",
347
+ "saveAction.title": "将这条回复交给记忆子 Agent",
348
+ "saveAction.hint": "子 Agent 会判断是否值得沉淀,并查重、提炼、选择记忆体后写入;不会挤占主对话上下文。",
349
+ "saveAction.fetching": "提取消息文本…",
350
+ "saveAction.missing": "无法从会话记录提取这条消息的文本。",
351
+ "saveAction.candidate": "候选内容(可编辑)",
352
+ "saveAction.truncated": "原回复较长,这里仅载入前 {limit} 个字符。",
353
+ "saveAction.submit": "交给记忆子 Agent 判断",
354
+ "saveAction.submitting": "调度中…",
355
+ "saveAction.result": "记忆子 Agent:{summary}",
356
+ "saveAction.failed": "调度失败:{error}",
357
+ "saveAction.readOnly": "当前部署为只读模式,无法写入记忆。",
358
+ "saveAction.close": "收起",
299
359
  "search.title": "检索记忆",
300
360
  "search.description": "直连 Mnemon 检索原始证据;需要时可让 Agent 只基于命中内容生成答案。",
301
361
  "search.maxResults": "最多 {count} 条",
@@ -340,7 +400,7 @@ window.__ModuleLoader__.load({
340
400
  "remember.description": "候选内容会进入隔离的记忆子 Agent,由它选择记忆体、查重、提炼并执行写入,不占用主对话上下文。",
341
401
  "remember.worker": "记忆子 Agent",
342
402
  "remember.readOnlyTitle": "当前为只读模式",
343
- "remember.readOnlyText": "当前部署禁止记忆写入;如需调整,请修改 DSH 的 Mnemon 配置并重启。",
403
+ "remember.readOnlyText": "当前部署禁止记忆写入;如需调整,请修改 DSH 的 Mnemon 配置并保存。",
344
404
  "remember.flowTitle": "记忆子 Agent 会完成什么",
345
405
  "remember.routeTitle": "判断归属",
346
406
  "remember.routeText": "选择既有记忆体,必要时判断是否形成新范围",
@@ -502,7 +562,7 @@ window.__ModuleLoader__.load({
502
562
  "status.storageDocumentsDetail": "{active} 份活跃 · {archived} 份归档",
503
563
  "status.storageStateReady": "审阅水位已经持久化",
504
564
  "status.storageStateVolatile": "当前审阅状态仍由 Host 进程维护",
505
- "status.storageFootnote": "当前实际读写根:{root}。存储范围只在 DSH「设置 → 插件配置 → Mnemon」中修改,重启后生效;插件不会自动迁移、合并或删除旧内容。",
565
+ "status.storageFootnote": "当前实际读写根:{root}。存储范围只在 DSH「设置 → 记忆系统」中修改,保存后实时生效;插件不会自动迁移、合并或删除旧内容。",
506
566
  "status.flowTitle": "记忆系统流转",
507
567
  "status.flowDescription": "按真实执行边界展开每轮注入、确定性文件控制、语义 worker、CLI 数据面、归档与 fork 审查。",
508
568
  "status.flowLive": "实时状态",
@@ -563,21 +623,45 @@ window.__ModuleLoader__.load({
563
623
  "status.flowLegendReady": "可用 / 已就绪",
564
624
  "status.flowLegendRecent": "当前或最近链路",
565
625
  "status.flowLegendBoundary": "虚线表示 LLM 判断边界",
566
- "config.aria": "Mnemon 插件配置",
567
- "config.description": "为运行时记忆、项目档案、记忆体和后台状态选择同一个存储边界。",
626
+ "config.aria": "Mnemon 记忆系统配置",
627
+ "config.tab": "Mnemon",
628
+ "config.title": "记忆系统设置",
629
+ "config.description": "统一配置运行时记忆、项目档案、记忆体和对话界面;点击保存后立即生效。",
568
630
  "config.unsaved": "有未保存修改",
569
- "config.restart": "重启后生效",
631
+ "config.ready": "已保存并实时生效",
570
632
  "config.noticeBefore": "配置写入",
571
- "config.noticeAfter": ",重启 DSH 后应用;切换范围不会自动迁移旧内容。",
633
+ "config.noticeAfter": ";所有设置点击保存后实时生效。切换范围不会自动迁移旧内容。",
634
+ "config.storageTitle": "存储位置",
635
+ "config.storageDescription": "决定 Mnemon 的运行时记忆、项目档案与记忆体保存在哪里;保存后原子切换。",
572
636
  "config.scope": "存储范围",
573
637
  "config.scopeHint": "全局供所有工作区共享;工作区使用 DSH 启动目录;自定义使用指定目录。",
574
638
  "config.scopeAria": "Mnemon 存储范围",
575
639
  "config.global": "全局",
576
640
  "config.workspace": "工作区",
577
- "config.custom": "自定义目录",
641
+ "config.custom": "自定义",
642
+ "config.customHintShort": "选择一个目录",
643
+ "config.customSelected": "已选择目录",
644
+ "config.customPack": "自定义 Pack",
645
+ "config.customPackAria": "选择自定义 Mnemon Pack",
646
+ "config.customPackRequired": "请选择或添加一个自定义 Pack。",
647
+ "config.customDefaultName": "自定义 Pack",
648
+ "config.noCustomPacks": "尚未配置 Pack",
649
+ "config.addPack": "添加 Pack",
650
+ "config.cancelAddPack": "取消添加",
651
+ "config.removePack": "移除",
652
+ "config.customPackNameAria": "新 Pack 名称",
653
+ "config.customPackNamePlaceholder": "例如:项目记忆",
654
+ "config.newPackDirectoryAria": "新 Pack 数据目录",
655
+ "config.confirmAddPack": "加入列表",
578
656
  "config.customDirectory": "自定义目录",
579
- "config.customHint": "必须为绝对路径或以 ~/ 开头;整个 Mnemon 数据域都位于此处。",
657
+ "config.customHint": "整个 Mnemon 数据域都位于此处。",
580
658
  "config.customAria": "Mnemon 自定义数据目录",
659
+ "config.customBrowseHint": "使用 DSH 原生目录选择器,只保存这一个目录。",
660
+ "config.customNotSelected": "尚未选择",
661
+ "config.customBrowse": "浏览…",
662
+ "config.customBrowseAgain": "重新选择",
663
+ "config.customBrowsing": "选择中…",
664
+ "config.customBrowseUnavailable": "当前 DSH 主机未提供原生目录选择器。",
581
665
  "config.invalidScope": "存储范围无效。",
582
666
  "config.customRequired": "选择自定义存储时必须填写数据目录。",
583
667
  "config.customAbsolute": "自定义目录必须是绝对路径或以 ~/ 开头。",
@@ -585,9 +669,67 @@ window.__ModuleLoader__.load({
585
669
  "config.readOnly": "当前部署的插件设置为只读。",
586
670
  "config.discard": "放弃修改",
587
671
  "config.saving": "保存中…",
588
- "config.save": "保存到 settings.yaml",
672
+ "config.save": "保存",
589
673
  "config.overridden": "已覆盖",
590
- "config.reset": "恢复默认"
674
+ "config.interactionTitle": "对话界面",
675
+ "config.interactionLive": "实时生效",
676
+ "config.interactionHint": "保存后实时生效;关闭某项后恢复 DSH 原生呈现。",
677
+ "config.interactionToolviews": "记忆工具卡",
678
+ "config.interactionToolviewsHint": "展示 mnemon_* 工具的状态与摘要",
679
+ "config.interactionTurnBar": "回合记忆条",
680
+ "config.interactionTurnBarHint": "在回合尾部展示召回、沉淀与检索活动",
681
+ "config.interactionSaveAction": "存入记忆按钮",
682
+ "config.interactionSaveActionHint": "在已定稿回复旁提供受监督的记忆沉淀入口",
683
+ "config.interactionOn": "开启",
684
+ "config.packTitle": "备份与迁移",
685
+ "config.packDescription": "整体导出与导入当前生效目录;导入始终落到下方显示的位置。",
686
+ "config.packActiveTarget": "当前生效目录",
687
+ "config.packTargetLoading": "正在读取运行目标…",
688
+ "config.packUnavailable": "当前 DSH 主机不支持 Mnemon ZIP 备份通道。",
689
+ "config.packFull": "整体 Pack",
690
+ "config.packFullHint": "Runtime、Documents 与记忆体",
691
+ "config.packRuntime": "Runtime",
692
+ "config.packRuntimeHint": "热记忆与 USER / MEMORY 投影",
693
+ "config.packDocuments": "Documents",
694
+ "config.packDocumentsHint": "项目文档、归档与索引",
695
+ "config.packMemorySpaces": "记忆体",
696
+ "config.packMemorySpacesHint": "目录清单与 mnemon.db",
697
+ "config.packExport": "导出",
698
+ "config.packImport": "导入",
699
+ "config.packExporting": "导出中…",
700
+ "config.packInspecting": "检查中…",
701
+ "config.packImporting": "导入中…",
702
+ "config.packChooseFile": "选择{component}文件",
703
+ "config.packFormatHint": "统一使用 .mnemonpack(ZIP + manifest + SHA-256);记忆体仍以独立 mnemon.db 保存在包内。",
704
+ "config.packPreviewEyebrow": "导入预览",
705
+ "config.packUnnamed": "未命名 Mnemon Pack",
706
+ "config.packSource": "来源",
707
+ "config.packDestination": "导入到",
708
+ "config.packArchiveSize": "压缩 / 展开",
709
+ "config.packComponents": "选择要导入的组件",
710
+ "config.packComponentSummary": "{items} 项 · {files} 个文件 · {size}",
711
+ "config.packHasData": "目标已有数据",
712
+ "config.packMerge": "安全合并(推荐)",
713
+ "config.packMergeHint": "保留现有内容;冲突项自动去重或生成新 ID。",
714
+ "config.packMergeAction": "合并导入",
715
+ "config.packReplace": "覆盖当前组件?",
716
+ "config.packReplaceHint": "所选组件会被 Pack 内容原子替换;其他组件不受影响。",
717
+ "config.packReplaceAction": "覆盖导入…",
718
+ "config.packConfirmReplace": "确认覆盖",
719
+ "config.packComponentMissing": "这个 Pack 不包含所选组件。",
720
+ "config.packExported": "已导出 {file}({size})。",
721
+ "config.packImported": "已将 {components} 导入 {root}。",
722
+ "config.packFailed": "ZIP 操作失败:{error}",
723
+ "config.packSimpleDescription": "将当前生效目录整体导出为一个 ZIP,或从 ZIP 安全合并恢复。",
724
+ "config.packWholeZip": "当前目录 ZIP",
725
+ "config.packWholeZipHint": "包含 Runtime、Documents 和全部记忆体。",
726
+ "config.packImportZip": "导入 ZIP",
727
+ "config.packExportZip": "导出 ZIP",
728
+ "config.packChooseZip": "选择 Mnemon 备份 ZIP",
729
+ "config.packUnnamedZip": "Mnemon 备份.zip",
730
+ "config.packZipReady": "校验通过 · {components} 个组件 · {items} 项 · {size}",
731
+ "config.packImportZipAction": "安全导入",
732
+ "config.packImportedWhole": "已将 ZIP 安全合并到 {root}。"
591
733
  };
592
734
  const en = {
593
735
  "tab.label": "Memory System",
@@ -820,6 +962,48 @@ window.__ModuleLoader__.load({
820
962
  "card.related": "View related",
821
963
  "card.clone": "Create from this",
822
964
  "card.forget": "Forget",
965
+ "toolview.recallTitle": "Memory recall",
966
+ "toolview.writeTitle": "Memory write",
967
+ "toolview.genericSummary": "Mnemon tool call",
968
+ "toolview.running": "Working…",
969
+ "toolview.recallSummary": "{query} · {count} hits",
970
+ "toolview.relatedSummary": "{id} · {count} related",
971
+ "toolview.documentSearchSummary": "{query} · {count} documents",
972
+ "toolview.statusHealthy": "Mnemon engine healthy",
973
+ "toolview.statusUnhealthy": "Mnemon engine unhealthy",
974
+ "toolview.bodiesSummary": "{count} spaces · {active} active",
975
+ "toolview.runtimeSummary": "{action} {target} hot memory",
976
+ "toolview.runtimeSummaryWithContent": "{action} {target} hot memory · {content}",
977
+ "toolview.documentManageSummary": "{action} project document",
978
+ "toolview.documentManageSummaryWithTitle": "{action} project document · {title}",
979
+ "toolview.bodyUpdateSummary": "Update Memory Space {id}",
980
+ "toolview.bodyMergeSummary": "Merge into {target} · {count} sources",
981
+ "toolview.openView": "Open in Memory view",
982
+ "toolview.inspect": "Inspect",
983
+ "toolview.args": "Arguments",
984
+ "toolview.result": "Result",
985
+ "toolview.noResult": "No result yet",
986
+ "turnTail.label": "Turn memory",
987
+ "turnTail.recall": "recalled {count}",
988
+ "turnTail.write": "wrote {count}",
989
+ "turnTail.documents": "document search {count}",
990
+ "turnTail.inspect": "inspected {count}",
991
+ "turnTail.failed": "failed {count}",
992
+ "turnTail.toolList": "Memory tools this turn",
993
+ "turnTail.openView": "Open Memory view",
994
+ "saveAction.button": "Save to memory",
995
+ "saveAction.title": "Send this reply to the memory subagent",
996
+ "saveAction.hint": "The subagent decides whether it qualifies, then dedupes, distills, chooses a Memory Space, and writes without filling the main conversation context.",
997
+ "saveAction.fetching": "Extracting message text…",
998
+ "saveAction.missing": "Could not extract this message text from the session log.",
999
+ "saveAction.candidate": "Candidate (editable)",
1000
+ "saveAction.truncated": "This reply is long; only the first {limit} characters are loaded here.",
1001
+ "saveAction.submit": "Send to memory subagent",
1002
+ "saveAction.submitting": "Dispatching…",
1003
+ "saveAction.result": "Memory subagent: {summary}",
1004
+ "saveAction.failed": "Dispatch failed: {error}",
1005
+ "saveAction.readOnly": "This deployment is read only; memory writes are disabled.",
1006
+ "saveAction.close": "Collapse",
823
1007
  "search.title": "Recall Memory",
824
1008
  "search.description": "Query raw Mnemon evidence directly, then optionally ask an Agent to answer from those matches only.",
825
1009
  "search.maxResults": "Up to {count} results",
@@ -864,7 +1048,7 @@ window.__ModuleLoader__.load({
864
1048
  "remember.description": "An isolated memory subagent selects a Memory Space, checks duplicates, distills the candidate, and completes the write without filling the main conversation context.",
865
1049
  "remember.worker": "Memory subagent",
866
1050
  "remember.readOnlyTitle": "Read-only mode",
867
- "remember.readOnlyText": "This deployment disables memory writes. Change the DSH Mnemon configuration and restart to enable them.",
1051
+ "remember.readOnlyText": "This deployment disables memory writes. Change and save the DSH Mnemon configuration to enable them.",
868
1052
  "remember.flowTitle": "What the memory subagent does",
869
1053
  "remember.routeTitle": "Choose ownership",
870
1054
  "remember.routeText": "Select an existing Memory Space or recognize a durable new scope",
@@ -1026,7 +1210,7 @@ window.__ModuleLoader__.load({
1026
1210
  "status.storageDocumentsDetail": "{active} active · {archived} archived",
1027
1211
  "status.storageStateReady": "Review watermarks are persisted",
1028
1212
  "status.storageStateVolatile": "Review state is currently owned by the Host process",
1029
- "status.storageFootnote": "Current read/write root: {root}. Change the scope only in DSH Settings → Plugin Configuration → Mnemon; it applies after restart and never auto-migrates, merges, or deletes old content.",
1213
+ "status.storageFootnote": "Current read/write root: {root}. Change the scope only in DSH Settings → Memory System; it applies live after Save and never auto-migrates, merges, or deletes old content.",
1030
1214
  "status.flowTitle": "Memory System Flow",
1031
1215
  "status.flowDescription": "Maps the real execution boundaries across per-turn injection, deterministic file control, semantic workers, the CLI data plane, archive, and fork review.",
1032
1216
  "status.flowLive": "Live state",
@@ -1087,21 +1271,45 @@ window.__ModuleLoader__.load({
1087
1271
  "status.flowLegendReady": "Available / ready",
1088
1272
  "status.flowLegendRecent": "Current or recent path",
1089
1273
  "status.flowLegendBoundary": "Dashed lines mark LLM judgment boundaries",
1090
- "config.aria": "Mnemon plugin configuration",
1091
- "config.description": "Choose one storage boundary for runtime memory, project Documents, Memory Spaces, and background state.",
1274
+ "config.aria": "Mnemon memory system configuration",
1275
+ "config.tab": "Mnemon",
1276
+ "config.title": "Memory system settings",
1277
+ "config.description": "Configure runtime memory, project Documents, Memory Spaces, and conversation UI together. Changes apply immediately after Save.",
1092
1278
  "config.unsaved": "Unsaved changes",
1093
- "config.restart": "Applies after restart",
1279
+ "config.ready": "Saved and applied live",
1094
1280
  "config.noticeBefore": "Configuration is written to",
1095
- "config.noticeAfter": " and applies after restarting DSH. Switching scopes never migrates existing content automatically.",
1281
+ "config.noticeAfter": ". All settings apply live after Save. Switching scopes never migrates existing content automatically.",
1282
+ "config.storageTitle": "Storage location",
1283
+ "config.storageDescription": "Choose where Mnemon keeps runtime memory, project Documents, and Memory Spaces. Save atomically switches the active root.",
1096
1284
  "config.scope": "Storage scope",
1097
1285
  "config.scopeHint": "Global is shared across workspaces; Workspace uses the DSH launch directory; Custom uses the directory below.",
1098
1286
  "config.scopeAria": "Mnemon storage scope",
1099
1287
  "config.global": "Global",
1100
1288
  "config.workspace": "Workspace",
1101
- "config.custom": "Custom directory",
1289
+ "config.custom": "Custom",
1290
+ "config.customHintShort": "Choose one directory",
1291
+ "config.customSelected": "Directory selected",
1292
+ "config.customPack": "Custom Pack",
1293
+ "config.customPackAria": "Select a custom Mnemon Pack",
1294
+ "config.customPackRequired": "Select or add a custom Pack.",
1295
+ "config.customDefaultName": "Custom Pack",
1296
+ "config.noCustomPacks": "No Packs configured",
1297
+ "config.addPack": "Add Pack",
1298
+ "config.cancelAddPack": "Cancel adding",
1299
+ "config.removePack": "Remove",
1300
+ "config.customPackNameAria": "New Pack name",
1301
+ "config.customPackNamePlaceholder": "For example: Project memory",
1302
+ "config.newPackDirectoryAria": "New Pack data directory",
1303
+ "config.confirmAddPack": "Add to list",
1102
1304
  "config.customDirectory": "Custom directory",
1103
- "config.customHint": "Use an absolute path or ~/ prefix. The complete Mnemon data domain lives here.",
1305
+ "config.customHint": "The complete Mnemon data domain lives here.",
1104
1306
  "config.customAria": "Mnemon custom data directory",
1307
+ "config.customBrowseHint": "Use DSH's native directory picker; only this one directory is stored.",
1308
+ "config.customNotSelected": "Not selected",
1309
+ "config.customBrowse": "Browse…",
1310
+ "config.customBrowseAgain": "Choose again",
1311
+ "config.customBrowsing": "Choosing…",
1312
+ "config.customBrowseUnavailable": "This DSH host does not provide the native directory picker.",
1105
1313
  "config.invalidScope": "The storage scope is invalid.",
1106
1314
  "config.customRequired": "A data directory is required for custom storage.",
1107
1315
  "config.customAbsolute": "The custom directory must be absolute or start with ~/.",
@@ -1109,9 +1317,67 @@ window.__ModuleLoader__.load({
1109
1317
  "config.readOnly": "Plugin settings are read-only in this deployment.",
1110
1318
  "config.discard": "Discard changes",
1111
1319
  "config.saving": "Saving…",
1112
- "config.save": "Save to settings.yaml",
1320
+ "config.save": "Save",
1113
1321
  "config.overridden": "Overridden",
1114
- "config.reset": "Restore default"
1322
+ "config.interactionTitle": "Conversation interface",
1323
+ "config.interactionLive": "Live",
1324
+ "config.interactionHint": "Changes apply live after saving. Disabling an item restores DSH's native presentation.",
1325
+ "config.interactionToolviews": "Memory tool cards",
1326
+ "config.interactionToolviewsHint": "Show status and summaries for mnemon_* tools",
1327
+ "config.interactionTurnBar": "Turn memory bar",
1328
+ "config.interactionTurnBarHint": "Show recall, write, and search activity below each turn",
1329
+ "config.interactionSaveAction": "Save to memory action",
1330
+ "config.interactionSaveActionHint": "Add supervised memory distillation beside finalized replies",
1331
+ "config.interactionOn": "Enabled",
1332
+ "config.packTitle": "Backup and migration",
1333
+ "config.packDescription": "Export or import the complete effective directory. Imports always target the location shown below.",
1334
+ "config.packActiveTarget": "Active directory",
1335
+ "config.packTargetLoading": "Loading the running target…",
1336
+ "config.packUnavailable": "This DSH host does not provide the Mnemon ZIP backup channel.",
1337
+ "config.packFull": "Complete Pack",
1338
+ "config.packFullHint": "Runtime, Documents, and Memory Spaces",
1339
+ "config.packRuntime": "Runtime",
1340
+ "config.packRuntimeHint": "Hot memory and USER / MEMORY projections",
1341
+ "config.packDocuments": "Documents",
1342
+ "config.packDocumentsHint": "Project documents, archive, and index",
1343
+ "config.packMemorySpaces": "Memory Spaces",
1344
+ "config.packMemorySpacesHint": "Catalog and mnemon.db databases",
1345
+ "config.packExport": "Export",
1346
+ "config.packImport": "Import",
1347
+ "config.packExporting": "Exporting…",
1348
+ "config.packInspecting": "Inspecting…",
1349
+ "config.packImporting": "Importing…",
1350
+ "config.packChooseFile": "Choose a {component} file",
1351
+ "config.packFormatHint": "Uses .mnemonpack throughout (ZIP + manifest + SHA-256). Each Memory Space remains a separate mnemon.db inside the Pack.",
1352
+ "config.packPreviewEyebrow": "Import preview",
1353
+ "config.packUnnamed": "Unnamed Mnemon Pack",
1354
+ "config.packSource": "Source",
1355
+ "config.packDestination": "Import into",
1356
+ "config.packArchiveSize": "Archive / expanded",
1357
+ "config.packComponents": "Components to import",
1358
+ "config.packComponentSummary": "{items} items · {files} files · {size}",
1359
+ "config.packHasData": "Target has data",
1360
+ "config.packMerge": "Safe merge (recommended)",
1361
+ "config.packMergeHint": "Keeps existing data; conflicting items are deduplicated or assigned new IDs.",
1362
+ "config.packMergeAction": "Merge import",
1363
+ "config.packReplace": "Replace current components?",
1364
+ "config.packReplaceHint": "Selected components are atomically replaced by the Pack; other components are unchanged.",
1365
+ "config.packReplaceAction": "Replace import…",
1366
+ "config.packConfirmReplace": "Confirm replace",
1367
+ "config.packComponentMissing": "This Pack does not contain the selected component.",
1368
+ "config.packExported": "Exported {file} ({size}).",
1369
+ "config.packImported": "Imported {components} into {root}.",
1370
+ "config.packFailed": "ZIP operation failed: {error}",
1371
+ "config.packSimpleDescription": "Export the complete effective directory as one ZIP, or safely merge-restore it from a ZIP.",
1372
+ "config.packWholeZip": "Current directory ZIP",
1373
+ "config.packWholeZipHint": "Includes Runtime, Documents, and every Memory Space.",
1374
+ "config.packImportZip": "Import ZIP",
1375
+ "config.packExportZip": "Export ZIP",
1376
+ "config.packChooseZip": "Choose a Mnemon backup ZIP",
1377
+ "config.packUnnamedZip": "Mnemon backup.zip",
1378
+ "config.packZipReady": "Verified · {components} components · {items} items · {size}",
1379
+ "config.packImportZipAction": "Safe import",
1380
+ "config.packImportedWhole": "Safely merged the ZIP into {root}."
1115
1381
  };
1116
1382
  function interpolate(dictionary, key, params) {
1117
1383
  const template = dictionary[key];
@@ -1122,20 +1388,456 @@ window.__ModuleLoader__.load({
1122
1388
  return interpolate(zh, key, params);
1123
1389
  }
1124
1390
  //#endregion
1391
+ //#region src/rpc.ts
1392
+ const MNEMON_READ_CHANNEL = "/dsh-mnemon-read";
1393
+ const MNEMON_WRITE_CHANNEL = "/dsh-mnemon-write";
1394
+ const MNEMON_PACK_CHANNEL = "/dsh-mnemon-pack";
1395
+ //#endregion
1396
+ //#region src/client/api.ts
1397
+ const turnActivityCache = /* @__PURE__ */ new WeakMap();
1398
+ async function loadTurnActivities(connection, sessionId, requiredCursor) {
1399
+ let sessions = turnActivityCache.get(connection);
1400
+ if (sessions === void 0) {
1401
+ sessions = /* @__PURE__ */ new Map();
1402
+ turnActivityCache.set(connection, sessions);
1403
+ }
1404
+ const key = sessionId ?? "";
1405
+ let entry = sessions.get(key);
1406
+ if (entry === void 0) {
1407
+ entry = {
1408
+ cursor: -1,
1409
+ activities: /* @__PURE__ */ new Map()
1410
+ };
1411
+ sessions.set(key, entry);
1412
+ }
1413
+ if (entry.cursor >= requiredCursor) return {
1414
+ cursor: entry.cursor,
1415
+ activities: [...entry.activities.values()]
1416
+ };
1417
+ if (entry.inFlight !== void 0) {
1418
+ const snapshot = await entry.inFlight;
1419
+ return snapshot.cursor >= requiredCursor ? snapshot : loadTurnActivities(connection, sessionId, requiredCursor);
1420
+ }
1421
+ const request = connection.rpc.call(MNEMON_READ_CHANNEL, "turn-activities", sessionId === void 0 ? {} : { sessionId }).then((response) => {
1422
+ if (!response.ok) throw new Error(response.error.message);
1423
+ const snapshot = response.value;
1424
+ entry.cursor = snapshot.cursor;
1425
+ entry.activities = new Map(snapshot.activities.map((activity) => [activity.turn, activity]));
1426
+ return snapshot;
1427
+ }).finally(() => {
1428
+ delete entry.inFlight;
1429
+ });
1430
+ entry.inFlight = request;
1431
+ return request;
1432
+ }
1433
+ var MnemonClient = class {
1434
+ connection;
1435
+ sessionId;
1436
+ constructor(connection, sessionId) {
1437
+ this.connection = connection;
1438
+ this.sessionId = sessionId;
1439
+ }
1440
+ async call(channel, endpoint, payload) {
1441
+ const response = await this.connection.rpc.call(channel, endpoint, payload);
1442
+ if (!response.ok) throw new Error(response.error.message);
1443
+ return response.value;
1444
+ }
1445
+ status() {
1446
+ return this.call(MNEMON_READ_CHANNEL, "status", this.sessionId === void 0 ? {} : { sessionId: this.sessionId });
1447
+ }
1448
+ runtimeMemory() {
1449
+ return this.call(MNEMON_READ_CHANNEL, "runtime-memory", {});
1450
+ }
1451
+ mutateRuntimeMemory(request) {
1452
+ return this.call(MNEMON_WRITE_CHANNEL, "runtime-memory", {
1453
+ ...request,
1454
+ sessionId: this.sessionId
1455
+ });
1456
+ }
1457
+ documents() {
1458
+ return this.call(MNEMON_READ_CHANNEL, "documents", { sessionId: this.sessionId });
1459
+ }
1460
+ document(id) {
1461
+ return this.call(MNEMON_READ_CHANNEL, "document", {
1462
+ sessionId: this.sessionId,
1463
+ id
1464
+ });
1465
+ }
1466
+ searchDocuments(query, includeArchived = false, limit = 50) {
1467
+ return this.call(MNEMON_READ_CHANNEL, "document-search", {
1468
+ sessionId: this.sessionId,
1469
+ query,
1470
+ includeArchived,
1471
+ limit
1472
+ });
1473
+ }
1474
+ mutateDocument(request) {
1475
+ return this.call(MNEMON_WRITE_CHANNEL, "document", {
1476
+ ...request,
1477
+ sessionId: this.sessionId
1478
+ });
1479
+ }
1480
+ archiveDocument(id) {
1481
+ return this.call(MNEMON_WRITE_CHANNEL, "document", {
1482
+ action: "archive",
1483
+ id,
1484
+ sessionId: this.sessionId
1485
+ });
1486
+ }
1487
+ bodies() {
1488
+ return this.call(MNEMON_READ_CHANNEL, "bodies", {});
1489
+ }
1490
+ graph(memoryBodyIds) {
1491
+ return this.call(MNEMON_READ_CHANNEL, "graph", memoryBodyIds === void 0 ? {} : { memoryBodyIds });
1492
+ }
1493
+ list(request = {}) {
1494
+ return this.call(MNEMON_READ_CHANNEL, "list", request);
1495
+ }
1496
+ entities(entity, limit) {
1497
+ return this.call(MNEMON_READ_CHANNEL, "entities", {
1498
+ sessionId: this.sessionId,
1499
+ ...entity === void 0 ? {} : { entity },
1500
+ ...limit === void 0 ? {} : { limit }
1501
+ });
1502
+ }
1503
+ search(request) {
1504
+ return this.call(MNEMON_READ_CHANNEL, "search", {
1505
+ ...request,
1506
+ sessionId: this.sessionId
1507
+ });
1508
+ }
1509
+ agentSearch(request) {
1510
+ return this.call(MNEMON_READ_CHANNEL, "agent-search", {
1511
+ ...request,
1512
+ sessionId: this.sessionId
1513
+ });
1514
+ }
1515
+ related(id, memoryBodyId) {
1516
+ return this.call(MNEMON_READ_CHANNEL, "related", {
1517
+ id,
1518
+ depth: 2,
1519
+ sessionId: this.sessionId,
1520
+ ...memoryBodyId === void 0 ? {} : { memoryBodyId }
1521
+ });
1522
+ }
1523
+ /** Settled memory-tool activity of one turn, shared across all mounted tails. */
1524
+ async turnActivity(turn, cursor = 0) {
1525
+ return (await loadTurnActivities(this.connection, this.sessionId, cursor)).activities.find((activity) => activity.turn === turn) ?? null;
1526
+ }
1527
+ /** Plain text of one finalized assistant message; null when absent or empty. */
1528
+ assistantMessageText(messageId) {
1529
+ return this.call(MNEMON_READ_CHANNEL, "assistant-message", {
1530
+ sessionId: this.sessionId,
1531
+ messageId
1532
+ });
1533
+ }
1534
+ remember(request) {
1535
+ return this.call(MNEMON_WRITE_CHANNEL, "remember", {
1536
+ ...request,
1537
+ sessionId: this.sessionId
1538
+ });
1539
+ }
1540
+ supervise(content, idempotencyKey) {
1541
+ return this.call(MNEMON_WRITE_CHANNEL, "supervise", {
1542
+ sessionId: this.sessionId,
1543
+ content,
1544
+ ...idempotencyKey === void 0 ? {} : { idempotencyKey }
1545
+ });
1546
+ }
1547
+ forget(id, memoryBodyId) {
1548
+ return this.call(MNEMON_WRITE_CHANNEL, "forget", {
1549
+ id,
1550
+ sessionId: this.sessionId,
1551
+ ...memoryBodyId === void 0 ? {} : { memoryBodyId }
1552
+ });
1553
+ }
1554
+ createBody(request) {
1555
+ return this.call(MNEMON_WRITE_CHANNEL, "body-create", request);
1556
+ }
1557
+ updateBody(memoryBodyId, request) {
1558
+ return this.call(MNEMON_WRITE_CHANNEL, "body-update", {
1559
+ memoryBodyId,
1560
+ ...request
1561
+ });
1562
+ }
1563
+ packTarget() {
1564
+ return this.call(MNEMON_PACK_CHANNEL, "target", {});
1565
+ }
1566
+ exportPack() {
1567
+ return this.call(MNEMON_PACK_CHANNEL, "export", {});
1568
+ }
1569
+ inspectPack(base64, fileName) {
1570
+ return this.call(MNEMON_PACK_CHANNEL, "inspect", {
1571
+ base64,
1572
+ ...fileName === void 0 ? {} : { fileName }
1573
+ });
1574
+ }
1575
+ importPack(base64) {
1576
+ return this.call(MNEMON_PACK_CHANNEL, "import", { base64 });
1577
+ }
1578
+ };
1579
+ //#endregion
1580
+ //#region src/client/MnemonPackSection.tsx
1581
+ const ZIP_ACCEPT = ".zip,application/zip";
1582
+ function fileBase64(file) {
1583
+ return new Promise((resolve, reject) => {
1584
+ const reader = new FileReader();
1585
+ reader.onerror = () => reject(reader.error ?? /* @__PURE__ */ new Error("Could not read ZIP file"));
1586
+ reader.onload = () => {
1587
+ const value = reader.result;
1588
+ if (typeof value !== "string") return reject(/* @__PURE__ */ new Error("Could not read ZIP file"));
1589
+ const separator = value.indexOf(",");
1590
+ if (separator < 0) return reject(/* @__PURE__ */ new Error("ZIP file encoding is invalid"));
1591
+ resolve(value.slice(separator + 1));
1592
+ };
1593
+ reader.readAsDataURL(file);
1594
+ });
1595
+ }
1596
+ function bytesFromBase64(base64) {
1597
+ const binary = atob(base64);
1598
+ const buffer = new ArrayBuffer(binary.length);
1599
+ const bytes = new Uint8Array(buffer);
1600
+ for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
1601
+ return buffer;
1602
+ }
1603
+ function download(result) {
1604
+ const blob = new Blob([bytesFromBase64(result.base64)], { type: result.mimeType });
1605
+ const url = URL.createObjectURL(blob);
1606
+ const anchor = document.createElement("a");
1607
+ anchor.href = url;
1608
+ anchor.download = result.fileName;
1609
+ anchor.hidden = true;
1610
+ document.body.append(anchor);
1611
+ anchor.click();
1612
+ anchor.remove();
1613
+ window.setTimeout(() => URL.revokeObjectURL(url), 0);
1614
+ }
1615
+ function formatBytes(bytes) {
1616
+ if (bytes < 1024) return `${bytes} B`;
1617
+ if (bytes < 1048576) return `${(bytes / 1024).toFixed(1)} KB`;
1618
+ return `${(bytes / 1048576).toFixed(1)} MB`;
1619
+ }
1620
+ function MnemonPackSection({ connection, refreshKey, t }) {
1621
+ const client = (0, react.useMemo)(() => connection === void 0 ? null : new MnemonClient(connection), [connection]);
1622
+ const input = (0, react.useRef)(null);
1623
+ const [target, setTarget] = (0, react.useState)(null);
1624
+ const [pending, setPending] = (0, react.useState)(null);
1625
+ const [busy, setBusy] = (0, react.useState)(client === null ? null : "target");
1626
+ const [failed, setFailed] = (0, react.useState)(null);
1627
+ const [notice, setNotice] = (0, react.useState)(null);
1628
+ (0, react.useEffect)(() => {
1629
+ let active = true;
1630
+ if (client === null) return;
1631
+ setBusy("target");
1632
+ setFailed(null);
1633
+ client.packTarget().then((value) => {
1634
+ if (active) setTarget(value);
1635
+ }).catch((reason) => {
1636
+ if (active) setFailed(reason instanceof Error ? reason.message : String(reason));
1637
+ }).finally(() => {
1638
+ if (active) setBusy(null);
1639
+ });
1640
+ return () => {
1641
+ active = false;
1642
+ };
1643
+ }, [client, refreshKey]);
1644
+ const scopeLabel = (scope) => scope === "global" ? t("config.global") : scope === "workspace" ? t("config.workspace") : t("config.custom");
1645
+ const exportZip = async () => {
1646
+ if (client === null || busy !== null) return;
1647
+ setBusy("export");
1648
+ setFailed(null);
1649
+ setNotice(null);
1650
+ try {
1651
+ const result = await client.exportPack();
1652
+ download(result);
1653
+ setNotice(t("config.packExported", {
1654
+ file: result.fileName,
1655
+ size: formatBytes(result.bytes)
1656
+ }));
1657
+ } catch (reason) {
1658
+ setFailed(reason instanceof Error ? reason.message : String(reason));
1659
+ } finally {
1660
+ setBusy(null);
1661
+ }
1662
+ };
1663
+ const inspectZip = async (file) => {
1664
+ if (client === null || busy !== null) return;
1665
+ setBusy("inspect");
1666
+ setFailed(null);
1667
+ setNotice(null);
1668
+ setPending(null);
1669
+ try {
1670
+ const base64 = await fileBase64(file);
1671
+ const preview = await client.inspectPack(base64, file.name);
1672
+ setPending({
1673
+ base64,
1674
+ preview
1675
+ });
1676
+ } catch (reason) {
1677
+ setFailed(reason instanceof Error ? reason.message : String(reason));
1678
+ } finally {
1679
+ setBusy(null);
1680
+ }
1681
+ };
1682
+ const chooseFile = (event) => {
1683
+ const file = event.currentTarget.files?.[0];
1684
+ event.currentTarget.value = "";
1685
+ if (file !== void 0) inspectZip(file);
1686
+ };
1687
+ const importZip = async () => {
1688
+ if (client === null || pending === null || busy !== null) return;
1689
+ setBusy("import");
1690
+ setFailed(null);
1691
+ setNotice(null);
1692
+ try {
1693
+ const result = await client.importPack(pending.base64);
1694
+ setNotice(t("config.packImportedWhole", { root: result.targetRoot }));
1695
+ setPending(null);
1696
+ } catch (reason) {
1697
+ setFailed(reason instanceof Error ? reason.message : String(reason));
1698
+ } finally {
1699
+ setBusy(null);
1700
+ }
1701
+ };
1702
+ const items = pending?.preview.manifest.summary.reduce((sum, component) => sum + component.items, 0) ?? 0;
1703
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1704
+ className: MnemonSettingsCard_module_css_default.section,
1705
+ "aria-labelledby": "mnemon-pack-heading",
1706
+ children: [
1707
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1708
+ className: MnemonSettingsCard_module_css_default.sectionHeading,
1709
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
1710
+ id: "mnemon-pack-heading",
1711
+ children: t("config.packTitle")
1712
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.packSimpleDescription") })] })
1713
+ }),
1714
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1715
+ className: MnemonSettingsCard_module_css_default.settingRow,
1716
+ children: [
1717
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1718
+ className: MnemonSettingsCard_module_css_default.settingCopy,
1719
+ children: [
1720
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("config.packWholeZip") }),
1721
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("config.packWholeZipHint") }),
1722
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
1723
+ className: MnemonSettingsCard_module_css_default.activePath,
1724
+ title: target?.root,
1725
+ children: target?.root ?? t("config.packTargetLoading")
1726
+ }),
1727
+ target !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", {
1728
+ className: MnemonSettingsCard_module_css_default.scopeMeta,
1729
+ children: scopeLabel(target.scope)
1730
+ })
1731
+ ]
1732
+ }),
1733
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1734
+ className: MnemonSettingsCard_module_css_default.rowActions,
1735
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1736
+ type: "button",
1737
+ className: MnemonSettingsCard_module_css_default.pillButton,
1738
+ disabled: client === null || busy !== null,
1739
+ onClick: () => input.current?.click(),
1740
+ children: busy === "inspect" ? t("config.packInspecting") : t("config.packImportZip")
1741
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1742
+ type: "button",
1743
+ className: MnemonSettingsCard_module_css_default.pillButton,
1744
+ disabled: client === null || busy !== null || target === null,
1745
+ onClick: () => void exportZip(),
1746
+ children: busy === "export" ? t("config.packExporting") : t("config.packExportZip")
1747
+ })]
1748
+ }),
1749
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1750
+ ref: input,
1751
+ className: MnemonSettingsCard_module_css_default.visuallyHidden,
1752
+ type: "file",
1753
+ accept: ZIP_ACCEPT,
1754
+ "aria-label": t("config.packChooseZip"),
1755
+ onChange: chooseFile
1756
+ })
1757
+ ]
1758
+ }),
1759
+ pending !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1760
+ className: MnemonSettingsCard_module_css_default.importBar,
1761
+ role: "status",
1762
+ children: [
1763
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: pending.preview.fileName ?? t("config.packUnnamedZip") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("config.packZipReady", {
1764
+ components: pending.preview.manifest.components.length,
1765
+ items,
1766
+ size: formatBytes(pending.preview.archiveBytes)
1767
+ }) })] }),
1768
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1769
+ type: "button",
1770
+ className: MnemonSettingsCard_module_css_default.textButton,
1771
+ disabled: busy !== null,
1772
+ onClick: () => setPending(null),
1773
+ children: t("common.cancel")
1774
+ }),
1775
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1776
+ type: "button",
1777
+ className: MnemonSettingsCard_module_css_default.primaryPill,
1778
+ disabled: busy !== null,
1779
+ onClick: () => void importZip(),
1780
+ children: busy === "import" ? t("config.packImporting") : t("config.packImportZipAction")
1781
+ })
1782
+ ]
1783
+ }),
1784
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1785
+ className: MnemonSettingsCard_module_css_default.packFeedback,
1786
+ "aria-live": "polite",
1787
+ children: [
1788
+ failed !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1789
+ className: MnemonSettingsCard_module_css_default.error,
1790
+ role: "alert",
1791
+ children: t("config.packFailed", { error: failed })
1792
+ }),
1793
+ notice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1794
+ className: MnemonSettingsCard_module_css_default.packSuccess,
1795
+ children: notice
1796
+ }),
1797
+ client === null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1798
+ className: MnemonSettingsCard_module_css_default.readOnly,
1799
+ children: t("config.packUnavailable")
1800
+ })
1801
+ ]
1802
+ })
1803
+ ]
1804
+ });
1805
+ }
1806
+ //#endregion
1125
1807
  //#region src/client/MnemonSettingsCard.tsx
1126
- const FIELD_ORDER = ["storageScope", "dataDir"];
1808
+ const CORE_FIELDS = ["storageScope", "dataDir"];
1809
+ const INTERACTION_FIELDS = [
1810
+ "toolviews",
1811
+ "turnBar",
1812
+ "saveAction"
1813
+ ];
1127
1814
  function record(value) {
1128
1815
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
1129
1816
  }
1130
- function draftOf(value) {
1817
+ function legacyPackDirectory(value) {
1818
+ const packs = value.customPacks ?? [];
1819
+ return packs.find((pack) => pack.id === value.customPackId)?.dataDir?.trim() ?? (packs.length === 1 ? packs[0]?.dataDir?.trim() : void 0) ?? "";
1820
+ }
1821
+ function coreDraft(value) {
1131
1822
  const resolved = value ?? {};
1823
+ const dataDir = resolved.dataDir?.trim() || legacyPackDirectory(resolved);
1132
1824
  return {
1133
- storageScope: resolved.storageScope ?? (resolved.dataDir?.trim() ? "custom" : "global"),
1134
- dataDir: resolved.dataDir?.trim() ?? ""
1825
+ storageScope: resolved.storageScope ?? (dataDir === "" ? "global" : "custom"),
1826
+ dataDir
1135
1827
  };
1136
1828
  }
1137
- function inheritedDraft(base) {
1138
- return draftOf(record(base));
1829
+ function interactionDraft(value) {
1830
+ return {
1831
+ toolviews: value?.toolviews === true,
1832
+ turnBar: value?.turnBar === true,
1833
+ saveAction: value?.saveAction === true
1834
+ };
1835
+ }
1836
+ function draftOf(core, interaction) {
1837
+ return {
1838
+ ...coreDraft(core),
1839
+ ...interactionDraft(interaction)
1840
+ };
1139
1841
  }
1140
1842
  function validation(t, draft) {
1141
1843
  if (![
@@ -1149,233 +1851,387 @@ window.__ModuleLoader__.load({
1149
1851
  if (!(directory === "~" || directory.startsWith("~/") || directory.startsWith("/"))) return t("config.customAbsolute");
1150
1852
  return null;
1151
1853
  }
1152
- function MnemonSettingsCard({ scope, t = translateZh }) {
1854
+ function useScope(scope) {
1153
1855
  const subscribe = (0, react.useMemo)(() => scope.subscribe.bind(scope), [scope]);
1154
1856
  const getSnapshot = (0, react.useMemo)(() => scope.getSnapshot.bind(scope), [scope]);
1155
- const snapshot = (0, react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
1156
- const [draft, setDraft] = (0, react.useState)(() => draftOf(snapshot.value));
1857
+ return (0, react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
1858
+ }
1859
+ function operations(fields, dirty, draft) {
1860
+ return fields.flatMap((field) => {
1861
+ if (!dirty.has(field)) return [];
1862
+ if (field === "dataDir" && draft.dataDir.trim() === "") return [{
1863
+ op: "unset",
1864
+ path: [field]
1865
+ }];
1866
+ const value = draft[field];
1867
+ return [{
1868
+ op: "set",
1869
+ path: [field],
1870
+ value: typeof value === "string" ? value.trim() : value
1871
+ }];
1872
+ });
1873
+ }
1874
+ async function commit(scope, edits) {
1875
+ if (scope.mutate !== void 0) return scope.mutate(edits);
1876
+ for (const edit of edits) if (edit.path.length === 1) {
1877
+ if (edit.op === "set") await scope.set(edit.path[0], edit.value);
1878
+ else await scope.unset(edit.path[0]);
1879
+ } else if (edit.op === "set") await scope.setPath(edit.path, edit.value);
1880
+ else await scope.unsetPath(edit.path);
1881
+ }
1882
+ /** Dedicated Mnemon page contributed directly to DSH's settings navigation. */
1883
+ function MnemonSettingsCard({ scope, interactionScope: suppliedInteractionScope, connection, pickDirectory, t = translateZh }) {
1884
+ const interactionScope = suppliedInteractionScope ?? scope;
1885
+ const coreSnapshot = useScope(scope);
1886
+ const interactionSnapshot = useScope(interactionScope);
1887
+ const [draft, setDraft] = (0, react.useState)(() => draftOf(coreSnapshot.value, interactionSnapshot.value));
1157
1888
  const [dirty, setDirty] = (0, react.useState)(() => /* @__PURE__ */ new Set());
1158
- const [reset, setReset] = (0, react.useState)(() => /* @__PURE__ */ new Set());
1159
1889
  const [saving, setSaving] = (0, react.useState)(false);
1890
+ const [browsing, setBrowsing] = (0, react.useState)(false);
1160
1891
  const [failed, setFailed] = (0, react.useState)(null);
1892
+ const [applied, setApplied] = (0, react.useState)(false);
1893
+ const [targetRevision, setTargetRevision] = (0, react.useState)(0);
1161
1894
  (0, react.useEffect)(() => {
1162
- if (dirty.size === 0) setDraft(draftOf(snapshot.value));
1163
- }, [dirty.size, snapshot.value]);
1164
- const overridden = (0, react.useMemo)(() => record(snapshot.user), [snapshot.user]);
1165
- const inherited = (0, react.useMemo)(() => inheritedDraft(snapshot.base), [snapshot.base]);
1895
+ if (dirty.size === 0) setDraft(draftOf(coreSnapshot.value, interactionSnapshot.value));
1896
+ }, [
1897
+ dirty.size,
1898
+ coreSnapshot.value,
1899
+ interactionSnapshot.value
1900
+ ]);
1901
+ const coreUser = (0, react.useMemo)(() => record(coreSnapshot.user), [coreSnapshot.user]);
1166
1902
  const error = validation(t, draft);
1167
- const controlsDisabled = !snapshot.writable || saving;
1168
- if (snapshot.status === "unavailable") return null;
1903
+ const loading = coreSnapshot.status === "loading" || interactionSnapshot.status === "loading";
1904
+ const writable = coreSnapshot.writable && interactionSnapshot.writable;
1905
+ if (coreSnapshot.status === "unavailable" && interactionSnapshot.status === "unavailable") return null;
1169
1906
  const edit = (field, value) => {
1170
1907
  setDraft((current) => ({
1171
1908
  ...current,
1172
1909
  [field]: value
1173
1910
  }));
1174
1911
  setDirty((current) => new Set(current).add(field));
1175
- setReset((current) => {
1176
- const next = new Set(current);
1177
- next.delete(field);
1178
- return next;
1179
- });
1180
1912
  setFailed(null);
1913
+ setApplied(false);
1181
1914
  };
1182
- const resetField = (field) => {
1183
- setDraft((current) => ({
1184
- ...current,
1185
- [field]: inherited[field]
1186
- }));
1187
- setDirty((current) => new Set(current).add(field));
1188
- setReset((current) => new Set(current).add(field));
1915
+ const browse = async () => {
1916
+ if (pickDirectory === void 0 || browsing) return;
1917
+ setBrowsing(true);
1189
1918
  setFailed(null);
1919
+ try {
1920
+ const path = await pickDirectory();
1921
+ if (path !== null) {
1922
+ if (draft.storageScope !== "custom") edit("storageScope", "custom");
1923
+ edit("dataDir", path);
1924
+ }
1925
+ } catch (reason) {
1926
+ setFailed(reason instanceof Error ? reason.message : String(reason));
1927
+ } finally {
1928
+ setBrowsing(false);
1929
+ }
1190
1930
  };
1191
1931
  const discard = () => {
1192
- setDraft(draftOf(snapshot.value));
1932
+ setDraft(draftOf(coreSnapshot.value, interactionSnapshot.value));
1193
1933
  setDirty(/* @__PURE__ */ new Set());
1194
- setReset(/* @__PURE__ */ new Set());
1195
1934
  setFailed(null);
1935
+ setApplied(false);
1196
1936
  };
1197
1937
  const save = async () => {
1198
- if (error !== null || dirty.size === 0 || saving) return;
1938
+ if (error !== null || dirty.size === 0 || saving || !writable) return;
1199
1939
  setSaving(true);
1200
1940
  setFailed(null);
1201
1941
  try {
1202
- const order = draft.storageScope === "custom" ? [...FIELD_ORDER].reverse() : FIELD_ORDER;
1203
- for (const field of order) {
1204
- if (!dirty.has(field)) continue;
1205
- if (reset.has(field) || field === "dataDir" && draft.dataDir.trim() === "") await scope.unset(field);
1206
- else await scope.set(field, draft[field].trim());
1942
+ const coreOps = operations(CORE_FIELDS, dirty, draft);
1943
+ if (coreOps.length > 0) {
1944
+ if (Object.hasOwn(coreUser, "customPackId")) coreOps.push({
1945
+ op: "unset",
1946
+ path: ["customPackId"]
1947
+ });
1948
+ if (Object.hasOwn(coreUser, "customPacks")) coreOps.push({
1949
+ op: "unset",
1950
+ path: ["customPacks"]
1951
+ });
1207
1952
  }
1953
+ const interactionOps = operations(INTERACTION_FIELDS, dirty, draft);
1954
+ await Promise.all([...coreOps.length === 0 ? [] : [commit(scope, coreOps)], ...interactionOps.length === 0 ? [] : [commit(interactionScope, interactionOps)]]);
1208
1955
  setDirty(/* @__PURE__ */ new Set());
1209
- setReset(/* @__PURE__ */ new Set());
1956
+ setApplied(true);
1957
+ if (coreOps.length > 0) setTargetRevision((revision) => revision + 1);
1210
1958
  } catch (reason) {
1211
1959
  setFailed(reason instanceof Error ? reason.message : String(reason));
1212
1960
  } finally {
1213
1961
  setSaving(false);
1214
1962
  }
1215
1963
  };
1216
- const fieldMeta = (field) => Object.hasOwn(overridden, field) && !reset.has(field);
1217
- const errorId = error === null ? void 0 : "mnemon-settings-validation";
1218
- const loading = snapshot.status === "loading";
1219
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1220
- className: MnemonSettingsCard_module_css_default.card,
1964
+ const coreDisabled = loading || saving || browsing || !coreSnapshot.writable;
1965
+ const interactionDisabled = loading || saving || !interactionSnapshot.writable;
1966
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", {
1967
+ className: MnemonSettingsCard_module_css_default.page,
1221
1968
  "aria-label": t("config.aria"),
1222
- "aria-busy": saving || loading,
1223
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1224
- className: MnemonSettingsCard_module_css_default.panelHeader,
1225
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1226
- className: MnemonSettingsCard_module_css_default.headerCopy,
1227
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: "Mnemon" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.description") })]
1228
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1229
- className: `${MnemonSettingsCard_module_css_default.status} ${dirty.size > 0 ? MnemonSettingsCard_module_css_default.statusDirty : ""}`,
1230
- "aria-live": "polite",
1231
- children: loading ? t("common.loading") : dirty.size > 0 ? t("config.unsaved") : t("config.restart")
1232
- })]
1233
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1234
- className: MnemonSettingsCard_module_css_default.body,
1235
- children: loading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1236
- className: MnemonSettingsCard_module_css_default.loading,
1237
- role: "status",
1238
- children: t("common.loading")
1239
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1240
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
1241
- className: MnemonSettingsCard_module_css_default.notice,
1242
- children: [
1243
- t("config.noticeBefore"),
1244
- " ",
1245
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: ".dsh/settings.yaml" }),
1246
- t("config.noticeAfter")
1247
- ]
1248
- }),
1249
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1250
- className: MnemonSettingsCard_module_css_default.primarySettings,
1251
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SettingField, {
1252
- controlId: "mnemon-storage-scope",
1253
- t,
1254
- label: t("config.scope"),
1255
- hint: t("config.scopeHint"),
1256
- overridden: fieldMeta("storageScope"),
1257
- resetDisabled: controlsDisabled,
1258
- onReset: () => resetField("storageScope"),
1259
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
1260
- id: "mnemon-storage-scope",
1261
- "aria-label": t("config.scopeAria"),
1262
- "aria-describedby": "mnemon-storage-scope-hint",
1263
- value: draft.storageScope,
1264
- onChange: (event) => edit("storageScope", event.target.value),
1265
- disabled: controlsDisabled,
1266
- children: [
1267
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("option", {
1268
- value: "global",
1269
- children: [t("config.global"), " · ~/.mnemon"]
1270
- }),
1271
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("option", {
1272
- value: "workspace",
1273
- children: [t("config.workspace"), " · <workspace>/.mnemon"]
1274
- }),
1275
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1276
- value: "custom",
1277
- children: t("config.custom")
1278
- })
1279
- ]
1280
- })
1281
- }), draft.storageScope === "custom" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SettingField, {
1282
- controlId: "mnemon-custom-directory",
1283
- t,
1284
- label: t("config.customDirectory"),
1285
- hint: t("config.customHint"),
1286
- overridden: fieldMeta("dataDir"),
1287
- resetDisabled: controlsDisabled,
1288
- onReset: () => resetField("dataDir"),
1289
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1290
- id: "mnemon-custom-directory",
1291
- "aria-label": t("config.customAria"),
1292
- "aria-describedby": `mnemon-custom-directory-hint${errorId === void 0 ? "" : ` ${errorId}`}`,
1293
- "aria-invalid": error !== null,
1294
- value: draft.dataDir,
1295
- onChange: (event) => edit("dataDir", event.target.value),
1296
- placeholder: "~/mnemon-data",
1297
- spellCheck: false,
1298
- autoComplete: "off",
1299
- disabled: controlsDisabled
1300
- })
1301
- })]
1302
- }),
1303
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1304
- className: MnemonSettingsCard_module_css_default.feedback,
1305
- "aria-live": "polite",
1969
+ "aria-busy": saving || loading || browsing,
1970
+ children: loading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1971
+ className: MnemonSettingsCard_module_css_default.loading,
1972
+ role: "status",
1973
+ children: t("common.loading")
1974
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1975
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
1976
+ className: MnemonSettingsCard_module_css_default.pageHeader,
1977
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", { children: t("config.title") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.description") })]
1978
+ }),
1979
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1980
+ className: MnemonSettingsCard_module_css_default.section,
1981
+ "aria-labelledby": "mnemon-storage-heading",
1982
+ children: [
1983
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1984
+ className: MnemonSettingsCard_module_css_default.sectionHeading,
1985
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
1986
+ id: "mnemon-storage-heading",
1987
+ children: t("config.storageTitle")
1988
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.storageDescription") })] })
1989
+ }),
1990
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1991
+ className: MnemonSettingsCard_module_css_default.choiceGrid,
1992
+ role: "radiogroup",
1993
+ "aria-label": t("config.scopeAria"),
1994
+ children: [
1995
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChoiceCard, {
1996
+ id: "mnemon-storage-global",
1997
+ name: "mnemon-storage",
1998
+ label: t("config.global"),
1999
+ detail: "~/.mnemon",
2000
+ checked: draft.storageScope === "global",
2001
+ disabled: coreDisabled,
2002
+ onChange: () => edit("storageScope", "global")
2003
+ }),
2004
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChoiceCard, {
2005
+ id: "mnemon-storage-workspace",
2006
+ name: "mnemon-storage",
2007
+ label: t("config.workspace"),
2008
+ detail: "<workspace>/.mnemon",
2009
+ checked: draft.storageScope === "workspace",
2010
+ disabled: coreDisabled,
2011
+ onChange: () => edit("storageScope", "workspace")
2012
+ }),
2013
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChoiceCard, {
2014
+ id: "mnemon-storage-custom",
2015
+ name: "mnemon-storage",
2016
+ label: t("config.custom"),
2017
+ detail: draft.dataDir === "" ? t("config.customHintShort") : t("config.customSelected"),
2018
+ checked: draft.storageScope === "custom",
2019
+ disabled: coreDisabled,
2020
+ onChange: () => {
2021
+ edit("storageScope", "custom");
2022
+ if (draft.dataDir === "") browse();
2023
+ }
2024
+ })
2025
+ ]
2026
+ }),
2027
+ draft.storageScope === "custom" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2028
+ className: MnemonSettingsCard_module_css_default.settingRow,
2029
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2030
+ className: MnemonSettingsCard_module_css_default.settingCopy,
2031
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("config.customDirectory") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("config.customBrowseHint") })]
2032
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2033
+ className: MnemonSettingsCard_module_css_default.directoryControl,
2034
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
2035
+ title: draft.dataDir,
2036
+ children: draft.dataDir || t("config.customNotSelected")
2037
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2038
+ type: "button",
2039
+ className: MnemonSettingsCard_module_css_default.pillButton,
2040
+ disabled: coreDisabled || pickDirectory === void 0,
2041
+ onClick: () => void browse(),
2042
+ children: browsing ? t("config.customBrowsing") : draft.dataDir === "" ? t("config.customBrowse") : t("config.customBrowseAgain")
2043
+ })]
2044
+ })]
2045
+ })
2046
+ ]
2047
+ }),
2048
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2049
+ className: MnemonSettingsCard_module_css_default.section,
2050
+ "aria-labelledby": "mnemon-interaction-heading",
2051
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2052
+ className: MnemonSettingsCard_module_css_default.sectionHeading,
2053
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
2054
+ id: "mnemon-interaction-heading",
2055
+ children: t("config.interactionTitle")
2056
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("config.interactionHint") })] })
2057
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2058
+ className: MnemonSettingsCard_module_css_default.rowGroup,
1306
2059
  children: [
1307
- error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1308
- id: "mnemon-settings-validation",
1309
- className: MnemonSettingsCard_module_css_default.error,
1310
- role: "alert",
1311
- children: error
2060
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleRow, {
2061
+ id: "mnemon-interaction-toolviews",
2062
+ label: t("config.interactionToolviews"),
2063
+ hint: t("config.interactionToolviewsHint"),
2064
+ checked: draft.toolviews,
2065
+ disabled: interactionDisabled,
2066
+ onChange: (value) => edit("toolviews", value)
1312
2067
  }),
1313
- failed !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1314
- className: MnemonSettingsCard_module_css_default.error,
1315
- role: "alert",
1316
- children: t("config.saveFailed", { error: failed })
2068
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleRow, {
2069
+ id: "mnemon-interaction-turn-bar",
2070
+ label: t("config.interactionTurnBar"),
2071
+ hint: t("config.interactionTurnBarHint"),
2072
+ checked: draft.turnBar,
2073
+ disabled: interactionDisabled,
2074
+ onChange: (value) => edit("turnBar", value)
1317
2075
  }),
1318
- !snapshot.writable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1319
- className: MnemonSettingsCard_module_css_default.readOnly,
1320
- children: t("config.readOnly")
2076
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleRow, {
2077
+ id: "mnemon-interaction-save-action",
2078
+ label: t("config.interactionSaveAction"),
2079
+ hint: t("config.interactionSaveActionHint"),
2080
+ checked: draft.saveAction,
2081
+ disabled: interactionDisabled,
2082
+ onChange: (value) => edit("saveAction", value)
1321
2083
  })
1322
2084
  ]
1323
- }),
1324
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1325
- className: MnemonSettingsCard_module_css_default.actions,
1326
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1327
- type: "button",
1328
- className: MnemonSettingsCard_module_css_default.discard,
1329
- disabled: dirty.size === 0 || saving,
1330
- onClick: discard,
1331
- children: t("config.discard")
1332
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1333
- type: "button",
1334
- className: MnemonSettingsCard_module_css_default.save,
1335
- disabled: dirty.size === 0 || saving || error !== null || !snapshot.writable,
1336
- onClick: () => void save(),
1337
- children: saving ? t("config.saving") : t("config.save")
1338
- })]
1339
- })
1340
- ] })
1341
- })]
1342
- });
1343
- }
1344
- function SettingField(props) {
1345
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1346
- className: MnemonSettingsCard_module_css_default.field,
1347
- children: [
2085
+ })]
2086
+ }),
2087
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MnemonPackSection, {
2088
+ ...connection === void 0 ? {} : { connection },
2089
+ refreshKey: targetRevision,
2090
+ t
2091
+ }),
1348
2092
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1349
- className: MnemonSettingsCard_module_css_default.fieldHeading,
2093
+ className: MnemonSettingsCard_module_css_default.feedback,
2094
+ "aria-live": "polite",
1350
2095
  children: [
1351
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
1352
- className: MnemonSettingsCard_module_css_default.fieldTitle,
1353
- htmlFor: props.controlId,
1354
- children: props.label
2096
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2097
+ className: MnemonSettingsCard_module_css_default.error,
2098
+ role: "alert",
2099
+ children: error
1355
2100
  }),
1356
- props.overridden && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", {
1357
- className: MnemonSettingsCard_module_css_default.overridden,
1358
- children: props.t("config.overridden")
2101
+ failed !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2102
+ className: MnemonSettingsCard_module_css_default.error,
2103
+ role: "alert",
2104
+ children: t("config.saveFailed", { error: failed })
1359
2105
  }),
1360
- props.overridden && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1361
- className: MnemonSettingsCard_module_css_default.reset,
1362
- type: "button",
1363
- disabled: props.resetDisabled,
1364
- onClick: props.onReset,
1365
- children: props.t("config.reset")
2106
+ applied && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2107
+ className: MnemonSettingsCard_module_css_default.success,
2108
+ role: "status",
2109
+ children: t("config.ready")
2110
+ }),
2111
+ pickDirectory === void 0 && draft.storageScope === "custom" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2112
+ className: MnemonSettingsCard_module_css_default.readOnly,
2113
+ children: t("config.customBrowseUnavailable")
2114
+ }),
2115
+ !writable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2116
+ className: MnemonSettingsCard_module_css_default.readOnly,
2117
+ children: t("config.readOnly")
1366
2118
  })
1367
2119
  ]
1368
2120
  }),
1369
- props.children,
1370
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1371
- id: `${props.controlId}-hint`,
1372
- className: MnemonSettingsCard_module_css_default.fieldHint,
1373
- children: props.hint
2121
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("footer", {
2122
+ className: `${MnemonSettingsCard_module_css_default.actions} ${dirty.size > 0 ? MnemonSettingsCard_module_css_default.actionsVisible : ""}`,
2123
+ "aria-live": "polite",
2124
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("config.unsaved") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2125
+ type: "button",
2126
+ className: MnemonSettingsCard_module_css_default.discard,
2127
+ disabled: saving,
2128
+ onClick: discard,
2129
+ children: t("config.discard")
2130
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2131
+ type: "button",
2132
+ className: MnemonSettingsCard_module_css_default.save,
2133
+ disabled: saving || error !== null || !writable,
2134
+ onClick: () => void save(),
2135
+ children: saving ? t("config.saving") : t("config.save")
2136
+ })] })]
2137
+ }),
2138
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
2139
+ className: MnemonSettingsCard_module_css_default.settingsNote,
2140
+ children: [
2141
+ t("config.noticeBefore"),
2142
+ " ",
2143
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: ".dsh/settings.yaml" }),
2144
+ t("config.noticeAfter")
2145
+ ]
2146
+ })
2147
+ ] })
2148
+ });
2149
+ }
2150
+ function ChoiceCard(props) {
2151
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2152
+ className: MnemonSettingsCard_module_css_default.choiceCard,
2153
+ htmlFor: props.id,
2154
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2155
+ id: props.id,
2156
+ name: props.name,
2157
+ type: "radio",
2158
+ "aria-label": props.label,
2159
+ checked: props.checked,
2160
+ disabled: props.disabled,
2161
+ onChange: props.onChange
2162
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2163
+ className: MnemonSettingsCard_module_css_default.choiceFace,
2164
+ children: [
2165
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: props.label }),
2166
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: props.detail }),
2167
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2168
+ className: MnemonSettingsCard_module_css_default.check,
2169
+ "aria-hidden": "true",
2170
+ children: "✓"
2171
+ })
2172
+ ]
2173
+ })]
2174
+ });
2175
+ }
2176
+ function ToggleRow(props) {
2177
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2178
+ className: MnemonSettingsCard_module_css_default.toggleRow,
2179
+ htmlFor: props.id,
2180
+ children: [
2181
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2182
+ className: MnemonSettingsCard_module_css_default.settingCopy,
2183
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: props.label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: props.hint })]
2184
+ }),
2185
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2186
+ id: props.id,
2187
+ type: "checkbox",
2188
+ "aria-label": props.label,
2189
+ checked: props.checked,
2190
+ disabled: props.disabled,
2191
+ onChange: (event) => props.onChange(event.target.checked)
2192
+ }),
2193
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2194
+ className: MnemonSettingsCard_module_css_default.switch,
2195
+ "aria-hidden": "true",
2196
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {})
1374
2197
  })
1375
2198
  ]
1376
2199
  });
1377
2200
  }
1378
2201
  //#endregion
2202
+ //#region src/client/anchor.ts
2203
+ const MNEMON_ANCHOR_EVENT = "mnemon:anchor";
2204
+ const pendingBySession = /* @__PURE__ */ new Map();
2205
+ function keyOf(sessionId) {
2206
+ return sessionId === void 0 || sessionId === "" ? "*" : sessionId;
2207
+ }
2208
+ /** Ask the Mnemon view to open a page; held until a matching view consumes it. */
2209
+ function dispatchMnemonAnchor(anchor) {
2210
+ pendingBySession.set(keyOf(anchor.sessionId), anchor);
2211
+ window.dispatchEvent(new CustomEvent(MNEMON_ANCHOR_EVENT, { detail: anchor }));
2212
+ }
2213
+ /** Take the anchor held for this session (usually at mount time), or null. */
2214
+ function consumeMnemonAnchor(sessionId) {
2215
+ const key = keyOf(sessionId);
2216
+ const anchor = pendingBySession.get(key);
2217
+ if (anchor === void 0) return null;
2218
+ pendingBySession.delete(key);
2219
+ return anchor;
2220
+ }
2221
+ /** Subscribe to anchors addressed to this session; returns an unsubscribe. */
2222
+ function subscribeMnemonAnchor(sessionId, onAnchor) {
2223
+ const key = keyOf(sessionId);
2224
+ const handler = (event) => {
2225
+ const anchor = event.detail;
2226
+ if (anchor !== void 0 && keyOf(anchor.sessionId) === key) {
2227
+ if (pendingBySession.get(key) === anchor) pendingBySession.delete(key);
2228
+ onAnchor(anchor);
2229
+ }
2230
+ };
2231
+ window.addEventListener(MNEMON_ANCHOR_EVENT, handler);
2232
+ return () => window.removeEventListener(MNEMON_ANCHOR_EVENT, handler);
2233
+ }
2234
+ //#endregion
1379
2235
  //#region node_modules/.pnpm/markdown-to-jsx@7.7.17_react@18.3.1/node_modules/markdown-to-jsx/dist/index.module.js
1380
2236
  function n() {
1381
2237
  return n = Object.assign ? Object.assign.bind() : function(r) {
@@ -2286,163 +3142,38 @@ window.__ModuleLoader__.load({
2286
3142
  return u;
2287
3143
  }(n, e);
2288
3144
  return react.cloneElement(Jr(null == t ? "" : t, u), a);
2289
- }
2290
- //#endregion
2291
- //#region src/review-activity.ts
2292
- /**
2293
- * QoderWork 0.9.12's deterministic post-turn review gate.
2294
- *
2295
- * The upstream implementation scores user text length rather than provider
2296
- * token usage, which keeps the gate stable when an adapter omits usage data.
2297
- */
2298
- const QODERWORK_REVIEW_POLICY = Object.freeze({
2299
- reviewThreshold: 5,
2300
- textLengthScoreUnit: 50,
2301
- textLengthScoreCap: 3,
2302
- toolCountScoreUnit: 5,
2303
- toolCountScoreCap: 2,
2304
- toolDiversityThreshold: 3,
2305
- toolDiversityScoreCap: 2,
2306
- turnScore: 1
2307
- });
2308
- //#endregion
2309
- //#region src/service.ts
2310
- const CATEGORIES = [
2311
- "preference",
2312
- "decision",
2313
- "fact",
2314
- "insight",
2315
- "context",
2316
- "general"
2317
- ];
2318
- const JS_STRING = "\"(?:\\\\.|[^\"\\\\])*\"";
2319
- new RegExp(`\\{id:(${JS_STRING}),label:(${JS_STRING}),title:(${JS_STRING}),color:(${JS_STRING}),font:\\{color:"white"\\}\\}`, "g");
2320
- new RegExp(`\\{from:(${JS_STRING}),to:(${JS_STRING}),label:(${JS_STRING}),color:\\{color:(${JS_STRING})\\},arrows:"to"`, "g");
2321
- //#endregion
2322
- //#region src/rpc.ts
2323
- const MNEMON_READ_CHANNEL = "/dsh-mnemon-read";
2324
- const MNEMON_WRITE_CHANNEL = "/dsh-mnemon-write";
2325
- //#endregion
2326
- //#region src/client/api.ts
2327
- var MnemonClient = class {
2328
- connection;
2329
- sessionId;
2330
- constructor(connection, sessionId) {
2331
- this.connection = connection;
2332
- this.sessionId = sessionId;
2333
- }
2334
- async call(channel, endpoint, payload) {
2335
- const response = await this.connection.rpc.call(channel, endpoint, payload);
2336
- if (!response.ok) throw new Error(response.error.message);
2337
- return response.value;
2338
- }
2339
- status() {
2340
- return this.call(MNEMON_READ_CHANNEL, "status", this.sessionId === void 0 ? {} : { sessionId: this.sessionId });
2341
- }
2342
- runtimeMemory() {
2343
- return this.call(MNEMON_READ_CHANNEL, "runtime-memory", {});
2344
- }
2345
- mutateRuntimeMemory(request) {
2346
- return this.call(MNEMON_WRITE_CHANNEL, "runtime-memory", {
2347
- ...request,
2348
- sessionId: this.sessionId
2349
- });
2350
- }
2351
- documents() {
2352
- return this.call(MNEMON_READ_CHANNEL, "documents", { sessionId: this.sessionId });
2353
- }
2354
- document(id) {
2355
- return this.call(MNEMON_READ_CHANNEL, "document", {
2356
- sessionId: this.sessionId,
2357
- id
2358
- });
2359
- }
2360
- searchDocuments(query, includeArchived = false, limit = 50) {
2361
- return this.call(MNEMON_READ_CHANNEL, "document-search", {
2362
- sessionId: this.sessionId,
2363
- query,
2364
- includeArchived,
2365
- limit
2366
- });
2367
- }
2368
- mutateDocument(request) {
2369
- return this.call(MNEMON_WRITE_CHANNEL, "document", {
2370
- ...request,
2371
- sessionId: this.sessionId
2372
- });
2373
- }
2374
- archiveDocument(id) {
2375
- return this.call(MNEMON_WRITE_CHANNEL, "document", {
2376
- action: "archive",
2377
- id,
2378
- sessionId: this.sessionId
2379
- });
2380
- }
2381
- bodies() {
2382
- return this.call(MNEMON_READ_CHANNEL, "bodies", {});
2383
- }
2384
- graph(memoryBodyIds) {
2385
- return this.call(MNEMON_READ_CHANNEL, "graph", memoryBodyIds === void 0 ? {} : { memoryBodyIds });
2386
- }
2387
- list(request = {}) {
2388
- return this.call(MNEMON_READ_CHANNEL, "list", request);
2389
- }
2390
- entities(entity, limit) {
2391
- return this.call(MNEMON_READ_CHANNEL, "entities", {
2392
- sessionId: this.sessionId,
2393
- ...entity === void 0 ? {} : { entity },
2394
- ...limit === void 0 ? {} : { limit }
2395
- });
2396
- }
2397
- search(request) {
2398
- return this.call(MNEMON_READ_CHANNEL, "search", {
2399
- ...request,
2400
- sessionId: this.sessionId
2401
- });
2402
- }
2403
- agentSearch(request) {
2404
- return this.call(MNEMON_READ_CHANNEL, "agent-search", {
2405
- ...request,
2406
- sessionId: this.sessionId
2407
- });
2408
- }
2409
- related(id, memoryBodyId) {
2410
- return this.call(MNEMON_READ_CHANNEL, "related", {
2411
- id,
2412
- depth: 2,
2413
- sessionId: this.sessionId,
2414
- ...memoryBodyId === void 0 ? {} : { memoryBodyId }
2415
- });
2416
- }
2417
- remember(request) {
2418
- return this.call(MNEMON_WRITE_CHANNEL, "remember", {
2419
- ...request,
2420
- sessionId: this.sessionId
2421
- });
2422
- }
2423
- supervise(content) {
2424
- return this.call(MNEMON_WRITE_CHANNEL, "supervise", {
2425
- sessionId: this.sessionId,
2426
- content
2427
- });
2428
- }
2429
- forget(id, memoryBodyId) {
2430
- return this.call(MNEMON_WRITE_CHANNEL, "forget", {
2431
- id,
2432
- sessionId: this.sessionId,
2433
- ...memoryBodyId === void 0 ? {} : { memoryBodyId }
2434
- });
2435
- }
2436
- createBody(request) {
2437
- return this.call(MNEMON_WRITE_CHANNEL, "body-create", request);
2438
- }
2439
- updateBody(memoryBodyId, request) {
2440
- return this.call(MNEMON_WRITE_CHANNEL, "body-update", {
2441
- memoryBodyId,
2442
- ...request
2443
- });
2444
- }
2445
- };
3145
+ }
3146
+ //#endregion
3147
+ //#region src/review-activity.ts
3148
+ /**
3149
+ * QoderWork 0.9.12's deterministic post-turn review gate.
3150
+ *
3151
+ * The upstream implementation scores user text length rather than provider
3152
+ * token usage, which keeps the gate stable when an adapter omits usage data.
3153
+ */
3154
+ const QODERWORK_REVIEW_POLICY = Object.freeze({
3155
+ reviewThreshold: 5,
3156
+ textLengthScoreUnit: 50,
3157
+ textLengthScoreCap: 3,
3158
+ toolCountScoreUnit: 5,
3159
+ toolCountScoreCap: 2,
3160
+ toolDiversityThreshold: 3,
3161
+ toolDiversityScoreCap: 2,
3162
+ turnScore: 1
3163
+ });
3164
+ //#endregion
3165
+ //#region src/service.ts
3166
+ const CATEGORIES = [
3167
+ "preference",
3168
+ "decision",
3169
+ "fact",
3170
+ "insight",
3171
+ "context",
3172
+ "general"
3173
+ ];
3174
+ const JS_STRING = "\"(?:\\\\.|[^\"\\\\])*\"";
3175
+ new RegExp(`\\{id:(${JS_STRING}),label:(${JS_STRING}),title:(${JS_STRING}),color:(${JS_STRING}),font:\\{color:"white"\\}\\}`, "g");
3176
+ new RegExp(`\\{from:(${JS_STRING}),to:(${JS_STRING}),label:(${JS_STRING}),color:\\{color:(${JS_STRING})\\},arrows:"to"`, "g");
2446
3177
  //#endregion
2447
3178
  //#region src/client/MnemonLogo.tsx
2448
3179
  /** Official Mnemon mark from mnemon-dev/mnemon (Apache-2.0). */
@@ -2499,213 +3230,213 @@ window.__ModuleLoader__.load({
2499
3230
  });
2500
3231
  }
2501
3232
  //#endregion
2502
- //#region \0dsh-mnemon-css:/root/github.com/omdsh-dev/dsh-mnemon/src/client/MnemonView.module.css.mjs
2503
- const css = ".JK_n9q_shell{--mn-bg:var(--dsw-alias-bg-base);--mn-layer-1:var(--dsw-alias-bg-layer-1);--mn-layer-2:var(--dsw-alias-bg-layer-2);--mn-input:var(--dsw-specific-input-major);--mn-text:var(--dsw-alias-label-primary);--mn-muted:var(--dsw-alias-label-secondary);--mn-faint:var(--dsw-alias-label-tertiary);--mn-line:var(--dsw-alias-border-l2);--mn-line-strong:var(--dsw-alias-border-l1);--mn-accent:var(--dsw-alias-state-business-primary);--mn-hover:var(--dsw-alias-interactive-bg-hover);--mn-danger:var(--dsw-alias-state-error-primary);--mn-success:var(--dsw-alias-state-success-primary);--mn-code:var(--ds-font-family-code,\"SFMono-Regular\", Consolas, monospace);--mn-sans:system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;box-sizing:border-box;height:100%;min-height:600px;color:var(--mn-text);background:var(--mn-bg);font:13px/1.55 var(--mn-sans);flex-direction:column;display:flex;overflow:hidden}.JK_n9q_shell *,.JK_n9q_shell :before,.JK_n9q_shell :after{box-sizing:border-box}.JK_n9q_shell button,.JK_n9q_shell input,.JK_n9q_shell select,.JK_n9q_shell textarea{color:inherit;font:inherit}.JK_n9q_shell button,.JK_n9q_shell select{touch-action:manipulation}.JK_n9q_shell button:focus-visible,.JK_n9q_shell input:focus-visible,.JK_n9q_shell select:focus-visible,.JK_n9q_shell textarea:focus-visible,.JK_n9q_shell summary:focus-visible,.JK_n9q_shell [role=button]:focus-visible{outline:2px solid var(--mn-accent);outline-offset:2px}.JK_n9q_masthead{border-bottom:1px solid var(--mn-line);background:radial-gradient(circle at 70% -70%, color-mix(in srgb, var(--mn-accent) 12%, transparent), transparent 42%), var(--mn-bg);flex:none;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:clamp(14px,2vw,28px);min-height:68px;padding:10px clamp(18px,2.5vw,32px);display:grid}.JK_n9q_brand{align-items:center;gap:11px;min-width:0;display:flex}.JK_n9q_brandLogo{width:38px;height:38px;box-shadow:0 0 0 1px var(--mn-line-strong);border-radius:9px;flex:none;overflow:hidden}.JK_n9q_brand h1{letter-spacing:-.02em;margin:1px 0 0;font-size:17px;line-height:1.15}.JK_n9q_cardKicker,.JK_n9q_sectionHeading>div>span,.JK_n9q_entityHeading>span,.JK_n9q_inspectorHeading>span{color:var(--mn-faint);font:650 9px/1.2 var(--mn-code);letter-spacing:.12em;text-transform:uppercase}.JK_n9q_statusCluster{border:1px solid var(--mn-line-strong);min-height:34px;color:var(--mn-muted);background:var(--mn-layer-1);border-radius:9px;flex:none;align-items:center;gap:8px;padding:0 4px 0 11px;font-size:11px;display:flex}.JK_n9q_statusDot{border-radius:50%;width:6px;height:6px}.JK_n9q_online{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 15%, transparent)}.JK_n9q_offline{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 14%, transparent)}.JK_n9q_checking{background:var(--mn-faint);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-faint) 12%, transparent)}.JK_n9q_iconButton{width:32px;height:32px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.JK_n9q_iconButton:hover{color:var(--mn-accent);background:var(--mn-hover)}.JK_n9q_alert,.JK_n9q_inlineError{border:1px solid color-mix(in srgb, var(--mn-danger) 32%, transparent);color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 7%, var(--mn-layer-1));border-radius:9px;padding:10px 13px;font-size:12px}.JK_n9q_alert{flex-direction:column;flex:none;margin:10px clamp(18px,2.5vw,32px) 0;display:flex}.JK_n9q_telemetry{align-items:center;min-width:0;display:flex}.JK_n9q_telemetryMetric{border-left:1px solid var(--mn-line);gap:2px;min-width:72px;padding:1px 14px;display:grid}.JK_n9q_telemetryMetric span{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.JK_n9q_telemetryMetric strong{font:650 13px/1 var(--mn-code);font-variant-numeric:tabular-nums}.JK_n9q_workspace{flex-direction:column;flex:1;min-height:0;display:flex}.JK_n9q_topNavigation{border-bottom:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, var(--mn-bg));flex:none;justify-content:space-between;align-items:stretch;gap:14px;min-width:0;min-height:48px;padding:0 clamp(18px,2.5vw,32px);display:flex}.JK_n9q_nav{overscroll-behavior-inline:contain;scrollbar-width:none;align-items:stretch;gap:10px;min-width:0;display:flex;overflow-x:auto}.JK_n9q_nav::-webkit-scrollbar{display:none}.JK_n9q_navGroup{align-items:stretch;gap:14px;min-width:0;display:flex}.JK_n9q_navGroupDivider{background:var(--mn-line);flex:none;align-self:center;width:1px;height:22px}.JK_n9q_nav button{min-width:max-content;min-height:44px;color:var(--mn-muted);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:0 3px;display:flex;position:relative}.JK_n9q_nav button:hover,.JK_n9q_nav button[aria-current=page]{color:var(--mn-text)}.JK_n9q_nav button[aria-current=page]:after{content:\"\";background:var(--mn-accent);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.JK_n9q_nav button[aria-current=page] .JK_n9q_navGlyph{color:var(--mn-accent)}.JK_n9q_nav button>span:last-child{min-width:0;display:block}.JK_n9q_nav button strong{font-size:12px;font-weight:600}.JK_n9q_nav button small{display:none}.JK_n9q_navGlyph{color:var(--mn-faint);font:600 13px/1 var(--mn-code)}@media (width>=1000px){.JK_n9q_nav button{min-height:50px}.JK_n9q_nav button small{color:var(--mn-faint);margin-top:1px;font-size:9px;line-height:1.3;display:block}}.JK_n9q_spaceSummary{border-left:1px solid var(--mn-line);flex:none;grid-template-columns:minmax(0,1fr) auto;align-content:center;gap:1px 9px;min-width:142px;padding:0 0 0 14px;display:grid}.JK_n9q_spaceSummary>span{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.JK_n9q_spaceSummary code{color:var(--mn-accent);font:650 12px/1 var(--mn-code);grid-row:span 2;align-self:center}.JK_n9q_spaceSummary small{color:var(--mn-faint);font-size:9px}.JK_n9q_canvas{background:var(--mn-bg);flex:1;min-width:0;overflow:auto}.JK_n9q_page{width:min(1320px,100%);min-height:100%;margin:0 auto;padding:clamp(18px,2.2vw,28px) clamp(18px,2.8vw,34px) clamp(150px,18vh,190px)}.JK_n9q_pageHeader{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:16px;display:flex}.JK_n9q_pageHeader h2{letter-spacing:-.025em;margin:2px 0;font-size:20px;line-height:1.2}.JK_n9q_pageHeader p{max-width:72ch;color:var(--mn-muted);margin:0;font-size:12px;line-height:1.65}.JK_n9q_pageHeaderMeta{flex:none;align-items:center;gap:9px;display:flex}.JK_n9q_pageHeaderMeta>code{border:1px solid var(--mn-line);color:var(--mn-faint);background:var(--mn-layer-1);font:600 9px/1 var(--mn-code);letter-spacing:.06em;border-radius:7px;padding:6px 8px}.JK_n9q_primaryButton,.JK_n9q_secondaryButton,.JK_n9q_ghostButton,.JK_n9q_dangerButton,.JK_n9q_dangerSolidButton{cursor:pointer;border-radius:8px;min-height:36px;padding:0 13px;font-size:12px;transition:border-color .14s,background-color .14s,color .14s,transform .14s}.JK_n9q_primaryButton{border:1px solid var(--mn-accent);color:#fff;background:var(--mn-accent)}.JK_n9q_secondaryButton{border:1px solid var(--mn-line-strong);color:var(--mn-text);background:var(--mn-layer-1)}.JK_n9q_ghostButton,.JK_n9q_dangerButton{background:0 0;border:1px solid #0000;min-height:32px;padding:0 9px}.JK_n9q_ghostButton{color:var(--mn-muted)}.JK_n9q_dangerButton{color:var(--mn-danger)}.JK_n9q_dangerSolidButton{border:1px solid var(--mn-danger);color:#fff;background:var(--mn-danger);min-height:29px}.JK_n9q_primaryButton:hover,.JK_n9q_secondaryButton:hover,.JK_n9q_ghostButton:hover,.JK_n9q_dangerButton:hover{filter:brightness(.98);background-color:var(--mn-hover)}.JK_n9q_primaryButton:hover{background-color:var(--mn-accent)}.JK_n9q_shell button:disabled{cursor:not-allowed;opacity:.48}.JK_n9q_emptyState{border:1px dashed var(--mn-line-strong);background:color-mix(in srgb, var(--mn-layer-1) 50%, transparent);border-radius:13px;justify-content:center;align-items:center;gap:22px;min-height:220px;padding:30px;display:flex}.JK_n9q_emptyGlyph{border:1px solid color-mix(in srgb, var(--mn-accent) 35%, var(--mn-line));width:76px;height:76px;color:var(--mn-accent);background:radial-gradient(circle, color-mix(in srgb, var(--mn-accent) 12%, transparent), transparent 65%);font:500 26px/1 var(--mn-code);border-radius:50%;flex:none;place-items:center;display:grid}.JK_n9q_emptyState h3{margin:0 0 5px;font-size:16px}.JK_n9q_emptyState p{max-width:500px;color:var(--mn-muted);margin:0}.JK_n9q_loadingPanel{border:1px solid var(--mn-line);min-height:220px;color:var(--mn-muted);background:var(--mn-layer-1);border-radius:13px;place-items:center;display:grid}.JK_n9q_inlineError{margin:0 0 14px}.JK_n9q_muted,.JK_n9q_loading{color:var(--mn-faint);padding:16px 0;font-size:12px}.JK_n9q_bodyDirectory{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, var(--mn-bg));border-radius:11px;margin-bottom:12px;padding:12px 14px}.JK_n9q_bodyDirectoryHeader{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:10px;display:flex}.JK_n9q_bodyDirectoryHeader h3{margin:1px 0;font-size:13px}.JK_n9q_bodyDirectoryHeader p{color:var(--mn-muted);margin:0;font-size:10px}.JK_n9q_bodyDirectoryPath{max-width:min(62vw,720px);color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:9px;display:block;overflow:hidden}.JK_n9q_bodyDirectoryHeader>strong{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 9px var(--mn-code);border-radius:999px;flex:none;padding:5px 8px}.JK_n9q_bodyGrid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:7px;display:grid}.JK_n9q_bodyDirectoryEmpty{border:1px dashed color-mix(in srgb, var(--mn-line) 84%, transparent);min-height:92px;color:var(--mn-muted);border-radius:12px;grid-column:1/-1;justify-content:center;align-items:center;gap:14px;display:flex}.JK_n9q_bodyDirectoryEmpty>span{opacity:.6;font-size:28px}.JK_n9q_bodyDirectoryEmpty strong{color:var(--mn-text);display:block}.JK_n9q_bodyDirectoryEmpty p{margin:3px 0 0;font-size:10px}.JK_n9q_bodyCard{--mn-body-accent:var(--mn-success);border:1px solid var(--mn-line);background:var(--mn-layer-1);opacity:.7;border-radius:9px;min-width:0;padding:9px 10px;transition:opacity .18s,border-color .18s}.JK_n9q_bodyCard[data-active]{border-color:color-mix(in srgb, var(--mn-body-accent) 42%, var(--mn-line));opacity:1;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--mn-body-accent) 10%, transparent)}.JK_n9q_bodyCardTop{grid-template-columns:7px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.JK_n9q_bodySignal{background:var(--mn-faint);border-radius:50%;width:7px;height:7px}.JK_n9q_bodyCard[data-active] .JK_n9q_bodySignal{background:var(--mn-body-accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-body-accent) 14%, transparent)}.JK_n9q_bodyCard:not([data-healthy]) .JK_n9q_bodySignal{background:var(--mn-danger);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-danger) 12%, transparent)}.JK_n9q_bodyCardTop>div{min-width:0;display:grid}.JK_n9q_bodyCardTop strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.JK_n9q_bodyCardTop code{color:var(--mn-faint);font:9px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.JK_n9q_bodyHealth{color:var(--mn-success);font:650 8px var(--mn-code);letter-spacing:.07em;text-transform:uppercase}.JK_n9q_bodyCard:not([data-healthy]) .JK_n9q_bodyHealth{color:var(--mn-danger)}.JK_n9q_bodySwitch{min-height:32px;color:var(--mn-faint);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 1px;font-size:9.5px;display:flex}.JK_n9q_bodySwitchTrack{border:1px solid var(--mn-line-strong);background:var(--mn-layer-2);border-radius:999px;flex:none;width:29px;height:17px;transition:border-color .18s,background-color .18s;position:relative}.JK_n9q_bodySwitchTrack i{background:var(--mn-faint);border-radius:50%;width:11px;height:11px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background-color .18s;position:absolute;top:2px;left:2px}.JK_n9q_bodySwitch:hover{color:var(--mn-text)}.JK_n9q_bodySwitch:hover .JK_n9q_bodySwitchTrack{border-color:var(--mn-body-accent)}.JK_n9q_bodySwitch[aria-checked=true]{color:var(--mn-text)}.JK_n9q_bodySwitch[aria-checked=true] .JK_n9q_bodySwitchTrack{border-color:color-mix(in srgb, var(--mn-body-accent) 65%, var(--mn-line));background:color-mix(in srgb, var(--mn-body-accent) 25%, var(--mn-layer-2))}.JK_n9q_bodySwitch[aria-checked=true] .JK_n9q_bodySwitchTrack i{background:var(--mn-body-accent);transform:translate(12px)}.JK_n9q_bodyCardActions{align-items:center;gap:6px;display:flex}.JK_n9q_bodyEditButton{width:28px;height:28px;color:var(--mn-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;place-items:center;font-size:12px;display:grid}.JK_n9q_bodyEditButton:hover{color:var(--mn-text);border-color:var(--mn-line);background:var(--mn-hover)}.JK_n9q_bodyEdit{gap:9px;padding-top:2px;display:grid}.JK_n9q_bodyEdit label{color:var(--mn-faint);gap:4px;font-size:9px;display:grid}.JK_n9q_bodyEdit input,.JK_n9q_bodyEdit textarea{border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:8px;outline:0;padding:7px 9px;font-size:12px;line-height:1.5}.JK_n9q_bodyEdit textarea{resize:vertical}.JK_n9q_bodyEdit input:focus,.JK_n9q_bodyEdit textarea:focus{border-color:var(--mn-accent)}.JK_n9q_bodyEditActions{justify-content:flex-end;gap:7px;display:flex}.JK_n9q_bodyCard>p{min-height:15px;color:var(--mn-muted);margin:7px 0;font-size:10px;line-height:1.45}.JK_n9q_bodyCard footer{border-top:1px solid var(--mn-line);color:var(--mn-faint);flex-wrap:wrap;gap:5px 11px;padding-top:6px;font-size:9px;display:flex}.JK_n9q_bodyCreate{border-top:1px solid var(--mn-line);margin-top:10px;padding-top:8px}.JK_n9q_bodyCreate summary{cursor:pointer;width:max-content;color:var(--mn-accent);font-size:10px;list-style:none}.JK_n9q_bodyCreate summary::-webkit-details-marker{display:none}.JK_n9q_bodyCreate form{grid-template-columns:minmax(130px,.7fr) minmax(150px,.9fr) minmax(230px,1.7fr) auto;gap:7px;margin-top:9px;display:grid}.JK_n9q_bodyCreate input{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:0;height:34px;padding:0 9px}.JK_n9q_bodyCreate input:focus{border-color:var(--mn-accent)}.JK_n9q_graphLayout{grid-template-columns:minmax(0,1fr) minmax(240px,270px);gap:10px;display:grid}.JK_n9q_graphPanel,.JK_n9q_graphInspector{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px}.JK_n9q_graphPanel{min-width:0;overflow:hidden}.JK_n9q_graphToolbar,.JK_n9q_graphFooter{min-height:43px;color:var(--mn-muted);justify-content:space-between;align-items:center;gap:14px;padding:0 13px;font-size:10px;display:flex}.JK_n9q_graphToolbar{border-bottom:1px solid var(--mn-line)}.JK_n9q_graphToolbar>div:first-child{align-items:center;gap:7px;display:flex}.JK_n9q_graphToolbar small{color:var(--mn-faint)}.JK_n9q_liveDot{background:var(--mn-success);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 15%, transparent);border-radius:50%}.JK_n9q_graphLegend{flex-wrap:wrap;justify-content:flex-end;gap:5px 10px;display:flex}.JK_n9q_graphLegend span{align-items:center;gap:4px;display:flex}.JK_n9q_graphLegend span:before{content:\"\";background:var(--edge-color);border-radius:2px;width:13px;height:2px}.JK_n9q_graphLegend [data-edge=temporal]{--edge-color:#87909f}.JK_n9q_graphLegend [data-edge=scope]{--edge-color:#708199}.JK_n9q_graphLegend [data-edge=scope]:before{background:repeating-linear-gradient(90deg, var(--edge-color) 0 4px, transparent 4px 7px)}.JK_n9q_graphLegend [data-edge=semantic]{--edge-color:#4d7cfe}.JK_n9q_graphLegend [data-edge=causal]{--edge-color:#ef6b5b}.JK_n9q_graphLegend [data-edge=entity]{--edge-color:#22a879}.JK_n9q_graphViewport{background:radial-gradient(circle at 50% 48%, color-mix(in srgb, var(--mn-accent) 6%, transparent), transparent 47%);min-height:clamp(390px,42vw,560px);position:relative;overflow:hidden}.JK_n9q_graphCanvasControls{z-index:2;border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 88%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--mn-text) 7%, transparent);backdrop-filter:blur(10px);border-radius:9px;align-items:center;gap:5px;padding:4px;display:flex;position:absolute;top:10px;right:10px}.JK_n9q_graphCanvasControls span{color:var(--mn-faint);font:9px var(--mn-code);align-items:center;gap:5px;padding:0 6px;display:flex}.JK_n9q_graphCanvasControls span i{background:var(--mn-accent);width:5px;height:5px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-accent) 12%, transparent);border-radius:50%}.JK_n9q_graphCanvasControls button{min-height:30px;color:var(--mn-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:0 9px;font-size:9.5px}.JK_n9q_graphCanvasControls button:hover,.JK_n9q_graphCanvasControls button[data-active]{border-color:var(--mn-line);color:var(--mn-text);background:var(--mn-hover)}.JK_n9q_graphCanvasControls button[data-active]{color:var(--mn-accent)}.JK_n9q_graphSvg{touch-action:none;user-select:none;width:100%;height:clamp(390px,42vw,560px);display:block}.JK_n9q_graphBackdrop{fill:var(--mn-layer-1)}.JK_n9q_graphGridLine{stroke:var(--mn-line);stroke-width:.6px;opacity:.5}.JK_n9q_graphEdge{fill:none;stroke:#87909f;stroke-width:1px;opacity:.32;vector-effect:non-scaling-stroke}.JK_n9q_graphEdge[data-edge=scope]{stroke:#708199;stroke-dasharray:4 5;opacity:.28}.JK_n9q_graphEdge[data-edge=semantic]{stroke:#4d7cfe;opacity:.48}.JK_n9q_graphEdge[data-edge=causal]{stroke:#ef6b5b;opacity:.52}.JK_n9q_graphEdge[data-edge=entity]{stroke:#22a879;stroke-width:1.45px;opacity:.78}.JK_n9q_graphNode{--node:#8290a8;cursor:grab;outline:none}.JK_n9q_graphNode[data-dragging]{cursor:grabbing}.JK_n9q_graphNode[data-category=decision]{--node:#ef8354}.JK_n9q_graphNode[data-category=preference]{--node:#a879e1}.JK_n9q_graphNode[data-category=fact]{--node:#4d7cfe}.JK_n9q_graphNode[data-category=insight]{--node:#19a77d}.JK_n9q_graphNode[data-category=context]{--node:#d8a624}.JK_n9q_graphNode[data-kind=space]{--node:var(--mn-success)}.JK_n9q_graphNode[data-kind=entity]{--node:#2b9db9}.JK_n9q_nodeHalo{fill:color-mix(in srgb, var(--node) 18%, var(--mn-layer-1));stroke:color-mix(in srgb, var(--node) 60%, var(--mn-layer-1));stroke-width:1.5px;transition:r .16s}.JK_n9q_nodeCore{fill:var(--node)}.JK_n9q_nodeLabel{fill:var(--mn-muted);font:10px var(--mn-code);pointer-events:auto}.JK_n9q_nodeBodyLabel{fill:var(--mn-faint);font:650 8px var(--mn-code);letter-spacing:.04em;pointer-events:auto}.JK_n9q_graphSvg[data-density=sparse] .JK_n9q_nodeLabel{font-size:12px}.JK_n9q_graphNode:hover .JK_n9q_nodeHalo,.JK_n9q_graphNode:focus .JK_n9q_nodeHalo,.JK_n9q_graphNode[data-selected] .JK_n9q_nodeHalo{fill:color-mix(in srgb, var(--node) 28%, var(--mn-layer-1));stroke:var(--node)}.JK_n9q_graphNode[data-selected] .JK_n9q_nodeLabel{fill:var(--mn-text);font-weight:650}.JK_n9q_graphFooter{border-top:1px solid var(--mn-line);min-height:38px;color:var(--mn-faint)}.JK_n9q_graphInspector{min-width:0;min-height:calc(clamp(390px,42vw,560px) + 83px);padding:15px;overflow:hidden}.JK_n9q_inspectorEmpty{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.JK_n9q_inspectorLogo{opacity:.72;border-radius:11px;width:54px;height:54px;margin-bottom:15px}.JK_n9q_inspectorEmpty h3{margin:7px 0 3px;font-size:14px}.JK_n9q_inspectorEmpty p{color:var(--mn-faint);margin:0;font-size:11px}.JK_n9q_inspectorHeading{justify-content:space-between;align-items:center;display:flex}.JK_n9q_inspectorHeading button,.JK_n9q_sectionHeading button{width:32px;height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.JK_n9q_inspectorHeading button:hover,.JK_n9q_sectionHeading button:hover{background:var(--mn-hover)}.JK_n9q_categoryChip{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 10%, transparent);border-radius:999px;margin-top:24px;padding:3px 8px;font-size:10px;display:inline-flex}.JK_n9q_inspectorTitleRow{align-items:flex-start;gap:8px;min-width:0;margin:12px 0 20px;display:flex}.JK_n9q_inspectorTitle{overflow-wrap:anywhere;white-space:pre-wrap;-webkit-line-clamp:6;-webkit-box-orient:vertical;flex:1;min-width:0;margin:0;font-size:14px;line-height:1.6;display:-webkit-box;overflow:hidden}.JK_n9q_inspectorEye{border:1px solid var(--mn-line);width:27px;height:27px;color:var(--mn-muted);background:var(--mn-layer-1);cursor:pointer;border-radius:7px;flex:none;place-items:center;transition:color .15s,border-color .15s,background-color .15s;display:grid}.JK_n9q_inspectorEye:hover{color:var(--mn-accent);border-color:var(--mn-line-strong);background:var(--mn-hover)}.JK_n9q_inspectorMeta{margin:0}.JK_n9q_inspectorMeta>div{border-top:1px solid var(--mn-line);gap:3px;padding:11px 0;display:grid}.JK_n9q_inspectorMeta dt{color:var(--mn-faint);font:9px var(--mn-code);text-transform:uppercase}.JK_n9q_inspectorMeta dd{overflow-wrap:anywhere;color:var(--mn-muted);margin:0;font-size:11px}.JK_n9q_inspectorActions{gap:8px;margin-top:20px;display:grid}.JK_n9q_previewOverlay{z-index:40;background:color-mix(in srgb, var(--mn-bg) 58%, transparent);backdrop-filter:blur(4px);place-items:center;padding:clamp(16px,4vw,48px);display:grid;position:fixed;inset:0}.JK_n9q_previewDialog{border:1px solid var(--mn-line-strong);background:var(--mn-layer-1);width:min(680px,100%);max-height:min(76vh,640px);box-shadow:0 24px 64px color-mix(in srgb, var(--mn-text) 20%, transparent);border-radius:13px;flex-direction:column;display:flex;overflow:hidden}.JK_n9q_previewHeading{border-bottom:1px solid var(--mn-line);flex:none;justify-content:space-between;align-items:center;gap:12px;min-height:46px;padding:0 14px 0 16px;display:flex}.JK_n9q_previewHeading>span{color:var(--mn-accent);font:650 9px/1.2 var(--mn-code);letter-spacing:.08em;text-transform:uppercase}.JK_n9q_previewHeading button{width:32px;height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;font-size:15px;display:grid}.JK_n9q_previewHeading button:hover{background:var(--mn-hover)}.JK_n9q_previewMeta{border-bottom:1px solid var(--mn-line);color:var(--mn-faint);font:9px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;flex:none;padding:8px 16px;overflow:hidden}.JK_n9q_previewBody{min-height:0;padding:14px 16px 18px;overflow:auto}.JK_n9q_previewBody p{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--mn-text);margin:0;font-size:13px;line-height:1.7}.JK_n9q_searchBar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:13px;margin-bottom:18px;padding:13px}.JK_n9q_queryField{border:1px solid var(--mn-line-strong);background:var(--mn-input);border-radius:9px;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:5px;padding:0 10px;display:grid}.JK_n9q_queryField>span{color:var(--mn-accent);font:18px var(--mn-code)}.JK_n9q_queryField input{background:0 0;border:0;outline:0;width:100%;height:42px}.JK_n9q_queryField kbd{color:var(--mn-faint);font:11px var(--mn-code)}.JK_n9q_searchControls{justify-content:flex-end;align-items:flex-end;gap:10px;padding-top:10px;display:flex}.JK_n9q_searchActions{align-items:center;gap:7px;display:flex}.JK_n9q_agentAnswer{border:1px solid color-mix(in srgb, var(--mn-accent) 30%, var(--mn-line));background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-1)), var(--mn-layer-1) 60%);border-radius:11px;margin-bottom:16px;padding:16px 18px}.JK_n9q_agentAnswerHeading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.JK_n9q_agentAnswerHeading span{color:var(--mn-accent);font:650 9px/1.2 var(--mn-code);letter-spacing:.08em}.JK_n9q_agentAnswerHeading h3{margin:4px 0 0;font-size:15px}.JK_n9q_agentAnswerHeading>code{color:var(--mn-faint);font-size:9px}.JK_n9q_agentAnswer>p{white-space:pre-wrap;color:var(--mn-text);margin:12px 0;font-size:13px;line-height:1.7}.JK_n9q_agentCitations{border-top:1px solid var(--mn-line);flex-wrap:wrap;gap:5px;padding-top:10px;display:flex}.JK_n9q_agentCitations code{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:5px;padding:3px 6px;font-size:9px}.JK_n9q_searchControls label,.JK_n9q_formGrid label,.JK_n9q_fieldWide{color:var(--mn-muted);gap:5px;font-size:11px;display:grid}.JK_n9q_searchControls select,.JK_n9q_formGrid select,.JK_n9q_formGrid input,.JK_n9q_listToolbar input,.JK_n9q_listToolbar select,.JK_n9q_entitySearch input{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:140px;height:34px;padding:0 9px}.JK_n9q_searchControls select:focus,.JK_n9q_formGrid select:focus,.JK_n9q_formGrid input:focus,.JK_n9q_listToolbar input:focus,.JK_n9q_listToolbar select:focus,.JK_n9q_entitySearch input:focus,.JK_n9q_supervisedForm textarea:focus{border-color:var(--mn-accent)}.JK_n9q_singleColumn{max-width:830px}.JK_n9q_resultLayout{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;gap:14px;display:grid}.JK_n9q_results,.JK_n9q_relatedPane,.JK_n9q_entityResults{min-width:0}.JK_n9q_sectionHeading{justify-content:space-between;align-items:center;gap:16px;min-height:39px;margin-bottom:8px;display:flex}.JK_n9q_sectionHeading h3{margin:2px 0 0;font-size:15px}.JK_n9q_sectionHeading>strong{min-width:27px;height:27px;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 11px var(--mn-code);border-radius:7px;place-items:center;display:grid}.JK_n9q_relatedPane{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;max-height:calc(100vh - 230px);padding:13px;scroll-margin-top:14px;position:sticky;top:12px;overflow:auto}.JK_n9q_relatedSource{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:8px;margin:0 0 13px;padding:10px;font-size:11px}.JK_n9q_insightCard{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;margin-bottom:9px;padding:14px;transition:border-color .15s,transform .15s,box-shadow .15s}.JK_n9q_insightCard:hover{border-color:var(--mn-line-strong);transform:translateY(-1px)}.JK_n9q_cardTop{justify-content:space-between;align-items:center;gap:10px;display:flex}.JK_n9q_badges,.JK_n9q_tags,.JK_n9q_entities{flex-wrap:wrap;gap:5px;display:flex}.JK_n9q_badge{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:999px;padding:2px 6px;font-size:9px}.JK_n9q_id{color:var(--mn-faint);font:9px var(--mn-code)}.JK_n9q_content{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0;line-height:1.65}.JK_n9q_tags{color:var(--mn-accent);font-size:10px}.JK_n9q_entities{margin-top:7px}.JK_n9q_entities span{border:1px solid var(--mn-line);color:var(--mn-muted);border-radius:5px;padding:2px 6px;font-size:9px}.JK_n9q_cardActions{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:3px;min-height:30px;margin-top:10px;padding-top:8px;display:flex}.JK_n9q_confirmBar{width:100%;color:var(--mn-danger);justify-content:flex-end;align-items:center;gap:5px;font-size:11px;display:flex}.JK_n9q_confirmBar>span{margin-right:auto}.JK_n9q_entityLayout{grid-template-columns:265px minmax(0,1fr);align-items:start;gap:16px;display:grid}.JK_n9q_entityRail{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;padding:13px;position:sticky;top:0}.JK_n9q_entitySearch{grid-template-columns:minmax(0,1fr) auto;gap:7px;display:grid}.JK_n9q_entitySearch input{min-width:0}.JK_n9q_entityHeading{justify-content:space-between;align-items:center;margin:18px 2px 7px;display:flex}.JK_n9q_entityHeading small{color:var(--mn-faint);font-size:9px}.JK_n9q_entityList{gap:3px;display:grid}.JK_n9q_entityList button{min-height:34px;color:var(--mn-muted);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;padding:0 9px;display:flex}.JK_n9q_entityList button:hover,.JK_n9q_entityList button[aria-pressed=true]{color:var(--mn-text);background:var(--mn-hover)}.JK_n9q_entityList strong{color:var(--mn-faint);font:10px var(--mn-code)}.JK_n9q_entityResults>.JK_n9q_emptyState{min-height:360px}.JK_n9q_runtimeComposer,.JK_n9q_runtimeTarget{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px}.JK_n9q_runtimeComposer{background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-1)), var(--mn-layer-1) 55%);margin-bottom:13px;padding:15px}.JK_n9q_runtimeComposerHeading{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:11px;display:flex}.JK_n9q_runtimeComposerHeading h3{margin:0 0 2px;font-size:14px}.JK_n9q_runtimeComposerHeading p{color:var(--mn-muted);margin:0;font-size:10px}.JK_n9q_runtimeComposerHeading>span{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 9px var(--mn-code);border-radius:999px;flex:none;padding:4px 8px}.JK_n9q_runtimeComposer>textarea,.JK_n9q_runtimeEntry textarea{resize:vertical;border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:9px;outline:0;padding:10px 11px;line-height:1.6}.JK_n9q_runtimeComposer>textarea:focus,.JK_n9q_runtimeEntry textarea:focus{border-color:var(--mn-accent)}.JK_n9q_runtimeComposerActions{justify-content:flex-end;align-items:flex-end;gap:9px;margin-top:10px;display:flex}.JK_n9q_runtimeComposerActions label{color:var(--mn-faint);gap:4px;font-size:9px;display:grid}.JK_n9q_runtimeComposerActions select,.JK_n9q_runtimeEntry select{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:135px;height:34px;padding:0 8px}.JK_n9q_runtimeNotice,.JK_n9q_runtimeReadOnly{border:1px solid color-mix(in srgb, var(--mn-success) 28%, var(--mn-line));color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 6%, var(--mn-layer-1));border-radius:9px;margin-bottom:13px;padding:9px 12px;font-size:11px}.JK_n9q_runtimeReadOnly{color:var(--mn-muted);border-color:var(--mn-line);background:var(--mn-layer-1)}.JK_n9q_runtimeGrid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.JK_n9q_runtimeTarget{min-width:0;overflow:hidden}.JK_n9q_runtimeTargetHeader{justify-content:space-between;align-items:center;gap:14px;padding:14px 15px 9px;display:flex}.JK_n9q_runtimeTargetHeader>div{gap:1px;display:grid}.JK_n9q_runtimeTargetHeader span{color:var(--mn-faint);font:650 9px var(--mn-code);letter-spacing:.08em}.JK_n9q_runtimeTargetHeader h3{margin:0;font-size:15px}.JK_n9q_runtimeTargetHeader>strong{min-width:28px;height:28px;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 11px var(--mn-code);border-radius:8px;place-items:center;display:grid}.JK_n9q_capacityLine{align-items:center;gap:9px;padding:0 15px;display:flex}.JK_n9q_capacityLine>div{background:var(--mn-layer-2);border-radius:999px;flex:1;height:4px;overflow:hidden}.JK_n9q_capacityLine i{border-radius:inherit;background:var(--mn-success);height:100%;transition:width .25s;display:block}.JK_n9q_capacityLine>span{min-width:88px;color:var(--mn-faint);font:9px var(--mn-code);text-align:right}.JK_n9q_runtimeTargetDescription{min-height:31px;color:var(--mn-muted);margin:8px 15px 12px;font-size:10px}.JK_n9q_runtimeEntries{border-top:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 36%, var(--mn-layer-1));gap:7px;padding:10px;display:grid}.JK_n9q_runtimeEntry{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:9px;padding:11px;position:relative}.JK_n9q_runtimeEntry:before{content:\"\";background:var(--mn-muted);border-radius:0 2px 2px 0;width:2px;position:absolute;top:12px;bottom:12px;left:-1px}.JK_n9q_runtimeEntry[data-importance=critical]:before{background:var(--mn-danger)}.JK_n9q_runtimeEntry[data-importance=low]:before{background:var(--mn-faint);opacity:.45}.JK_n9q_runtimeEntryMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.JK_n9q_runtimeEntryMeta>span{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:999px;padding:2px 6px;font-size:9px}.JK_n9q_runtimeEntry[data-importance=critical] .JK_n9q_runtimeEntryMeta>span{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 8%, transparent)}.JK_n9q_runtimeEntryMeta time{color:var(--mn-faint);font:8px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.JK_n9q_runtimeEntry>p{white-space:pre-wrap;overflow-wrap:anywhere;min-height:42px;margin:9px 0;font-size:12px;line-height:1.6}.JK_n9q_runtimeEntry>select{margin-top:7px}.JK_n9q_runtimeEntry footer{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:4px;min-height:30px;margin-top:7px;padding-top:7px;display:flex}.JK_n9q_runtimeEntry footer>span{color:var(--mn-danger);margin-right:auto;font-size:10px}.JK_n9q_runtimeEmpty{min-height:126px;color:var(--mn-faint);text-align:center;align-content:center;place-items:center;gap:5px;display:grid}.JK_n9q_runtimeEmpty>span{font:24px var(--mn-code);opacity:.65}.JK_n9q_runtimeEmpty p{margin:0;font-size:10px}.JK_n9q_runtimeFootnote{color:var(--mn-faint);margin:10px 2px 0;font-size:9px}.JK_n9q_documentSummary{grid-template-columns:.7fr .7fr 1.6fr;gap:9px;margin-bottom:12px;display:grid}.JK_n9q_documentSummary article{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;min-height:91px;padding:13px 14px}.JK_n9q_documentSummary article>span{color:var(--mn-faint);font-size:9px;display:block}.JK_n9q_documentSummary article>strong{font:650 21px/1 var(--mn-code);margin:7px 0 4px;display:block}.JK_n9q_documentSummary article>small{color:var(--mn-muted);font-size:9px}.JK_n9q_documentCapacity>div{background:var(--mn-layer-2);border-radius:999px;height:4px;margin:7px 0 6px;overflow:hidden}.JK_n9q_documentCapacity>div i{border-radius:inherit;background:var(--mn-accent);height:100%;transition:width .3s;display:block}.JK_n9q_documentToolbar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;align-items:center;gap:9px;margin-bottom:12px;padding:9px;display:flex}.JK_n9q_documentToolbar form{flex:1;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:5px;min-width:260px;padding-left:8px;display:grid}.JK_n9q_documentToolbar form>span{color:var(--mn-faint);font:15px var(--mn-code)}.JK_n9q_documentToolbar input,.JK_n9q_documentEditor input,.JK_n9q_documentEditor textarea{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;width:100%;padding:8px 10px}.JK_n9q_documentToolbar input{background:0 0;border-color:#0000;height:34px}.JK_n9q_documentToolbar input:focus,.JK_n9q_documentEditor input:focus,.JK_n9q_documentEditor textarea:focus{border-color:var(--mn-accent)}.JK_n9q_documentToolbar>div{border:1px solid var(--mn-line);background:var(--mn-layer-2);border-radius:8px;align-items:center;gap:3px;padding:3px;display:flex}.JK_n9q_documentToolbar>div button{min-height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:10.5px}.JK_n9q_documentToolbar>div button[data-active]{color:var(--mn-text);background:var(--mn-layer-1);box-shadow:0 1px 3px color-mix(in srgb, var(--mn-text) 8%, transparent)}.JK_n9q_documentToolbar>div b{color:var(--mn-faint);font:600 9px var(--mn-code);margin-left:4px}.JK_n9q_documentWorkspace{grid-template-columns:minmax(250px,310px) minmax(0,1fr);gap:10px;min-height:590px;display:grid}.JK_n9q_documentList,.JK_n9q_documentReader{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;overflow:hidden}.JK_n9q_documentList{align-self:stretch}.JK_n9q_documentList>header{border-bottom:1px solid var(--mn-line);min-height:42px;color:var(--mn-faint);justify-content:space-between;align-items:center;padding:0 12px;font-size:9px;display:flex}.JK_n9q_documentList>header code{color:var(--mn-accent)}.JK_n9q_documentList>button{border:0;border-bottom:1px solid var(--mn-line);width:100%;color:var(--mn-text);text-align:left;cursor:pointer;background:0 0;padding:12px;transition:background-color .15s,box-shadow .15s;display:block}.JK_n9q_documentList>button:hover{background:var(--mn-hover)}.JK_n9q_documentList>button[data-selected]{background:color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-1));box-shadow:inset 2px 0 var(--mn-accent)}.JK_n9q_documentList>button>div{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.JK_n9q_documentList>button strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.JK_n9q_documentList>button time{color:var(--mn-faint);font:8px var(--mn-code);flex:none}.JK_n9q_documentList>button p{min-height:30px;color:var(--mn-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 9px;font-size:10px;line-height:1.5;display:-webkit-box;overflow:hidden}.JK_n9q_documentList>button footer{color:var(--mn-faint);align-items:center;gap:8px;font-size:9px;display:flex}.JK_n9q_documentList>button footer code{margin-left:auto}.JK_n9q_documentList>button footer em{color:var(--mn-danger);font-style:normal}.JK_n9q_documentListEmpty{min-height:230px;color:var(--mn-muted);text-align:center;align-content:center;place-items:center;gap:4px;padding:22px;display:grid}.JK_n9q_documentListEmpty>span{color:var(--mn-accent);font:28px var(--mn-code);opacity:.6;margin-bottom:6px}.JK_n9q_documentListEmpty p{color:var(--mn-faint);margin:0;font-size:10px}.JK_n9q_documentReader{padding:clamp(16px,2vw,22px)}.JK_n9q_documentReader>.JK_n9q_emptyState{background:0 0;border:0;height:100%}.JK_n9q_documentDetail>header{border-bottom:1px solid var(--mn-line);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:15px;display:flex}.JK_n9q_documentDetail>header span{color:var(--mn-accent);font:650 9px var(--mn-code);letter-spacing:.08em;text-transform:uppercase}.JK_n9q_documentDetail>header h3{margin:5px 0 3px;font-size:18px}.JK_n9q_documentDetail>header p{color:var(--mn-muted);margin:0;font-size:11px}.JK_n9q_documentDetail>dl{border-top:1px solid var(--mn-line);border-left:1px solid var(--mn-line);grid-template-columns:2fr .45fr .8fr .55fr;margin:13px 0;display:grid}.JK_n9q_documentDetail>dl>div{border-right:1px solid var(--mn-line);border-bottom:1px solid var(--mn-line);min-width:0;padding:8px 9px}.JK_n9q_documentDetail dt{color:var(--mn-faint);margin-bottom:3px;font-size:8px}.JK_n9q_documentDetail dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:9px;overflow:hidden}.JK_n9q_documentSources{flex-wrap:wrap;align-items:center;gap:5px;margin:11px 0;display:flex}.JK_n9q_documentSources>span{color:var(--mn-faint);margin-right:4px;font-size:9px}.JK_n9q_documentSources code,.JK_n9q_documentArchiveReceipt code{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:5px;padding:3px 6px;font-size:8px}.JK_n9q_markdownBody{overflow-wrap:anywhere;border:1px solid var(--mn-line);min-height:310px;color:var(--mn-text);background:color-mix(in srgb, var(--mn-layer-2) 30%, var(--mn-layer-1));border-radius:10px;margin:16px 0 0;padding:clamp(18px,2.5vw,28px);font-size:13px;line-height:1.78}.JK_n9q_markdownBody>:first-child{margin-top:0}.JK_n9q_markdownBody>:last-child{margin-bottom:0}.JK_n9q_markdownBody h1,.JK_n9q_markdownBody h2,.JK_n9q_markdownBody h3,.JK_n9q_markdownBody h4{color:var(--mn-text);letter-spacing:-.015em;margin:1.55em 0 .65em;line-height:1.3}.JK_n9q_markdownBody h1{border-bottom:1px solid var(--mn-line);padding-bottom:.35em;font-size:1.75em}.JK_n9q_markdownBody h2{border-bottom:1px solid var(--mn-line);padding-bottom:.3em;font-size:1.42em}.JK_n9q_markdownBody h3{font-size:1.18em}.JK_n9q_markdownBody p,.JK_n9q_markdownBody ul,.JK_n9q_markdownBody ol,.JK_n9q_markdownBody blockquote,.JK_n9q_markdownBody table,.JK_n9q_markdownBody pre{margin:.85em 0}.JK_n9q_markdownBody ul,.JK_n9q_markdownBody ol{padding-left:1.6em}.JK_n9q_markdownBody li+li{margin-top:.3em}.JK_n9q_markdownBody blockquote{border-left:3px solid var(--mn-accent);color:var(--mn-muted);background:color-mix(in srgb, var(--mn-accent) 4%, transparent);margin-inline:0;padding:.15em 1em}.JK_n9q_markdownBody code{color:var(--mn-text);background:var(--mn-layer-2);font:.88em/1.55 var(--mn-code);border-radius:5px;padding:.15em .38em}.JK_n9q_markdownBody pre{border:1px solid var(--mn-line);background:var(--mn-layer-2);border-radius:9px;max-width:100%;padding:14px 16px;overflow:auto}.JK_n9q_markdownBody pre code{background:0 0;padding:0;font-size:11px}.JK_n9q_markdownBody a{color:var(--mn-accent);text-underline-offset:3px;text-decoration-thickness:1px}.JK_n9q_markdownBody hr{border:0;border-top:1px solid var(--mn-line);margin:1.8em 0}.JK_n9q_markdownBody table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.JK_n9q_markdownBody th,.JK_n9q_markdownBody td{border:1px solid var(--mn-line);text-align:left;vertical-align:top;padding:8px 10px}.JK_n9q_markdownBody th{background:var(--mn-layer-2);font-weight:600}.JK_n9q_markdownBody img{border-radius:8px;max-width:100%;height:auto}.JK_n9q_documentArchiveReceipt{border:1px solid color-mix(in srgb, var(--mn-success) 28%, var(--mn-line));background:color-mix(in srgb, var(--mn-success) 5%, transparent);border-radius:9px;margin:12px 0;padding:11px 12px}.JK_n9q_documentArchiveReceipt p{color:var(--mn-muted);margin:4px 0 8px;font-size:10px}.JK_n9q_documentArchiveReceipt div{flex-wrap:wrap;gap:5px;display:flex}.JK_n9q_documentDanger{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:7px;min-height:57px;margin-top:13px;padding-top:12px;display:flex}.JK_n9q_documentDanger>div{margin-right:auto}.JK_n9q_documentDanger strong{font-size:11px;display:block}.JK_n9q_documentDanger p{color:var(--mn-faint);margin:2px 0 0;font-size:9px}.JK_n9q_documentDanger>span{color:var(--mn-danger);margin-right:auto;font-size:10px}.JK_n9q_documentEditor{border:1px solid var(--mn-line);background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-1)), var(--mn-layer-1) 55%);border-radius:11px;margin-bottom:12px;padding:15px}.JK_n9q_documentReader>.JK_n9q_documentEditor{background:0 0;border:0;margin:0;padding:0}.JK_n9q_documentEditor>header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:12px;display:flex}.JK_n9q_documentEditor h3{margin:0;font-size:14px}.JK_n9q_documentEditor header p{color:var(--mn-muted);margin:2px 0 0;font-size:10px}.JK_n9q_documentEditor header>span,.JK_n9q_documentEditor header>code{color:var(--mn-accent);font:650 9px var(--mn-code)}.JK_n9q_documentEditor label{color:var(--mn-faint);gap:4px;margin-top:9px;font-size:9px;display:grid}.JK_n9q_documentEditor textarea{resize:vertical;line-height:1.65}.JK_n9q_documentEditorMeta{grid-template-columns:.8fr 1.2fr;gap:9px;display:grid}.JK_n9q_documentEditorMeta label{margin:0}.JK_n9q_documentEditor footer{justify-content:flex-end;gap:7px;margin-top:11px;display:flex}.JK_n9q_writebackLayout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start;gap:15px;display:grid}.JK_n9q_writeGuide,.JK_n9q_supervisedComposer{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px}.JK_n9q_writeGuide{padding:17px}.JK_n9q_writeGuide h3{margin:5px 0 15px;font-size:15px}.JK_n9q_writeGuide ol{counter-reset:gate;gap:13px;margin:0;padding:0;list-style:none;display:grid}.JK_n9q_writeGuide li{counter-increment:gate;grid-template-columns:22px minmax(0,1fr);column-gap:7px;display:grid}.JK_n9q_writeGuide li:before{content:\"0\" counter(gate);color:var(--mn-accent);font:10px var(--mn-code);grid-row:span 2}.JK_n9q_writeGuide li strong{font-size:12px}.JK_n9q_writeGuide li span,.JK_n9q_writeGuide p{color:var(--mn-faint);font-size:10px}.JK_n9q_writeGuide p{border-top:1px solid var(--mn-line);margin:17px 0 0;padding-top:13px}.JK_n9q_supervisedComposer{overflow:hidden}.JK_n9q_supervisedForm{padding:18px}.JK_n9q_supervisedHeading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.JK_n9q_supervisedHeading h3{margin:4px 0 0;font-size:17px}.JK_n9q_sessionReady,.JK_n9q_sessionMissing{font:650 9px var(--mn-code);border-radius:999px;padding:4px 8px}.JK_n9q_sessionReady{color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 10%, transparent)}.JK_n9q_sessionMissing{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 10%, transparent)}.JK_n9q_supervisedForm textarea{resize:vertical;border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:9px;outline:0;padding:12px;line-height:1.65}.JK_n9q_sessionHint{color:var(--mn-danger);margin:9px 0 0;font-size:11px}.JK_n9q_formGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:13px;display:grid}.JK_n9q_fieldWide{grid-column:1/-1}.JK_n9q_formGrid select,.JK_n9q_formGrid input{width:100%;min-width:0}.JK_n9q_formActions{align-items:center;gap:12px;margin-top:15px;display:flex}.JK_n9q_formActions span{color:var(--mn-muted);font-size:11px}.JK_n9q_advancedWrite{border-top:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 45%, var(--mn-layer-1))}.JK_n9q_advancedWrite summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:10px 18px;list-style:none;display:flex}.JK_n9q_advancedWrite summary::-webkit-details-marker{display:none}.JK_n9q_advancedWrite summary>span:first-child{gap:2px;display:grid}.JK_n9q_advancedWrite summary strong{font-size:12px}.JK_n9q_advancedWrite summary small{color:var(--mn-faint);font-size:10px}.JK_n9q_advancedWrite summary>span:last-child{color:var(--mn-accent);font:10px var(--mn-code)}.JK_n9q_advancedWrite[open] summary{border-bottom:1px solid var(--mn-line)}.JK_n9q_advancedWrite[open] summary>span:last-child{font-size:0}.JK_n9q_advancedWrite[open] summary>span:last-child:after{content:\"−\";font-size:13px}.JK_n9q_manualForm{padding:3px 18px 18px}.JK_n9q_manualActions{justify-content:space-between;align-items:center;gap:14px;margin-top:15px;display:flex}.JK_n9q_manualActions p{max-width:520px;color:var(--mn-faint);margin:0;font-size:10px}.JK_n9q_listToolbar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;grid-template-columns:minmax(0,1fr) 170px auto;gap:9px;padding:12px;display:grid}.JK_n9q_listToolbar input,.JK_n9q_listToolbar select{width:100%;min-width:0}.JK_n9q_listNotice{color:var(--mn-faint);margin:10px 0 16px;font-size:10px}.JK_n9q_listNotice span{color:var(--mn-success);font:650 9px var(--mn-code);letter-spacing:.08em;margin-right:7px}.JK_n9q_memoryList{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:9px;display:grid}.JK_n9q_memoryList .JK_n9q_insightCard{height:100%;margin:0}.JK_n9q_listProgress{border-top:1px solid var(--mn-line);min-height:58px;color:var(--mn-faint);justify-content:center;align-items:center;gap:13px;margin-top:12px;padding:10px;font-size:10px;display:flex}.JK_n9q_healthStrip{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:13px;display:grid;overflow:hidden}.JK_n9q_healthStrip article{box-sizing:border-box;border-right:1px solid var(--mn-line);align-items:flex-start;gap:10px;min-width:0;min-height:78px;padding:14px 15px;display:flex}.JK_n9q_healthStrip article>div{min-width:0}.JK_n9q_healthStrip article:last-child{border-right:0}.JK_n9q_healthStrip small{color:var(--mn-faint);font:650 10px var(--mn-code);letter-spacing:.06em;margin-bottom:4px;display:block}.JK_n9q_healthStrip strong{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;display:block;overflow:hidden}.JK_n9q_healthStrip p{color:var(--mn-muted);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:10.5px;overflow:hidden}.JK_n9q_healthIndicator{width:7px;height:7px;box-shadow:0 0 0 4px color-mix(in srgb, currentColor 9%, transparent);border-radius:50%;flex:none;margin-top:3px}.JK_n9q_healthGood{color:var(--mn-success);background:currentColor}.JK_n9q_healthBad{color:var(--mn-danger);background:currentColor}.JK_n9q_healthMuted{color:var(--mn-faint);background:currentColor}.JK_n9q_memoryFlow{border:1px solid var(--mn-line);background:radial-gradient(circle at 52% 10%, color-mix(in srgb, var(--mn-accent) 5%, transparent), transparent 28%), var(--mn-layer-1);border-radius:12px;margin-bottom:13px;padding:16px;overflow:hidden;container:JK_n9q_mnemon-flow/inline-size}.JK_n9q_memoryFlowCanvas{overscroll-behavior-inline:contain;border:1px solid var(--mn-line);background-image:linear-gradient(color-mix(in srgb, var(--mn-line) 36%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--mn-line) 36%, transparent) 1px, transparent 1px);background-size:24px 24px;background-color:color-mix(in srgb, var(--mn-layer-2) 28%, transparent);scrollbar-color:var(--mn-line-strong) transparent;border-radius:11px;margin-top:13px;overflow:auto hidden}.JK_n9q_flowArchitecture{gap:10px;min-width:840px;padding:10px;display:grid}.JK_n9q_flowLane{border:1px solid color-mix(in srgb, var(--mn-line) 82%, transparent);background:color-mix(in srgb, var(--mn-layer-1) 92%, transparent);min-width:0;box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-accent) 34%, transparent);border-radius:10px;overflow:hidden}.JK_n9q_flowLane[data-lane=semantic]{box-shadow:inset 3px 0 #8b6ce77a}.JK_n9q_flowLane[data-lane=maintenance]{box-shadow:inset 3px 0 #d18a3c85}.JK_n9q_flowLane>header{border-bottom:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 42%, transparent);align-items:center;gap:9px;min-height:46px;padding:8px 12px;display:flex}.JK_n9q_flowLane>header>span{color:var(--mn-accent);font:650 9px var(--mn-code)}.JK_n9q_flowLane>header>div{gap:1px;min-width:0;display:grid}.JK_n9q_flowLane>header strong{font-size:12px}.JK_n9q_flowLane>header small{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.JK_n9q_flowTrack{align-items:stretch;gap:0;min-width:0;padding:11px 12px;display:flex}.JK_n9q_flowTrack+.JK_n9q_flowTrack{padding-top:0}.JK_n9q_flowSecondaryTrack,.JK_n9q_flowReviewTrack,.JK_n9q_flowArchiveTrack{border-top:1px dashed color-mix(in srgb, var(--mn-line) 72%, transparent);padding-top:11px!important}.JK_n9q_flowArchitectureNode{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 96%, transparent);border-radius:9px;flex:1 1 0;grid-template-columns:7px minmax(0,1fr);align-content:center;gap:9px;min-width:0;min-height:84px;padding:11px;transition:border-color .2s,background-color .2s,box-shadow .2s;display:grid;position:relative}.JK_n9q_flowArchitectureNode[data-kind=worker]{border-style:dashed;border-color:color-mix(in srgb, #8b6ce7 46%, var(--mn-line));background:color-mix(in srgb, #8b6ce7 4%, var(--mn-layer-1))}.JK_n9q_flowArchitectureNode[data-kind=store]{background:color-mix(in srgb, var(--mn-success) 3%, var(--mn-layer-1))}.JK_n9q_flowArchitectureNode[data-kind=task]{background:color-mix(in srgb, var(--mn-accent) 3%, var(--mn-layer-1))}.JK_n9q_flowArchitectureNode[data-emphasis=active]{border-color:color-mix(in srgb, var(--mn-accent) 56%, var(--mn-line));box-shadow:0 0 0 2px color-mix(in srgb, var(--mn-accent) 8%, transparent)}.JK_n9q_flowArchitectureNode[data-emphasis=recent]{border-color:color-mix(in srgb, var(--mn-success) 48%, var(--mn-line))}.JK_n9q_flowArchitectureNode[data-emphasis=pending]{border-color:color-mix(in srgb, #d18a3c 55%, var(--mn-line))}.JK_n9q_flowArchitectureSignal{background:var(--mn-faint);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-faint) 8%, transparent);border-radius:50%;margin-top:4px}.JK_n9q_flowArchitectureNode[data-state=ready] .JK_n9q_flowArchitectureSignal{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 10%, transparent)}.JK_n9q_flowArchitectureNode[data-state=error] .JK_n9q_flowArchitectureSignal{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 10%, transparent)}.JK_n9q_flowArchitectureNode>div{align-content:start;gap:5px;min-width:0;display:grid}.JK_n9q_flowArchitectureNode strong{overflow-wrap:break-word;word-break:normal;font-size:11.5px;line-height:1.35}.JK_n9q_flowArchitectureNode small{color:var(--mn-faint);overflow-wrap:anywhere;font-size:9.5px;line-height:1.45}.JK_n9q_flowConnector{width:clamp(38px,4.2vw,56px);color:var(--mn-faint);text-align:center;flex:none;place-content:center stretch;gap:5px;padding:0 4px;display:grid;position:relative}.JK_n9q_flowConnector span{overflow-wrap:anywhere;min-height:13px;font:8px/1.3 var(--mn-code)}.JK_n9q_flowConnector i{background:color-mix(in srgb, var(--mn-accent) 55%, var(--mn-line));height:1px;display:block;position:relative}.JK_n9q_flowConnector i:after{border-top:1px solid var(--mn-accent);border-right:1px solid var(--mn-accent);content:\"\";width:6px;height:6px;position:absolute;top:-3px;right:-1px;transform:rotate(45deg)}.JK_n9q_flowConnector[data-kind=worker] i{border-top:1px dashed color-mix(in srgb, #8b6ce7 72%, var(--mn-line));background:0 0;height:0}.JK_n9q_flowConnector[data-kind=worker] i:after{border-color:#8b6ce7}.JK_n9q_flowConnector[data-active]{color:var(--mn-text)}.JK_n9q_flowConnector[data-active] i{height:2px}.JK_n9q_flowConnector[data-active] i:before{z-index:1;content:\"\";background:var(--mn-accent);border-radius:50%;width:5px;height:5px;animation:1.9s cubic-bezier(.35,0,.65,1) infinite JK_n9q_flowTrace;position:absolute;top:-2px;left:0}.JK_n9q_flowConnector[data-kind=worker][data-active] i:before{background:#8b6ce7;top:-3px}@keyframes JK_n9q_flowTrace{0%{opacity:0;left:0}12%{opacity:1}88%{opacity:1}to{opacity:0;left:calc(100% - 5px)}}@keyframes JK_n9q_flowTraceVertical{0%{opacity:0;top:0}12%{opacity:1}88%{opacity:1}to{opacity:0;top:calc(100% - 5px)}}.JK_n9q_flowLegend{color:var(--mn-faint);flex-wrap:wrap;gap:9px 18px;margin-top:10px;font-size:9px;display:flex}.JK_n9q_flowLegend span{align-items:center;gap:6px;display:inline-flex}.JK_n9q_flowLegend span:last-child{margin-left:auto}.JK_n9q_flowLegend i{background:var(--mn-accent);width:18px;height:1px}.JK_n9q_flowLegend span:nth-child(2) i{background:0 0;border-top:1px dashed #8b6ce7;height:0}.JK_n9q_flowLegend b{background:var(--mn-success);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 10%, transparent);border-radius:50%}@container JK_n9q_mnemon-flow (width<=700px){.JK_n9q_flowArchitecture{min-width:0;padding:8px}.JK_n9q_flowLane>header{align-items:flex-start}.JK_n9q_flowLane>header small{white-space:normal}.JK_n9q_flowTrack{flex-direction:column;padding:10px}.JK_n9q_flowArchitectureNode{flex:none;width:100%;min-height:72px}.JK_n9q_flowConnector{place-content:center;width:100%;height:42px;padding:5px 0}.JK_n9q_flowConnector span{min-height:0}.JK_n9q_flowConnector i{justify-self:center;width:1px;height:18px}.JK_n9q_flowConnector i:after{top:auto;bottom:0;right:-3px;transform:rotate(135deg)}.JK_n9q_flowConnector[data-kind=worker] i{border-top:0;border-left:1px dashed color-mix(in srgb, #8b6ce7 72%, var(--mn-line));width:0;height:18px}.JK_n9q_flowConnector[data-active] i{width:2px;height:18px}.JK_n9q_flowConnector[data-active] i:before{animation:1.9s cubic-bezier(.35,0,.65,1) infinite JK_n9q_flowTraceVertical;top:0;left:-2px}.JK_n9q_flowConnector[data-kind=worker][data-active] i:before{top:0}}.JK_n9q_storageDomains{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;margin-bottom:13px;padding:16px}.JK_n9q_storageRoot{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 45%, transparent);border-radius:9px;justify-content:space-between;align-items:center;gap:18px;min-width:0;margin-top:12px;padding:11px 12px;display:flex}.JK_n9q_storageRoot>div:first-child{gap:4px;min-width:0;display:grid}.JK_n9q_storageRoot span,.JK_n9q_storageRoot small{color:var(--mn-faint);font-size:9px}.JK_n9q_storageRoot code{color:var(--mn-muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.JK_n9q_storageRoot>div:last-child{flex:none;justify-items:end;gap:3px;display:grid}.JK_n9q_storageRoot strong{font:650 11px var(--mn-code)}.JK_n9q_storageAreaGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.JK_n9q_storageAreaGrid article{box-sizing:border-box;border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 30%, var(--mn-layer-1));border-radius:9px;flex-direction:column;min-width:0;min-height:150px;padding:12px;display:flex}.JK_n9q_storageAreaGrid article>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.JK_n9q_storageAreaGrid article>header>div{align-items:center;gap:7px;min-width:0;display:flex}.JK_n9q_storageAreaGrid article>header span{background:var(--mn-faint);border-radius:50%;flex:none;width:6px;height:6px}.JK_n9q_storageAreaGrid article[data-status=ready]>header span{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 9%, transparent)}.JK_n9q_storageAreaGrid article[data-status=invalid]>header span{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 9%, transparent)}.JK_n9q_storageAreaGrid article>header strong{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.JK_n9q_storageAreaGrid article>header em{color:var(--mn-faint);font:normal 8px var(--mn-code);white-space:nowrap}.JK_n9q_storageAreaMetric{align-items:baseline;gap:5px;margin-top:14px;display:flex}.JK_n9q_storageAreaMetric strong{font:650 20px var(--mn-code)}.JK_n9q_storageAreaMetric span{color:var(--mn-faint);font-size:9px}.JK_n9q_storageAreaMetric code{color:var(--mn-muted);margin-left:auto;font-size:9px}.JK_n9q_storageAreaGrid article>p{min-height:28px;color:var(--mn-muted);margin:8px 0;font-size:9px;line-height:1.5}.JK_n9q_storagePath{border-top:1px solid var(--mn-line);color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:auto;padding-top:8px;font-size:8px;display:block;overflow:hidden}.JK_n9q_storageAreaGrid article>small{color:var(--mn-danger);margin-top:6px;font-size:8px;line-height:1.4;display:block}.JK_n9q_storageUnavailable{border:1px dashed var(--mn-line);min-height:126px;color:var(--mn-muted);text-align:center;border-radius:9px;place-content:center;gap:5px;margin-top:12px;display:grid}.JK_n9q_storageUnavailable strong{font-size:12px}.JK_n9q_storageUnavailable p{max-width:520px;color:var(--mn-faint);margin:0;font-size:10px}.JK_n9q_storageFootnote{color:var(--mn-faint);margin:11px 0 0;font-size:9px;line-height:1.5}.JK_n9q_lifecyclePanel{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;margin-top:0;padding:16px}.JK_n9q_statusSectionHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.JK_n9q_statusSectionHeader h3{margin:4px 0 0;font-size:15px}.JK_n9q_statusSectionHeader p{max-width:590px;color:var(--mn-muted);margin:5px 0 0;font-size:10px}.JK_n9q_phaseBadge{border:1px solid color-mix(in srgb, var(--mn-accent) 25%, var(--mn-line));color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 7%, transparent);font:650 9px var(--mn-code);border-radius:999px;padding:4px 8px}.JK_n9q_lifecycleFlow{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 52%, transparent);border-radius:9px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:15px;display:grid;overflow:hidden}.JK_n9q_lifecycleFlow article{border-right:1px solid var(--mn-line);grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:12px;display:grid}.JK_n9q_lifecycleFlow article:last-child{border-right:0}.JK_n9q_lifecycleFlow article[data-disabled]{opacity:.48}.JK_n9q_lifecycleFlow article>span{color:var(--mn-accent);font:650 9px var(--mn-code)}.JK_n9q_lifecycleFlow strong{font-size:11px;display:block}.JK_n9q_lifecycleFlow p{color:var(--mn-faint);margin:4px 0 0;font-size:9px;line-height:1.45}.JK_n9q_lifecycleFlow code{color:var(--mn-muted);font-size:10px}.JK_n9q_lifecycleFoot{border-top:1px solid var(--mn-line);color:var(--mn-faint);flex-wrap:wrap;gap:8px 18px;margin-top:13px;padding-top:12px;font-size:9px;display:flex}.JK_n9q_lifecycleFoot strong{color:var(--mn-text);margin-left:3px;font-weight:600}.JK_n9q_runtimeBadge{font:650 9px var(--mn-code);border-radius:999px;padding:3px 7px}.JK_n9q_runtimeOnline{color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 10%, transparent)}.JK_n9q_runtimeOffline{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 10%, transparent)}.JK_n9q_runtimePending{color:var(--mn-muted);background:var(--mn-layer-2)}@media (width<=1000px){.JK_n9q_graphLayout{display:block;position:relative}.JK_n9q_graphInspector{width:auto;min-height:0;box-shadow:none;margin-top:10px;position:static;overflow:visible}.JK_n9q_graphInspector[data-empty]{display:none}.JK_n9q_resultLayout{grid-template-columns:1fr}.JK_n9q_relatedPane{grid-row:1;max-height:none;position:static}.JK_n9q_memoryList{grid-template-columns:1fr}.JK_n9q_storageAreaGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.JK_n9q_runtimeGrid{grid-template-columns:1fr}.JK_n9q_documentWorkspace{grid-template-columns:minmax(220px,270px) minmax(0,1fr)}.JK_n9q_documentDetail>dl{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.JK_n9q_shell{min-height:500px}.JK_n9q_masthead{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;min-height:76px;padding:10px 14px}.JK_n9q_brandLogo{width:36px;height:36px}.JK_n9q_statusCluster>span:not(.JK_n9q_statusDot){display:none}.JK_n9q_telemetry{border-top:1px solid var(--mn-line);grid-column:1/-1;justify-content:space-between;padding-top:8px}.JK_n9q_telemetryMetric{text-align:center;flex:1;justify-items:center;gap:3px;min-width:0;padding:0 5px}.JK_n9q_telemetryMetric:first-child{border-left:0}.JK_n9q_topNavigation{padding:0 10px;position:relative}.JK_n9q_topNavigation:after{z-index:2;pointer-events:none;content:\"›\";width:34px;color:var(--mn-faint);background:linear-gradient(90deg, transparent, var(--mn-layer-1) 72%);font:16px var(--mn-code);place-items:center end;padding-right:5px;display:grid;position:absolute;top:0;bottom:0;right:0}.JK_n9q_nav{flex:1;padding-right:26px;scroll-padding-inline:10px 34px}.JK_n9q_navGroup{gap:3px}.JK_n9q_navGroupDivider{height:18px}.JK_n9q_nav button{text-align:center;flex-direction:column;justify-content:center;gap:3px;min-width:60px;padding:4px 3px}.JK_n9q_spaceSummary{display:none}.JK_n9q_navGlyph{line-height:1}.JK_n9q_page{padding:18px 13px 170px}.JK_n9q_pageHeader{gap:10px;display:grid}.JK_n9q_pageHeaderMeta{justify-content:space-between}.JK_n9q_entityLayout,.JK_n9q_writebackLayout{grid-template-columns:1fr}.JK_n9q_runtimeComposerHeading,.JK_n9q_runtimeComposerActions{flex-direction:column;align-items:stretch}.JK_n9q_runtimeComposerActions select,.JK_n9q_runtimeComposerActions button{width:100%}.JK_n9q_documentSummary{grid-template-columns:repeat(2,minmax(0,1fr))}.JK_n9q_documentCapacity{grid-column:1/-1}.JK_n9q_documentToolbar{flex-direction:column;align-items:stretch}.JK_n9q_documentToolbar form{min-width:0}.JK_n9q_documentToolbar>div,.JK_n9q_documentToolbar>button{width:100%}.JK_n9q_documentToolbar>div button{flex:1}.JK_n9q_documentWorkspace{grid-template-columns:1fr;min-height:0}.JK_n9q_documentList{max-height:330px;overflow:auto}.JK_n9q_documentReader{min-height:430px}.JK_n9q_documentEditorMeta{grid-template-columns:1fr}.JK_n9q_manualActions{flex-direction:column;align-items:stretch}.JK_n9q_entityRail{position:static}.JK_n9q_searchControls{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.JK_n9q_searchActions{grid-column:1/-1}.JK_n9q_searchActions>button{flex:1}.JK_n9q_searchControls select{width:100%;min-width:0}.JK_n9q_listToolbar{grid-template-columns:1fr}.JK_n9q_bodyDirectoryHeader{display:grid}.JK_n9q_bodyCreate form{grid-template-columns:1fr}.JK_n9q_graphViewport{min-height:360px}.JK_n9q_graphSvg{height:390px}.JK_n9q_graphCanvasControls{top:7px;right:7px}.JK_n9q_graphCanvasControls span{display:none}.JK_n9q_healthStrip,.JK_n9q_lifecycleFlow{grid-template-columns:1fr}.JK_n9q_storageRoot{flex-direction:column;align-items:flex-start}.JK_n9q_storageRoot>div:last-child{justify-items:start}.JK_n9q_storageAreaGrid{grid-template-columns:1fr}.JK_n9q_flowLegend span:last-child{width:100%;margin-left:0}.JK_n9q_healthStrip article,.JK_n9q_lifecycleFlow article{border-right:0;border-bottom:1px solid var(--mn-line)}.JK_n9q_healthStrip article:last-child,.JK_n9q_lifecycleFlow article:last-child{border-bottom:0}}@media (width<=520px){.JK_n9q_masthead{min-height:68px}.JK_n9q_brand h1{font-size:16px}.JK_n9q_telemetryMetric span{font-size:10px}.JK_n9q_nav{scroll-snap-type:x proximity}.JK_n9q_nav button{scroll-snap-align:start;min-width:68px}.JK_n9q_pageHeader h2{font-size:19px}.JK_n9q_pageHeaderMeta{flex-wrap:wrap;align-items:stretch}.JK_n9q_pageHeaderMeta>code{align-items:center;min-height:34px;display:flex}.JK_n9q_pageHeaderMeta>button{flex:1}.JK_n9q_emptyState{text-align:center;flex-direction:column;gap:14px;min-height:190px;padding:24px 18px}.JK_n9q_emptyGlyph{width:62px;height:62px}.JK_n9q_documentDetail>header,.JK_n9q_documentDanger,.JK_n9q_supervisedHeading,.JK_n9q_cardTop{flex-direction:column;align-items:flex-start}.JK_n9q_documentDetail>header>div:last-child,.JK_n9q_documentDetail>header button{width:100%}.JK_n9q_documentDanger>div,.JK_n9q_documentDanger>span{margin-right:0}.JK_n9q_documentDanger>button{width:100%}.JK_n9q_documentDetail>dl{grid-template-columns:1fr}.JK_n9q_markdownBody{padding:16px;font-size:12.5px}.JK_n9q_cardActions,.JK_n9q_confirmBar{flex-wrap:wrap;align-items:stretch}.JK_n9q_cardActions button{flex:1}.JK_n9q_confirmBar>span{width:100%;margin:0 0 4px}.JK_n9q_formActions{flex-direction:column;align-items:stretch}.JK_n9q_formActions button{width:100%}}@media (prefers-reduced-motion:reduce){.JK_n9q_shell *,.JK_n9q_shell :before,.JK_n9q_shell :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.JK_n9q_insightCard:hover{transform:none}.JK_n9q_flowConnector[data-active] i:before{display:none}}";
2504
- const tagId = "dsh-mnemon/MnemonView.module.css";
2505
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
3233
+ //#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonView.module.css.mjs
3234
+ const css$3 = ".Q34gFW_shell{--mn-bg:var(--dsw-alias-bg-base);--mn-layer-1:var(--dsw-alias-bg-layer-1);--mn-layer-2:var(--dsw-alias-bg-layer-2);--mn-input:var(--dsw-specific-input-major);--mn-text:var(--dsw-alias-label-primary);--mn-muted:var(--dsw-alias-label-secondary);--mn-faint:var(--dsw-alias-label-tertiary);--mn-line:var(--dsw-alias-border-l2);--mn-line-strong:var(--dsw-alias-border-l1);--mn-accent:var(--dsw-alias-state-business-primary);--mn-hover:var(--dsw-alias-interactive-bg-hover);--mn-danger:var(--dsw-alias-state-error-primary);--mn-success:var(--dsw-alias-state-success-primary);--mn-code:var(--ds-font-family-code,\"SFMono-Regular\", Consolas, monospace);--mn-sans:system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;box-sizing:border-box;min-width:0;height:100%;min-height:600px;color:var(--mn-text);background:var(--mn-bg);font:13px/1.55 var(--mn-sans);-webkit-tap-highlight-color:transparent;flex-direction:column;display:flex;overflow:hidden}.Q34gFW_shell *,.Q34gFW_shell :before,.Q34gFW_shell :after{box-sizing:border-box}.Q34gFW_shell button,.Q34gFW_shell input,.Q34gFW_shell select,.Q34gFW_shell textarea{color:inherit;font:inherit}.Q34gFW_shell button,.Q34gFW_shell select{touch-action:manipulation}.Q34gFW_shell button:focus-visible,.Q34gFW_shell input:focus-visible,.Q34gFW_shell select:focus-visible,.Q34gFW_shell textarea:focus-visible,.Q34gFW_shell summary:focus-visible,.Q34gFW_shell [role=button]:focus-visible{outline:2px solid var(--mn-accent);outline-offset:2px}.Q34gFW_masthead{border-bottom:1px solid var(--mn-line);background:radial-gradient(circle at 70% -70%, color-mix(in srgb, var(--mn-accent) 12%, transparent), transparent 42%), var(--mn-bg);flex:none;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:clamp(14px,2vw,28px);min-height:68px;padding:10px clamp(18px,2.5vw,32px);display:grid}.Q34gFW_brand{align-items:center;gap:11px;min-width:0;display:flex}.Q34gFW_brandLogo{width:38px;height:38px;box-shadow:0 0 0 1px var(--mn-line-strong);border-radius:9px;flex:none;overflow:hidden}.Q34gFW_brand h1{letter-spacing:-.02em;margin:1px 0 0;font-size:17px;line-height:1.15}.Q34gFW_cardKicker,.Q34gFW_sectionHeading>div>span,.Q34gFW_entityHeading>span,.Q34gFW_inspectorHeading>span{color:var(--mn-faint);font:650 9px/1.2 var(--mn-code);letter-spacing:.12em;text-transform:uppercase}.Q34gFW_statusCluster{border:1px solid var(--mn-line-strong);min-height:34px;color:var(--mn-muted);background:var(--mn-layer-1);border-radius:9px;flex:none;align-items:center;gap:8px;padding:0 4px 0 11px;font-size:11px;display:flex}.Q34gFW_statusDot{border-radius:50%;width:6px;height:6px}.Q34gFW_online{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 15%, transparent)}.Q34gFW_offline{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 14%, transparent)}.Q34gFW_checking{background:var(--mn-faint);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-faint) 12%, transparent)}.Q34gFW_iconButton{width:32px;height:32px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.Q34gFW_iconButton:hover{color:var(--mn-accent);background:var(--mn-hover)}.Q34gFW_alert,.Q34gFW_inlineError{border:1px solid color-mix(in srgb, var(--mn-danger) 32%, transparent);color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 7%, var(--mn-layer-1));border-radius:9px;padding:10px 13px;font-size:12px}.Q34gFW_alert{flex-direction:column;flex:none;margin:10px clamp(18px,2.5vw,32px) 0;display:flex}.Q34gFW_telemetry{align-items:center;min-width:0;display:flex}.Q34gFW_telemetryMetric{border-left:1px solid var(--mn-line);gap:2px;min-width:72px;padding:1px 14px;display:grid}.Q34gFW_telemetryMetric span{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.Q34gFW_telemetryMetric strong{font:650 13px/1 var(--mn-code);font-variant-numeric:tabular-nums}.Q34gFW_workspace{flex-direction:column;flex:1;min-height:0;display:flex}.Q34gFW_topNavigation{border-bottom:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, var(--mn-bg));flex:none;justify-content:space-between;align-items:stretch;gap:14px;min-width:0;min-height:48px;padding:0 clamp(18px,2.5vw,32px);display:flex}.Q34gFW_nav{overscroll-behavior-inline:contain;scrollbar-width:none;align-items:stretch;gap:10px;min-width:0;display:flex;overflow-x:auto}.Q34gFW_nav::-webkit-scrollbar{display:none}.Q34gFW_navGroup{align-items:stretch;gap:14px;min-width:0;display:flex}.Q34gFW_navGroupDivider{background:var(--mn-line);flex:none;align-self:center;width:1px;height:22px}.Q34gFW_nav button{min-width:max-content;min-height:44px;color:var(--mn-muted);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:0 3px;display:flex;position:relative}.Q34gFW_nav button:hover,.Q34gFW_nav button[aria-current=page]{color:var(--mn-text)}.Q34gFW_nav button[aria-current=page]:after{content:\"\";background:var(--mn-accent);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.Q34gFW_nav button[aria-current=page] .Q34gFW_navGlyph{color:var(--mn-accent)}.Q34gFW_nav button>span:last-child{min-width:0;display:block}.Q34gFW_nav button strong{font-size:12px;font-weight:600}.Q34gFW_nav button small{display:none}.Q34gFW_navGlyph{color:var(--mn-faint);font:600 13px/1 var(--mn-code)}@media (width>=1000px){.Q34gFW_nav button{min-height:50px}.Q34gFW_nav button small{color:var(--mn-faint);margin-top:1px;font-size:9px;line-height:1.3;display:block}}.Q34gFW_spaceSummary{border-left:1px solid var(--mn-line);flex:none;grid-template-columns:minmax(0,1fr) auto;align-content:center;gap:1px 9px;min-width:142px;padding:0 0 0 14px;display:grid}.Q34gFW_spaceSummary>span{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.Q34gFW_spaceSummary code{color:var(--mn-accent);font:650 12px/1 var(--mn-code);grid-row:span 2;align-self:center}.Q34gFW_spaceSummary small{color:var(--mn-faint);font-size:9px}.Q34gFW_canvas{overscroll-behavior-x:contain;overscroll-behavior-y:auto;scroll-behavior:auto;-webkit-overflow-scrolling:touch;background:var(--mn-bg);flex:1;min-width:0;overflow:auto}.Q34gFW_page{width:min(1320px,100%);min-height:100%;margin:0 auto;padding:clamp(18px,2.2vw,28px) clamp(18px,2.8vw,34px) clamp(150px,18vh,190px)}.Q34gFW_pageHeader{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:16px;display:flex}.Q34gFW_pageHeader h2{letter-spacing:-.025em;margin:2px 0;font-size:20px;line-height:1.2}.Q34gFW_pageHeader p{max-width:72ch;color:var(--mn-muted);margin:0;font-size:12px;line-height:1.65}.Q34gFW_pageHeaderMeta{flex:none;align-items:center;gap:9px;display:flex}.Q34gFW_pageHeaderMeta>code{border:1px solid var(--mn-line);color:var(--mn-faint);background:var(--mn-layer-1);font:600 9px/1 var(--mn-code);letter-spacing:.06em;border-radius:7px;padding:6px 8px}.Q34gFW_primaryButton,.Q34gFW_secondaryButton,.Q34gFW_ghostButton,.Q34gFW_dangerButton,.Q34gFW_dangerSolidButton{cursor:pointer;border-radius:8px;min-height:36px;padding:0 13px;font-size:12px;transition:border-color .14s,background-color .14s,color .14s,transform .14s}.Q34gFW_primaryButton{border:1px solid var(--mn-accent);color:#fff;background:var(--mn-accent)}.Q34gFW_secondaryButton{border:1px solid var(--mn-line-strong);color:var(--mn-text);background:var(--mn-layer-1)}.Q34gFW_ghostButton,.Q34gFW_dangerButton{background:0 0;border:1px solid #0000;min-height:32px;padding:0 9px}.Q34gFW_ghostButton{color:var(--mn-muted)}.Q34gFW_dangerButton{color:var(--mn-danger)}.Q34gFW_dangerSolidButton{border:1px solid var(--mn-danger);color:#fff;background:var(--mn-danger);min-height:29px}.Q34gFW_primaryButton:hover,.Q34gFW_secondaryButton:hover,.Q34gFW_ghostButton:hover,.Q34gFW_dangerButton:hover{filter:brightness(.98);background-color:var(--mn-hover)}.Q34gFW_primaryButton:hover{background-color:var(--mn-accent)}.Q34gFW_shell button:disabled{cursor:not-allowed;opacity:.48}.Q34gFW_emptyState{border:1px dashed var(--mn-line-strong);background:color-mix(in srgb, var(--mn-layer-1) 50%, transparent);border-radius:13px;justify-content:center;align-items:center;gap:22px;min-height:220px;padding:30px;display:flex}.Q34gFW_emptyGlyph{border:1px solid color-mix(in srgb, var(--mn-accent) 35%, var(--mn-line));width:76px;height:76px;color:var(--mn-accent);background:radial-gradient(circle, color-mix(in srgb, var(--mn-accent) 12%, transparent), transparent 65%);font:500 26px/1 var(--mn-code);border-radius:50%;flex:none;place-items:center;display:grid}.Q34gFW_emptyState h3{margin:0 0 5px;font-size:16px}.Q34gFW_emptyState p{max-width:500px;color:var(--mn-muted);margin:0}.Q34gFW_loadingPanel{border:1px solid var(--mn-line);min-height:220px;color:var(--mn-muted);background:var(--mn-layer-1);border-radius:13px;place-items:center;display:grid}.Q34gFW_inlineError{margin:0 0 14px}.Q34gFW_muted,.Q34gFW_loading{color:var(--mn-faint);padding:16px 0;font-size:12px}.Q34gFW_bodyDirectory{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, var(--mn-bg));border-radius:11px;margin-bottom:12px;padding:12px 14px}.Q34gFW_bodyDirectoryHeader{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:10px;display:flex}.Q34gFW_bodyDirectoryHeader h3{margin:1px 0;font-size:13px}.Q34gFW_bodyDirectoryHeader p{color:var(--mn-muted);margin:0;font-size:10px}.Q34gFW_bodyDirectoryPath{max-width:min(62vw,720px);color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:9px;display:block;overflow:hidden}.Q34gFW_bodyDirectoryHeader>strong{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 9px var(--mn-code);border-radius:999px;flex:none;padding:5px 8px}.Q34gFW_bodyGrid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:7px;display:grid}.Q34gFW_bodyDirectoryEmpty{border:1px dashed color-mix(in srgb, var(--mn-line) 84%, transparent);min-height:92px;color:var(--mn-muted);border-radius:12px;grid-column:1/-1;justify-content:center;align-items:center;gap:14px;display:flex}.Q34gFW_bodyDirectoryEmpty>span{opacity:.6;font-size:28px}.Q34gFW_bodyDirectoryEmpty strong{color:var(--mn-text);display:block}.Q34gFW_bodyDirectoryEmpty p{margin:3px 0 0;font-size:10px}.Q34gFW_bodyCard{--mn-body-accent:var(--mn-success);border:1px solid var(--mn-line);background:var(--mn-layer-1);opacity:.7;border-radius:9px;min-width:0;padding:9px 10px;transition:opacity .18s,border-color .18s}.Q34gFW_bodyCard[data-active]{border-color:color-mix(in srgb, var(--mn-body-accent) 42%, var(--mn-line));opacity:1;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--mn-body-accent) 10%, transparent)}.Q34gFW_bodyCardTop{grid-template-columns:7px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.Q34gFW_bodySignal{background:var(--mn-faint);border-radius:50%;width:7px;height:7px}.Q34gFW_bodyCard[data-active] .Q34gFW_bodySignal{background:var(--mn-body-accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-body-accent) 14%, transparent)}.Q34gFW_bodyCard:not([data-healthy]) .Q34gFW_bodySignal{background:var(--mn-danger);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-danger) 12%, transparent)}.Q34gFW_bodyCardTop>div{min-width:0;display:grid}.Q34gFW_bodyCardTop strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.Q34gFW_bodyCardTop code{color:var(--mn-faint);font:9px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Q34gFW_bodyHealth{color:var(--mn-success);font:650 8px var(--mn-code);letter-spacing:.07em;text-transform:uppercase}.Q34gFW_bodyCard:not([data-healthy]) .Q34gFW_bodyHealth{color:var(--mn-danger)}.Q34gFW_bodySwitch{min-height:32px;color:var(--mn-faint);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 1px;font-size:9.5px;display:flex}.Q34gFW_bodySwitchTrack{border:1px solid var(--mn-line-strong);background:var(--mn-layer-2);border-radius:999px;flex:none;width:29px;height:17px;transition:border-color .18s,background-color .18s;position:relative}.Q34gFW_bodySwitchTrack i{background:var(--mn-faint);border-radius:50%;width:11px;height:11px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background-color .18s;position:absolute;top:2px;left:2px}.Q34gFW_bodySwitch:hover{color:var(--mn-text)}.Q34gFW_bodySwitch:hover .Q34gFW_bodySwitchTrack{border-color:var(--mn-body-accent)}.Q34gFW_bodySwitch[aria-checked=true]{color:var(--mn-text)}.Q34gFW_bodySwitch[aria-checked=true] .Q34gFW_bodySwitchTrack{border-color:color-mix(in srgb, var(--mn-body-accent) 65%, var(--mn-line));background:color-mix(in srgb, var(--mn-body-accent) 25%, var(--mn-layer-2))}.Q34gFW_bodySwitch[aria-checked=true] .Q34gFW_bodySwitchTrack i{background:var(--mn-body-accent);transform:translate(12px)}.Q34gFW_bodyCardActions{align-items:center;gap:6px;display:flex}.Q34gFW_bodyEditButton{width:28px;height:28px;color:var(--mn-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;place-items:center;font-size:12px;display:grid}.Q34gFW_bodyEditButton:hover{color:var(--mn-text);border-color:var(--mn-line);background:var(--mn-hover)}.Q34gFW_bodyEdit{gap:9px;padding-top:2px;display:grid}.Q34gFW_bodyEdit label{color:var(--mn-faint);gap:4px;font-size:9px;display:grid}.Q34gFW_bodyEdit input,.Q34gFW_bodyEdit textarea{border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:8px;outline:0;padding:7px 9px;font-size:12px;line-height:1.5}.Q34gFW_bodyEdit textarea{resize:vertical}.Q34gFW_bodyEdit input:focus,.Q34gFW_bodyEdit textarea:focus{border-color:var(--mn-accent)}.Q34gFW_bodyEditActions{justify-content:flex-end;gap:7px;display:flex}.Q34gFW_bodyCard>p{min-height:15px;color:var(--mn-muted);margin:7px 0;font-size:10px;line-height:1.45}.Q34gFW_bodyCard footer{border-top:1px solid var(--mn-line);color:var(--mn-faint);flex-wrap:wrap;gap:5px 11px;padding-top:6px;font-size:9px;display:flex}.Q34gFW_bodyCreate{border-top:1px solid var(--mn-line);margin-top:10px;padding-top:8px}.Q34gFW_bodyCreate summary{cursor:pointer;width:max-content;color:var(--mn-accent);font-size:10px;list-style:none}.Q34gFW_bodyCreate summary::-webkit-details-marker{display:none}.Q34gFW_bodyCreate form{grid-template-columns:minmax(130px,.7fr) minmax(150px,.9fr) minmax(230px,1.7fr) auto;gap:7px;margin-top:9px;display:grid}.Q34gFW_bodyCreate input{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:0;height:34px;padding:0 9px}.Q34gFW_bodyCreate input:focus{border-color:var(--mn-accent)}.Q34gFW_graphLayout{grid-template-columns:minmax(0,1fr) minmax(240px,270px);gap:10px;display:grid}.Q34gFW_graphPanel,.Q34gFW_graphInspector{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px}.Q34gFW_graphPanel{min-width:0;overflow:hidden}.Q34gFW_graphToolbar,.Q34gFW_graphFooter{min-height:43px;color:var(--mn-muted);justify-content:space-between;align-items:center;gap:14px;padding:0 13px;font-size:10px;display:flex}.Q34gFW_graphToolbar{border-bottom:1px solid var(--mn-line)}.Q34gFW_graphToolbar>div:first-child{align-items:center;gap:7px;display:flex}.Q34gFW_graphToolbar small{color:var(--mn-faint)}.Q34gFW_liveDot{background:var(--mn-success);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 15%, transparent);border-radius:50%}.Q34gFW_graphLegend{flex-wrap:wrap;justify-content:flex-end;gap:5px 10px;display:flex}.Q34gFW_graphLegend span{align-items:center;gap:4px;display:flex}.Q34gFW_graphLegend span:before{content:\"\";background:var(--edge-color);border-radius:2px;width:13px;height:2px}.Q34gFW_graphLegend [data-edge=temporal]{--edge-color:#87909f}.Q34gFW_graphLegend [data-edge=scope]{--edge-color:#708199}.Q34gFW_graphLegend [data-edge=scope]:before{background:repeating-linear-gradient(90deg, var(--edge-color) 0 4px, transparent 4px 7px)}.Q34gFW_graphLegend [data-edge=semantic]{--edge-color:#4d7cfe}.Q34gFW_graphLegend [data-edge=causal]{--edge-color:#ef6b5b}.Q34gFW_graphLegend [data-edge=entity]{--edge-color:#22a879}.Q34gFW_graphViewport{background:radial-gradient(circle at 50% 48%, color-mix(in srgb, var(--mn-accent) 6%, transparent), transparent 47%);min-height:clamp(390px,42vw,560px);position:relative;overflow:hidden}.Q34gFW_graphCanvasControls{z-index:2;border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 88%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--mn-text) 7%, transparent);backdrop-filter:blur(10px);border-radius:9px;align-items:center;gap:5px;padding:4px;display:flex;position:absolute;top:10px;right:10px}.Q34gFW_graphCanvasControls span{color:var(--mn-faint);font:9px var(--mn-code);align-items:center;gap:5px;padding:0 6px;display:flex}.Q34gFW_graphCanvasControls span i{background:var(--mn-accent);width:5px;height:5px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-accent) 12%, transparent);border-radius:50%}.Q34gFW_graphCanvasControls button{min-height:30px;color:var(--mn-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:0 9px;font-size:9.5px}.Q34gFW_graphCanvasControls button:hover,.Q34gFW_graphCanvasControls button[data-active]{border-color:var(--mn-line);color:var(--mn-text);background:var(--mn-hover)}.Q34gFW_graphCanvasControls button[data-active]{color:var(--mn-accent)}.Q34gFW_graphSvg{touch-action:pan-y pinch-zoom;user-select:none;width:100%;height:clamp(390px,42vw,560px);display:block}.Q34gFW_graphBackdrop{fill:var(--mn-layer-1)}.Q34gFW_graphGridLine{stroke:var(--mn-line);stroke-width:.6px;opacity:.5}.Q34gFW_graphEdge{fill:none;stroke:#87909f;stroke-width:1px;opacity:.32;vector-effect:non-scaling-stroke}.Q34gFW_graphEdge[data-edge=scope]{stroke:#708199;stroke-dasharray:4 5;opacity:.28}.Q34gFW_graphEdge[data-edge=semantic]{stroke:#4d7cfe;opacity:.48}.Q34gFW_graphEdge[data-edge=causal]{stroke:#ef6b5b;opacity:.52}.Q34gFW_graphEdge[data-edge=entity]{stroke:#22a879;stroke-width:1.45px;opacity:.78}.Q34gFW_graphNode{--node:#8290a8;cursor:grab;touch-action:none;outline:none}.Q34gFW_graphNode[data-dragging]{cursor:grabbing}.Q34gFW_graphNode[data-category=decision]{--node:#ef8354}.Q34gFW_graphNode[data-category=preference]{--node:#a879e1}.Q34gFW_graphNode[data-category=fact]{--node:#4d7cfe}.Q34gFW_graphNode[data-category=insight]{--node:#19a77d}.Q34gFW_graphNode[data-category=context]{--node:#d8a624}.Q34gFW_graphNode[data-kind=space]{--node:var(--mn-success)}.Q34gFW_graphNode[data-kind=entity]{--node:#2b9db9}.Q34gFW_nodeHalo{fill:color-mix(in srgb, var(--node) 18%, var(--mn-layer-1));stroke:color-mix(in srgb, var(--node) 60%, var(--mn-layer-1));stroke-width:1.5px;transition:r .16s}.Q34gFW_nodeCore{fill:var(--node)}.Q34gFW_nodeLabel{fill:var(--mn-muted);font:10px var(--mn-code);pointer-events:auto}.Q34gFW_nodeBodyLabel{fill:var(--mn-faint);font:650 8px var(--mn-code);letter-spacing:.04em;pointer-events:auto}.Q34gFW_graphSvg[data-density=sparse] .Q34gFW_nodeLabel{font-size:12px}.Q34gFW_graphNode:hover .Q34gFW_nodeHalo,.Q34gFW_graphNode:focus .Q34gFW_nodeHalo,.Q34gFW_graphNode[data-selected] .Q34gFW_nodeHalo{fill:color-mix(in srgb, var(--node) 28%, var(--mn-layer-1));stroke:var(--node)}.Q34gFW_graphNode[data-selected] .Q34gFW_nodeLabel{fill:var(--mn-text);font-weight:650}.Q34gFW_graphFooter{border-top:1px solid var(--mn-line);min-height:38px;color:var(--mn-faint)}.Q34gFW_graphInspector{min-width:0;min-height:calc(clamp(390px,42vw,560px) + 83px);padding:15px;overflow:hidden}.Q34gFW_inspectorEmpty{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.Q34gFW_inspectorLogo{opacity:.72;border-radius:11px;width:54px;height:54px;margin-bottom:15px}.Q34gFW_inspectorEmpty h3{margin:7px 0 3px;font-size:14px}.Q34gFW_inspectorEmpty p{color:var(--mn-faint);margin:0;font-size:11px}.Q34gFW_inspectorHeading{justify-content:space-between;align-items:center;display:flex}.Q34gFW_inspectorHeading button,.Q34gFW_sectionHeading button{width:32px;height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.Q34gFW_inspectorHeading button:hover,.Q34gFW_sectionHeading button:hover{background:var(--mn-hover)}.Q34gFW_categoryChip{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 10%, transparent);border-radius:999px;margin-top:24px;padding:3px 8px;font-size:10px;display:inline-flex}.Q34gFW_inspectorTitleRow{align-items:flex-start;gap:8px;min-width:0;margin:12px 0 20px;display:flex}.Q34gFW_inspectorTitle{overflow-wrap:anywhere;white-space:pre-wrap;-webkit-line-clamp:6;-webkit-box-orient:vertical;flex:1;min-width:0;margin:0;font-size:14px;line-height:1.6;display:-webkit-box;overflow:hidden}.Q34gFW_inspectorEye{border:1px solid var(--mn-line);width:27px;height:27px;color:var(--mn-muted);background:var(--mn-layer-1);cursor:pointer;border-radius:7px;flex:none;place-items:center;transition:color .15s,border-color .15s,background-color .15s;display:grid}.Q34gFW_inspectorEye:hover{color:var(--mn-accent);border-color:var(--mn-line-strong);background:var(--mn-hover)}.Q34gFW_inspectorMeta{margin:0}.Q34gFW_inspectorMeta>div{border-top:1px solid var(--mn-line);gap:3px;padding:11px 0;display:grid}.Q34gFW_inspectorMeta dt{color:var(--mn-faint);font:9px var(--mn-code);text-transform:uppercase}.Q34gFW_inspectorMeta dd{overflow-wrap:anywhere;color:var(--mn-muted);margin:0;font-size:11px}.Q34gFW_inspectorActions{gap:8px;margin-top:20px;display:grid}.Q34gFW_previewOverlay{z-index:40;background:color-mix(in srgb, var(--mn-bg) 58%, transparent);backdrop-filter:blur(4px);place-items:center;padding:clamp(16px,4vw,48px);display:grid;position:fixed;inset:0}.Q34gFW_previewDialog{border:1px solid var(--mn-line-strong);background:var(--mn-layer-1);width:min(680px,100%);max-height:min(76dvh,640px);box-shadow:0 24px 64px color-mix(in srgb, var(--mn-text) 20%, transparent);border-radius:13px;flex-direction:column;display:flex;overflow:hidden}.Q34gFW_previewHeading{border-bottom:1px solid var(--mn-line);flex:none;justify-content:space-between;align-items:center;gap:12px;min-height:46px;padding:0 14px 0 16px;display:flex}.Q34gFW_previewHeading>span{color:var(--mn-accent);font:650 9px/1.2 var(--mn-code);letter-spacing:.08em;text-transform:uppercase}.Q34gFW_previewHeading button{width:32px;height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;font-size:15px;display:grid}.Q34gFW_previewHeading button:hover{background:var(--mn-hover)}.Q34gFW_previewMeta{border-bottom:1px solid var(--mn-line);color:var(--mn-faint);font:9px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;flex:none;padding:8px 16px;overflow:hidden}.Q34gFW_previewBody{-webkit-overflow-scrolling:touch;min-height:0;padding:14px 16px 18px;overflow:auto}.Q34gFW_previewBody p{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--mn-text);margin:0;font-size:13px;line-height:1.7}.Q34gFW_searchBar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:13px;margin-bottom:18px;padding:13px}.Q34gFW_queryField{border:1px solid var(--mn-line-strong);background:var(--mn-input);border-radius:9px;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:5px;padding:0 10px;display:grid}.Q34gFW_queryField>span{color:var(--mn-accent);font:18px var(--mn-code)}.Q34gFW_queryField input{background:0 0;border:0;outline:0;width:100%;height:42px}.Q34gFW_queryField kbd{color:var(--mn-faint);font:11px var(--mn-code)}.Q34gFW_searchControls{justify-content:flex-end;align-items:flex-end;gap:10px;padding-top:10px;display:flex}.Q34gFW_searchActions{align-items:center;gap:7px;display:flex}.Q34gFW_agentAnswer{border:1px solid color-mix(in srgb, var(--mn-accent) 30%, var(--mn-line));background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-1)), var(--mn-layer-1) 60%);border-radius:11px;margin-bottom:16px;padding:16px 18px}.Q34gFW_agentAnswerHeading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.Q34gFW_agentAnswerHeading span{color:var(--mn-accent);font:650 9px/1.2 var(--mn-code);letter-spacing:.08em}.Q34gFW_agentAnswerHeading h3{margin:4px 0 0;font-size:15px}.Q34gFW_agentAnswerHeading>code{color:var(--mn-faint);font-size:9px}.Q34gFW_agentAnswer>p{white-space:pre-wrap;color:var(--mn-text);margin:12px 0;font-size:13px;line-height:1.7}.Q34gFW_agentCitations{border-top:1px solid var(--mn-line);flex-wrap:wrap;gap:5px;padding-top:10px;display:flex}.Q34gFW_agentCitations code{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:5px;padding:3px 6px;font-size:9px}.Q34gFW_searchControls label,.Q34gFW_formGrid label,.Q34gFW_fieldWide{color:var(--mn-muted);gap:5px;font-size:11px;display:grid}.Q34gFW_searchControls select,.Q34gFW_formGrid select,.Q34gFW_formGrid input,.Q34gFW_listToolbar input,.Q34gFW_listToolbar select,.Q34gFW_entitySearch input{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:140px;height:34px;padding:0 9px}.Q34gFW_searchControls select:focus,.Q34gFW_formGrid select:focus,.Q34gFW_formGrid input:focus,.Q34gFW_listToolbar input:focus,.Q34gFW_listToolbar select:focus,.Q34gFW_entitySearch input:focus,.Q34gFW_supervisedForm textarea:focus{border-color:var(--mn-accent)}.Q34gFW_singleColumn{max-width:830px}.Q34gFW_resultLayout{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;gap:14px;display:grid}.Q34gFW_results,.Q34gFW_relatedPane,.Q34gFW_entityResults{min-width:0}.Q34gFW_sectionHeading{justify-content:space-between;align-items:center;gap:16px;min-height:39px;margin-bottom:8px;display:flex}.Q34gFW_sectionHeading h3{margin:2px 0 0;font-size:15px}.Q34gFW_sectionHeading>strong{min-width:27px;height:27px;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 11px var(--mn-code);border-radius:7px;place-items:center;display:grid}.Q34gFW_relatedPane{border:1px solid var(--mn-line);background:var(--mn-layer-1);-webkit-overflow-scrolling:touch;border-radius:12px;max-height:calc(100dvh - 230px);padding:13px;scroll-margin-top:14px;position:sticky;top:12px;overflow:auto}.Q34gFW_relatedSource{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:8px;margin:0 0 13px;padding:10px;font-size:11px}.Q34gFW_insightCard{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;margin-bottom:9px;padding:14px;transition:border-color .15s,transform .15s,box-shadow .15s}.Q34gFW_insightCard:hover{border-color:var(--mn-line-strong);transform:translateY(-1px)}.Q34gFW_cardTop{justify-content:space-between;align-items:center;gap:10px;display:flex}.Q34gFW_badges,.Q34gFW_tags,.Q34gFW_entities{flex-wrap:wrap;gap:5px;display:flex}.Q34gFW_badge{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:999px;padding:2px 6px;font-size:9px}.Q34gFW_id{color:var(--mn-faint);font:9px var(--mn-code)}.Q34gFW_content{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0;line-height:1.65}.Q34gFW_tags{color:var(--mn-accent);font-size:10px}.Q34gFW_entities{margin-top:7px}.Q34gFW_entities span{border:1px solid var(--mn-line);color:var(--mn-muted);border-radius:5px;padding:2px 6px;font-size:9px}.Q34gFW_cardActions{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:3px;min-height:30px;margin-top:10px;padding-top:8px;display:flex}.Q34gFW_confirmBar{width:100%;color:var(--mn-danger);justify-content:flex-end;align-items:center;gap:5px;font-size:11px;display:flex}.Q34gFW_confirmBar>span{margin-right:auto}.Q34gFW_entityLayout{grid-template-columns:265px minmax(0,1fr);align-items:start;gap:16px;display:grid}.Q34gFW_entityRail{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;padding:13px;position:sticky;top:0}.Q34gFW_entitySearch{grid-template-columns:minmax(0,1fr) auto;gap:7px;display:grid}.Q34gFW_entitySearch input{min-width:0}.Q34gFW_entityHeading{justify-content:space-between;align-items:center;margin:18px 2px 7px;display:flex}.Q34gFW_entityHeading small{color:var(--mn-faint);font-size:9px}.Q34gFW_entityList{gap:3px;display:grid}.Q34gFW_entityList button{min-height:34px;color:var(--mn-muted);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;padding:0 9px;display:flex}.Q34gFW_entityList button:hover,.Q34gFW_entityList button[aria-pressed=true]{color:var(--mn-text);background:var(--mn-hover)}.Q34gFW_entityList strong{color:var(--mn-faint);font:10px var(--mn-code)}.Q34gFW_entityResults>.Q34gFW_emptyState{min-height:360px}.Q34gFW_runtimeComposer,.Q34gFW_runtimeTarget{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px}.Q34gFW_runtimeComposer{background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-1)), var(--mn-layer-1) 55%);margin-bottom:13px;padding:15px}.Q34gFW_runtimeComposerHeading{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:11px;display:flex}.Q34gFW_runtimeComposerHeading h3{margin:0 0 2px;font-size:14px}.Q34gFW_runtimeComposerHeading p{color:var(--mn-muted);margin:0;font-size:10px}.Q34gFW_runtimeComposerHeading>span{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 9px var(--mn-code);border-radius:999px;flex:none;padding:4px 8px}.Q34gFW_runtimeComposer>textarea,.Q34gFW_runtimeEntry textarea{resize:vertical;border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:9px;outline:0;padding:10px 11px;line-height:1.6}.Q34gFW_runtimeComposer>textarea:focus,.Q34gFW_runtimeEntry textarea:focus{border-color:var(--mn-accent)}.Q34gFW_runtimeComposerActions{justify-content:flex-end;align-items:flex-end;gap:9px;margin-top:10px;display:flex}.Q34gFW_runtimeComposerActions label{color:var(--mn-faint);gap:4px;font-size:9px;display:grid}.Q34gFW_runtimeComposerActions select,.Q34gFW_runtimeEntry select{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:135px;height:34px;padding:0 8px}.Q34gFW_runtimeNotice,.Q34gFW_runtimeReadOnly{border:1px solid color-mix(in srgb, var(--mn-success) 28%, var(--mn-line));color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 6%, var(--mn-layer-1));border-radius:9px;margin-bottom:13px;padding:9px 12px;font-size:11px}.Q34gFW_runtimeReadOnly{color:var(--mn-muted);border-color:var(--mn-line);background:var(--mn-layer-1)}.Q34gFW_runtimeGrid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.Q34gFW_runtimeTarget{min-width:0;overflow:hidden}.Q34gFW_runtimeTargetHeader{justify-content:space-between;align-items:center;gap:14px;padding:14px 15px 9px;display:flex}.Q34gFW_runtimeTargetHeader>div{gap:1px;display:grid}.Q34gFW_runtimeTargetHeader span{color:var(--mn-faint);font:650 9px var(--mn-code);letter-spacing:.08em}.Q34gFW_runtimeTargetHeader h3{margin:0;font-size:15px}.Q34gFW_runtimeTargetHeader>strong{min-width:28px;height:28px;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 11px var(--mn-code);border-radius:8px;place-items:center;display:grid}.Q34gFW_capacityLine{align-items:center;gap:9px;padding:0 15px;display:flex}.Q34gFW_capacityLine>div{background:var(--mn-layer-2);border-radius:999px;flex:1;height:4px;overflow:hidden}.Q34gFW_capacityLine i{border-radius:inherit;background:var(--mn-success);height:100%;transition:width .25s;display:block}.Q34gFW_capacityLine>span{min-width:88px;color:var(--mn-faint);font:9px var(--mn-code);text-align:right}.Q34gFW_runtimeTargetDescription{min-height:31px;color:var(--mn-muted);margin:8px 15px 12px;font-size:10px}.Q34gFW_runtimeEntries{border-top:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 36%, var(--mn-layer-1));gap:7px;padding:10px;display:grid}.Q34gFW_runtimeEntry{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:9px;padding:11px;position:relative}.Q34gFW_runtimeEntry:before{content:\"\";background:var(--mn-muted);border-radius:0 2px 2px 0;width:2px;position:absolute;top:12px;bottom:12px;left:-1px}.Q34gFW_runtimeEntry[data-importance=critical]:before{background:var(--mn-danger)}.Q34gFW_runtimeEntry[data-importance=low]:before{background:var(--mn-faint);opacity:.45}.Q34gFW_runtimeEntryMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.Q34gFW_runtimeEntryMeta>span{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:999px;padding:2px 6px;font-size:9px}.Q34gFW_runtimeEntry[data-importance=critical] .Q34gFW_runtimeEntryMeta>span{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 8%, transparent)}.Q34gFW_runtimeEntryMeta time{color:var(--mn-faint);font:8px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Q34gFW_runtimeEntry>p{white-space:pre-wrap;overflow-wrap:anywhere;min-height:42px;margin:9px 0;font-size:12px;line-height:1.6}.Q34gFW_runtimeEntry>select{margin-top:7px}.Q34gFW_runtimeEntry footer{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:4px;min-height:30px;margin-top:7px;padding-top:7px;display:flex}.Q34gFW_runtimeEntry footer>span{color:var(--mn-danger);margin-right:auto;font-size:10px}.Q34gFW_runtimeEmpty{min-height:126px;color:var(--mn-faint);text-align:center;align-content:center;place-items:center;gap:5px;display:grid}.Q34gFW_runtimeEmpty>span{font:24px var(--mn-code);opacity:.65}.Q34gFW_runtimeEmpty p{margin:0;font-size:10px}.Q34gFW_runtimeFootnote{color:var(--mn-faint);margin:10px 2px 0;font-size:9px}.Q34gFW_documentSummary{grid-template-columns:.7fr .7fr 1.6fr;gap:9px;margin-bottom:12px;display:grid}.Q34gFW_documentSummary article{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;min-height:91px;padding:13px 14px}.Q34gFW_documentSummary article>span{color:var(--mn-faint);font-size:9px;display:block}.Q34gFW_documentSummary article>strong{font:650 21px/1 var(--mn-code);margin:7px 0 4px;display:block}.Q34gFW_documentSummary article>small{color:var(--mn-muted);font-size:9px}.Q34gFW_documentCapacity>div{background:var(--mn-layer-2);border-radius:999px;height:4px;margin:7px 0 6px;overflow:hidden}.Q34gFW_documentCapacity>div i{border-radius:inherit;background:var(--mn-accent);height:100%;transition:width .3s;display:block}.Q34gFW_documentToolbar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;align-items:center;gap:9px;margin-bottom:12px;padding:9px;display:flex}.Q34gFW_documentToolbar form{flex:1;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:5px;min-width:260px;padding-left:8px;display:grid}.Q34gFW_documentToolbar form>span{color:var(--mn-faint);font:15px var(--mn-code)}.Q34gFW_documentToolbar input,.Q34gFW_documentEditor input,.Q34gFW_documentEditor textarea{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;width:100%;padding:8px 10px}.Q34gFW_documentToolbar input{background:0 0;border-color:#0000;height:34px}.Q34gFW_documentToolbar input:focus,.Q34gFW_documentEditor input:focus,.Q34gFW_documentEditor textarea:focus{border-color:var(--mn-accent)}.Q34gFW_documentToolbar>div{border:1px solid var(--mn-line);background:var(--mn-layer-2);border-radius:8px;align-items:center;gap:3px;padding:3px;display:flex}.Q34gFW_documentToolbar>div button{min-height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:10.5px}.Q34gFW_documentToolbar>div button[data-active]{color:var(--mn-text);background:var(--mn-layer-1);box-shadow:0 1px 3px color-mix(in srgb, var(--mn-text) 8%, transparent)}.Q34gFW_documentToolbar>div b{color:var(--mn-faint);font:600 9px var(--mn-code);margin-left:4px}.Q34gFW_documentWorkspace{grid-template-columns:minmax(250px,310px) minmax(0,1fr);gap:10px;min-height:590px;display:grid}.Q34gFW_documentList,.Q34gFW_documentReader{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;overflow:hidden}.Q34gFW_documentList{align-self:stretch}.Q34gFW_documentList>header{border-bottom:1px solid var(--mn-line);min-height:42px;color:var(--mn-faint);justify-content:space-between;align-items:center;padding:0 12px;font-size:9px;display:flex}.Q34gFW_documentList>header code{color:var(--mn-accent)}.Q34gFW_documentList>button{border:0;border-bottom:1px solid var(--mn-line);width:100%;color:var(--mn-text);text-align:left;cursor:pointer;background:0 0;padding:12px;transition:background-color .15s,box-shadow .15s;display:block}.Q34gFW_documentList>button:hover{background:var(--mn-hover)}.Q34gFW_documentList>button[data-selected]{background:color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-1));box-shadow:inset 2px 0 var(--mn-accent)}.Q34gFW_documentList>button>div{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.Q34gFW_documentList>button strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.Q34gFW_documentList>button time{color:var(--mn-faint);font:8px var(--mn-code);flex:none}.Q34gFW_documentList>button p{min-height:30px;color:var(--mn-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 9px;font-size:10px;line-height:1.5;display:-webkit-box;overflow:hidden}.Q34gFW_documentList>button footer{color:var(--mn-faint);align-items:center;gap:8px;font-size:9px;display:flex}.Q34gFW_documentList>button footer code{margin-left:auto}.Q34gFW_documentList>button footer em{color:var(--mn-danger);font-style:normal}.Q34gFW_documentListEmpty{min-height:230px;color:var(--mn-muted);text-align:center;align-content:center;place-items:center;gap:4px;padding:22px;display:grid}.Q34gFW_documentListEmpty>span{color:var(--mn-accent);font:28px var(--mn-code);opacity:.6;margin-bottom:6px}.Q34gFW_documentListEmpty p{color:var(--mn-faint);margin:0;font-size:10px}.Q34gFW_documentReader{padding:clamp(16px,2vw,22px)}.Q34gFW_documentReader>.Q34gFW_emptyState{background:0 0;border:0;height:100%}.Q34gFW_documentDetail>header{border-bottom:1px solid var(--mn-line);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:15px;display:flex}.Q34gFW_documentDetail>header span{color:var(--mn-accent);font:650 9px var(--mn-code);letter-spacing:.08em;text-transform:uppercase}.Q34gFW_documentDetail>header h3{margin:5px 0 3px;font-size:18px}.Q34gFW_documentDetail>header p{color:var(--mn-muted);margin:0;font-size:11px}.Q34gFW_documentDetail>dl{border-top:1px solid var(--mn-line);border-left:1px solid var(--mn-line);grid-template-columns:2fr .45fr .8fr .55fr;margin:13px 0;display:grid}.Q34gFW_documentDetail>dl>div{border-right:1px solid var(--mn-line);border-bottom:1px solid var(--mn-line);min-width:0;padding:8px 9px}.Q34gFW_documentDetail dt{color:var(--mn-faint);margin-bottom:3px;font-size:8px}.Q34gFW_documentDetail dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:9px;overflow:hidden}.Q34gFW_documentSources{flex-wrap:wrap;align-items:center;gap:5px;margin:11px 0;display:flex}.Q34gFW_documentSources>span{color:var(--mn-faint);margin-right:4px;font-size:9px}.Q34gFW_documentSources code,.Q34gFW_documentArchiveReceipt code{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:5px;padding:3px 6px;font-size:8px}.Q34gFW_markdownBody{overflow-wrap:anywhere;border:1px solid var(--mn-line);min-height:310px;color:var(--mn-text);background:color-mix(in srgb, var(--mn-layer-2) 30%, var(--mn-layer-1));border-radius:10px;margin:16px 0 0;padding:clamp(18px,2.5vw,28px);font-size:13px;line-height:1.78}.Q34gFW_markdownBody>:first-child{margin-top:0}.Q34gFW_markdownBody>:last-child{margin-bottom:0}.Q34gFW_markdownBody h1,.Q34gFW_markdownBody h2,.Q34gFW_markdownBody h3,.Q34gFW_markdownBody h4{color:var(--mn-text);letter-spacing:-.015em;margin:1.55em 0 .65em;line-height:1.3}.Q34gFW_markdownBody h1{border-bottom:1px solid var(--mn-line);padding-bottom:.35em;font-size:1.75em}.Q34gFW_markdownBody h2{border-bottom:1px solid var(--mn-line);padding-bottom:.3em;font-size:1.42em}.Q34gFW_markdownBody h3{font-size:1.18em}.Q34gFW_markdownBody p,.Q34gFW_markdownBody ul,.Q34gFW_markdownBody ol,.Q34gFW_markdownBody blockquote,.Q34gFW_markdownBody table,.Q34gFW_markdownBody pre{margin:.85em 0}.Q34gFW_markdownBody ul,.Q34gFW_markdownBody ol{padding-left:1.6em}.Q34gFW_markdownBody li+li{margin-top:.3em}.Q34gFW_markdownBody blockquote{border-left:3px solid var(--mn-accent);color:var(--mn-muted);background:color-mix(in srgb, var(--mn-accent) 4%, transparent);margin-inline:0;padding:.15em 1em}.Q34gFW_markdownBody code{color:var(--mn-text);background:var(--mn-layer-2);font:.88em/1.55 var(--mn-code);border-radius:5px;padding:.15em .38em}.Q34gFW_markdownBody pre{border:1px solid var(--mn-line);background:var(--mn-layer-2);border-radius:9px;max-width:100%;padding:14px 16px;overflow:auto}.Q34gFW_markdownBody pre code{background:0 0;padding:0;font-size:11px}.Q34gFW_markdownBody a{color:var(--mn-accent);text-underline-offset:3px;text-decoration-thickness:1px}.Q34gFW_markdownBody hr{border:0;border-top:1px solid var(--mn-line);margin:1.8em 0}.Q34gFW_markdownBody table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.Q34gFW_markdownBody th,.Q34gFW_markdownBody td{border:1px solid var(--mn-line);text-align:left;vertical-align:top;padding:8px 10px}.Q34gFW_markdownBody th{background:var(--mn-layer-2);font-weight:600}.Q34gFW_markdownBody img{border-radius:8px;max-width:100%;height:auto}.Q34gFW_documentArchiveReceipt{border:1px solid color-mix(in srgb, var(--mn-success) 28%, var(--mn-line));background:color-mix(in srgb, var(--mn-success) 5%, transparent);border-radius:9px;margin:12px 0;padding:11px 12px}.Q34gFW_documentArchiveReceipt p{color:var(--mn-muted);margin:4px 0 8px;font-size:10px}.Q34gFW_documentArchiveReceipt div{flex-wrap:wrap;gap:5px;display:flex}.Q34gFW_documentDanger{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:7px;min-height:57px;margin-top:13px;padding-top:12px;display:flex}.Q34gFW_documentDanger>div{margin-right:auto}.Q34gFW_documentDanger strong{font-size:11px;display:block}.Q34gFW_documentDanger p{color:var(--mn-faint);margin:2px 0 0;font-size:9px}.Q34gFW_documentDanger>span{color:var(--mn-danger);margin-right:auto;font-size:10px}.Q34gFW_documentEditor{border:1px solid var(--mn-line);background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-1)), var(--mn-layer-1) 55%);border-radius:11px;margin-bottom:12px;padding:15px}.Q34gFW_documentReader>.Q34gFW_documentEditor{background:0 0;border:0;margin:0;padding:0}.Q34gFW_documentEditor>header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:12px;display:flex}.Q34gFW_documentEditor h3{margin:0;font-size:14px}.Q34gFW_documentEditor header p{color:var(--mn-muted);margin:2px 0 0;font-size:10px}.Q34gFW_documentEditor header>span,.Q34gFW_documentEditor header>code{color:var(--mn-accent);font:650 9px var(--mn-code)}.Q34gFW_documentEditor label{color:var(--mn-faint);gap:4px;margin-top:9px;font-size:9px;display:grid}.Q34gFW_documentEditor textarea{resize:vertical;line-height:1.65}.Q34gFW_documentEditorMeta{grid-template-columns:.8fr 1.2fr;gap:9px;display:grid}.Q34gFW_documentEditorMeta label{margin:0}.Q34gFW_documentEditor footer{justify-content:flex-end;gap:7px;margin-top:11px;display:flex}.Q34gFW_writebackLayout{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start;gap:15px;display:grid}.Q34gFW_writeGuide,.Q34gFW_supervisedComposer{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px}.Q34gFW_writeGuide{padding:17px}.Q34gFW_writeGuide h3{margin:5px 0 15px;font-size:15px}.Q34gFW_writeGuide ol{counter-reset:gate;gap:13px;margin:0;padding:0;list-style:none;display:grid}.Q34gFW_writeGuide li{counter-increment:gate;grid-template-columns:22px minmax(0,1fr);column-gap:7px;display:grid}.Q34gFW_writeGuide li:before{content:\"0\" counter(gate);color:var(--mn-accent);font:10px var(--mn-code);grid-row:span 2}.Q34gFW_writeGuide li strong{font-size:12px}.Q34gFW_writeGuide li span,.Q34gFW_writeGuide p{color:var(--mn-faint);font-size:10px}.Q34gFW_writeGuide p{border-top:1px solid var(--mn-line);margin:17px 0 0;padding-top:13px}.Q34gFW_supervisedComposer{overflow:hidden}.Q34gFW_supervisedForm{padding:18px}.Q34gFW_supervisedHeading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.Q34gFW_supervisedHeading h3{margin:4px 0 0;font-size:17px}.Q34gFW_sessionReady,.Q34gFW_sessionMissing{font:650 9px var(--mn-code);border-radius:999px;padding:4px 8px}.Q34gFW_sessionReady{color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 10%, transparent)}.Q34gFW_sessionMissing{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 10%, transparent)}.Q34gFW_supervisedForm textarea{resize:vertical;border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:9px;outline:0;padding:12px;line-height:1.65}.Q34gFW_sessionHint{color:var(--mn-danger);margin:9px 0 0;font-size:11px}.Q34gFW_formGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:13px;display:grid}.Q34gFW_fieldWide{grid-column:1/-1}.Q34gFW_formGrid select,.Q34gFW_formGrid input{width:100%;min-width:0}.Q34gFW_formActions{align-items:center;gap:12px;margin-top:15px;display:flex}.Q34gFW_formActions span{color:var(--mn-muted);font-size:11px}.Q34gFW_advancedWrite{border-top:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 45%, var(--mn-layer-1))}.Q34gFW_advancedWrite summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:10px 18px;list-style:none;display:flex}.Q34gFW_advancedWrite summary::-webkit-details-marker{display:none}.Q34gFW_advancedWrite summary>span:first-child{gap:2px;display:grid}.Q34gFW_advancedWrite summary strong{font-size:12px}.Q34gFW_advancedWrite summary small{color:var(--mn-faint);font-size:10px}.Q34gFW_advancedWrite summary>span:last-child{color:var(--mn-accent);font:10px var(--mn-code)}.Q34gFW_advancedWrite[open] summary{border-bottom:1px solid var(--mn-line)}.Q34gFW_advancedWrite[open] summary>span:last-child{font-size:0}.Q34gFW_advancedWrite[open] summary>span:last-child:after{content:\"−\";font-size:13px}.Q34gFW_manualForm{padding:3px 18px 18px}.Q34gFW_manualActions{justify-content:space-between;align-items:center;gap:14px;margin-top:15px;display:flex}.Q34gFW_manualActions p{max-width:520px;color:var(--mn-faint);margin:0;font-size:10px}.Q34gFW_listToolbar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;grid-template-columns:minmax(0,1fr) 170px auto;gap:9px;padding:12px;display:grid}.Q34gFW_listToolbar input,.Q34gFW_listToolbar select{width:100%;min-width:0}.Q34gFW_listNotice{color:var(--mn-faint);margin:10px 0 16px;font-size:10px}.Q34gFW_listNotice span{color:var(--mn-success);font:650 9px var(--mn-code);letter-spacing:.08em;margin-right:7px}.Q34gFW_memoryList{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:9px;display:grid}.Q34gFW_memoryList .Q34gFW_insightCard{height:100%;margin:0}.Q34gFW_listProgress{border-top:1px solid var(--mn-line);min-height:58px;color:var(--mn-faint);justify-content:center;align-items:center;gap:13px;margin-top:12px;padding:10px;font-size:10px;display:flex}.Q34gFW_healthStrip{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:13px;display:grid;overflow:hidden}.Q34gFW_healthStrip article{box-sizing:border-box;border-right:1px solid var(--mn-line);align-items:flex-start;gap:10px;min-width:0;min-height:78px;padding:14px 15px;display:flex}.Q34gFW_healthStrip article>div{min-width:0}.Q34gFW_healthStrip article:last-child{border-right:0}.Q34gFW_healthStrip small{color:var(--mn-faint);font:650 10px var(--mn-code);letter-spacing:.06em;margin-bottom:4px;display:block}.Q34gFW_healthStrip strong{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;display:block;overflow:hidden}.Q34gFW_healthStrip p{color:var(--mn-muted);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:10.5px;overflow:hidden}.Q34gFW_healthIndicator{width:7px;height:7px;box-shadow:0 0 0 4px color-mix(in srgb, currentColor 9%, transparent);border-radius:50%;flex:none;margin-top:3px}.Q34gFW_healthGood{color:var(--mn-success);background:currentColor}.Q34gFW_healthBad{color:var(--mn-danger);background:currentColor}.Q34gFW_healthMuted{color:var(--mn-faint);background:currentColor}.Q34gFW_memoryFlow{border:1px solid var(--mn-line);background:radial-gradient(circle at 52% 10%, color-mix(in srgb, var(--mn-accent) 5%, transparent), transparent 28%), var(--mn-layer-1);border-radius:12px;margin-bottom:13px;padding:16px;overflow:hidden;container:Q34gFW_mnemon-flow/inline-size}.Q34gFW_memoryFlowCanvas{overscroll-behavior-inline:contain;border:1px solid var(--mn-line);background-image:linear-gradient(color-mix(in srgb, var(--mn-line) 36%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--mn-line) 36%, transparent) 1px, transparent 1px);background-size:24px 24px;background-color:color-mix(in srgb, var(--mn-layer-2) 28%, transparent);scrollbar-color:var(--mn-line-strong) transparent;border-radius:11px;margin-top:13px;overflow:auto hidden}.Q34gFW_flowArchitecture{gap:10px;min-width:840px;padding:10px;display:grid}.Q34gFW_flowLane{border:1px solid color-mix(in srgb, var(--mn-line) 82%, transparent);background:color-mix(in srgb, var(--mn-layer-1) 92%, transparent);min-width:0;box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-accent) 34%, transparent);border-radius:10px;overflow:hidden}.Q34gFW_flowLane[data-lane=semantic]{box-shadow:inset 3px 0 #8b6ce77a}.Q34gFW_flowLane[data-lane=maintenance]{box-shadow:inset 3px 0 #d18a3c85}.Q34gFW_flowLane>header{border-bottom:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 42%, transparent);align-items:center;gap:9px;min-height:46px;padding:8px 12px;display:flex}.Q34gFW_flowLane>header>span{color:var(--mn-accent);font:650 9px var(--mn-code)}.Q34gFW_flowLane>header>div{gap:1px;min-width:0;display:grid}.Q34gFW_flowLane>header strong{font-size:12px}.Q34gFW_flowLane>header small{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.Q34gFW_flowTrack{align-items:stretch;gap:0;min-width:0;padding:11px 12px;display:flex}.Q34gFW_flowTrack+.Q34gFW_flowTrack{padding-top:0}.Q34gFW_flowSecondaryTrack,.Q34gFW_flowReviewTrack,.Q34gFW_flowArchiveTrack{border-top:1px dashed color-mix(in srgb, var(--mn-line) 72%, transparent);padding-top:11px!important}.Q34gFW_flowArchitectureNode{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 96%, transparent);border-radius:9px;flex:1 1 0;grid-template-columns:7px minmax(0,1fr);align-content:center;gap:9px;min-width:0;min-height:84px;padding:11px;transition:border-color .2s,background-color .2s,box-shadow .2s;display:grid;position:relative}.Q34gFW_flowArchitectureNode[data-kind=worker]{border-style:dashed;border-color:color-mix(in srgb, #8b6ce7 46%, var(--mn-line));background:color-mix(in srgb, #8b6ce7 4%, var(--mn-layer-1))}.Q34gFW_flowArchitectureNode[data-kind=store]{background:color-mix(in srgb, var(--mn-success) 3%, var(--mn-layer-1))}.Q34gFW_flowArchitectureNode[data-kind=task]{background:color-mix(in srgb, var(--mn-accent) 3%, var(--mn-layer-1))}.Q34gFW_flowArchitectureNode[data-emphasis=active]{border-color:color-mix(in srgb, var(--mn-accent) 56%, var(--mn-line));box-shadow:0 0 0 2px color-mix(in srgb, var(--mn-accent) 8%, transparent)}.Q34gFW_flowArchitectureNode[data-emphasis=recent]{border-color:color-mix(in srgb, var(--mn-success) 48%, var(--mn-line))}.Q34gFW_flowArchitectureNode[data-emphasis=pending]{border-color:color-mix(in srgb, #d18a3c 55%, var(--mn-line))}.Q34gFW_flowArchitectureSignal{background:var(--mn-faint);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-faint) 8%, transparent);border-radius:50%;margin-top:4px}.Q34gFW_flowArchitectureNode[data-state=ready] .Q34gFW_flowArchitectureSignal{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 10%, transparent)}.Q34gFW_flowArchitectureNode[data-state=error] .Q34gFW_flowArchitectureSignal{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 10%, transparent)}.Q34gFW_flowArchitectureNode>div{align-content:start;gap:5px;min-width:0;display:grid}.Q34gFW_flowArchitectureNode strong{overflow-wrap:break-word;word-break:normal;font-size:11.5px;line-height:1.35}.Q34gFW_flowArchitectureNode small{color:var(--mn-faint);overflow-wrap:anywhere;font-size:9.5px;line-height:1.45}.Q34gFW_flowConnector{width:clamp(38px,4.2vw,56px);color:var(--mn-faint);text-align:center;flex:none;place-content:center stretch;gap:5px;padding:0 4px;display:grid;position:relative}.Q34gFW_flowConnector span{overflow-wrap:anywhere;min-height:13px;font:8px/1.3 var(--mn-code)}.Q34gFW_flowConnector i{background:color-mix(in srgb, var(--mn-accent) 55%, var(--mn-line));height:1px;display:block;position:relative}.Q34gFW_flowConnector i:after{border-top:1px solid var(--mn-accent);border-right:1px solid var(--mn-accent);content:\"\";width:6px;height:6px;position:absolute;top:-3px;right:-1px;transform:rotate(45deg)}.Q34gFW_flowConnector[data-kind=worker] i{border-top:1px dashed color-mix(in srgb, #8b6ce7 72%, var(--mn-line));background:0 0;height:0}.Q34gFW_flowConnector[data-kind=worker] i:after{border-color:#8b6ce7}.Q34gFW_flowConnector[data-active]{color:var(--mn-text)}.Q34gFW_flowConnector[data-active] i{height:2px}.Q34gFW_flowConnector[data-active] i:before{z-index:1;content:\"\";background:var(--mn-accent);border-radius:50%;width:5px;height:5px;animation:1.9s cubic-bezier(.35,0,.65,1) infinite Q34gFW_flowTrace;position:absolute;top:-2px;left:0}.Q34gFW_flowConnector[data-kind=worker][data-active] i:before{background:#8b6ce7;top:-3px}@keyframes Q34gFW_flowTrace{0%{opacity:0;left:0}12%{opacity:1}88%{opacity:1}to{opacity:0;left:calc(100% - 5px)}}@keyframes Q34gFW_flowTraceVertical{0%{opacity:0;top:0}12%{opacity:1}88%{opacity:1}to{opacity:0;top:calc(100% - 5px)}}.Q34gFW_flowLegend{color:var(--mn-faint);flex-wrap:wrap;gap:9px 18px;margin-top:10px;font-size:9px;display:flex}.Q34gFW_flowLegend span{align-items:center;gap:6px;display:inline-flex}.Q34gFW_flowLegend span:last-child{margin-left:auto}.Q34gFW_flowLegend i{background:var(--mn-accent);width:18px;height:1px}.Q34gFW_flowLegend span:nth-child(2) i{background:0 0;border-top:1px dashed #8b6ce7;height:0}.Q34gFW_flowLegend b{background:var(--mn-success);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 10%, transparent);border-radius:50%}@container Q34gFW_mnemon-flow (width<=700px){.Q34gFW_flowArchitecture{min-width:0;padding:8px}.Q34gFW_flowLane>header{align-items:flex-start}.Q34gFW_flowLane>header small{white-space:normal}.Q34gFW_flowTrack{flex-direction:column;padding:10px}.Q34gFW_flowArchitectureNode{flex:none;width:100%;min-height:72px}.Q34gFW_flowConnector{place-content:center;width:100%;height:42px;padding:5px 0}.Q34gFW_flowConnector span{min-height:0}.Q34gFW_flowConnector i{justify-self:center;width:1px;height:18px}.Q34gFW_flowConnector i:after{top:auto;bottom:0;right:-3px;transform:rotate(135deg)}.Q34gFW_flowConnector[data-kind=worker] i{border-top:0;border-left:1px dashed color-mix(in srgb, #8b6ce7 72%, var(--mn-line));width:0;height:18px}.Q34gFW_flowConnector[data-active] i{width:2px;height:18px}.Q34gFW_flowConnector[data-active] i:before{animation:1.9s cubic-bezier(.35,0,.65,1) infinite Q34gFW_flowTraceVertical;top:0;left:-2px}.Q34gFW_flowConnector[data-kind=worker][data-active] i:before{top:0}}.Q34gFW_storageDomains{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;margin-bottom:13px;padding:16px}.Q34gFW_storageRoot{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 45%, transparent);border-radius:9px;justify-content:space-between;align-items:center;gap:18px;min-width:0;margin-top:12px;padding:11px 12px;display:flex}.Q34gFW_storageRoot>div:first-child{gap:4px;min-width:0;display:grid}.Q34gFW_storageRoot span,.Q34gFW_storageRoot small{color:var(--mn-faint);font-size:9px}.Q34gFW_storageRoot code{color:var(--mn-muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.Q34gFW_storageRoot>div:last-child{flex:none;justify-items:end;gap:3px;display:grid}.Q34gFW_storageRoot strong{font:650 11px var(--mn-code)}.Q34gFW_storageAreaGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.Q34gFW_storageAreaGrid article{box-sizing:border-box;border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 30%, var(--mn-layer-1));border-radius:9px;flex-direction:column;min-width:0;min-height:150px;padding:12px;display:flex}.Q34gFW_storageAreaGrid article>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.Q34gFW_storageAreaGrid article>header>div{align-items:center;gap:7px;min-width:0;display:flex}.Q34gFW_storageAreaGrid article>header span{background:var(--mn-faint);border-radius:50%;flex:none;width:6px;height:6px}.Q34gFW_storageAreaGrid article[data-status=ready]>header span{background:var(--mn-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 9%, transparent)}.Q34gFW_storageAreaGrid article[data-status=invalid]>header span{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 9%, transparent)}.Q34gFW_storageAreaGrid article>header strong{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.Q34gFW_storageAreaGrid article>header em{color:var(--mn-faint);font:normal 8px var(--mn-code);white-space:nowrap}.Q34gFW_storageAreaMetric{align-items:baseline;gap:5px;margin-top:14px;display:flex}.Q34gFW_storageAreaMetric strong{font:650 20px var(--mn-code)}.Q34gFW_storageAreaMetric span{color:var(--mn-faint);font-size:9px}.Q34gFW_storageAreaMetric code{color:var(--mn-muted);margin-left:auto;font-size:9px}.Q34gFW_storageAreaGrid article>p{min-height:28px;color:var(--mn-muted);margin:8px 0;font-size:9px;line-height:1.5}.Q34gFW_storagePath{border-top:1px solid var(--mn-line);color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:auto;padding-top:8px;font-size:8px;display:block;overflow:hidden}.Q34gFW_storageAreaGrid article>small{color:var(--mn-danger);margin-top:6px;font-size:8px;line-height:1.4;display:block}.Q34gFW_storageUnavailable{border:1px dashed var(--mn-line);min-height:126px;color:var(--mn-muted);text-align:center;border-radius:9px;place-content:center;gap:5px;margin-top:12px;display:grid}.Q34gFW_storageUnavailable strong{font-size:12px}.Q34gFW_storageUnavailable p{max-width:520px;color:var(--mn-faint);margin:0;font-size:10px}.Q34gFW_storageFootnote{color:var(--mn-faint);margin:11px 0 0;font-size:9px;line-height:1.5}.Q34gFW_lifecyclePanel{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;margin-top:0;padding:16px}.Q34gFW_statusSectionHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.Q34gFW_statusSectionHeader h3{margin:4px 0 0;font-size:15px}.Q34gFW_statusSectionHeader p{max-width:590px;color:var(--mn-muted);margin:5px 0 0;font-size:10px}.Q34gFW_phaseBadge{border:1px solid color-mix(in srgb, var(--mn-accent) 25%, var(--mn-line));color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 7%, transparent);font:650 9px var(--mn-code);border-radius:999px;padding:4px 8px}.Q34gFW_lifecycleFlow{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 52%, transparent);border-radius:9px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:15px;display:grid;overflow:hidden}.Q34gFW_lifecycleFlow article{border-right:1px solid var(--mn-line);grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:12px;display:grid}.Q34gFW_lifecycleFlow article:last-child{border-right:0}.Q34gFW_lifecycleFlow article[data-disabled]{opacity:.48}.Q34gFW_lifecycleFlow article>span{color:var(--mn-accent);font:650 9px var(--mn-code)}.Q34gFW_lifecycleFlow strong{font-size:11px;display:block}.Q34gFW_lifecycleFlow p{color:var(--mn-faint);margin:4px 0 0;font-size:9px;line-height:1.45}.Q34gFW_lifecycleFlow code{color:var(--mn-muted);font-size:10px}.Q34gFW_lifecycleFoot{border-top:1px solid var(--mn-line);color:var(--mn-faint);flex-wrap:wrap;gap:8px 18px;margin-top:13px;padding-top:12px;font-size:9px;display:flex}.Q34gFW_lifecycleFoot strong{color:var(--mn-text);margin-left:3px;font-weight:600}.Q34gFW_runtimeBadge{font:650 9px var(--mn-code);border-radius:999px;padding:3px 7px}.Q34gFW_runtimeOnline{color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 10%, transparent)}.Q34gFW_runtimeOffline{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 10%, transparent)}.Q34gFW_runtimePending{color:var(--mn-muted);background:var(--mn-layer-2)}@media (width<=1000px){.Q34gFW_graphLayout{display:block;position:relative}.Q34gFW_graphInspector{width:auto;min-height:0;box-shadow:none;margin-top:10px;position:static;overflow:visible}.Q34gFW_graphInspector[data-empty]{display:none}.Q34gFW_resultLayout{grid-template-columns:1fr}.Q34gFW_relatedPane{grid-row:1;max-height:none;position:static}.Q34gFW_memoryList{grid-template-columns:1fr}.Q34gFW_storageAreaGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.Q34gFW_runtimeGrid{grid-template-columns:1fr}.Q34gFW_documentWorkspace{grid-template-columns:minmax(220px,270px) minmax(0,1fr)}.Q34gFW_documentDetail>dl{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.Q34gFW_shell{min-height:500px;overflow:visible}.Q34gFW_masthead{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;min-height:76px;padding:10px 14px}.Q34gFW_brandLogo{width:36px;height:36px}.Q34gFW_statusCluster>span:not(.Q34gFW_statusDot){display:none}.Q34gFW_telemetry{border-top:1px solid var(--mn-line);grid-column:1/-1;justify-content:space-between;padding-top:8px}.Q34gFW_telemetryMetric{text-align:center;flex:1;justify-items:center;gap:3px;min-width:0;padding:0 5px}.Q34gFW_telemetryMetric:first-child{border-left:0}.Q34gFW_topNavigation{padding:0 10px;position:relative}.Q34gFW_topNavigation:after{z-index:2;pointer-events:none;content:\"›\";width:34px;color:var(--mn-faint);background:linear-gradient(90deg, transparent, var(--mn-layer-1) 72%);font:16px var(--mn-code);place-items:center end;padding-right:5px;display:grid;position:absolute;top:0;bottom:0;right:0}.Q34gFW_nav{flex:1;padding-right:26px;scroll-padding-inline:10px 34px}.Q34gFW_navGroup{gap:3px}.Q34gFW_navGroupDivider{height:18px}.Q34gFW_nav button{text-align:center;flex-direction:column;justify-content:center;gap:3px;min-width:60px;padding:4px 3px}.Q34gFW_spaceSummary{display:none}.Q34gFW_navGlyph{line-height:1}.Q34gFW_page{padding:18px 13px calc(170px + env(safe-area-inset-bottom,0px))}.Q34gFW_pageHeader{gap:10px;display:grid}.Q34gFW_pageHeaderMeta{justify-content:space-between}.Q34gFW_entityLayout,.Q34gFW_writebackLayout{grid-template-columns:1fr}.Q34gFW_runtimeComposerHeading,.Q34gFW_runtimeComposerActions{flex-direction:column;align-items:stretch}.Q34gFW_runtimeComposerActions select,.Q34gFW_runtimeComposerActions button{width:100%}.Q34gFW_documentSummary{grid-template-columns:repeat(2,minmax(0,1fr))}.Q34gFW_documentCapacity{grid-column:1/-1}.Q34gFW_documentToolbar{flex-direction:column;align-items:stretch}.Q34gFW_documentToolbar form{min-width:0}.Q34gFW_documentToolbar>div,.Q34gFW_documentToolbar>button{width:100%}.Q34gFW_documentToolbar>div button{flex:1}.Q34gFW_documentWorkspace{grid-template-columns:1fr;min-height:0}.Q34gFW_documentList{-webkit-overflow-scrolling:touch;max-height:330px;overflow:auto}.Q34gFW_documentReader{min-height:430px}.Q34gFW_documentEditorMeta{grid-template-columns:1fr}.Q34gFW_manualActions{flex-direction:column;align-items:stretch}.Q34gFW_entityRail{position:static}.Q34gFW_searchControls{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.Q34gFW_searchActions{grid-column:1/-1}.Q34gFW_searchActions>button{flex:1}.Q34gFW_searchControls select{width:100%;min-width:0}.Q34gFW_listToolbar{grid-template-columns:1fr}.Q34gFW_bodyDirectoryHeader{display:grid}.Q34gFW_bodyCreate form{grid-template-columns:1fr}.Q34gFW_graphViewport{min-height:360px}.Q34gFW_graphSvg{height:390px}.Q34gFW_graphCanvasControls{top:7px;right:7px}.Q34gFW_graphCanvasControls span{display:none}.Q34gFW_previewOverlay{padding:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}.Q34gFW_previewDialog{max-height:min(84dvh,640px)}.Q34gFW_healthStrip,.Q34gFW_lifecycleFlow{grid-template-columns:1fr}.Q34gFW_storageRoot{flex-direction:column;align-items:flex-start}.Q34gFW_storageRoot>div:last-child{justify-items:start}.Q34gFW_storageAreaGrid{grid-template-columns:1fr}.Q34gFW_flowLegend span:last-child{width:100%;margin-left:0}.Q34gFW_healthStrip article,.Q34gFW_lifecycleFlow article{border-right:0;border-bottom:1px solid var(--mn-line)}.Q34gFW_healthStrip article:last-child,.Q34gFW_lifecycleFlow article:last-child{border-bottom:0}}@media (width<=520px){.Q34gFW_masthead{min-height:68px}.Q34gFW_brand h1{font-size:16px}.Q34gFW_telemetryMetric span{font-size:10px}.Q34gFW_nav{scroll-snap-type:x proximity}.Q34gFW_nav button{scroll-snap-align:start;min-width:68px}.Q34gFW_pageHeader h2{font-size:19px}.Q34gFW_pageHeaderMeta{flex-wrap:wrap;align-items:stretch}.Q34gFW_pageHeaderMeta>code{align-items:center;min-height:34px;display:flex}.Q34gFW_pageHeaderMeta>button{flex:1}.Q34gFW_emptyState{text-align:center;flex-direction:column;gap:14px;min-height:190px;padding:24px 18px}.Q34gFW_emptyGlyph{width:62px;height:62px}.Q34gFW_documentDetail>header,.Q34gFW_documentDanger,.Q34gFW_supervisedHeading,.Q34gFW_cardTop{flex-direction:column;align-items:flex-start}.Q34gFW_documentDetail>header>div:last-child,.Q34gFW_documentDetail>header button{width:100%}.Q34gFW_documentDanger>div,.Q34gFW_documentDanger>span{margin-right:0}.Q34gFW_documentDanger>button{width:100%}.Q34gFW_documentDetail>dl{grid-template-columns:1fr}.Q34gFW_markdownBody{padding:16px;font-size:12.5px}.Q34gFW_cardActions,.Q34gFW_confirmBar{flex-wrap:wrap;align-items:stretch}.Q34gFW_cardActions button{flex:1}.Q34gFW_confirmBar>span{width:100%;margin:0 0 4px}.Q34gFW_formActions{flex-direction:column;align-items:stretch}.Q34gFW_formActions button{width:100%}.Q34gFW_formGrid,.Q34gFW_searchControls{grid-template-columns:1fr}}@media (width<=1000px) and (height<=760px){.Q34gFW_shell{min-height:0}.Q34gFW_masthead{min-height:58px}.Q34gFW_telemetryMetric{min-width:0;padding:1px 9px}.Q34gFW_topNavigation{min-height:44px}.Q34gFW_nav button{min-height:42px}.Q34gFW_graphViewport{min-height:300px}.Q34gFW_graphSvg{height:300px}}@media (width<=760px) and (pointer:coarse){.Q34gFW_shell input,.Q34gFW_shell select,.Q34gFW_shell textarea{font-size:16px!important}}@media (prefers-reduced-motion:reduce){.Q34gFW_shell *,.Q34gFW_shell :before,.Q34gFW_shell :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.Q34gFW_insightCard:hover{transform:none}.Q34gFW_flowConnector[data-active] i:before{display:none}}";
3235
+ const tagId$3 = "dsh-mnemon/MnemonView.module.css";
3236
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
2506
3237
  const tag = document.createElement("style");
2507
3238
  tag.dataset.plugin = "dsh-mnemon";
2508
- tag.dataset.pluginCss = tagId;
2509
- tag.textContent = css;
3239
+ tag.dataset.pluginCss = tagId$3;
3240
+ tag.textContent = css$3;
2510
3241
  document.head.appendChild(tag);
2511
3242
  }
2512
3243
  var MnemonView_module_css_default = {
2513
- "flowArchitectureNode": "JK_n9q_flowArchitectureNode",
2514
- "confirmBar": "JK_n9q_confirmBar",
2515
- "pageHeaderMeta": "JK_n9q_pageHeaderMeta",
2516
- "bodyDirectory": "JK_n9q_bodyDirectory",
2517
- "entityLayout": "JK_n9q_entityLayout",
2518
- "entityRail": "JK_n9q_entityRail",
2519
- "runtimeTargetHeader": "JK_n9q_runtimeTargetHeader",
2520
- "runtimeEntries": "JK_n9q_runtimeEntries",
2521
- "storageDomains": "JK_n9q_storageDomains",
2522
- "storageUnavailable": "JK_n9q_storageUnavailable",
2523
- "nodeLabel": "JK_n9q_nodeLabel",
2524
- "searchControls": "JK_n9q_searchControls",
2525
- "flowLane": "JK_n9q_flowLane",
2526
- "ghostButton": "JK_n9q_ghostButton",
2527
- "documentEditor": "JK_n9q_documentEditor",
2528
- "inspectorTitleRow": "JK_n9q_inspectorTitleRow",
2529
- "emptyState": "JK_n9q_emptyState",
2530
- "primaryButton": "JK_n9q_primaryButton",
2531
- "documentSources": "JK_n9q_documentSources",
2532
- "brand": "JK_n9q_brand",
2533
- "previewBody": "JK_n9q_previewBody",
2534
- "listToolbar": "JK_n9q_listToolbar",
2535
- "storageRoot": "JK_n9q_storageRoot",
2536
- "inspectorEye": "JK_n9q_inspectorEye",
2537
- "graphLayout": "JK_n9q_graphLayout",
2538
- "fieldWide": "JK_n9q_fieldWide",
2539
- "insightCard": "JK_n9q_insightCard",
2540
- "tags": "JK_n9q_tags",
2541
- "runtimeEntryMeta": "JK_n9q_runtimeEntryMeta",
2542
- "documentSummary": "JK_n9q_documentSummary",
2543
- "documentDanger": "JK_n9q_documentDanger",
2544
- "supervisedHeading": "JK_n9q_supervisedHeading",
2545
- "sessionHint": "JK_n9q_sessionHint",
2546
- "listProgress": "JK_n9q_listProgress",
2547
- "flowTrack": "JK_n9q_flowTrack",
2548
- "flowArchiveTrack": "JK_n9q_flowArchiveTrack",
2549
- "id": "JK_n9q_id",
2550
- "statusCluster": "JK_n9q_statusCluster",
2551
- "graphBackdrop": "JK_n9q_graphBackdrop",
2552
- "graphGridLine": "JK_n9q_graphGridLine",
2553
- "graphPanel": "JK_n9q_graphPanel",
2554
- "runtimeOffline": "JK_n9q_runtimeOffline",
2555
- "bodyCardTop": "JK_n9q_bodyCardTop",
2556
- "categoryChip": "JK_n9q_categoryChip",
2557
- "inspectorActions": "JK_n9q_inspectorActions",
2558
- "checking": "JK_n9q_checking",
2559
- "cardKicker": "JK_n9q_cardKicker",
2560
- "page": "JK_n9q_page",
2561
- "telemetry": "JK_n9q_telemetry",
2562
- "dangerButton": "JK_n9q_dangerButton",
2563
- "runtimeComposerActions": "JK_n9q_runtimeComposerActions",
2564
- "bodyEditButton": "JK_n9q_bodyEditButton",
2565
- "storageAreaGrid": "JK_n9q_storageAreaGrid",
2566
- "documentListEmpty": "JK_n9q_documentListEmpty",
2567
- "alert": "JK_n9q_alert",
2568
- "entityResults": "JK_n9q_entityResults",
2569
- "navGlyph": "JK_n9q_navGlyph",
2570
- "bodySwitch": "JK_n9q_bodySwitch",
2571
- "bodyHealth": "JK_n9q_bodyHealth",
2572
- "relatedPane": "JK_n9q_relatedPane",
2573
- "runtimeComposerHeading": "JK_n9q_runtimeComposerHeading",
2574
- "documentCapacity": "JK_n9q_documentCapacity",
2575
- "markdownBody": "JK_n9q_markdownBody",
2576
- "supervisedComposer": "JK_n9q_supervisedComposer",
2577
- "flowLegend": "JK_n9q_flowLegend",
2578
- "entityList": "JK_n9q_entityList",
2579
- "liveDot": "JK_n9q_liveDot",
2580
- "iconButton": "JK_n9q_iconButton",
2581
- "statusDot": "JK_n9q_statusDot",
2582
- "documentReader": "JK_n9q_documentReader",
2583
- "writebackLayout": "JK_n9q_writebackLayout",
2584
- "graphToolbar": "JK_n9q_graphToolbar",
2585
- "memoryFlow": "JK_n9q_memoryFlow",
2586
- "brandLogo": "JK_n9q_brandLogo",
2587
- "documentDetail": "JK_n9q_documentDetail",
2588
- "topNavigation": "JK_n9q_topNavigation",
2589
- "nodeCore": "JK_n9q_nodeCore",
2590
- "inspectorLogo": "JK_n9q_inspectorLogo",
2591
- "bodyEdit": "JK_n9q_bodyEdit",
2592
- "queryField": "JK_n9q_queryField",
2593
- "relatedSource": "JK_n9q_relatedSource",
2594
- "runtimeTargetDescription": "JK_n9q_runtimeTargetDescription",
2595
- "manualActions": "JK_n9q_manualActions",
2596
- "documentList": "JK_n9q_documentList",
2597
- "navGroup": "JK_n9q_navGroup",
2598
- "muted": "JK_n9q_muted",
2599
- "workspace": "JK_n9q_workspace",
2600
- "healthGood": "JK_n9q_healthGood",
2601
- "documentArchiveReceipt": "JK_n9q_documentArchiveReceipt",
2602
- "inspectorEmpty": "JK_n9q_inspectorEmpty",
2603
- "sessionReady": "JK_n9q_sessionReady",
2604
- "documentToolbar": "JK_n9q_documentToolbar",
2605
- "inspectorMeta": "JK_n9q_inspectorMeta",
2606
- "flowTraceVertical": "JK_n9q_flowTraceVertical",
2607
- "healthStrip": "JK_n9q_healthStrip",
2608
- "bodyDirectoryEmpty": "JK_n9q_bodyDirectoryEmpty",
2609
- "documentEditorMeta": "JK_n9q_documentEditorMeta",
2610
- "lifecycleFoot": "JK_n9q_lifecycleFoot",
2611
- "graphLegend": "JK_n9q_graphLegend",
2612
- "graphCanvasControls": "JK_n9q_graphCanvasControls",
2613
- "advancedWrite": "JK_n9q_advancedWrite",
2614
- "bodySwitchTrack": "JK_n9q_bodySwitchTrack",
2615
- "loading": "JK_n9q_loading",
2616
- "bodyDirectoryPath": "JK_n9q_bodyDirectoryPath",
2617
- "previewMeta": "JK_n9q_previewMeta",
2618
- "runtimeTarget": "JK_n9q_runtimeTarget",
2619
- "runtimeReadOnly": "JK_n9q_runtimeReadOnly",
2620
- "flowSecondaryTrack": "JK_n9q_flowSecondaryTrack",
2621
- "bodyDirectoryHeader": "JK_n9q_bodyDirectoryHeader",
2622
- "results": "JK_n9q_results",
2623
- "lifecyclePanel": "JK_n9q_lifecyclePanel",
2624
- "inspectorHeading": "JK_n9q_inspectorHeading",
2625
- "bodyCreate": "JK_n9q_bodyCreate",
2626
- "runtimeGrid": "JK_n9q_runtimeGrid",
2627
- "listNotice": "JK_n9q_listNotice",
2628
- "agentCitations": "JK_n9q_agentCitations",
2629
- "masthead": "JK_n9q_masthead",
2630
- "graphFooter": "JK_n9q_graphFooter",
2631
- "bodySignal": "JK_n9q_bodySignal",
2632
- "resultLayout": "JK_n9q_resultLayout",
2633
- "graphNode": "JK_n9q_graphNode",
2634
- "online": "JK_n9q_online",
2635
- "nav": "JK_n9q_nav",
2636
- "graphEdge": "JK_n9q_graphEdge",
2637
- "bodyCard": "JK_n9q_bodyCard",
2638
- "cardTop": "JK_n9q_cardTop",
2639
- "documentWorkspace": "JK_n9q_documentWorkspace",
2640
- "flowConnector": "JK_n9q_flowConnector",
2641
- "bodyGrid": "JK_n9q_bodyGrid",
2642
- "shell": "JK_n9q_shell",
2643
- "formGrid": "JK_n9q_formGrid",
2644
- "secondaryButton": "JK_n9q_secondaryButton",
2645
- "healthIndicator": "JK_n9q_healthIndicator",
2646
- "healthMuted": "JK_n9q_healthMuted",
2647
- "runtimeComposer": "JK_n9q_runtimeComposer",
2648
- "writeGuide": "JK_n9q_writeGuide",
2649
- "graphInspector": "JK_n9q_graphInspector",
2650
- "entities": "JK_n9q_entities",
2651
- "lifecycleFlow": "JK_n9q_lifecycleFlow",
2652
- "bodyCardActions": "JK_n9q_bodyCardActions",
2653
- "searchBar": "JK_n9q_searchBar",
2654
- "graphViewport": "JK_n9q_graphViewport",
2655
- "capacityLine": "JK_n9q_capacityLine",
2656
- "navGroupDivider": "JK_n9q_navGroupDivider",
2657
- "memoryFlowCanvas": "JK_n9q_memoryFlowCanvas",
2658
- "nodeHalo": "JK_n9q_nodeHalo",
2659
- "runtimeEmpty": "JK_n9q_runtimeEmpty",
2660
- "flowArchitectureSignal": "JK_n9q_flowArchitectureSignal",
2661
- "dangerSolidButton": "JK_n9q_dangerSolidButton",
2662
- "graphSvg": "JK_n9q_graphSvg",
2663
- "singleColumn": "JK_n9q_singleColumn",
2664
- "runtimeEntry": "JK_n9q_runtimeEntry",
2665
- "loadingPanel": "JK_n9q_loadingPanel",
2666
- "memoryList": "JK_n9q_memoryList",
2667
- "flowTrace": "JK_n9q_flowTrace",
2668
- "searchActions": "JK_n9q_searchActions",
2669
- "entitySearch": "JK_n9q_entitySearch",
2670
- "spaceSummary": "JK_n9q_spaceSummary",
2671
- "supervisedForm": "JK_n9q_supervisedForm",
2672
- "storageFootnote": "JK_n9q_storageFootnote",
2673
- "badge": "JK_n9q_badge",
2674
- "statusSectionHeader": "JK_n9q_statusSectionHeader",
2675
- "runtimeBadge": "JK_n9q_runtimeBadge",
2676
- "previewOverlay": "JK_n9q_previewOverlay",
2677
- "telemetryMetric": "JK_n9q_telemetryMetric",
2678
- "previewHeading": "JK_n9q_previewHeading",
2679
- "runtimeNotice": "JK_n9q_runtimeNotice",
2680
- "healthBad": "JK_n9q_healthBad",
2681
- "sectionHeading": "JK_n9q_sectionHeading",
2682
- "runtimeFootnote": "JK_n9q_runtimeFootnote",
2683
- "storageAreaMetric": "JK_n9q_storageAreaMetric",
2684
- "manualForm": "JK_n9q_manualForm",
2685
- "storagePath": "JK_n9q_storagePath",
2686
- "badges": "JK_n9q_badges",
2687
- "inlineError": "JK_n9q_inlineError",
2688
- "phaseBadge": "JK_n9q_phaseBadge",
2689
- "runtimePending": "JK_n9q_runtimePending",
2690
- "entityHeading": "JK_n9q_entityHeading",
2691
- "canvas": "JK_n9q_canvas",
2692
- "formActions": "JK_n9q_formActions",
2693
- "mnemon-flow": "JK_n9q_mnemon-flow",
2694
- "agentAnswerHeading": "JK_n9q_agentAnswerHeading",
2695
- "agentAnswer": "JK_n9q_agentAnswer",
2696
- "emptyGlyph": "JK_n9q_emptyGlyph",
2697
- "flowArchitecture": "JK_n9q_flowArchitecture",
2698
- "runtimeOnline": "JK_n9q_runtimeOnline",
2699
- "pageHeader": "JK_n9q_pageHeader",
2700
- "nodeBodyLabel": "JK_n9q_nodeBodyLabel",
2701
- "bodyEditActions": "JK_n9q_bodyEditActions",
2702
- "sessionMissing": "JK_n9q_sessionMissing",
2703
- "flowReviewTrack": "JK_n9q_flowReviewTrack",
2704
- "content": "JK_n9q_content",
2705
- "cardActions": "JK_n9q_cardActions",
2706
- "previewDialog": "JK_n9q_previewDialog",
2707
- "offline": "JK_n9q_offline",
2708
- "inspectorTitle": "JK_n9q_inspectorTitle"
3244
+ "storageFootnote": "Q34gFW_storageFootnote",
3245
+ "flowArchitectureNode": "Q34gFW_flowArchitectureNode",
3246
+ "id": "Q34gFW_id",
3247
+ "inspectorMeta": "Q34gFW_inspectorMeta",
3248
+ "capacityLine": "Q34gFW_capacityLine",
3249
+ "alert": "Q34gFW_alert",
3250
+ "runtimeFootnote": "Q34gFW_runtimeFootnote",
3251
+ "graphToolbar": "Q34gFW_graphToolbar",
3252
+ "storageAreaGrid": "Q34gFW_storageAreaGrid",
3253
+ "documentCapacity": "Q34gFW_documentCapacity",
3254
+ "entityHeading": "Q34gFW_entityHeading",
3255
+ "agentAnswerHeading": "Q34gFW_agentAnswerHeading",
3256
+ "entityList": "Q34gFW_entityList",
3257
+ "flowConnector": "Q34gFW_flowConnector",
3258
+ "graphViewport": "Q34gFW_graphViewport",
3259
+ "previewBody": "Q34gFW_previewBody",
3260
+ "lifecyclePanel": "Q34gFW_lifecyclePanel",
3261
+ "singleColumn": "Q34gFW_singleColumn",
3262
+ "primaryButton": "Q34gFW_primaryButton",
3263
+ "runtimeOnline": "Q34gFW_runtimeOnline",
3264
+ "bodyCreate": "Q34gFW_bodyCreate",
3265
+ "navGroup": "Q34gFW_navGroup",
3266
+ "previewOverlay": "Q34gFW_previewOverlay",
3267
+ "previewMeta": "Q34gFW_previewMeta",
3268
+ "inspectorHeading": "Q34gFW_inspectorHeading",
3269
+ "navGlyph": "Q34gFW_navGlyph",
3270
+ "graphEdge": "Q34gFW_graphEdge",
3271
+ "relatedPane": "Q34gFW_relatedPane",
3272
+ "entityResults": "Q34gFW_entityResults",
3273
+ "entityRail": "Q34gFW_entityRail",
3274
+ "documentEditor": "Q34gFW_documentEditor",
3275
+ "listProgress": "Q34gFW_listProgress",
3276
+ "memoryFlow": "Q34gFW_memoryFlow",
3277
+ "flowLane": "Q34gFW_flowLane",
3278
+ "supervisedHeading": "Q34gFW_supervisedHeading",
3279
+ "cardActions": "Q34gFW_cardActions",
3280
+ "flowArchitectureSignal": "Q34gFW_flowArchitectureSignal",
3281
+ "searchControls": "Q34gFW_searchControls",
3282
+ "tags": "Q34gFW_tags",
3283
+ "entityLayout": "Q34gFW_entityLayout",
3284
+ "documentToolbar": "Q34gFW_documentToolbar",
3285
+ "storageUnavailable": "Q34gFW_storageUnavailable",
3286
+ "bodyGrid": "Q34gFW_bodyGrid",
3287
+ "graphGridLine": "Q34gFW_graphGridLine",
3288
+ "dangerSolidButton": "Q34gFW_dangerSolidButton",
3289
+ "bodySignal": "Q34gFW_bodySignal",
3290
+ "nodeCore": "Q34gFW_nodeCore",
3291
+ "loadingPanel": "Q34gFW_loadingPanel",
3292
+ "searchBar": "Q34gFW_searchBar",
3293
+ "entities": "Q34gFW_entities",
3294
+ "documentDanger": "Q34gFW_documentDanger",
3295
+ "mnemon-flow": "Q34gFW_mnemon-flow",
3296
+ "memoryFlowCanvas": "Q34gFW_memoryFlowCanvas",
3297
+ "checking": "Q34gFW_checking",
3298
+ "storageAreaMetric": "Q34gFW_storageAreaMetric",
3299
+ "relatedSource": "Q34gFW_relatedSource",
3300
+ "graphCanvasControls": "Q34gFW_graphCanvasControls",
3301
+ "emptyGlyph": "Q34gFW_emptyGlyph",
3302
+ "emptyState": "Q34gFW_emptyState",
3303
+ "documentEditorMeta": "Q34gFW_documentEditorMeta",
3304
+ "bodyDirectoryHeader": "Q34gFW_bodyDirectoryHeader",
3305
+ "entitySearch": "Q34gFW_entitySearch",
3306
+ "documentDetail": "Q34gFW_documentDetail",
3307
+ "flowReviewTrack": "Q34gFW_flowReviewTrack",
3308
+ "lifecycleFoot": "Q34gFW_lifecycleFoot",
3309
+ "statusSectionHeader": "Q34gFW_statusSectionHeader",
3310
+ "lifecycleFlow": "Q34gFW_lifecycleFlow",
3311
+ "dangerButton": "Q34gFW_dangerButton",
3312
+ "liveDot": "Q34gFW_liveDot",
3313
+ "bodyEditActions": "Q34gFW_bodyEditActions",
3314
+ "inspectorActions": "Q34gFW_inspectorActions",
3315
+ "graphPanel": "Q34gFW_graphPanel",
3316
+ "runtimeComposerHeading": "Q34gFW_runtimeComposerHeading",
3317
+ "listNotice": "Q34gFW_listNotice",
3318
+ "advancedWrite": "Q34gFW_advancedWrite",
3319
+ "healthBad": "Q34gFW_healthBad",
3320
+ "runtimeTargetHeader": "Q34gFW_runtimeTargetHeader",
3321
+ "spaceSummary": "Q34gFW_spaceSummary",
3322
+ "sessionMissing": "Q34gFW_sessionMissing",
3323
+ "statusCluster": "Q34gFW_statusCluster",
3324
+ "offline": "Q34gFW_offline",
3325
+ "telemetryMetric": "Q34gFW_telemetryMetric",
3326
+ "bodyDirectoryPath": "Q34gFW_bodyDirectoryPath",
3327
+ "graphSvg": "Q34gFW_graphSvg",
3328
+ "confirmBar": "Q34gFW_confirmBar",
3329
+ "bodyDirectory": "Q34gFW_bodyDirectory",
3330
+ "inspectorEye": "Q34gFW_inspectorEye",
3331
+ "runtimeComposer": "Q34gFW_runtimeComposer",
3332
+ "documentSources": "Q34gFW_documentSources",
3333
+ "page": "Q34gFW_page",
3334
+ "runtimeComposerActions": "Q34gFW_runtimeComposerActions",
3335
+ "manualActions": "Q34gFW_manualActions",
3336
+ "nav": "Q34gFW_nav",
3337
+ "pageHeaderMeta": "Q34gFW_pageHeaderMeta",
3338
+ "sessionReady": "Q34gFW_sessionReady",
3339
+ "documentArchiveReceipt": "Q34gFW_documentArchiveReceipt",
3340
+ "formActions": "Q34gFW_formActions",
3341
+ "flowLegend": "Q34gFW_flowLegend",
3342
+ "topNavigation": "Q34gFW_topNavigation",
3343
+ "pageHeader": "Q34gFW_pageHeader",
3344
+ "flowArchiveTrack": "Q34gFW_flowArchiveTrack",
3345
+ "storageRoot": "Q34gFW_storageRoot",
3346
+ "brandLogo": "Q34gFW_brandLogo",
3347
+ "healthGood": "Q34gFW_healthGood",
3348
+ "nodeBodyLabel": "Q34gFW_nodeBodyLabel",
3349
+ "queryField": "Q34gFW_queryField",
3350
+ "bodyEditButton": "Q34gFW_bodyEditButton",
3351
+ "bodyEdit": "Q34gFW_bodyEdit",
3352
+ "sectionHeading": "Q34gFW_sectionHeading",
3353
+ "graphNode": "Q34gFW_graphNode",
3354
+ "badge": "Q34gFW_badge",
3355
+ "runtimeEntries": "Q34gFW_runtimeEntries",
3356
+ "ghostButton": "Q34gFW_ghostButton",
3357
+ "flowTrack": "Q34gFW_flowTrack",
3358
+ "nodeLabel": "Q34gFW_nodeLabel",
3359
+ "bodySwitchTrack": "Q34gFW_bodySwitchTrack",
3360
+ "bodyCardActions": "Q34gFW_bodyCardActions",
3361
+ "masthead": "Q34gFW_masthead",
3362
+ "graphLegend": "Q34gFW_graphLegend",
3363
+ "runtimeNotice": "Q34gFW_runtimeNotice",
3364
+ "documentList": "Q34gFW_documentList",
3365
+ "memoryList": "Q34gFW_memoryList",
3366
+ "loading": "Q34gFW_loading",
3367
+ "documentListEmpty": "Q34gFW_documentListEmpty",
3368
+ "runtimeTarget": "Q34gFW_runtimeTarget",
3369
+ "telemetry": "Q34gFW_telemetry",
3370
+ "secondaryButton": "Q34gFW_secondaryButton",
3371
+ "searchActions": "Q34gFW_searchActions",
3372
+ "supervisedComposer": "Q34gFW_supervisedComposer",
3373
+ "online": "Q34gFW_online",
3374
+ "brand": "Q34gFW_brand",
3375
+ "navGroupDivider": "Q34gFW_navGroupDivider",
3376
+ "bodyDirectoryEmpty": "Q34gFW_bodyDirectoryEmpty",
3377
+ "inspectorTitleRow": "Q34gFW_inspectorTitleRow",
3378
+ "inspectorTitle": "Q34gFW_inspectorTitle",
3379
+ "runtimeTargetDescription": "Q34gFW_runtimeTargetDescription",
3380
+ "graphBackdrop": "Q34gFW_graphBackdrop",
3381
+ "previewDialog": "Q34gFW_previewDialog",
3382
+ "documentWorkspace": "Q34gFW_documentWorkspace",
3383
+ "iconButton": "Q34gFW_iconButton",
3384
+ "supervisedForm": "Q34gFW_supervisedForm",
3385
+ "writebackLayout": "Q34gFW_writebackLayout",
3386
+ "manualForm": "Q34gFW_manualForm",
3387
+ "flowTrace": "Q34gFW_flowTrace",
3388
+ "storageDomains": "Q34gFW_storageDomains",
3389
+ "runtimePending": "Q34gFW_runtimePending",
3390
+ "previewHeading": "Q34gFW_previewHeading",
3391
+ "bodyHealth": "Q34gFW_bodyHealth",
3392
+ "flowTraceVertical": "Q34gFW_flowTraceVertical",
3393
+ "runtimeEntryMeta": "Q34gFW_runtimeEntryMeta",
3394
+ "documentSummary": "Q34gFW_documentSummary",
3395
+ "agentCitations": "Q34gFW_agentCitations",
3396
+ "content": "Q34gFW_content",
3397
+ "healthStrip": "Q34gFW_healthStrip",
3398
+ "workspace": "Q34gFW_workspace",
3399
+ "nodeHalo": "Q34gFW_nodeHalo",
3400
+ "writeGuide": "Q34gFW_writeGuide",
3401
+ "canvas": "Q34gFW_canvas",
3402
+ "categoryChip": "Q34gFW_categoryChip",
3403
+ "formGrid": "Q34gFW_formGrid",
3404
+ "statusDot": "Q34gFW_statusDot",
3405
+ "healthMuted": "Q34gFW_healthMuted",
3406
+ "muted": "Q34gFW_muted",
3407
+ "runtimeEmpty": "Q34gFW_runtimeEmpty",
3408
+ "bodyCardTop": "Q34gFW_bodyCardTop",
3409
+ "badges": "Q34gFW_badges",
3410
+ "flowSecondaryTrack": "Q34gFW_flowSecondaryTrack",
3411
+ "agentAnswer": "Q34gFW_agentAnswer",
3412
+ "runtimeEntry": "Q34gFW_runtimeEntry",
3413
+ "inspectorEmpty": "Q34gFW_inspectorEmpty",
3414
+ "fieldWide": "Q34gFW_fieldWide",
3415
+ "healthIndicator": "Q34gFW_healthIndicator",
3416
+ "cardKicker": "Q34gFW_cardKicker",
3417
+ "results": "Q34gFW_results",
3418
+ "runtimeOffline": "Q34gFW_runtimeOffline",
3419
+ "graphLayout": "Q34gFW_graphLayout",
3420
+ "graphFooter": "Q34gFW_graphFooter",
3421
+ "bodySwitch": "Q34gFW_bodySwitch",
3422
+ "inlineError": "Q34gFW_inlineError",
3423
+ "insightCard": "Q34gFW_insightCard",
3424
+ "runtimeReadOnly": "Q34gFW_runtimeReadOnly",
3425
+ "listToolbar": "Q34gFW_listToolbar",
3426
+ "shell": "Q34gFW_shell",
3427
+ "sessionHint": "Q34gFW_sessionHint",
3428
+ "flowArchitecture": "Q34gFW_flowArchitecture",
3429
+ "bodyCard": "Q34gFW_bodyCard",
3430
+ "inspectorLogo": "Q34gFW_inspectorLogo",
3431
+ "runtimeGrid": "Q34gFW_runtimeGrid",
3432
+ "cardTop": "Q34gFW_cardTop",
3433
+ "resultLayout": "Q34gFW_resultLayout",
3434
+ "markdownBody": "Q34gFW_markdownBody",
3435
+ "phaseBadge": "Q34gFW_phaseBadge",
3436
+ "graphInspector": "Q34gFW_graphInspector",
3437
+ "storagePath": "Q34gFW_storagePath",
3438
+ "documentReader": "Q34gFW_documentReader",
3439
+ "runtimeBadge": "Q34gFW_runtimeBadge"
2709
3440
  };
2710
3441
  //#endregion
2711
3442
  //#region src/client/MnemonView.tsx
@@ -5955,15 +6686,10 @@ window.__ModuleLoader__.load({
5955
6686
  const client = (0, react.useMemo)(() => new MnemonClient(connection, sessionId), [connection, sessionId]);
5956
6687
  const [page, setPage] = (0, react.useState)("status");
5957
6688
  const canvasRef = (0, react.useRef)(null);
5958
- /** Pages share one scroll container; drop any carried-over offset so each tab opens at its top. */
6689
+ /** Pages share one plugin-owned scroll container; never mutate DSH ancestor scrollports. */
5959
6690
  const resetViewportScroll = (0, react.useCallback)(() => {
5960
6691
  const canvas = canvasRef.current;
5961
6692
  if (canvas !== null) canvas.scrollTop = 0;
5962
- let node = canvas?.parentElement ?? null;
5963
- while (node !== null && node !== document.body && node !== document.documentElement) {
5964
- if (node.scrollTop > 0) node.scrollTop = 0;
5965
- node = node.parentElement;
5966
- }
5967
6693
  }, []);
5968
6694
  (0, react.useEffect)(() => {
5969
6695
  resetViewportScroll();
@@ -5978,6 +6704,19 @@ window.__ModuleLoader__.load({
5978
6704
  const [revision, setRevision] = (0, react.useState)(0);
5979
6705
  const [searchSeed, setSearchSeed] = (0, react.useState)("");
5980
6706
  const [rememberSeed, setRememberSeed] = (0, react.useState)("");
6707
+ /** Conversation surfaces ask this view to open a page (optionally with a seed). */
6708
+ const applyAnchor = (0, react.useCallback)((anchor) => {
6709
+ if (anchor.seed !== void 0 && anchor.seed !== "") {
6710
+ if (anchor.page === "explore") setSearchSeed(anchor.seed);
6711
+ if (anchor.page === "remember") setRememberSeed(anchor.seed);
6712
+ }
6713
+ setPage(anchor.page);
6714
+ }, []);
6715
+ (0, react.useEffect)(() => {
6716
+ const held = consumeMnemonAnchor(sessionId);
6717
+ if (held !== null) applyAnchor(held);
6718
+ return subscribeMnemonAnchor(sessionId, applyAnchor);
6719
+ }, [sessionId, applyAnchor]);
5981
6720
  const loadStatus = (0, react.useCallback)(async () => {
5982
6721
  setStatusLoading(true);
5983
6722
  setStatusError(null);
@@ -6174,12 +6913,679 @@ window.__ModuleLoader__.load({
6174
6913
  });
6175
6914
  }
6176
6915
  //#endregion
6177
- //#region src/settings.ts
6178
- const MNEMON_SETTINGS_CHANNEL = "/dsh-mnemon-settings";
6916
+ //#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonToolviews.module.css.mjs
6917
+ const css$2 = ".KnejfW_root{min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.KnejfW_row{cursor:pointer;border-radius:6px;align-items:center;gap:6px;height:24px;display:flex;position:relative}.KnejfW_row:hover{background:var(--dsw-alias-interactive-bg-hover)}.KnejfW_row:focus-visible{outline:1.5px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.KnejfW_dot{border-radius:50%;flex:none;width:6px;height:6px}.KnejfW_dotRunning{background:var(--dsw-alias-state-info-primary,#4f7cff);animation:1.4s ease-in-out infinite KnejfW_mnemonToolPulse}.KnejfW_dotOk{background:var(--dsw-alias-state-success-primary)}.KnejfW_dotError{background:var(--dsw-alias-state-error-primary)}.KnejfW_dotStopped{background:var(--dsw-alias-state-warn-primary)}@keyframes KnejfW_mnemonToolPulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.KnejfW_dotRunning{animation:none}}.KnejfW_leading{opacity:.85;border-radius:3px;flex:none;width:14px;height:14px}.KnejfW_title{flex:none;font-size:12px;font-weight:500;line-height:16px}.KnejfW_summary{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;font-size:12px;line-height:16px;overflow:hidden}.KnejfW_actions{opacity:0;flex:none;align-items:center;gap:4px;transition:opacity .12s;display:inline-flex}.KnejfW_row:hover .KnejfW_actions,.KnejfW_row:focus-visible .KnejfW_actions,.KnejfW_root[data-open] .KnejfW_actions{opacity:1}.KnejfW_actionButton{cursor:pointer;height:20px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:5px;padding:0 8px;font-size:11px;line-height:20px}.KnejfW_actionButton:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.KnejfW_chevron{opacity:.7;flex:none;width:12px;height:12px;transition:transform .12s}.KnejfW_chevron:before{content:\"\";border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;display:block;transform:translate(2px,1px)rotate(45deg)}.KnejfW_chevronOpen:before{transform:translate(2px,4px)rotate(-135deg)}.KnejfW_details{border-left:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);cursor:default;border-radius:0 8px 8px 0;flex-direction:column;gap:6px;min-width:0;margin:2px 0 4px 26px;padding:8px 10px;display:flex}.KnejfW_detailSection{min-width:0}.KnejfW_detailLabel{color:var(--dsw-alias-label-caption);letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px;font-size:10px;font-weight:650;display:block}.KnejfW_detailCode{white-space:pre-wrap;word-break:break-word;max-height:220px;color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,Consolas, monospace);margin:0;font-size:11px;line-height:16px;overflow:auto}.KnejfW_detailEmpty{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:16px}";
6918
+ const tagId$2 = "dsh-mnemon/MnemonToolviews.module.css";
6919
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
6920
+ const tag = document.createElement("style");
6921
+ tag.dataset.plugin = "dsh-mnemon";
6922
+ tag.dataset.pluginCss = tagId$2;
6923
+ tag.textContent = css$2;
6924
+ document.head.appendChild(tag);
6925
+ }
6926
+ var MnemonToolviews_module_css_default = {
6927
+ "root": "KnejfW_root",
6928
+ "dotError": "KnejfW_dotError",
6929
+ "dotOk": "KnejfW_dotOk",
6930
+ "summary": "KnejfW_summary",
6931
+ "chevron": "KnejfW_chevron",
6932
+ "actionButton": "KnejfW_actionButton",
6933
+ "detailSection": "KnejfW_detailSection",
6934
+ "chevronOpen": "KnejfW_chevronOpen",
6935
+ "mnemonToolPulse": "KnejfW_mnemonToolPulse",
6936
+ "detailCode": "KnejfW_detailCode",
6937
+ "leading": "KnejfW_leading",
6938
+ "row": "KnejfW_row",
6939
+ "dot": "KnejfW_dot",
6940
+ "title": "KnejfW_title",
6941
+ "dotRunning": "KnejfW_dotRunning",
6942
+ "actions": "KnejfW_actions",
6943
+ "detailLabel": "KnejfW_detailLabel",
6944
+ "dotStopped": "KnejfW_dotStopped",
6945
+ "details": "KnejfW_details",
6946
+ "detailEmpty": "KnejfW_detailEmpty"
6947
+ };
6948
+ //#endregion
6949
+ //#region src/client/MnemonToolviews.tsx
6950
+ const READ_TOOLS = /* @__PURE__ */ new Set([
6951
+ "mnemon_recall",
6952
+ "mnemon_related",
6953
+ "mnemon_document_search",
6954
+ "mnemon_status",
6955
+ "mnemon_memory_bodies"
6956
+ ]);
6957
+ /** Anchor destination per tool: where "open in Memory view" should land. */
6958
+ const ANCHOR_TARGETS = {
6959
+ mnemon_recall: {
6960
+ page: "explore",
6961
+ seed: (args) => typeof args.query === "string" && args.query.trim() !== "" ? args.query.trim() : void 0
6962
+ },
6963
+ mnemon_related: {
6964
+ page: "explore",
6965
+ seed: (args) => typeof args.id === "string" && args.id.trim() !== "" ? args.id.trim() : void 0
6966
+ },
6967
+ mnemon_document_search: { page: "documents" },
6968
+ mnemon_status: { page: "status" },
6969
+ mnemon_memory_bodies: { page: "overview" },
6970
+ mnemon_runtime_memory: { page: "runtime" },
6971
+ mnemon_document_manage: { page: "documents" },
6972
+ mnemon_remember: { page: "overview" },
6973
+ mnemon_forget: { page: "overview" },
6974
+ mnemon_link: { page: "overview" },
6975
+ mnemon_memory_body_create: { page: "overview" },
6976
+ mnemon_memory_body_update: { page: "overview" },
6977
+ mnemon_memory_body_merge: { page: "overview" }
6978
+ };
6979
+ function isSettled(block) {
6980
+ return typeof block === "object" && block !== null && "kind" in block;
6981
+ }
6982
+ /** Parse the call's raw arguments JSON; always returns a plain object. */
6983
+ function argsOf(block) {
6984
+ const record = block;
6985
+ const raw = typeof record?.call?.argsRaw === "string" ? record.call.argsRaw : typeof record?.argsRaw === "string" ? record.argsRaw : "";
6986
+ if (raw === "") return {};
6987
+ try {
6988
+ const parsed = JSON.parse(raw);
6989
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : {};
6990
+ } catch {
6991
+ return {};
6992
+ }
6993
+ }
6994
+ /** Joined text blocks of a settled result; empty while running. */
6995
+ function resultText(block) {
6996
+ if (!isSettled(block)) return "";
6997
+ const content = block.content;
6998
+ if (!Array.isArray(content)) return "";
6999
+ return content.filter((item) => typeof item === "object" && item !== null && item.type === "text" && typeof item.text === "string").map((item) => String(item.text)).join("");
7000
+ }
7001
+ /** Parsed result JSON when the output is one object; otherwise null. */
7002
+ function outputJson(block) {
7003
+ const text = resultText(block);
7004
+ if (text === "") return null;
7005
+ try {
7006
+ const parsed = JSON.parse(text);
7007
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : null;
7008
+ } catch {
7009
+ return null;
7010
+ }
7011
+ }
7012
+ function truncateInline(value, max) {
7013
+ const normalized = value.replace(/\s+/g, " ").trim();
7014
+ return normalized.length <= max ? normalized : `${normalized.slice(0, max)}…`;
7015
+ }
7016
+ function truncateBlock(value, max) {
7017
+ const normalized = value.trim();
7018
+ return normalized.length <= max ? normalized : `${normalized.slice(0, max)}\n…`;
7019
+ }
7020
+ function countOf(value) {
7021
+ return Array.isArray(value) ? value.length : void 0;
7022
+ }
7023
+ /** Tool-specific one-line summary from the call args and the settled output. */
7024
+ function summaryFor(toolName, args, out, t) {
7025
+ switch (toolName) {
7026
+ case "mnemon_recall": {
7027
+ const query = typeof args.query === "string" ? truncateInline(args.query, 56) : "";
7028
+ const hits = out === null ? void 0 : countOf(out.results);
7029
+ return hits === void 0 ? query : t("toolview.recallSummary", {
7030
+ query,
7031
+ count: hits
7032
+ });
7033
+ }
7034
+ case "mnemon_related": {
7035
+ const id = typeof args.id === "string" ? args.id : "";
7036
+ const hits = out === null ? void 0 : countOf(out.results);
7037
+ return hits === void 0 ? truncateInline(id, 56) : t("toolview.relatedSummary", {
7038
+ id: truncateInline(id, 28),
7039
+ count: hits
7040
+ });
7041
+ }
7042
+ case "mnemon_document_search": {
7043
+ const query = typeof args.query === "string" ? truncateInline(args.query, 56) : "";
7044
+ const hits = out === null ? void 0 : countOf(out.results);
7045
+ return hits === void 0 ? query : t("toolview.documentSearchSummary", {
7046
+ query,
7047
+ count: hits
7048
+ });
7049
+ }
7050
+ case "mnemon_status": return out === null ? t("toolview.running") : out.healthy === true ? t("toolview.statusHealthy") : t("toolview.statusUnhealthy");
7051
+ case "mnemon_memory_bodies": return out === null ? t("toolview.running") : t("toolview.bodiesSummary", {
7052
+ count: out.total ?? 0,
7053
+ active: out.activeCount ?? 0
7054
+ });
7055
+ case "mnemon_remember": return typeof args.content === "string" ? truncateInline(args.content, 56) : t("toolview.genericSummary");
7056
+ case "mnemon_runtime_memory": {
7057
+ const action = typeof args.action === "string" ? args.action : "";
7058
+ const target = typeof args.target === "string" ? args.target : "";
7059
+ const content = typeof args.content === "string" ? truncateInline(args.content, 40) : "";
7060
+ return content === "" ? t("toolview.runtimeSummary", {
7061
+ action,
7062
+ target
7063
+ }) : t("toolview.runtimeSummaryWithContent", {
7064
+ action,
7065
+ target,
7066
+ content
7067
+ });
7068
+ }
7069
+ case "mnemon_document_manage": {
7070
+ const action = typeof args.action === "string" ? args.action : "";
7071
+ const title = typeof args.title === "string" ? truncateInline(args.title, 40) : "";
7072
+ return title === "" ? t("toolview.documentManageSummary", { action }) : t("toolview.documentManageSummaryWithTitle", {
7073
+ action,
7074
+ title
7075
+ });
7076
+ }
7077
+ case "mnemon_link": return `${typeof args.sourceId === "string" ? truncateInline(args.sourceId, 18) : "?"} → ${typeof args.targetId === "string" ? truncateInline(args.targetId, 18) : "?"}`;
7078
+ case "mnemon_forget": return typeof args.id === "string" ? truncateInline(args.id, 56) : t("toolview.genericSummary");
7079
+ case "mnemon_memory_body_create": return typeof args.name === "string" ? truncateInline(args.name, 56) : t("toolview.genericSummary");
7080
+ case "mnemon_memory_body_update": {
7081
+ const id = typeof args.memoryBodyId === "string" ? truncateInline(args.memoryBodyId, 32) : "";
7082
+ return id === "" ? t("toolview.genericSummary") : t("toolview.bodyUpdateSummary", { id });
7083
+ }
7084
+ case "mnemon_memory_body_merge": return t("toolview.bodyMergeSummary", {
7085
+ target: typeof args.targetMemoryBodyId === "string" ? truncateInline(args.targetMemoryBodyId, 24) : "?",
7086
+ count: countOf(args.sourceMemoryBodyIds) ?? 0
7087
+ });
7088
+ default: return t("toolview.genericSummary");
7089
+ }
7090
+ }
7091
+ /** Render one mnemon_* tool call as a memory-flavoured row with expandable evidence. */
7092
+ const MnemonToolView = (0, react.memo)(function MnemonToolView({ toolName, block, inspect, sessionId, t }) {
7093
+ const [open, setOpen] = (0, react.useState)(false);
7094
+ const settled = isSettled(block);
7095
+ const record = block;
7096
+ const state = !settled ? "running" : record?.error?.code === "interrupted" ? "stopped" : record?.isError === true ? "error" : "ok";
7097
+ const args = (0, react.useMemo)(() => argsOf(block), [block]);
7098
+ const out = (0, react.useMemo)(() => outputJson(block), [block]);
7099
+ const text = (0, react.useMemo)(() => resultText(block), [block]);
7100
+ const title = READ_TOOLS.has(toolName) ? t("toolview.recallTitle") : t("toolview.writeTitle");
7101
+ const summary = summaryFor(toolName, args, out, t);
7102
+ const target = ANCHOR_TARGETS[toolName];
7103
+ const seed = target?.seed?.(args);
7104
+ const toggle = () => setOpen((value) => !value);
7105
+ const openView = (event) => {
7106
+ event.stopPropagation();
7107
+ if (target === void 0) return;
7108
+ dispatchMnemonAnchor({
7109
+ page: target.page,
7110
+ ...seed === void 0 ? {} : { seed },
7111
+ ...sessionId === void 0 ? {} : { sessionId }
7112
+ });
7113
+ };
7114
+ const inspectCall = (event) => {
7115
+ event.stopPropagation();
7116
+ inspect?.();
7117
+ };
7118
+ const showArgs = Object.keys(args).length > 0;
7119
+ const showResult = text !== "";
7120
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7121
+ className: MnemonToolviews_module_css_default.root,
7122
+ "data-state": state,
7123
+ "data-open": open || void 0,
7124
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7125
+ className: MnemonToolviews_module_css_default.row,
7126
+ role: "button",
7127
+ tabIndex: 0,
7128
+ "aria-expanded": open,
7129
+ "aria-label": `${title}:${summary}`,
7130
+ onClick: toggle,
7131
+ onKeyDown: (event) => {
7132
+ if (event.key === "Enter" || event.key === " ") {
7133
+ event.preventDefault();
7134
+ toggle();
7135
+ }
7136
+ },
7137
+ children: [
7138
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7139
+ className: `${MnemonToolviews_module_css_default.dot} ${state === "running" ? MnemonToolviews_module_css_default.dotRunning : state === "error" ? MnemonToolviews_module_css_default.dotError : state === "stopped" ? MnemonToolviews_module_css_default.dotStopped : MnemonToolviews_module_css_default.dotOk}`,
7140
+ "aria-hidden": "true"
7141
+ }),
7142
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MnemonLogo, {
7143
+ className: MnemonToolviews_module_css_default.leading,
7144
+ title
7145
+ }),
7146
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7147
+ className: MnemonToolviews_module_css_default.title,
7148
+ children: title
7149
+ }),
7150
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7151
+ className: MnemonToolviews_module_css_default.summary,
7152
+ children: summary
7153
+ }),
7154
+ (inspect !== void 0 || target !== void 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7155
+ className: MnemonToolviews_module_css_default.actions,
7156
+ onClick: (event) => event.stopPropagation(),
7157
+ children: [target !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7158
+ type: "button",
7159
+ className: MnemonToolviews_module_css_default.actionButton,
7160
+ onClick: openView,
7161
+ title: t("toolview.openView"),
7162
+ children: t("toolview.openView")
7163
+ }), settled && inspect !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7164
+ type: "button",
7165
+ className: MnemonToolviews_module_css_default.actionButton,
7166
+ onClick: inspectCall,
7167
+ title: t("toolview.inspect"),
7168
+ children: t("toolview.inspect")
7169
+ })]
7170
+ }),
7171
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7172
+ className: `${MnemonToolviews_module_css_default.chevron} ${open ? MnemonToolviews_module_css_default.chevronOpen : ""}`,
7173
+ "aria-hidden": "true"
7174
+ })
7175
+ ]
7176
+ }), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7177
+ className: MnemonToolviews_module_css_default.details,
7178
+ onClick: (event) => event.stopPropagation(),
7179
+ children: [
7180
+ showArgs && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7181
+ className: MnemonToolviews_module_css_default.detailSection,
7182
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7183
+ className: MnemonToolviews_module_css_default.detailLabel,
7184
+ children: t("toolview.args")
7185
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
7186
+ className: MnemonToolviews_module_css_default.detailCode,
7187
+ children: truncateBlock(JSON.stringify(args, null, 2), 2e3)
7188
+ })]
7189
+ }),
7190
+ showResult && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7191
+ className: MnemonToolviews_module_css_default.detailSection,
7192
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7193
+ className: MnemonToolviews_module_css_default.detailLabel,
7194
+ children: t("toolview.result")
7195
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
7196
+ className: MnemonToolviews_module_css_default.detailCode,
7197
+ children: truncateBlock(text, 4e3)
7198
+ })]
7199
+ }),
7200
+ !showArgs && !showResult && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7201
+ className: MnemonToolviews_module_css_default.detailEmpty,
7202
+ children: state === "running" ? t("toolview.running") : t("toolview.noResult")
7203
+ })
7204
+ ]
7205
+ })]
7206
+ });
7207
+ });
7208
+ /** Tool name → toolview component, registered as keyed `tool.call.toolview` entries. */
7209
+ const MNEMON_TOOLVIEW_NAMES = Object.keys(ANCHOR_TARGETS);
7210
+ //#endregion
7211
+ //#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonTurnTail.module.css.mjs
7212
+ const css$1 = ".tvtksG_root{min-width:0;margin:2px 0}.tvtksG_bar{cursor:pointer;min-width:0;max-width:100%;height:22px;color:var(--dsw-alias-label-tertiary);background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:0 8px 0 6px;font-size:11px;line-height:22px;display:flex}.tvtksG_bar:hover{border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.tvtksG_bar:focus-visible{outline:1.5px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.tvtksG_mark{opacity:.8;flex:none;font-size:10px}.tvtksG_label{flex:none;font-weight:600}.tvtksG_metrics{align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}.tvtksG_metrics span{white-space:nowrap}.tvtksG_failureMetric{color:var(--dsw-alias-state-error-primary,#d44)}.tvtksG_chevron{opacity:.7;flex:none;width:8px;height:8px;margin-left:auto}.tvtksG_chevron:before{content:\"\";border-bottom:1.5px solid;border-right:1.5px solid;width:5px;height:5px;transition:transform .12s;display:block;transform:rotate(45deg)translate(-1px,-1px)}.tvtksG_chevronOpen:before{transform:rotate(-135deg)translate(0)}.tvtksG_details{border-left:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);border-radius:0 8px 8px 0;align-items:center;gap:10px;min-width:0;margin:2px 0 4px;padding:6px 8px;display:flex}.tvtksG_detailLabel{color:var(--dsw-alias-label-caption);letter-spacing:.08em;text-transform:uppercase;flex:none;font-size:10px;font-weight:650}.tvtksG_tools{flex-wrap:wrap;flex:auto;gap:4px;min-width:0;display:flex}.tvtksG_toolChip{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,Consolas, monospace);white-space:nowrap;border-radius:4px;padding:0 6px;font-size:10px;line-height:18px}.tvtksG_viewButton{cursor:pointer;height:20px;color:var(--dsw-alias-state-business-primary);background:0 0;border:none;border-radius:5px;flex:none;padding:0 8px;font-size:11px;line-height:20px}.tvtksG_viewButton:hover{background:var(--dsw-alias-interactive-bg-active)}";
7213
+ const tagId$1 = "dsh-mnemon/MnemonTurnTail.module.css";
7214
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
7215
+ const tag = document.createElement("style");
7216
+ tag.dataset.plugin = "dsh-mnemon";
7217
+ tag.dataset.pluginCss = tagId$1;
7218
+ tag.textContent = css$1;
7219
+ document.head.appendChild(tag);
7220
+ }
7221
+ var MnemonTurnTail_module_css_default = {
7222
+ "chevron": "tvtksG_chevron",
7223
+ "details": "tvtksG_details",
7224
+ "tools": "tvtksG_tools",
7225
+ "bar": "tvtksG_bar",
7226
+ "toolChip": "tvtksG_toolChip",
7227
+ "viewButton": "tvtksG_viewButton",
7228
+ "metrics": "tvtksG_metrics",
7229
+ "label": "tvtksG_label",
7230
+ "chevronOpen": "tvtksG_chevronOpen",
7231
+ "root": "tvtksG_root",
7232
+ "detailLabel": "tvtksG_detailLabel",
7233
+ "mark": "tvtksG_mark",
7234
+ "failureMetric": "tvtksG_failureMetric"
7235
+ };
7236
+ //#endregion
7237
+ //#region src/client/MnemonTurnTail.tsx
7238
+ function turnNumber(turn) {
7239
+ const value = turn?.turn;
7240
+ return typeof value === "number" ? value : void 0;
7241
+ }
7242
+ /** Whether this entry renders for the owner; chain selectors decline quietly. */
7243
+ function selectMnemonTurnTail(owner) {
7244
+ return owner.turn.status === "closed" ? {} : null;
7245
+ }
7246
+ /** One-line memory-activity bar under a completed turn; hides when the turn touched no memory. */
7247
+ const MnemonTurnTail = (0, react.memo)(function MnemonTurnTail({ turn, seq, sessionId, connection, t }) {
7248
+ const [activity, setActivity] = (0, react.useState)(void 0);
7249
+ const [open, setOpen] = (0, react.useState)(false);
7250
+ const number = turnNumber(turn);
7251
+ (0, react.useEffect)(() => {
7252
+ if (number === void 0) {
7253
+ setActivity(null);
7254
+ return;
7255
+ }
7256
+ let alive = true;
7257
+ new MnemonClient(connection, sessionId).turnActivity(number, seq).then((result) => {
7258
+ if (alive) setActivity(result);
7259
+ }).catch(() => {
7260
+ if (alive) setActivity(null);
7261
+ });
7262
+ return () => {
7263
+ alive = false;
7264
+ };
7265
+ }, [
7266
+ connection,
7267
+ sessionId,
7268
+ number,
7269
+ seq
7270
+ ]);
7271
+ if (activity === void 0 || activity === null) return null;
7272
+ if (number === void 0) return null;
7273
+ const openView = (event) => {
7274
+ event.stopPropagation();
7275
+ dispatchMnemonAnchor({
7276
+ page: "status",
7277
+ ...sessionId === void 0 ? {} : { sessionId }
7278
+ });
7279
+ };
7280
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7281
+ className: MnemonTurnTail_module_css_default.root,
7282
+ "data-open": open || void 0,
7283
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
7284
+ type: "button",
7285
+ className: MnemonTurnTail_module_css_default.bar,
7286
+ "aria-expanded": open,
7287
+ onClick: () => setOpen((value) => !value),
7288
+ children: [
7289
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7290
+ className: MnemonTurnTail_module_css_default.mark,
7291
+ "aria-hidden": "true",
7292
+ children: "◈"
7293
+ }),
7294
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7295
+ className: MnemonTurnTail_module_css_default.label,
7296
+ children: t("turnTail.label")
7297
+ }),
7298
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7299
+ className: MnemonTurnTail_module_css_default.metrics,
7300
+ children: [
7301
+ activity.recalls > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("turnTail.recall", { count: activity.recalls }) }),
7302
+ activity.writes > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("turnTail.write", { count: activity.writes }) }),
7303
+ activity.documentSearches > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("turnTail.documents", { count: activity.documentSearches }) }),
7304
+ activity.inspections > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("turnTail.inspect", { count: activity.inspections }) }),
7305
+ activity.failures > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7306
+ className: MnemonTurnTail_module_css_default.failureMetric,
7307
+ children: t("turnTail.failed", { count: activity.failures })
7308
+ })
7309
+ ]
7310
+ }),
7311
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7312
+ className: `${MnemonTurnTail_module_css_default.chevron} ${open ? MnemonTurnTail_module_css_default.chevronOpen : ""}`,
7313
+ "aria-hidden": "true"
7314
+ })
7315
+ ]
7316
+ }), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7317
+ className: MnemonTurnTail_module_css_default.details,
7318
+ children: [
7319
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7320
+ className: MnemonTurnTail_module_css_default.detailLabel,
7321
+ children: t("turnTail.toolList")
7322
+ }),
7323
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7324
+ className: MnemonTurnTail_module_css_default.tools,
7325
+ children: activity.names.map((name, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
7326
+ className: MnemonTurnTail_module_css_default.toolChip,
7327
+ children: name
7328
+ }, `${name}-${index}`))
7329
+ }),
7330
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7331
+ type: "button",
7332
+ className: MnemonTurnTail_module_css_default.viewButton,
7333
+ onClick: openView,
7334
+ children: t("turnTail.openView")
7335
+ })
7336
+ ]
7337
+ })]
7338
+ });
7339
+ });
7340
+ //#endregion
7341
+ //#region \0dsh-mnemon-css:/home/runner/work/dsh-mnemon/dsh-mnemon/src/client/MnemonSaveAction.module.css.mjs
7342
+ const css = ".ETdZZG_wrap{display:inline-flex;position:relative}.ETdZZG_button{cursor:pointer;height:22px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:5px;align-items:center;gap:4px;padding:0 7px;font-size:11px;line-height:22px;display:inline-flex}.ETdZZG_button:hover,.ETdZZG_button[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.ETdZZG_button:focus-visible{outline:1.5px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.ETdZZG_glyph{opacity:.85;font-size:10px}.ETdZZG_panel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);width:min(340px,100vw - 32px);color:var(--dsw-alias-label-primary);border-radius:10px;padding:10px 12px;font-size:12px;line-height:18px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0000002e}.ETdZZG_panel:popover-open{top:var(--mn-save-panel-top);right:auto;left:var(--mn-save-panel-left);width:var(--mn-save-panel-width);margin:0;position:fixed}.ETdZZG_panelHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.ETdZZG_panelHeader strong{font-size:12px;font-weight:600}.ETdZZG_close{cursor:pointer;width:20px;height:20px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:5px;font-size:14px;line-height:18px}.ETdZZG_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.ETdZZG_hint{color:var(--dsw-alias-label-secondary);margin:6px 0 0;font-size:11px;line-height:16px}.ETdZZG_status{color:var(--dsw-alias-label-tertiary);margin-top:8px;font-size:11px}.ETdZZG_readOnly{background:var(--dsw-alias-state-warn-bg,transparent);color:var(--dsw-alias-state-warn-primary);border-radius:6px;margin-top:8px;padding:6px 8px;font-size:11px}.ETdZZG_candidate{margin-top:8px;display:block}.ETdZZG_candidate>span{color:var(--dsw-alias-label-caption);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:10px;font-weight:650;display:block}.ETdZZG_candidate textarea{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l1);resize:vertical;background:var(--dsw-specific-input-major,var(--dsw-alias-bg-base));width:100%;max-height:160px;color:var(--dsw-alias-label-primary);font:12px/18px var(--ds-font-family-code,Consolas, monospace);border-radius:8px;padding:8px 10px;display:block}.ETdZZG_candidate textarea:focus-visible{outline:1.5px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.ETdZZG_truncated{color:var(--dsw-alias-label-tertiary);margin-top:4px;font-size:10px;line-height:14px;display:block}.ETdZZG_outcome{background:var(--dsw-alias-state-success-bg,transparent);color:var(--dsw-alias-state-success-primary);border-radius:6px;margin-top:8px;padding:6px 8px;font-size:11px}.ETdZZG_failure{background:var(--dsw-alias-state-error-bg,transparent);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;border-radius:6px;margin-top:8px;padding:6px 8px;font-size:11px}.ETdZZG_submit{cursor:pointer;background:var(--dsw-alias-button-primary-fill,var(--dsw-alias-state-business-primary));width:100%;height:28px;color:var(--dsw-alias-button-primary-text,#fff);border:none;border-radius:7px;margin-top:10px;font-size:12px;font-weight:600;line-height:28px}.ETdZZG_submit:hover:not(:disabled){filter:brightness(1.06)}.ETdZZG_submit:disabled{cursor:default;opacity:.5}.ETdZZG_submit:focus-visible{outline:1.5px solid var(--dsw-alias-state-business-primary);outline-offset:2px}";
7343
+ const tagId = "dsh-mnemon/MnemonSaveAction.module.css";
7344
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
7345
+ const tag = document.createElement("style");
7346
+ tag.dataset.plugin = "dsh-mnemon";
7347
+ tag.dataset.pluginCss = tagId;
7348
+ tag.textContent = css;
7349
+ document.head.appendChild(tag);
7350
+ }
7351
+ var MnemonSaveAction_module_css_default = {
7352
+ "panel": "ETdZZG_panel",
7353
+ "failure": "ETdZZG_failure",
7354
+ "readOnly": "ETdZZG_readOnly",
7355
+ "candidate": "ETdZZG_candidate",
7356
+ "truncated": "ETdZZG_truncated",
7357
+ "close": "ETdZZG_close",
7358
+ "submit": "ETdZZG_submit",
7359
+ "hint": "ETdZZG_hint",
7360
+ "glyph": "ETdZZG_glyph",
7361
+ "wrap": "ETdZZG_wrap",
7362
+ "status": "ETdZZG_status",
7363
+ "button": "ETdZZG_button",
7364
+ "panelHeader": "ETdZZG_panelHeader",
7365
+ "outcome": "ETdZZG_outcome"
7366
+ };
7367
+ //#endregion
7368
+ //#region src/client/MnemonSaveAction.tsx
7369
+ const PREVIEW_LIMIT = 8e3;
7370
+ /** Save-to-memory action on finalized assistant messages, routed through the supervised writeback gate. */
7371
+ const MnemonSaveAction = (0, react.memo)(function MnemonSaveAction({ messageId, sessionId, connection, t }) {
7372
+ const [open, setOpen] = (0, react.useState)(false);
7373
+ const [writeEnabled, setWriteEnabled] = (0, react.useState)(void 0);
7374
+ const [candidate, setCandidate] = (0, react.useState)(void 0);
7375
+ const [truncated, setTruncated] = (0, react.useState)(false);
7376
+ const [missing, setMissing] = (0, react.useState)(false);
7377
+ const [submitting, setSubmitting] = (0, react.useState)(false);
7378
+ const [outcome, setOutcome] = (0, react.useState)(null);
7379
+ const [failure, setFailure] = (0, react.useState)(null);
7380
+ const textareaRef = (0, react.useRef)(null);
7381
+ const wrapRef = (0, react.useRef)(null);
7382
+ const buttonRef = (0, react.useRef)(null);
7383
+ const panelRef = (0, react.useRef)(null);
7384
+ const openRef = (0, react.useRef)(false);
7385
+ const requestVersionRef = (0, react.useRef)(0);
7386
+ const submitActiveRef = (0, react.useRef)(false);
7387
+ const setPanelOpen = (next) => {
7388
+ requestVersionRef.current += 1;
7389
+ openRef.current = next;
7390
+ setOpen(next);
7391
+ };
7392
+ (0, react.useEffect)(() => {
7393
+ if (!open) {
7394
+ setWriteEnabled(void 0);
7395
+ setCandidate(void 0);
7396
+ setTruncated(false);
7397
+ setMissing(false);
7398
+ setSubmitting(submitActiveRef.current);
7399
+ setOutcome(null);
7400
+ setFailure(null);
7401
+ return;
7402
+ }
7403
+ const requestVersion = ++requestVersionRef.current;
7404
+ let alive = true;
7405
+ setSubmitting(submitActiveRef.current);
7406
+ const client = new MnemonClient(connection, sessionId);
7407
+ client.status().then((status) => {
7408
+ if (alive && requestVersionRef.current === requestVersion) setWriteEnabled(status.writeEnabled);
7409
+ }).catch(() => {
7410
+ if (alive && requestVersionRef.current === requestVersion) setWriteEnabled(false);
7411
+ });
7412
+ client.assistantMessageText(messageId).then((result) => {
7413
+ if (!alive || requestVersionRef.current !== requestVersion) return;
7414
+ if (result === null || result.text === "") setMissing(true);
7415
+ else {
7416
+ setTruncated(result.text.length > PREVIEW_LIMIT);
7417
+ setCandidate(result.text.slice(0, PREVIEW_LIMIT));
7418
+ }
7419
+ }).catch(() => {
7420
+ if (alive && requestVersionRef.current === requestVersion) setMissing(true);
7421
+ });
7422
+ return () => {
7423
+ alive = false;
7424
+ };
7425
+ }, [
7426
+ open,
7427
+ connection,
7428
+ sessionId,
7429
+ messageId
7430
+ ]);
7431
+ (0, react.useEffect)(() => {
7432
+ if (!open) return;
7433
+ const closeOnEscape = (event) => {
7434
+ if (event.key === "Escape") setPanelOpen(false);
7435
+ };
7436
+ const closeOutside = (event) => {
7437
+ if (event.target instanceof Node && !wrapRef.current?.contains(event.target)) setPanelOpen(false);
7438
+ };
7439
+ document.addEventListener("keydown", closeOnEscape);
7440
+ document.addEventListener("pointerdown", closeOutside);
7441
+ return () => {
7442
+ document.removeEventListener("keydown", closeOnEscape);
7443
+ document.removeEventListener("pointerdown", closeOutside);
7444
+ };
7445
+ }, [open]);
7446
+ (0, react.useLayoutEffect)(() => {
7447
+ if (!open) return;
7448
+ const panel = panelRef.current;
7449
+ const button = buttonRef.current;
7450
+ if (panel === null || button === null || typeof panel.showPopover !== "function") return;
7451
+ const reposition = () => {
7452
+ const anchor = button.getBoundingClientRect();
7453
+ const padding = 16;
7454
+ const width = Math.min(340, Math.max(240, window.innerWidth - 32));
7455
+ panel.style.setProperty("--mn-save-panel-width", `${width}px`);
7456
+ const left = Math.min(Math.max(padding, anchor.right - width), Math.max(padding, window.innerWidth - width - padding));
7457
+ panel.style.setProperty("--mn-save-panel-left", `${left}px`);
7458
+ const below = anchor.bottom + 4;
7459
+ const above = anchor.top - panel.getBoundingClientRect().height - 4;
7460
+ const top = below + panel.getBoundingClientRect().height <= window.innerHeight - padding || above < padding ? below : above;
7461
+ panel.style.setProperty("--mn-save-panel-top", `${Math.max(padding, top)}px`);
7462
+ };
7463
+ panel.setAttribute("popover", "manual");
7464
+ panel.showPopover();
7465
+ reposition();
7466
+ window.addEventListener("resize", reposition);
7467
+ document.addEventListener("scroll", reposition, true);
7468
+ return () => {
7469
+ window.removeEventListener("resize", reposition);
7470
+ document.removeEventListener("scroll", reposition, true);
7471
+ if (panel.matches(":popover-open")) panel.hidePopover();
7472
+ };
7473
+ }, [open]);
7474
+ const submit = () => {
7475
+ const content = textareaRef.current?.value.trim() ?? "";
7476
+ if (content === "" || writeEnabled !== true || submitActiveRef.current) return;
7477
+ const requestVersion = requestVersionRef.current;
7478
+ submitActiveRef.current = true;
7479
+ setSubmitting(true);
7480
+ setFailure(null);
7481
+ setOutcome(null);
7482
+ new MnemonClient(connection, sessionId).supervise(content, messageId).then((result) => {
7483
+ if (!openRef.current || requestVersionRef.current !== requestVersion) return;
7484
+ setOutcome({
7485
+ summary: result.summary,
7486
+ action: result.action
7487
+ });
7488
+ setCandidate(content);
7489
+ }).catch((reason) => {
7490
+ if (openRef.current && requestVersionRef.current === requestVersion) setFailure(reason instanceof Error ? reason.message : String(reason));
7491
+ }).finally(() => {
7492
+ submitActiveRef.current = false;
7493
+ if (openRef.current) setSubmitting(false);
7494
+ });
7495
+ };
7496
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7497
+ ref: wrapRef,
7498
+ className: MnemonSaveAction_module_css_default.wrap,
7499
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
7500
+ ref: buttonRef,
7501
+ type: "button",
7502
+ className: MnemonSaveAction_module_css_default.button,
7503
+ "aria-expanded": open,
7504
+ title: t("saveAction.button"),
7505
+ onClick: () => setPanelOpen(!openRef.current),
7506
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7507
+ className: MnemonSaveAction_module_css_default.glyph,
7508
+ "aria-hidden": "true",
7509
+ children: "◈"
7510
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7511
+ className: MnemonSaveAction_module_css_default.label,
7512
+ children: t("saveAction.button")
7513
+ })]
7514
+ }), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7515
+ ref: panelRef,
7516
+ className: MnemonSaveAction_module_css_default.panel,
7517
+ role: "dialog",
7518
+ "aria-label": t("saveAction.title"),
7519
+ children: [
7520
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
7521
+ className: MnemonSaveAction_module_css_default.panelHeader,
7522
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("saveAction.title") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7523
+ type: "button",
7524
+ className: MnemonSaveAction_module_css_default.close,
7525
+ "aria-label": t("saveAction.close"),
7526
+ onClick: () => setPanelOpen(false),
7527
+ children: "×"
7528
+ })]
7529
+ }),
7530
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
7531
+ className: MnemonSaveAction_module_css_default.hint,
7532
+ children: t("saveAction.hint")
7533
+ }),
7534
+ writeEnabled === false && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7535
+ className: MnemonSaveAction_module_css_default.readOnly,
7536
+ role: "status",
7537
+ children: t("saveAction.readOnly")
7538
+ }),
7539
+ candidate === void 0 && !missing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7540
+ className: MnemonSaveAction_module_css_default.status,
7541
+ children: t("saveAction.fetching")
7542
+ }),
7543
+ missing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7544
+ className: MnemonSaveAction_module_css_default.status,
7545
+ role: "status",
7546
+ children: t("saveAction.missing")
7547
+ }),
7548
+ candidate !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
7549
+ className: MnemonSaveAction_module_css_default.candidate,
7550
+ children: [
7551
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("saveAction.candidate") }),
7552
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
7553
+ ref: textareaRef,
7554
+ rows: 5,
7555
+ defaultValue: candidate
7556
+ }),
7557
+ truncated && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
7558
+ className: MnemonSaveAction_module_css_default.truncated,
7559
+ children: t("saveAction.truncated", { limit: PREVIEW_LIMIT })
7560
+ })
7561
+ ]
7562
+ }),
7563
+ outcome !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7564
+ className: MnemonSaveAction_module_css_default.outcome,
7565
+ role: "status",
7566
+ children: t("saveAction.result", { summary: outcome.summary })
7567
+ }),
7568
+ failure !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7569
+ className: MnemonSaveAction_module_css_default.failure,
7570
+ role: "alert",
7571
+ children: t("saveAction.failed", { error: failure })
7572
+ }),
7573
+ candidate !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7574
+ type: "button",
7575
+ className: MnemonSaveAction_module_css_default.submit,
7576
+ disabled: submitting || writeEnabled !== true,
7577
+ onClick: submit,
7578
+ children: submitting ? t("saveAction.submitting") : t("saveAction.submit")
7579
+ })
7580
+ ]
7581
+ })]
7582
+ });
7583
+ });
6179
7584
  //#endregion
6180
7585
  //#region src/client/settings.ts
6181
7586
  var MnemonSettingsScope = class {
6182
7587
  connection;
7588
+ namespace;
6183
7589
  snapshot = {
6184
7590
  status: "loading",
6185
7591
  writable: false,
@@ -6187,8 +7593,9 @@ window.__ModuleLoader__.load({
6187
7593
  };
6188
7594
  listeners = /* @__PURE__ */ new Set();
6189
7595
  tail = Promise.resolve();
6190
- constructor(connection) {
7596
+ constructor(connection, namespace = MNEMON_SETTINGS_NAMESPACE) {
6191
7597
  this.connection = connection;
7598
+ this.namespace = namespace;
6192
7599
  this.load();
6193
7600
  }
6194
7601
  getSnapshot = () => this.snapshot;
@@ -6197,37 +7604,67 @@ window.__ModuleLoader__.load({
6197
7604
  return () => this.listeners.delete(listener);
6198
7605
  };
6199
7606
  set(field, value) {
6200
- return this.write({
7607
+ return this.mutate([{
6201
7608
  op: "set",
6202
7609
  path: [field],
6203
7610
  value
6204
- });
7611
+ }]);
6205
7612
  }
6206
7613
  unset(field) {
6207
- return this.write({
7614
+ return this.mutate([{
6208
7615
  op: "unset",
6209
7616
  path: [field]
6210
- });
7617
+ }]);
7618
+ }
7619
+ /** Set a nested field (e.g. ['conversationInteraction', 'toolviews']). */
7620
+ setPath(path, value) {
7621
+ return this.mutate([{
7622
+ op: "set",
7623
+ path,
7624
+ value
7625
+ }]);
7626
+ }
7627
+ /** Unset a nested field, falling back to its schema default. */
7628
+ unsetPath(path) {
7629
+ return this.mutate([{
7630
+ op: "unset",
7631
+ path
7632
+ }]);
7633
+ }
7634
+ mutate(ops) {
7635
+ return this.write(ops);
6211
7636
  }
6212
7637
  async load() {
6213
- const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, "get", {});
6214
- if (!response.ok) {
7638
+ try {
7639
+ const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, "get", { namespace: this.namespace });
7640
+ if (!response.ok) {
7641
+ this.publish({
7642
+ status: "unavailable",
7643
+ writable: false,
7644
+ mode: "host"
7645
+ });
7646
+ return;
7647
+ }
7648
+ this.publish(response.value);
7649
+ } catch {
6215
7650
  this.publish({
6216
7651
  status: "unavailable",
6217
7652
  writable: false,
6218
7653
  mode: "host"
6219
7654
  });
6220
- return;
6221
7655
  }
6222
- this.publish(response.value);
6223
7656
  }
6224
- write(op) {
7657
+ write(ops) {
6225
7658
  const task = this.tail.then(async () => {
6226
7659
  const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, "mutate", {
6227
- ops: [op],
7660
+ namespace: this.namespace,
7661
+ ops,
6228
7662
  ...this.snapshot.revision === void 0 ? {} : { expectedRevision: this.snapshot.revision }
6229
7663
  });
6230
- if (!response.ok) throw new Error(response.error.message);
7664
+ if (!response.ok) {
7665
+ await this.load();
7666
+ throw new Error(response.error.message);
7667
+ }
6231
7668
  this.publish(response.value);
6232
7669
  });
6233
7670
  this.tail = task.catch(() => {});
@@ -6243,40 +7680,143 @@ window.__ModuleLoader__.load({
6243
7680
  const inject = [
6244
7681
  "slots",
6245
7682
  "connection",
6246
- "locale"
7683
+ "locale",
7684
+ "workspaces"
6247
7685
  ];
7686
+ const INTERACTION_UNITS = {
7687
+ toolviews: {
7688
+ slot: "tool.call.toolview",
7689
+ enabled: (value) => enabledOf(value, "toolviews"),
7690
+ register(ctx, namespace, translate) {
7691
+ const disposers = [];
7692
+ for (const toolName of MNEMON_TOOLVIEW_NAMES) disposers.push(ctx.slots.register({
7693
+ name: "tool.call.toolview",
7694
+ key: toolName,
7695
+ locale: namespace,
7696
+ inject: (sessionId) => ({
7697
+ ...typeof sessionId === "string" && sessionId !== "" ? { sessionId } : {},
7698
+ t: translate
7699
+ })
7700
+ }, MnemonToolView));
7701
+ return () => {
7702
+ for (const dispose of disposers.reverse()) dispose();
7703
+ };
7704
+ }
7705
+ },
7706
+ turnBar: {
7707
+ slot: "conversation.chat.turnTail",
7708
+ enabled: (value) => enabledOf(value, "turnBar"),
7709
+ register(ctx, namespace, translate) {
7710
+ return ctx.slots.register({
7711
+ name: "conversation.chat.turnTail",
7712
+ locale: namespace,
7713
+ select: selectMnemonTurnTail,
7714
+ inject: (sessionId) => ({
7715
+ ...typeof sessionId === "string" && sessionId !== "" ? { sessionId } : {},
7716
+ connection: ctx.connection,
7717
+ t: translate
7718
+ })
7719
+ }, MnemonTurnTail);
7720
+ }
7721
+ },
7722
+ saveAction: {
7723
+ slot: "conversation.chat.assistant-actions",
7724
+ enabled: (value) => enabledOf(value, "saveAction"),
7725
+ register(ctx, namespace, translate) {
7726
+ return ctx.slots.register({
7727
+ name: "conversation.chat.assistant-actions",
7728
+ id: "mnemon-save",
7729
+ order: 90,
7730
+ locale: namespace,
7731
+ inject: (sessionId) => ({
7732
+ ...typeof sessionId === "string" && sessionId !== "" ? { sessionId } : {},
7733
+ connection: ctx.connection,
7734
+ t: translate
7735
+ })
7736
+ }, MnemonSaveAction);
7737
+ }
7738
+ }
7739
+ };
7740
+ /** Interaction surfaces are opt-in: an explicit `true` in settings enables one. */
7741
+ function enabledOf(value, key) {
7742
+ return value?.[key] === true;
7743
+ }
6248
7744
  /** Add one standard conversation.view entry; unloading the plugin removes it with the slot effect. */
6249
7745
  function apply(rawContext) {
6250
7746
  const ctx = rawContext;
6251
- const settings = new MnemonSettingsScope(ctx.connection);
7747
+ const settings = new MnemonSettingsScope(ctx.connection, MNEMON_SETTINGS_NAMESPACE);
7748
+ const interactionSettings = new MnemonSettingsScope(ctx.connection, MNEMON_UI_SETTINGS_NAMESPACE);
6252
7749
  const namespace = "mnemon";
6253
7750
  ctx.effect(() => ctx.locale.register(namespace, {
6254
7751
  zh,
6255
7752
  en
6256
7753
  }), "dsh-mnemon: locale dictionaries");
6257
7754
  const translate = ctx.locale.bind(namespace);
6258
- ctx.slots.inject("conversation.view", () => ctx.slots.register({
6259
- name: "conversation.view",
7755
+ let disposeMemoryTab;
7756
+ const reconcileMemoryTab = () => {
7757
+ const enabled = settings.getSnapshot().value?.tabEnabled !== false;
7758
+ if (enabled && disposeMemoryTab === void 0) disposeMemoryTab = ctx.slots.inject("conversation.view", () => ctx.slots.register({
7759
+ name: "conversation.view",
7760
+ id: "mnemon",
7761
+ order: 30,
7762
+ label: () => translate("tab.label"),
7763
+ locale: namespace,
7764
+ inject: () => ({
7765
+ connection: ctx.connection,
7766
+ settingsScope: settings,
7767
+ t: translate
7768
+ })
7769
+ }, MnemonView));
7770
+ else if (!enabled && disposeMemoryTab !== void 0) {
7771
+ disposeMemoryTab();
7772
+ disposeMemoryTab = void 0;
7773
+ }
7774
+ };
7775
+ ctx.effect(() => {
7776
+ const unsubscribe = settings.subscribe(reconcileMemoryTab);
7777
+ reconcileMemoryTab();
7778
+ return () => {
7779
+ unsubscribe();
7780
+ disposeMemoryTab?.();
7781
+ disposeMemoryTab = void 0;
7782
+ };
7783
+ }, "dsh-mnemon: memory tab");
7784
+ ctx.slots.inject("settings.section", () => ctx.slots.register({
7785
+ name: "settings.section",
6260
7786
  id: "mnemon",
6261
- order: 30,
7787
+ order: 20,
6262
7788
  label: () => translate("tab.label"),
6263
7789
  locale: namespace,
6264
- inject: () => ({
6265
- connection: ctx.connection,
6266
- settingsScope: settings,
6267
- t: translate
6268
- })
6269
- }, MnemonView));
6270
- ctx.slots.inject("settings.plugin.item", () => ctx.slots.register({
6271
- name: "settings.plugin.item",
6272
- id: "mnemon",
6273
- order: 30,
6274
- locale: namespace,
6275
7790
  inject: () => ({
6276
7791
  scope: settings,
7792
+ interactionScope: interactionSettings,
7793
+ connection: ctx.connection,
7794
+ pickDirectory: () => ctx.workspaces.pickDirectory(),
6277
7795
  t: translate
6278
7796
  })
6279
7797
  }, MnemonSettingsCard));
7798
+ const active = /* @__PURE__ */ new Map();
7799
+ const reconcile = () => {
7800
+ const value = interactionSettings.getSnapshot().value;
7801
+ for (const key of Object.keys(INTERACTION_UNITS)) {
7802
+ const unit = INTERACTION_UNITS[key];
7803
+ const enabled = unit.enabled(value);
7804
+ if (enabled && !active.has(key)) active.set(key, ctx.slots.inject(unit.slot, () => unit.register(ctx, namespace, translate)));
7805
+ else if (!enabled && active.has(key)) {
7806
+ active.get(key)();
7807
+ active.delete(key);
7808
+ }
7809
+ }
7810
+ };
7811
+ ctx.effect(() => {
7812
+ const unsubscribe = interactionSettings.subscribe(reconcile);
7813
+ reconcile();
7814
+ return () => {
7815
+ unsubscribe();
7816
+ for (const dispose of [...active.values()].reverse()) dispose();
7817
+ active.clear();
7818
+ };
7819
+ }, "dsh-mnemon: interaction surfaces");
6280
7820
  }
6281
7821
  //#endregion
6282
7822
  exports.apply = apply;