fuli-context 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +17 -43
  2. package/README.zh-CN.md +14 -40
  3. package/dist/web/assets/{ProjectAgentsPage-CQemHFxy.js → ProjectAgentsPage-CPgKVLgg.js} +1 -1
  4. package/dist/web/assets/{ProjectAgentsPage-BgQLIpxg.css → ProjectAgentsPage-DeuRkMp1.css} +1 -1
  5. package/dist/web/assets/RoundtablesPage-C9dXfWCl.js +2 -0
  6. package/dist/web/assets/{index-UygXwZDZ.js → index-ulISYH02.js} +3 -3
  7. package/dist/web/index.html +1 -1
  8. package/docs/roundtable.md +46 -0
  9. package/graph-provider/pyproject.toml +1 -1
  10. package/npm-shrinkwrap.json +2 -2
  11. package/package.json +2 -4
  12. package/skills/capturing-session-knowledge/SKILL.md +1 -1
  13. package/src/agents/claude-code/lifecycle-hook.js +6 -19
  14. package/src/agents/codex/lifecycle-hook.js +51 -27
  15. package/src/agents/codex/token-usage.js +235 -0
  16. package/src/agents/cursor/lifecycle-hook.js +3 -9
  17. package/src/agents/token-usage-resolver.js +147 -0
  18. package/src/graphiti/federated-application.js +5 -1
  19. package/src/graphiti/project-agent-mapping.js +1 -1
  20. package/src/graphiti/project-agent-workflows.js +6 -1
  21. package/src/mcp/instructions.js +1 -1
  22. package/src/mcp/session-id.js +1 -1
  23. package/src/mcp/tool-annotations.js +3 -1
  24. package/src/roundtables/domain.js +3 -3
  25. package/src/roundtables/http-router.js +5 -3
  26. package/src/roundtables/mcp-server.js +15 -8
  27. package/src/roundtables/profiles.js +84 -0
  28. package/src/roundtables/service.js +86 -2
  29. package/src/roundtables/store.js +4 -0
  30. package/src/roundtables/tool-contract.js +22 -5
  31. package/dist/web/assets/RoundtablesPage-ByVeZlgC.js +0 -2
  32. package/docs/roundtable-beta-testing.md +0 -102
  33. package/docs/roundtable-beta-validation.md +0 -133
  34. package/docs/roundtable-research.md +0 -142
@@ -1 +1 @@
1
- .project-agent-assignment-dialog[data-v-27d3f2ce]{background:0 0;border:0;border-radius:12px;width:min(620px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}.project-agent-assignment-dialog-shell[data-v-27d3f2ce]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-assignment-dialog-header[data-v-27d3f2ce],.project-agent-assignment-dialog-actions[data-v-27d3f2ce]{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.project-agent-assignment-dialog-header[data-v-27d3f2ce]{border-bottom:1px solid var(--color-border)}.project-agent-assignment-dialog-header h3[data-v-27d3f2ce]{color:var(--color-ink);font-size:16px}.project-agent-assignment-dialog-fields[data-v-27d3f2ce]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;padding:18px;display:grid;overflow:auto}.project-agent-assignment-dialog-fields label[data-v-27d3f2ce]{color:var(--color-muted);gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-assignment-dialog-fields input[data-v-27d3f2ce],.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:8px 9px;font-size:12px;line-height:1.5}.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]{resize:vertical}.project-agent-assignment-dialog-fields input[data-v-27d3f2ce]:focus-visible,.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-assignment-wide-field[data-v-27d3f2ce]{grid-column:1/-1}.project-agent-assignment-dialog-error[data-v-27d3f2ce]{color:var(--color-danger);margin:0 18px;font-size:12px}.project-agent-assignment-dialog-actions[data-v-27d3f2ce]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-27d3f2ce]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 13px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-27d3f2ce]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (width<=620px){.project-agent-assignment-dialog-fields[data-v-27d3f2ce]{grid-template-columns:1fr}.project-agent-assignment-wide-field[data-v-27d3f2ce]{grid-column:auto}}.project-agent-dialog[data-v-49c230b9]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-49c230b9]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-49c230b9],.project-agent-dialog-actions[data-v-49c230b9]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-49c230b9]{border-bottom:1px solid var(--color-border)}.project-agent-dialog-header h3[data-v-49c230b9]{color:var(--color-ink);font-size:17px}.project-agent-dialog-fields[data-v-49c230b9]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-49c230b9]{min-width:0;color:var(--color-muted);align-content:start;gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-49c230b9],.project-agent-dialog-fields select[data-v-49c230b9],.project-agent-dialog-fields textarea[data-v-49c230b9]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-49c230b9]{resize:vertical}.project-agent-dialog-fields input[data-v-49c230b9]:focus-visible,.project-agent-dialog-fields select[data-v-49c230b9]:focus-visible,.project-agent-dialog-fields textarea[data-v-49c230b9]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-wide-field[data-v-49c230b9],.project-agent-id-note[data-v-49c230b9]{grid-column:1/-1}.project-agent-dialog-error[data-v-49c230b9]{color:var(--color-danger);margin:0 20px;font-size:12px}.project-agent-dialog-actions[data-v-49c230b9]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-49c230b9]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-49c230b9]:hover{background:var(--color-ink)}.project-agent-primary-action[data-v-49c230b9]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-primary-action[data-v-49c230b9]:disabled,.project-agent-dialog-fields[data-v-49c230b9] :disabled{cursor:not-allowed;opacity:.6}.project-agent-dialog-check[data-v-49c230b9]{align-items:center;gap:7px!important;display:flex!important}.project-agent-dialog-check input[data-v-49c230b9]{width:auto!important}.project-agent-dialog-note[data-v-49c230b9]{color:var(--color-muted);font-size:12px;line-height:1.55}.project-team[data-v-12656912]{border-top:1px solid var(--color-border);grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-12656912]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-12656912]>*{background:var(--color-surface-subtle);border:1px solid var(--color-border-strong);color:var(--color-ink);border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-12656912]{color:var(--color-muted);margin:9px 0;font-size:12px}.project-team-members[data-v-12656912]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-12656912]{text-align:start;max-width:100%;color:var(--color-ink);background:0 0;border:0;gap:3px;display:grid}.project-team-members span[data-v-12656912]{color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-12656912]{cursor:pointer;font-size:12px}.team-lead-field[data-v-12656912]{flex-wrap:wrap;align-items:center;gap:12px;margin-block:14px;display:flex}.team-lead-field select[data-v-12656912]{max-width:100%;padding:7px}.project-team fieldset[data-v-12656912]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-12656912]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-12656912]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-12656912]{border-block:1px solid var(--color-border);grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-12656912]{min-width:0}.project-agent-automation-policy h3[data-v-12656912]{color:var(--color-ink);font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-12656912]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;display:block;overflow:hidden}.project-agent-policy-options[data-v-12656912]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-12656912]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-12656912]{border-inline-start:1px solid var(--color-border)}.project-agent-policy-options label>span[data-v-12656912]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-12656912]{color:var(--color-ink);font-size:12px;line-height:1.4}.project-agent-policy-options small[data-v-12656912]{max-width:54ch;color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.project-agent-policy-options input[data-v-12656912]{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-12656912]:after{background:var(--color-surface);content:"";border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-12656912]:checked{border-color:var(--color-ink);background:var(--color-muted)}.project-agent-policy-options input[data-v-12656912]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-12656912]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.project-agent-policy-options input[data-v-12656912]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-12656912]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-12656912],.project-agent-policy-feedback p[data-v-12656912]{color:var(--color-muted);font-size:12px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-12656912]{color:var(--color-danger)}.project-agent-policy-feedback button[data-v-12656912]{color:var(--color-ink);font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-12656912],.project-agent-policy-options[data-v-12656912]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-12656912]{padding:8px 0}.project-agent-policy-options label+label[data-v-12656912]{border-inline-start:0;border-block-start:1px solid var(--color-border)}.project-agent-policy-feedback[data-v-12656912]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-4f121023]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:12px;display:flex}.project-agent-source-state.is-error[data-v-4f121023]{border-color:var(--color-danger-soft);background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-diagnostics[data-v-f960dcef]{color:#334b3c;background:#f1f5f2;border-radius:8px;margin:12px 0;padding:12px}.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-agent-task-diagnostics dt[data-v-f960dcef]{color:#65766b;margin-bottom:4px;font-size:11px}.project-agent-task-diagnostics dd[data-v-f960dcef]{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.project-agent-task-diagnostics small[data-v-f960dcef]{color:#65766b;overflow-wrap:anywhere;margin-top:4px;font-size:11px;display:block}.project-agent-task-diagnostics p[data-v-f960dcef]{color:#52665a;margin:10px 0 0;font-size:12px;line-height:1.6}@media (width<=540px){.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:1fr;gap:10px}}.employee-work-history[data-v-143dca4c]{margin-block:24px;font-size:14px}summary[data-v-143dca4c]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-143dca4c]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-143dca4c]{max-width:100%;font:inherit;padding:8px}ol[data-v-143dca4c]{margin:12px 0;padding:0;list-style:none}li[data-v-143dca4c]{border-top:1px solid var(--color-border);padding-block:14px}.work-record-meta[data-v-143dca4c]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-143dca4c]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-143dca4c]{font-size:16px}}.project-agent-dialog[data-v-f3d4e6a7]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-f3d4e6a7]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-f3d4e6a7],.project-agent-dialog-actions[data-v-f3d4e6a7]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-f3d4e6a7]{border-bottom:1px solid var(--color-border)}.project-agent-dialog-header h3[data-v-f3d4e6a7]{color:var(--color-ink);font-size:17px}.project-agent-dialog-fields[data-v-f3d4e6a7]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-f3d4e6a7]{min-width:0;color:var(--color-muted);align-content:start;gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-f3d4e6a7],.project-agent-dialog-fields select[data-v-f3d4e6a7],.project-agent-dialog-fields textarea[data-v-f3d4e6a7]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-f3d4e6a7]{resize:vertical}.project-agent-dialog-fields input[data-v-f3d4e6a7]:focus-visible,.project-agent-dialog-fields select[data-v-f3d4e6a7]:focus-visible,.project-agent-dialog-fields textarea[data-v-f3d4e6a7]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-wide-field[data-v-f3d4e6a7],.project-agent-id-note[data-v-f3d4e6a7]{grid-column:1/-1}.project-agent-strategy-fields[data-v-f3d4e6a7]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:12px;display:grid}.project-agent-strategy-fields legend[data-v-f3d4e6a7]{color:var(--color-muted);padding:0 5px;font-size:12px;font-weight:700}.project-agent-strategy-fields>small[data-v-f3d4e6a7]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-id-note[data-v-f3d4e6a7]{color:var(--color-muted);margin-top:-8px;font-size:12px}.project-agent-dialog-error[data-v-f3d4e6a7]{color:var(--color-danger);margin:0 20px;font-size:12px}.project-agent-dialog-actions[data-v-f3d4e6a7]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-f3d4e6a7]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-f3d4e6a7]:hover{background:var(--color-ink)}.project-agent-primary-action[data-v-f3d4e6a7]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-primary-action[data-v-f3d4e6a7]:disabled,.project-agent-dialog-fields[data-v-f3d4e6a7] :disabled{cursor:not-allowed;opacity:.6}@media (width<=720px){.project-agent-dialog-fields[data-v-f3d4e6a7]{grid-template-columns:1fr}.project-agent-wide-field[data-v-f3d4e6a7],.project-agent-id-note[data-v-f3d4e6a7]{grid-column:1}}.project-agent-row-shell[data-v-3bae9e1f]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-3bae9e1f]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-3bae9e1f]{margin-top:14px}.project-agent-header-actions[data-v-3bae9e1f]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-3bae9e1f]{flex-direction:column;gap:16px;min-height:0;padding:20px 32px 24px;display:flex;overflow:hidden}.project-agents-header[data-v-3bae9e1f],.project-agent-section-heading[data-v-3bae9e1f],.project-agent-section-tools[data-v-3bae9e1f],.project-agent-detail-actions[data-v-3bae9e1f],.project-agent-assignment-card header[data-v-3bae9e1f],.project-agent-task-card header[data-v-3bae9e1f],.project-agent-learning-card header[data-v-3bae9e1f],.project-agent-day-detail header[data-v-3bae9e1f]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-3bae9e1f]{color:var(--color-ink);font-size:20px}.project-agents-header-meta[data-v-3bae9e1f]{color:var(--color-muted);font-size:12px}.project-agents-summary[data-v-3bae9e1f]{color:var(--color-muted);gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-3bae9e1f]:first-child{color:var(--color-ink);font-weight:700}.project-agents-toolbar[data-v-3bae9e1f]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-3bae9e1f]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-ink);padding:10px 12px;font-size:13px}.project-agents-search input[data-v-3bae9e1f]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agents-status-filter[data-v-3bae9e1f]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-3bae9e1f]{min-height:34px;color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-3bae9e1f]{background:var(--color-surface);color:var(--color-ink);font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-3bae9e1f]{flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-3bae9e1f]{border-right:1px solid var(--color-border);min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-3bae9e1f]{border:0;border-bottom:1px solid var(--color-border);background:var(--color-surface);width:100%;color:inherit;text-align:left;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-3bae9e1f]:hover{background:var(--color-surface)}.project-agent-row.selected[data-v-3bae9e1f]{background:var(--color-surface-subtle)}.project-agent-row[data-v-3bae9e1f]:focus-visible{z-index:1;outline:2px solid var(--color-accent);outline-offset:-3px;position:relative}.project-agent-row-heading[data-v-3bae9e1f]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-3bae9e1f]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-3bae9e1f]{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.project-agent-row-heading .ui-badge[data-v-3bae9e1f]{flex:none;font-style:normal;font-weight:650}.project-agent-row-heading .ui-badge.is-active[data-v-3bae9e1f]{color:var(--color-accent)}.project-agent-row-heading .ui-badge.is-archived[data-v-3bae9e1f],.project-agent-kind[data-v-3bae9e1f]{color:var(--color-muted)}.project-agent-row-id[data-v-3bae9e1f]{color:var(--color-muted);overflow-wrap:anywhere;text-align:right;font-size:12px}.project-agent-row-projects[data-v-3bae9e1f]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-3bae9e1f],.project-agent-tags span[data-v-3bae9e1f],.project-agent-inline-list span[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:3px 7px;font-size:12px;font-weight:650}.project-agent-row-projects em[data-v-3bae9e1f]{color:var(--color-muted);font-size:12px;font-style:normal}.project-agent-row-responsibility[data-v-3bae9e1f]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:12px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-3bae9e1f]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-work-dot[data-v-3bae9e1f]{background:var(--color-muted);border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-3bae9e1f]{min-width:0;min-height:0;padding:24px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-3bae9e1f]{border-bottom:1px solid var(--color-border);margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-3bae9e1f]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-3bae9e1f]{color:var(--color-ink);margin:0;font-size:14px}.employee-project-overview-heading p[data-v-3bae9e1f],.employee-project-overview-hint[data-v-3bae9e1f]{color:var(--color-muted);margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-3bae9e1f]{margin-top:12px}.employee-assigned-projects[data-v-3bae9e1f]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-3bae9e1f]{color:var(--color-ink);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-3bae9e1f]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-3bae9e1f]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.employee-assigned-projects a span[data-v-3bae9e1f]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-3bae9e1f]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-3bae9e1f]{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-3bae9e1f]{min-width:0}.project-agent-detail h3[data-v-3bae9e1f]{color:var(--color-ink);text-wrap:balance;font-size:18px;line-height:1.32}.project-agent-detail header p[data-v-3bae9e1f]{max-width:72ch;color:var(--color-muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.5}.project-agent-detail-actions[data-v-3bae9e1f]{grid-auto-columns:minmax(78px,max-content);grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-3bae9e1f]{white-space:nowrap;min-width:78px}.project-agent-detail-meta[data-v-3bae9e1f],.project-agent-compact-meta[data-v-3bae9e1f]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-3bae9e1f],.project-agent-compact-meta div[data-v-3bae9e1f]{min-width:0}.project-agent-detail-meta dt[data-v-3bae9e1f],.project-agent-compact-meta dt[data-v-3bae9e1f],.project-agent-detail-section h4[data-v-3bae9e1f]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-detail-meta dd[data-v-3bae9e1f],.project-agent-compact-meta dd[data-v-3bae9e1f]{overflow-wrap:anywhere;color:var(--color-ink);margin:4px 0 0;font-size:12px}.project-agent-detail-meta dd small[data-v-3bae9e1f]{color:var(--color-muted);margin-top:3px;font-size:12px;line-height:1.4;display:block}.project-agent-detail-section[data-v-3bae9e1f]{margin-top:24px}.project-agent-detail-section.is-responsibility[data-v-3bae9e1f]{border-radius:var(--radius-card);background:var(--color-surface-subtle);padding:16px}.project-agent-detail-section p[data-v-3bae9e1f],.project-agent-detail-section li[data-v-3bae9e1f]{color:var(--color-ink);font-size:14px;line-height:1.6}.project-agent-tags[data-v-3bae9e1f],.project-agent-inline-list[data-v-3bae9e1f]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-3bae9e1f]{color:var(--color-muted)!important}.project-agent-detail-notice[data-v-3bae9e1f]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin:12px 0 0;padding:8px 10px;color:var(--color-muted)!important}.project-agent-detail-placeholder[data-v-3bae9e1f],.project-agents-state[data-v-3bae9e1f]{min-height:240px;color:var(--color-muted);text-align:center;place-content:center;justify-items:center;gap:8px;font-size:14px;display:grid}.project-agents-state[data-v-3bae9e1f]{flex:1}.project-agents-state strong[data-v-3bae9e1f]{color:var(--color-ink);font-size:14px}.project-agents-state p[data-v-3bae9e1f]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-3bae9e1f]{color:var(--color-danger)}.project-agent-assignment-list[data-v-3bae9e1f],.project-agent-task-list[data-v-3bae9e1f],.project-agent-learning-list[data-v-3bae9e1f],.project-agent-recruitment-list[data-v-3bae9e1f]{gap:12px;margin-top:12px;display:grid}.project-agent-task-list[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-3bae9e1f]{border-top:1px solid var(--color-border);min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-3bae9e1f]{border:1px dashed var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-3bae9e1f]{gap:8px}.project-agent-execution-summary h5[data-v-3bae9e1f]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-3bae9e1f]{box-sizing:border-box;overscroll-behavior-inline:contain;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-3bae9e1f]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-execution-summary-table[data-v-3bae9e1f]{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1040px;color:var(--color-ink);font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-3bae9e1f],.project-agent-execution-summary-table td[data-v-3bae9e1f]{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;text-align:left;vertical-align:top;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-3bae9e1f]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-3bae9e1f]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-3bae9e1f]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-3bae9e1f]:hover{background:var(--color-surface)}.project-agent-execution-summary-table tbody th[data-v-3bae9e1f]{color:var(--color-ink);font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-3bae9e1f],.project-agent-execution-summary-table tbody span[data-v-3bae9e1f],.project-agent-execution-summary-table tbody small[data-v-3bae9e1f],.project-agent-execution-summary-table tbody a[data-v-3bae9e1f]{display:block}.project-agent-execution-summary-table tbody small[data-v-3bae9e1f]{color:var(--color-muted);margin-top:3px;font-size:12px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-3bae9e1f]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-3bae9e1f]{color:var(--color-ink);text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-3bae9e1f]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.project-agent-execution-worker[data-v-3bae9e1f]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-execution-summary-row i.is-failed[data-v-3bae9e1f]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-execution-summary-row i.is-cancelled[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-list[data-v-3bae9e1f]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-3bae9e1f]{border-top:1px solid var(--color-border);min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-3bae9e1f]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-3bae9e1f]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-3bae9e1f]{overflow-wrap:anywhere;min-width:0;color:var(--color-ink);align-items:center;gap:5px;font-size:12px;display:flex}.project-agent-worker-event-row header strong small[data-v-3bae9e1f]{color:var(--color-muted);margin:0;font-size:12px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-worker-event-row header i.is-failed[data-v-3bae9e1f]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-worker-event-row header i.is-cancelled[data-v-3bae9e1f]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-meta[data-v-3bae9e1f]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-3bae9e1f]{min-width:0}.project-agent-execution-summary-meta dt[data-v-3bae9e1f]{color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-3bae9e1f]{overflow-wrap:anywhere;color:var(--color-ink);margin:2px 0 0;font-size:12px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-3bae9e1f]{color:var(--color-muted);margin-top:2px;font-size:12px;display:block}.project-agent-assignment-card[data-v-3bae9e1f],.project-agent-task-card[data-v-3bae9e1f],.project-agent-learning-card[data-v-3bae9e1f],.project-agent-recruitment-card[data-v-3bae9e1f]{min-width:0;padding:16px}.project-agent-assignment-card header strong[data-v-3bae9e1f],.project-agent-task-card header strong[data-v-3bae9e1f],.project-agent-learning-card header strong[data-v-3bae9e1f],.project-agent-recruitment-card header strong[data-v-3bae9e1f]{color:var(--color-ink);font-size:14px}.project-agent-card-actions[data-v-3bae9e1f]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-3bae9e1f],.project-agent-task-card p[data-v-3bae9e1f],.project-agent-learning-card p[data-v-3bae9e1f]{margin:8px 0 0;font-size:14px;line-height:1.55}.project-agent-assignment-card small[data-v-3bae9e1f],.project-agent-task-card small[data-v-3bae9e1f],.project-agent-learning-card small[data-v-3bae9e1f]{color:var(--color-muted);margin-top:8px;font-size:12px;line-height:1.5;display:block}.project-agent-assignment-card header .ui-badge.is-ended[data-v-3bae9e1f],.project-agent-assignment-card header .ui-badge.is-replaced[data-v-3bae9e1f]{color:var(--color-muted)}.project-agent-strategy-note[data-v-3bae9e1f],.project-agent-execution-line[data-v-3bae9e1f]{color:var(--color-muted);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:12px;display:flex}.project-agent-strategy-note strong[data-v-3bae9e1f],.project-agent-execution-line strong[data-v-3bae9e1f]{color:var(--color-muted);font-size:12px}.project-agent-strategy-note small[data-v-3bae9e1f]{color:var(--color-danger);flex-basis:100%}.project-agent-routing-decision[data-v-3bae9e1f]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);color:var(--color-muted);gap:5px;margin-top:10px;padding:9px 10px;font-size:12px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-3bae9e1f]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-3bae9e1f]{color:var(--color-ink);font-size:12px}.project-agent-routing-decision small[data-v-3bae9e1f]{color:var(--color-muted);line-height:1.45}.project-agent-blocked[data-v-3bae9e1f]{color:var(--color-danger)!important}.project-agent-task-card[data-v-3bae9e1f]{scroll-margin:16px}.project-agent-task-card.is-linked[data-v-3bae9e1f]{box-shadow:inset 0 0 0 2px var(--color-accent)}.project-agent-task-card header[data-v-3bae9e1f]{align-items:flex-start}.project-agent-task-card header small[data-v-3bae9e1f]{margin-top:3px}.project-agent-task-card header .ui-badge[data-v-3bae9e1f]{color:var(--color-muted);font-style:normal}.project-agent-task-card header .ui-badge.is-completed[data-v-3bae9e1f]{color:var(--color-ink)}.project-agent-task-card header .ui-badge.is-failed[data-v-3bae9e1f]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-card header .ui-badge.is-cancelled[data-v-3bae9e1f]{color:var(--color-muted)}.project-agent-heatmap-viewport[data-v-3bae9e1f]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-3bae9e1f]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-3bae9e1f]{appearance:none;box-sizing:border-box;aspect-ratio:1;border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-3bae9e1f]{background:var(--color-surface-subtle)}.project-agent-heat-cell.intensity-2[data-v-3bae9e1f],.project-agent-heat-cell.intensity-3[data-v-3bae9e1f],.project-agent-heat-cell.intensity-4[data-v-3bae9e1f]{background:var(--color-muted)}.project-agent-heat-cell[data-v-3bae9e1f]:focus-visible,.project-agent-heat-cell.selected[data-v-3bae9e1f]{border:2px solid var(--color-accent);box-shadow:none;outline:none}.project-agent-day-detail[data-v-3bae9e1f]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-3bae9e1f]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-3bae9e1f]{margin-top:6px}.project-agent-day-detail li strong[data-v-3bae9e1f],.project-agent-day-detail li span[data-v-3bae9e1f],.project-agent-day-detail li small[data-v-3bae9e1f]{display:block}.project-agent-day-detail li span[data-v-3bae9e1f],.project-agent-day-detail li small[data-v-3bae9e1f]{color:var(--color-muted);font-size:12px}.project-agent-client-list[data-v-3bae9e1f],.project-agent-rule-list[data-v-3bae9e1f]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-3bae9e1f],.project-agent-rule-row[data-v-3bae9e1f]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-client-row strong[data-v-3bae9e1f],.project-agent-rule-row strong[data-v-3bae9e1f]{color:var(--color-ink);font-size:12px}.project-agent-client-row small[data-v-3bae9e1f]{color:var(--color-muted);grid-column:1/-1}.project-agent-executor-list[data-v-3bae9e1f]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-3bae9e1f]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-executor-row strong[data-v-3bae9e1f]{color:var(--color-ink);font-size:12px}.project-agent-executor-row small[data-v-3bae9e1f]{color:var(--color-muted);grid-column:1/-1}.project-agent-learning-card header .ui-badge[data-v-3bae9e1f]{color:var(--color-muted);font-style:normal}.project-agent-evidence-list[data-v-3bae9e1f]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-3bae9e1f]{color:var(--color-muted);font-size:12px}.project-agent-learning-actions[data-v-3bae9e1f]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-3bae9e1f]{color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.5;display:block}.project-agent-detail .ui-badge[data-v-3bae9e1f]{font-style:normal}.sr-only[data-v-3bae9e1f]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-3bae9e1f]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-3bae9e1f]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-3bae9e1f]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-3bae9e1f],.project-agent-compact-meta[data-v-3bae9e1f]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-3bae9e1f]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-3bae9e1f]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-3bae9e1f],.project-agents-summary[data-v-3bae9e1f],.project-agent-section-heading[data-v-3bae9e1f],.project-agent-assignment-card header[data-v-3bae9e1f]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-3bae9e1f],.project-agents-search[data-v-3bae9e1f],.project-agents-status-filter[data-v-3bae9e1f]{grid-column:1}.project-agents-status-filter[data-v-3bae9e1f]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-3bae9e1f]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-3bae9e1f]{border-right:0;border-bottom:1px solid var(--color-border);max-height:340px}.project-agent-detail[data-v-3bae9e1f]{min-height:520px;padding:16px}.project-agent-client-row[data-v-3bae9e1f],.project-agent-rule-row[data-v-3bae9e1f],.project-agent-executor-row[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-3bae9e1f],.project-agent-executor-row small[data-v-3bae9e1f]{grid-column:1}.project-agent-execution-summary-meta[data-v-3bae9e1f]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-3bae9e1f]{gap:8px}}.project-agent-disclosure[data-v-3bae9e1f]{margin-top:16px}.project-agent-disclosure .project-agent-detail-section[data-v-3bae9e1f]:first-child{margin-top:0}
1
+ .project-agent-assignment-dialog[data-v-27d3f2ce]{background:0 0;border:0;border-radius:12px;width:min(620px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}.project-agent-assignment-dialog-shell[data-v-27d3f2ce]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-assignment-dialog-header[data-v-27d3f2ce],.project-agent-assignment-dialog-actions[data-v-27d3f2ce]{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.project-agent-assignment-dialog-header[data-v-27d3f2ce]{border-bottom:1px solid var(--color-border)}.project-agent-assignment-dialog-header h3[data-v-27d3f2ce]{color:var(--color-ink);font-size:16px}.project-agent-assignment-dialog-fields[data-v-27d3f2ce]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;padding:18px;display:grid;overflow:auto}.project-agent-assignment-dialog-fields label[data-v-27d3f2ce]{color:var(--color-muted);gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-assignment-dialog-fields input[data-v-27d3f2ce],.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:8px 9px;font-size:12px;line-height:1.5}.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]{resize:vertical}.project-agent-assignment-dialog-fields input[data-v-27d3f2ce]:focus-visible,.project-agent-assignment-dialog-fields textarea[data-v-27d3f2ce]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-assignment-wide-field[data-v-27d3f2ce]{grid-column:1/-1}.project-agent-assignment-dialog-error[data-v-27d3f2ce]{color:var(--color-danger);margin:0 18px;font-size:12px}.project-agent-assignment-dialog-actions[data-v-27d3f2ce]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-27d3f2ce]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 13px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-27d3f2ce]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (width<=620px){.project-agent-assignment-dialog-fields[data-v-27d3f2ce]{grid-template-columns:1fr}.project-agent-assignment-wide-field[data-v-27d3f2ce]{grid-column:auto}}.project-agent-dialog[data-v-49c230b9]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-49c230b9]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-49c230b9],.project-agent-dialog-actions[data-v-49c230b9]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-49c230b9]{border-bottom:1px solid var(--color-border)}.project-agent-dialog-header h3[data-v-49c230b9]{color:var(--color-ink);font-size:17px}.project-agent-dialog-fields[data-v-49c230b9]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-49c230b9]{min-width:0;color:var(--color-muted);align-content:start;gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-49c230b9],.project-agent-dialog-fields select[data-v-49c230b9],.project-agent-dialog-fields textarea[data-v-49c230b9]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-49c230b9]{resize:vertical}.project-agent-dialog-fields input[data-v-49c230b9]:focus-visible,.project-agent-dialog-fields select[data-v-49c230b9]:focus-visible,.project-agent-dialog-fields textarea[data-v-49c230b9]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-wide-field[data-v-49c230b9],.project-agent-id-note[data-v-49c230b9]{grid-column:1/-1}.project-agent-dialog-error[data-v-49c230b9]{color:var(--color-danger);margin:0 20px;font-size:12px}.project-agent-dialog-actions[data-v-49c230b9]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-49c230b9]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-49c230b9]:hover{background:var(--color-ink)}.project-agent-primary-action[data-v-49c230b9]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-primary-action[data-v-49c230b9]:disabled,.project-agent-dialog-fields[data-v-49c230b9] :disabled{cursor:not-allowed;opacity:.6}.project-agent-dialog-check[data-v-49c230b9]{align-items:center;gap:7px!important;display:flex!important}.project-agent-dialog-check input[data-v-49c230b9]{width:auto!important}.project-agent-dialog-note[data-v-49c230b9]{color:var(--color-muted);font-size:12px;line-height:1.55}.project-team[data-v-12656912]{border-top:1px solid var(--color-border);grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-12656912]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-12656912]>*{background:var(--color-surface-subtle);border:1px solid var(--color-border-strong);color:var(--color-ink);border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-12656912]{color:var(--color-muted);margin:9px 0;font-size:12px}.project-team-members[data-v-12656912]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-12656912]{text-align:start;max-width:100%;color:var(--color-ink);background:0 0;border:0;gap:3px;display:grid}.project-team-members span[data-v-12656912]{color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-12656912]{cursor:pointer;font-size:12px}.team-lead-field[data-v-12656912]{flex-wrap:wrap;align-items:center;gap:12px;margin-block:14px;display:flex}.team-lead-field select[data-v-12656912]{max-width:100%;padding:7px}.project-team fieldset[data-v-12656912]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-12656912]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-12656912]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-12656912]{border-block:1px solid var(--color-border);grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-12656912]{min-width:0}.project-agent-automation-policy h3[data-v-12656912]{color:var(--color-ink);font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-12656912]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;display:block;overflow:hidden}.project-agent-policy-options[data-v-12656912]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-12656912]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-12656912]{border-inline-start:1px solid var(--color-border)}.project-agent-policy-options label>span[data-v-12656912]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-12656912]{color:var(--color-ink);font-size:12px;line-height:1.4}.project-agent-policy-options small[data-v-12656912]{max-width:54ch;color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.project-agent-policy-options input[data-v-12656912]{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-12656912]:after{background:var(--color-surface);content:"";border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-12656912]:checked{border-color:var(--color-ink);background:var(--color-muted)}.project-agent-policy-options input[data-v-12656912]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-12656912]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.project-agent-policy-options input[data-v-12656912]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-12656912]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-12656912],.project-agent-policy-feedback p[data-v-12656912]{color:var(--color-muted);font-size:12px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-12656912]{color:var(--color-danger)}.project-agent-policy-feedback button[data-v-12656912]{color:var(--color-ink);font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-12656912],.project-agent-policy-options[data-v-12656912]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-12656912]{padding:8px 0}.project-agent-policy-options label+label[data-v-12656912]{border-inline-start:0;border-block-start:1px solid var(--color-border)}.project-agent-policy-feedback[data-v-12656912]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-4f121023]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:12px;display:flex}.project-agent-source-state.is-error[data-v-4f121023]{border-color:var(--color-danger-soft);background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-diagnostics[data-v-f960dcef]{color:#334b3c;background:#f1f5f2;border-radius:8px;margin:12px 0;padding:12px}.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-agent-task-diagnostics dt[data-v-f960dcef]{color:#65766b;margin-bottom:4px;font-size:11px}.project-agent-task-diagnostics dd[data-v-f960dcef]{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.project-agent-task-diagnostics small[data-v-f960dcef]{color:#65766b;overflow-wrap:anywhere;margin-top:4px;font-size:11px;display:block}.project-agent-task-diagnostics p[data-v-f960dcef]{color:#52665a;margin:10px 0 0;font-size:12px;line-height:1.6}@media (width<=540px){.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:1fr;gap:10px}}.employee-work-history[data-v-143dca4c]{margin-block:24px;font-size:14px}summary[data-v-143dca4c]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-143dca4c]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-143dca4c]{max-width:100%;font:inherit;padding:8px}ol[data-v-143dca4c]{margin:12px 0;padding:0;list-style:none}li[data-v-143dca4c]{border-top:1px solid var(--color-border);padding-block:14px}.work-record-meta[data-v-143dca4c]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-143dca4c]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-143dca4c]{font-size:16px}}.project-agent-dialog[data-v-f3d4e6a7]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-f3d4e6a7]{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-f3d4e6a7],.project-agent-dialog-actions[data-v-f3d4e6a7]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-f3d4e6a7]{border-bottom:1px solid var(--color-border)}.project-agent-dialog-header h3[data-v-f3d4e6a7]{color:var(--color-ink);font-size:17px}.project-agent-dialog-fields[data-v-f3d4e6a7]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-f3d4e6a7]{min-width:0;color:var(--color-muted);align-content:start;gap:6px;font-size:12px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-f3d4e6a7],.project-agent-dialog-fields select[data-v-f3d4e6a7],.project-agent-dialog-fields textarea[data-v-f3d4e6a7]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;color:var(--color-ink);padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-f3d4e6a7]{resize:vertical}.project-agent-dialog-fields input[data-v-f3d4e6a7]:focus-visible,.project-agent-dialog-fields select[data-v-f3d4e6a7]:focus-visible,.project-agent-dialog-fields textarea[data-v-f3d4e6a7]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agent-wide-field[data-v-f3d4e6a7],.project-agent-id-note[data-v-f3d4e6a7]{grid-column:1/-1}.project-agent-strategy-fields[data-v-f3d4e6a7]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:12px;display:grid}.project-agent-strategy-fields legend[data-v-f3d4e6a7]{color:var(--color-muted);padding:0 5px;font-size:12px;font-weight:700}.project-agent-strategy-fields>small[data-v-f3d4e6a7]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-id-note[data-v-f3d4e6a7]{color:var(--color-muted);margin-top:-8px;font-size:12px}.project-agent-dialog-error[data-v-f3d4e6a7]{color:var(--color-danger);margin:0 20px;font-size:12px}.project-agent-dialog-actions[data-v-f3d4e6a7]{border-top:1px solid var(--color-border);justify-content:flex-end}.project-agent-primary-action[data-v-f3d4e6a7]{border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-surface);border:0;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-f3d4e6a7]:hover{background:var(--color-ink)}.project-agent-primary-action[data-v-f3d4e6a7]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-primary-action[data-v-f3d4e6a7]:disabled,.project-agent-dialog-fields[data-v-f3d4e6a7] :disabled{cursor:not-allowed;opacity:.6}@media (width<=720px){.project-agent-dialog-fields[data-v-f3d4e6a7]{grid-template-columns:1fr}.project-agent-wide-field[data-v-f3d4e6a7],.project-agent-id-note[data-v-f3d4e6a7]{grid-column:1}}.project-agent-row-shell[data-v-394b82e3]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-394b82e3]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-394b82e3]{margin-top:14px}.project-agent-header-actions[data-v-394b82e3]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-394b82e3]{flex-direction:column;gap:16px;min-height:0;padding:20px 32px 24px;display:flex;overflow:hidden}.project-agents-header[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-section-tools[data-v-394b82e3],.project-agent-detail-actions[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3],.project-agent-task-card header[data-v-394b82e3],.project-agent-learning-card header[data-v-394b82e3],.project-agent-day-detail header[data-v-394b82e3]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-394b82e3]{color:var(--color-ink);font-size:20px}.project-agents-header-meta[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agents-summary[data-v-394b82e3]{color:var(--color-muted);gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-394b82e3]:first-child{color:var(--color-ink);font-weight:700}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-394b82e3]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-ink);padding:10px 12px;font-size:13px}.project-agents-search input[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agents-status-filter[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-394b82e3]{min-height:34px;color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-394b82e3]{background:var(--color-surface);color:var(--color-ink);font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-394b82e3]{flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-394b82e3]{border-right:1px solid var(--color-border);min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-394b82e3]{border:0;border-bottom:1px solid var(--color-border);background:var(--color-surface);width:100%;color:inherit;text-align:left;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-row.selected[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-row[data-v-394b82e3]:focus-visible{z-index:1;outline:2px solid var(--color-accent);outline-offset:-3px;position:relative}.project-agent-row-heading[data-v-394b82e3]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-394b82e3]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-394b82e3]{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.project-agent-row-heading .ui-badge[data-v-394b82e3]{flex:none;font-style:normal;font-weight:650}.project-agent-row-heading .ui-badge.is-active[data-v-394b82e3]{color:var(--color-accent)}.project-agent-row-heading .ui-badge.is-archived[data-v-394b82e3],.project-agent-kind[data-v-394b82e3]{color:var(--color-muted)}.project-agent-row-id[data-v-394b82e3]{color:var(--color-muted);overflow-wrap:anywhere;text-align:right;font-size:12px}.project-agent-row-projects[data-v-394b82e3]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-394b82e3],.project-agent-tags span[data-v-394b82e3],.project-agent-inline-list span[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:3px 7px;font-size:12px;font-weight:650}.project-agent-row-projects em[data-v-394b82e3]{color:var(--color-muted);font-size:12px;font-style:normal}.project-agent-row-responsibility[data-v-394b82e3]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:12px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-work-dot[data-v-394b82e3]{background:var(--color-muted);border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-394b82e3]{min-width:0;min-height:0;padding:24px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-394b82e3]{border-bottom:1px solid var(--color-border);margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-394b82e3]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-394b82e3]{color:var(--color-ink);margin:0;font-size:14px}.employee-project-overview-heading p[data-v-394b82e3],.employee-project-overview-hint[data-v-394b82e3]{color:var(--color-muted);margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-394b82e3]{margin-top:12px}.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-394b82e3]{color:var(--color-ink);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-394b82e3]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.employee-assigned-projects a span[data-v-394b82e3]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-394b82e3]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-394b82e3]{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-394b82e3]{min-width:0}.project-agent-detail h3[data-v-394b82e3]{color:var(--color-ink);text-wrap:balance;font-size:18px;line-height:1.32}.project-agent-detail header p[data-v-394b82e3]{max-width:72ch;color:var(--color-muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.5}.project-agent-detail-actions[data-v-394b82e3]{grid-auto-columns:minmax(78px,max-content);grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-394b82e3]{white-space:nowrap;min-width:78px}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-394b82e3],.project-agent-compact-meta div[data-v-394b82e3]{min-width:0}.project-agent-detail-meta dt[data-v-394b82e3],.project-agent-compact-meta dt[data-v-394b82e3],.project-agent-detail-section h4[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-detail-meta dd[data-v-394b82e3],.project-agent-compact-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:4px 0 0;font-size:12px}.project-agent-detail-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;line-height:1.4;display:block}.project-agent-detail-section[data-v-394b82e3]{margin-top:24px}.project-agent-detail-section.is-responsibility[data-v-394b82e3]{border-radius:var(--radius-card);background:var(--color-surface-subtle);padding:16px}.project-agent-detail-section p[data-v-394b82e3],.project-agent-detail-section li[data-v-394b82e3]{color:var(--color-ink);font-size:14px;line-height:1.6}.project-agent-tags[data-v-394b82e3],.project-agent-inline-list[data-v-394b82e3]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-394b82e3]{color:var(--color-muted)!important}.project-agent-detail-notice[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin:12px 0 0;padding:8px 10px;color:var(--color-muted)!important}.project-agent-detail-placeholder[data-v-394b82e3],.project-agents-state[data-v-394b82e3]{min-height:240px;color:var(--color-muted);text-align:center;place-content:center;justify-items:center;gap:8px;font-size:14px;display:grid}.project-agents-state[data-v-394b82e3]{flex:1}.project-agents-state strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agents-state p[data-v-394b82e3]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-394b82e3]{color:var(--color-danger)}.project-agent-assignment-list[data-v-394b82e3],.project-agent-task-list[data-v-394b82e3],.project-agent-learning-list[data-v-394b82e3],.project-agent-recruitment-list[data-v-394b82e3]{gap:12px;margin-top:12px;display:grid}.project-agent-task-list[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-394b82e3]{border:1px dashed var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-394b82e3]{gap:8px}.project-agent-execution-summary h5[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-394b82e3]{box-sizing:border-box;overscroll-behavior-inline:contain;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-execution-summary-table[data-v-394b82e3]{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1040px;color:var(--color-ink);font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-394b82e3],.project-agent-execution-summary-table td[data-v-394b82e3]{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;text-align:left;vertical-align:top;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-394b82e3]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-394b82e3]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-execution-summary-table tbody th[data-v-394b82e3]{color:var(--color-ink);font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-394b82e3],.project-agent-execution-summary-table tbody span[data-v-394b82e3],.project-agent-execution-summary-table tbody small[data-v-394b82e3],.project-agent-execution-summary-table tbody a[data-v-394b82e3]{display:block}.project-agent-execution-summary-table tbody small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-394b82e3]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]{color:var(--color-ink);text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.project-agent-execution-worker[data-v-394b82e3]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-execution-summary-row i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-execution-summary-row i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-list[data-v-394b82e3]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-394b82e3]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-394b82e3]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-394b82e3]{overflow-wrap:anywhere;min-width:0;color:var(--color-ink);align-items:center;gap:5px;font-size:12px;display:flex}.project-agent-worker-event-row header strong small[data-v-394b82e3]{color:var(--color-muted);margin:0;font-size:12px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-worker-event-row header i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-worker-event-row header i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-394b82e3]{min-width:0}.project-agent-execution-summary-meta dt[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:2px 0 0;font-size:12px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:2px;font-size:12px;display:block}.project-agent-assignment-card[data-v-394b82e3],.project-agent-task-card[data-v-394b82e3],.project-agent-learning-card[data-v-394b82e3],.project-agent-recruitment-card[data-v-394b82e3]{min-width:0;padding:16px}.project-agent-assignment-card header strong[data-v-394b82e3],.project-agent-task-card header strong[data-v-394b82e3],.project-agent-learning-card header strong[data-v-394b82e3],.project-agent-recruitment-card header strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agent-card-actions[data-v-394b82e3]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-394b82e3],.project-agent-task-card p[data-v-394b82e3],.project-agent-learning-card p[data-v-394b82e3]{margin:8px 0 0;font-size:14px;line-height:1.55}.project-agent-assignment-card small[data-v-394b82e3],.project-agent-task-card small[data-v-394b82e3],.project-agent-learning-card small[data-v-394b82e3]{color:var(--color-muted);margin-top:8px;font-size:12px;line-height:1.5;display:block}.project-agent-assignment-card header .ui-badge.is-ended[data-v-394b82e3],.project-agent-assignment-card header .ui-badge.is-replaced[data-v-394b82e3]{color:var(--color-muted)}.project-agent-strategy-note[data-v-394b82e3],.project-agent-execution-line[data-v-394b82e3]{color:var(--color-muted);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:12px;display:flex}.project-agent-strategy-note strong[data-v-394b82e3],.project-agent-execution-line strong[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-strategy-note small[data-v-394b82e3]{color:var(--color-danger);flex-basis:100%}.project-agent-routing-decision[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);color:var(--color-muted);gap:5px;margin-top:10px;padding:9px 10px;font-size:12px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-394b82e3]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-routing-decision small[data-v-394b82e3]{color:var(--color-muted);line-height:1.45}.project-agent-blocked[data-v-394b82e3]{color:var(--color-danger)!important}.project-agent-task-card[data-v-394b82e3]{scroll-margin:16px}.project-agent-task-card.is-linked[data-v-394b82e3]{box-shadow:inset 0 0 0 2px var(--color-accent)}.project-agent-task-card header[data-v-394b82e3]{align-items:flex-start}.project-agent-task-card header small[data-v-394b82e3]{margin-top:3px}.project-agent-task-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-task-card header .ui-badge.is-completed[data-v-394b82e3]{color:var(--color-ink)}.project-agent-task-card header .ui-badge.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-card header .ui-badge.is-cancelled[data-v-394b82e3]{color:var(--color-muted)}.project-agent-heatmap-viewport[data-v-394b82e3]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-394b82e3]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-394b82e3]{appearance:none;box-sizing:border-box;aspect-ratio:1;border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-heat-cell.intensity-2[data-v-394b82e3],.project-agent-heat-cell.intensity-3[data-v-394b82e3],.project-agent-heat-cell.intensity-4[data-v-394b82e3]{background:var(--color-muted)}.project-agent-heat-cell[data-v-394b82e3]:focus-visible,.project-agent-heat-cell.selected[data-v-394b82e3]{border:2px solid var(--color-accent);box-shadow:none;outline:none}.project-agent-day-detail[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-394b82e3]{margin-top:6px}.project-agent-day-detail li strong[data-v-394b82e3],.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{display:block}.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-client-list[data-v-394b82e3],.project-agent-rule-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-client-row strong[data-v-394b82e3],.project-agent-rule-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-client-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-executor-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-executor-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-executor-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-learning-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-evidence-list[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-learning-actions[data-v-394b82e3]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-394b82e3]{color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.5;display:block}.project-agent-detail .ui-badge[data-v-394b82e3]{font-style:normal}.sr-only[data-v-394b82e3]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-394b82e3]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-394b82e3]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-394b82e3]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-394b82e3]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-394b82e3],.project-agents-summary[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-394b82e3],.project-agents-search[data-v-394b82e3],.project-agents-status-filter[data-v-394b82e3]{grid-column:1}.project-agents-status-filter[data-v-394b82e3]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-394b82e3]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-394b82e3]{border-right:0;border-bottom:1px solid var(--color-border);max-height:340px}.project-agent-detail[data-v-394b82e3]{min-height:520px;padding:16px}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3],.project-agent-executor-row[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-394b82e3],.project-agent-executor-row small[data-v-394b82e3]{grid-column:1}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-394b82e3]{gap:8px}}.project-agent-disclosure[data-v-394b82e3]{margin-top:16px}.project-agent-disclosure .project-agent-detail-section[data-v-394b82e3]:first-child{margin-top:0}
@@ -0,0 +1,2 @@
1
+ import{A as e,B as t,C as n,M as r,P as i,R as a,S as o,V as s,X as c,_ as l,b as u,c as d,d as f,h as p,it as m,m as h,nt as g,tt as _,u as v,v as y,w as b,x,y as S}from"./i18n-D2CJkEYK.js";import{t as C}from"./GrowthLoading-KTjE2e50.js";import{h as w,m as T}from"./useApi-CROJJdhE-BtFMXFjw.js";import{t as E}from"./vue-router-DkaTtPn0.js";import{a as D,i as O,n as k,r as A,t as j}from"./copy-D2LqwtPZ.js";async function M(e,t){let n=await fetch(`/api/roundtables${e}`,{method:t===void 0?`GET`:`POST`,credentials:`same-origin`,headers:t===void 0?{Accept:`application/json`}:{Accept:`application/json`,"Content-Type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(typeof r?.error?.message==`string`?r.error.message:typeof r?.error==`string`?r.error:`HTTP ${n.status}`);if(r===null)throw Error(`Invalid roundtable response`);return r}var N={list:()=>M(``),read:(e,t=0)=>M(`/${encodeURIComponent(e)}?after=${t}&limit=100`),create:async e=>{let t=await M(``,e);return`room`in t?t.room:t},control:(e,t,n,r,i)=>M(`/${encodeURIComponent(e)}/control`,{action:t,expectedRevision:n,...r?{reason:r}:{},...i?{limits:i}:{}}),message:(e,t)=>M(`/${encodeURIComponent(e)}/messages`,{body:t}),invite:(e,t)=>M(`/${encodeURIComponent(e)}/invites`,{seatId:t}),revoke:(e,t)=>M(`/${encodeURIComponent(e)}/revoke`,{seatId:t})},P={class:`rt-panel rt-create`,"aria-labelledby":`rt-create-title`},F={class:`rt-section-heading`},I={id:`rt-create-title`},L=[`disabled`],R={class:`rt-field`},z=[`placeholder`],B={class:`rt-field`},V={value:`discussion`},H={value:`collaboration`},U={class:`rt-section-heading`},W={class:`rt-muted`},G={class:`rt-field`},K=[`onUpdate:modelValue`,`aria-label`],ee={class:`rt-field`},te=[`onUpdate:modelValue`,`aria-label`],ne=[`value`],re={class:`rt-field`},ie=[`onUpdate:modelValue`,`aria-label`],ae=[`value`],oe=[`disabled`,`aria-label`,`onClick`],se={key:0,class:`rt-seat-permission`},ce=[`onUpdate:modelValue`],le={key:0,class:`rt-field`},ue=[`onUpdate:modelValue`],de=[`disabled`],fe={key:0,class:`rt-warning`},pe={class:`rt-advanced`},me={class:`rt-field`},he=[`placeholder`],ge={class:`rt-muted`},_e={class:`rt-field`},ve={key:0,class:`rt-field`},ye={class:`rt-muted`},be={class:`rt-limit-form`},xe={class:`rt-field`},Se={class:`rt-field`},Ce={class:`rt-field`},we={class:`rt-field`},Te={key:1,class:`rt-muted`},Ee={key:2,role:`alert`,class:`rt-error`},De=[`disabled`],Oe={key:1},q=b({__name:`RoundtableCreate`,emits:[`created`,`cancel`],setup(e,{emit:t}){let n=t,a=c(``),g=c(`discussion`),b=c([{id:`seat-1`,name:`Codex`,role:`moderator`,runtime:`codex`},{id:`seat-2`,name:`Claude`,role:`reviewer`,runtime:`claude-code`}]),w=[`moderator`,`specialist`,`implementer`,`reviewer`],T=[`codex`,`claude-code`,`pi`,`mcp`,`grok`,`a2a`],E=c(``),D=c(``),O=c(),j=c(3),M=c(30),q=c(30),J=c(5),Y=c(!1),X=c(``),Z=c({}),Q=c({}),ke=3,$=l(()=>a.value.trim()&&b.value.length>=2&&b.value.length<=6&&b.value.every(e=>e.name.trim())&&b.value.filter(e=>e.role===`moderator`).length===1&&b.value.every(e=>g.value!==`collaboration`||e.role!==`implementer`||!Z.value[e.id]||Q.value[e.id]?.trim())&&(g.value===`discussion`||b.value.some(e=>e.role===`implementer`)&&b.value.some(e=>e.role===`reviewer`)));function Ae(){b.value.push({id:`seat-${ke++}`,name:``,role:`specialist`,runtime:`mcp`})}async function je(){if(!(!$.value||Y.value)){Y.value=!0,X.value=``;try{let e=await N.create({goal:a.value.trim(),mode:g.value,seats:b.value.map(e=>({...e,name:e.name.trim(),...e.role===`implementer`&&g.value===`collaboration`&&Z.value[e.id]?{execution:{permission:`workspace-write`,workspace:Q.value[e.id].trim()}}:{}})),limits:{maxRounds:j.value,maxMessages:M.value,maxDurationMs:q.value*6e4,turnTimeoutMs:J.value*6e4},...E.value.trim()?{projectPath:E.value.trim()}:{},...E.value.trim()&&D.value.trim()?{binding:{taskId:D.value.trim(),...Number.isSafeInteger(O.value)?{artifactRevision:O.value}:{}}}:{}});n(`created`,e.id)}catch(e){X.value=e instanceof Error?e.message:k(`创建失败`,`Creation failed`)}finally{Y.value=!1}}}return(e,t)=>(r(),x(`section`,P,[y(`div`,F,[y(`h2`,I,m(_(k)(`创建圆桌`,`Create a roundtable`)),1),y(`button`,{type:`button`,onClick:t[0]||=e=>n(`cancel`),disabled:Y.value},m(_(k)(`关闭`,`Close`)),9,L)]),y(`form`,{onSubmit:h(je,[`prevent`])},[y(`label`,R,[o(m(_(k)(`共同目标`,`Shared goal`)),1),s(y(`textarea`,{"onUpdate:modelValue":t[1]||=e=>a.value=e,required:``,maxlength:`12000`,rows:`3`,placeholder:_(k)(`描述要一起解决的问题和期望的交付`,`Describe the problem and expected deliverable`)},null,8,z),[[f,a.value]])]),y(`label`,B,[o(m(_(k)(`方式`,`Mode`)),1),s(y(`select`,{"onUpdate:modelValue":t[2]||=e=>g.value=e},[y(`option`,V,m(_(A)(`discussion`)),1),y(`option`,H,m(_(A)(`collaboration`)),1)],512),[[v,g.value]])]),y(`div`,U,[y(`h3`,null,m(_(k)(`参与席位`,`Seats`)),1),y(`span`,null,m(b.value.length)+` / 6`,1)]),y(`p`,W,m(_(k)(`每位参与者有独立席位。选择入口后,还需要在参与者的电脑上启动工作端,或从 MCP 客户端主动加入。`,`Each participant has its own seat. After choosing an adapter, start a worker on the participant’s computer or actively join from an MCP client.`)),1),(r(!0),x(p,null,i(b.value,(e,t)=>(r(),x(`div`,{key:e.id,class:`rt-seat-form`},[y(`label`,G,[o(m(_(k)(`姓名`,`Name`)),1),s(y(`input`,{"onUpdate:modelValue":t=>e.name=t,required:``,maxlength:`120`,"aria-label":`${_(k)(`姓名`,`Name`)} ${t+1}`},null,8,K),[[f,e.name]])]),y(`label`,ee,[o(m(_(k)(`职责`,`Role`)),1),s(y(`select`,{"onUpdate:modelValue":t=>e.role=t,"aria-label":`${_(k)(`职责`,`Role`)} ${t+1}`},[(r(),x(p,null,i(w,e=>y(`option`,{key:e,value:e},m(_(A)(e)),9,ne)),64))],8,te),[[v,e.role]])]),y(`label`,re,[o(m(_(k)(`参与方式`,`Adapter`)),1),s(y(`select`,{"onUpdate:modelValue":t=>e.runtime=t,"aria-label":`${_(k)(`参与方式`,`Adapter`)} ${t+1}`},[(r(),x(p,null,i(T,e=>y(`option`,{key:e,value:e},m(_(A)(e)),9,ae)),64))],8,ie),[[v,e.runtime]])]),y(`button`,{type:`button`,disabled:b.value.length<=2||Y.value,"aria-label":`${_(k)(`移除`,`Remove`)} ${e.name||t+1}`,onClick:e=>b.value.splice(t,1)},`×`,8,oe),e.role===`implementer`&&g.value===`collaboration`?(r(),x(`div`,se,[y(`label`,null,[s(y(`input`,{"onUpdate:modelValue":t=>Z.value[e.id]=t,type:`checkbox`},null,8,ce),[[d,Z.value[e.id]]]),o(` `+m(_(k)(`允许此实施席位写入指定工作区`,`Allow this implementer to write to the specified workspace`)),1)]),Z.value[e.id]?(r(),x(`label`,le,[o(m(_(k)(`获授权工作区路径`,`Authorized workspace path`)),1),s(y(`input`,{"onUpdate:modelValue":t=>Q.value[e.id]=t,required:``},null,8,ue),[[f,Q.value[e.id]]])])):u(``,!0)])):u(``,!0)]))),128)),y(`button`,{type:`button`,disabled:b.value.length>=6||Y.value,onClick:Ae},m(_(k)(`添加席位`,`Add seat`)),9,de),!$.value&&a.value.trim()?(r(),x(`p`,fe,m(_(k)(`需要 2–6 个有姓名的席位和一位主持人;协作任务还需要实施者和审查者。`,`Use 2–6 named seats and exactly one moderator. Collaborative tasks also require an implementer and a reviewer.`)),1)):u(``,!0),y(`details`,pe,[y(`summary`,null,m(_(k)(`停止条件与项目`,`Limits and project`)),1),y(`label`,me,[o(m(_(k)(`已登记项目的本机路径(可选)`,`Registered local project path (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":t[3]||=e=>E.value=e,placeholder:_(k)(`留空建立独立临时圆桌`,`Leave blank for an independent temporary room`)},null,8,he),[[f,E.value]])]),y(`p`,ge,m(_(k)(`项目绑定由服务端验证。跨电脑工作端的本地路径单独设置;加入席位不会授权读取他人的私有记忆。`,`The server validates project binding. Each worker sets its own local path; joining does not authorize access to another participant’s private memory.`)),1),E.value.trim()?(r(),x(p,{key:0},[y(`label`,_e,[o(m(_(k)(`关联已有 Fuli 任务 ID(可选)`,`Existing Fuli task ID (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":t[4]||=e=>D.value=e},null,512),[[f,D.value]])]),D.value.trim()?(r(),x(`label`,ve,[o(m(_(k)(`产物版本(用于任务验证)`,`Artifact revision (for task verification)`)),1),s(y(`input`,{"onUpdate:modelValue":t[5]||=e=>O.value=e,type:`number`,min:`0`,step:`1`},null,512),[[f,O.value,void 0,{number:!0}]])])):u(``,!0),y(`p`,ye,m(_(k)(`关联项目本身不会完成 Fuli 任务。关联已有任务时,交付还要通过该任务的验证门槛;独立圆桌的人工验收只结束圆桌。`,`A project link alone does not complete a Fuli task. Linking an existing task adds its verification gate; human acceptance of an independent room concludes only the room.`)),1)],64)):u(``,!0),y(`div`,be,[y(`label`,xe,[o(m(_(k)(`讨论轮数`,`Discussion rounds`)),1),s(y(`input`,{"onUpdate:modelValue":t[6]||=e=>j.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[f,j.value,void 0,{number:!0}]])]),y(`label`,Se,[o(m(_(k)(`Agent 发言上限`,`Agent message limit`)),1),s(y(`input`,{"onUpdate:modelValue":t[7]||=e=>M.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,M.value,void 0,{number:!0}]])]),y(`label`,Ce,[o(m(_(k)(`总时限(分钟)`,`Total minutes`)),1),s(y(`input`,{"onUpdate:modelValue":t[8]||=e=>q.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,q.value,void 0,{number:!0}]])]),y(`label`,we,[o(m(_(k)(`单回合(分钟)`,`Minutes per turn`)),1),s(y(`input`,{"onUpdate:modelValue":t[9]||=e=>J.value=e,type:`number`,min:`1`,max:`5`,required:``},null,512),[[f,J.value,void 0,{number:!0}]])])])]),g.value===`collaboration`?(r(),x(`p`,Te,m(_(k)(`实施席位仍需要在工作端明确授权工作区写入;审查默认只读。执行结果等待你的验收。`,`Implementation still requires explicit workspace write permission on the worker. Reviews default to read only. Results await your acceptance.`)),1)):u(``,!0),X.value?(r(),x(`p`,Ee,m(X.value),1)):u(``,!0),y(`button`,{type:`submit`,class:`rt-primary`,disabled:!$.value||Y.value},[Y.value?(r(),S(C,{key:0,variant:`inline`,label:`创建圆桌 · Creating roundtable`})):(r(),x(`span`,Oe,m(_(k)(`创建草案`,`Create draft`)),1))],8,De)],32)]))}}),J={class:`rt-panel`,"aria-labelledby":`rt-seats-title`},Y={class:`rt-section-heading`},X={id:`rt-seats-title`},Z={class:`rt-muted`},Q={class:`rt-seats`},ke={class:`rt-section-heading`},$={class:`rt-tag`},Ae={key:0},je={key:1,class:`rt-muted`},Me={key:2,class:`rt-muted`},Ne={class:`rt-muted`},Pe={class:`rt-muted`},Fe={key:1,class:`rt-muted`},Ie={class:`rt-actions`},Le=[`disabled`,`onClick`],Re={key:1},ze=[`disabled`,`onClick`],Be={key:1},Ve={key:0,class:`rt-error`,role:`alert`},He={key:1,class:`rt-invite`,"aria-labelledby":`rt-invite-title`},Ue={class:`rt-section-heading`},We={id:`rt-invite-title`},Ge={class:`rt-field`},Ke=[`value`],qe={class:`rt-muted`},Je={class:`rt-field`},Ye={class:`rt-muted`},Xe={class:`rt-field`},Ze=[`placeholder`],Qe={key:0},$e={key:1,class:`rt-field`},et={key:2,class:`rt-field`},tt={class:`rt-muted`},nt={class:`rt-muted`},rt={class:`rt-muted`},it={class:`rt-muted`},at=b({__name:`RoundtableSeats`,props:{room:{},activeSeatId:{}},emits:[`changed`],setup(t,{emit:n}){let l=t,h=n,v=c(null),b=c(``),w=c(``),T=c(``),E=c(``),D=c(typeof window>`u`?``:window.location.origin),j=c(!1),M=c(``),P=c(``),F=!1;a(()=>l.room.id,()=>{v.value=null,w.value=``,T.value=``}),e(()=>{F=!0,v.value=null});async function I(e){if(b.value)return;b.value=`invite:${e}`,w.value=``,v.value=null,T.value=``;let t=l.room.id;try{let n=await N.invite(t,e);!F&&l.room.id===t&&(v.value=n)}catch(e){w.value=e instanceof Error?e.message:k(`创建邀请失败`,`Invitation failed`)}finally{b.value=``}}async function L(e){if(!b.value){b.value=`revoke:${e}`,w.value=``;try{await N.revoke(l.room.id,e),v.value?.seatId===e&&(v.value=null),h(`changed`)}catch(e){w.value=e instanceof Error?e.message:k(`撤销失败`,`Revocation failed`)}finally{b.value=``}}}async function R(e,t){try{await navigator.clipboard.writeText(e),T.value=t}catch{w.value=k(`剪贴板不可用,请手动选择并复制。`,`Clipboard unavailable. Select and copy manually.`)}}function z(){let e=l.room.seats.find(e=>e.id===v.value?.seatId);if(!e||e.runtime===`mcp`)return``;let t=e=>`'${e.replaceAll(`'`,`''`)}'`;return`fl roundtable worker --url ${t(D.value)} --room ${t(l.room.id)} --runtime ${e.runtime} --workspace ${t(E.value||k(`参与端本地工作区`,`LOCAL_WORKSPACE`))}${j.value&&e.role===`implementer`&&e.execution?.permission===`workspace-write`?` --allow-write`:``}${e.runtime===`a2a`?` --a2a-url ${t(M.value||`https://A2A_ENDPOINT`)}`:``}${e.runtime===`pi`?` --model ${t(P.value||`LOCAL_MODEL`)}`:``}`}function B(){return`${D.value.replace(/\/$/,``)}/roundtable-peer/v1/rooms/${encodeURIComponent(l.room.id)}/mcp`}return(e,n)=>(r(),x(`section`,J,[y(`div`,Y,[y(`h2`,X,m(_(k)(`圆桌席位`,`Seats`)),1),y(`span`,null,m(t.room.seats.length),1)]),y(`p`,Z,m(_(k)(`邀请仅授予一个席位的权限。加入记录是历史证据,当前在线状态由工作端轮询和回合回执确定。`,`An invitation grants access to one seat. Join records are historical evidence; worker polling and turn receipts determine current activity.`)),1),y(`div`,Q,[(r(!0),x(p,null,i(t.room.seats,e=>(r(),x(`article`,{key:e.id,class:g([`rt-seat`,{"rt-seat-current":e.id===t.activeSeatId}])},[y(`div`,ke,[y(`strong`,null,m(e.name),1),y(`span`,$,m(_(A)(e.role)),1)]),e.selfProfile?(r(),x(p,{key:0},[e.selfProfile.responsibility?(r(),x(`p`,Ae,m(e.selfProfile.responsibility),1)):u(``,!0),e.selfProfile.introduction?(r(),x(`p`,je,m(e.selfProfile.introduction),1)):u(``,!0),e.selfProfile.capabilities?.length?(r(),x(`p`,Me,m(e.selfProfile.capabilities.join(` · `)),1)):u(``,!0)],64)):u(``,!0),y(`p`,null,m(_(A)(e.runtime)),1),y(`p`,Ne,m(e.identityKind===`fuli`?_(k)(`已绑定 Fuli 身份`,`Bound Fuli identity`):_(k)(`独立任务席位`,`Independent task seat`)),1),y(`p`,Pe,m(e.joinedAt?`${_(k)(`加入于`,`Joined`)} ${_(O)(e.joinedAt)}`:_(k)(`尚无加入记录`,`No join recorded`)),1),e.execution?(r(),x(`p`,Fe,m(_(A)(e.execution.permission))+` · `+m(e.execution.workspace),1)):u(``,!0),y(`div`,Ie,[y(`button`,{type:`button`,disabled:!!b.value,onClick:t=>I(e.id)},[b.value===`invite:${e.id}`?(r(),S(C,{key:0,variant:`inline`,label:`创建席位邀请 · Creating seat invitation`})):(r(),x(`span`,Re,m(_(k)(`邀请参与`,`Invite participant`)),1))],8,Le),y(`button`,{type:`button`,disabled:!!b.value,onClick:t=>L(e.id)},[b.value===`revoke:${e.id}`?(r(),S(C,{key:0,variant:`inline`,label:`撤销席位凭据 · Revoking seat credentials`})):(r(),x(`span`,Be,m(_(k)(`撤销凭据`,`Revoke credentials`)),1))],8,ze)])],2))),128))]),w.value?(r(),x(`p`,Ve,m(w.value),1)):u(``,!0),v.value?(r(),x(`section`,He,[y(`div`,Ue,[y(`h3`,We,m(_(k)(`席位邀请 · 仅此次显示`,`Seat invitation · shown once`)),1),y(`button`,{type:`button`,onClick:n[0]||=e=>{v.value=null,T.value=``}},m(_(k)(`隐藏凭据`,`Hide credential`)),1)]),y(`p`,null,m(t.room.seats.find(e=>e.id===v.value?.seatId)?.name)+` · `+m(_(k)(`有效期至`,`Expires`))+` `+m(_(O)(v.value.expiresAt)),1),y(`label`,Ge,[o(m(_(k)(`席位访问凭据`,`Seat credential`)),1),y(`input`,{value:v.value.seatToken,readonly:``,autocomplete:`off`,spellcheck:`false`,type:`password`,"data-testid":`seat-token`,onFocus:n[1]||=e=>e.target.select()},null,40,Ke)]),y(`button`,{type:`button`,onClick:n[2]||=e=>R(v.value.seatToken,`token`)},m(T.value===`token`?_(k)(`凭据已复制`,`Credential copied`):_(k)(`复制凭据`,`Copy credential`)),1),y(`p`,qe,m(_(k)(`只发给这一席位的参与者。凭据仅保留在当前页面内存;关闭后重新创建邀请,或撤销此前凭据。`,`Share only with this seat’s participant. This page keeps the credential only in memory. After closing, create a new invite or revoke previous credentials.`)),1),y(`label`,Je,[o(m(_(k)(`参与者可访问的协调端地址`,`Coordinator URL reachable by participant`)),1),s(y(`input`,{"onUpdate:modelValue":n[3]||=e=>D.value=e,type:`url`},null,512),[[f,D.value]])]),y(`p`,Ye,m(_(k)(`另一台电脑需要可访问的 HTTPS 地址,并在协调端设置 public-url;本机测试可使用回环地址。`,`Another computer needs a reachable HTTPS URL configured as public-url on the coordinator. Loopback works for local testing.`)),1),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`mcp`?(r(),x(p,{key:1},[y(`p`,nt,m(_(k)(`在 MCP 客户端配置下面的远程地址,将席位凭据作为 Bearer 认证秘密保存。Grok Team Bot 可在官方自定义 MCP 设置中配置此地址。`,`Configure this remote URL in the MCP client and save the seat credential as a Bearer authentication secret. Grok Team Bots can configure it through their official custom MCP settings.`)),1),y(`pre`,null,[y(`code`,null,m(B()),1)]),y(`button`,{type:`button`,onClick:n[9]||=e=>R(B(),`mcp`)},m(T.value===`mcp`?_(k)(`地址已复制`,`URL copied`):_(k)(`复制 MCP 地址`,`Copy MCP URL`)),1),y(`p`,rt,m(_(k)(`接入后,AI 可通过工具说明自行加入、介绍职责、寻找同伴并参与协作。`,`Once connected, AI can use the tool instructions to join, introduce its role, find peers and collaborate.`)),1)],64)):(r(),x(p,{key:0},[y(`label`,Xe,[o(m(_(k)(`参与端本地工作区`,`Worker local workspace`)),1),s(y(`input`,{"onUpdate:modelValue":n[4]||=e=>E.value=e,placeholder:_(k)(`填写参与者电脑上的路径`,`Path on the participant’s computer`)},null,8,Ze),[[f,E.value]])]),t.room.seats.find(e=>e.id===v.value?.seatId)?.execution?.permission===`workspace-write`?(r(),x(`label`,Qe,[s(y(`input`,{"onUpdate:modelValue":n[5]||=e=>j.value=e,type:`checkbox`},null,512),[[d,j.value]]),o(` `+m(_(k)(`工作端用户明确允许写入此工作区`,`The worker’s user explicitly permits writing to this workspace`)),1)])):u(``,!0),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`a2a`?(r(),x(`label`,$e,[o(m(_(k)(`A2A 端点`,`A2A endpoint`)),1),s(y(`input`,{"onUpdate:modelValue":n[6]||=e=>M.value=e,type:`url`,placeholder:`https://…`},null,512),[[f,M.value]])])):u(``,!0),t.room.seats.find(e=>e.id===v.value?.seatId)?.runtime===`pi`?(r(),x(`label`,et,[o(m(_(k)(`参与电脑上的 Ollama 模型`,`Ollama model on participant computer`)),1),s(y(`input`,{"onUpdate:modelValue":n[7]||=e=>P.value=e,placeholder:`fuli-roundtable-qwen3-32k:latest`},null,512),[[f,P.value]])])):u(``,!0),y(`p`,null,m(_(k)(`在参与端 PowerShell 中,先设置环境变量,再启动工作端:`,`In the worker’s PowerShell, set the environment variable and start the worker:`)),1),y(`pre`,null,[y(`code`,null,`$env:FULI_ROUNDTABLE_TOKEN = '<`+m(_(k)(`粘贴席位凭据`,`PASTE_SEAT_CREDENTIAL`))+`>'
2
+ `+m(z()),1)]),y(`button`,{type:`button`,onClick:n[8]||=e=>R(z(),`command`)},m(T.value===`command`?_(k)(`命令已复制`,`Command copied`):_(k)(`复制工作端命令`,`Copy worker command`)),1),y(`p`,tt,m(_(k)(`默认只读。实施写入还需工作端用户明确授权。Grok 需要工作端配置 XAI_API_KEY;A2A 需要配置可验证的端点。`,`Workers default to read only. Writing also requires explicit permission from the worker’s user. Grok requires XAI_API_KEY on the worker; A2A requires a verified endpoint.`)),1)],64)),y(`p`,it,m(_(k)(`协调端地址`,`Coordinator URL`))+`: `+m(D.value)+` · `+m(_(k)(`圆桌`,`Room`))+`: `+m(t.room.id)+` · `+m(_(k)(`席位`,`Seat`))+`: `+m(v.value.seatId),1)])):u(``,!0)]))}}),ot={class:`rt-panel`,"aria-labelledby":`rt-results-title`},st={class:`rt-section-heading`},ct={id:`rt-results-title`},lt={key:0,class:`rt-tag`},ut={class:`rt-message-body`},dt={class:`rt-muted`},ft={key:0,class:`rt-advanced`},pt={class:`rt-message-body`},mt={class:`rt-muted`},ht={key:1,class:`rt-empty`},gt={key:2,class:`rt-table-scroll`},_t={key:3,class:`rt-muted`},vt={class:`rt-advanced`},yt={class:`rt-message-body`},bt={class:`rt-message-body`},xt={key:4,class:`rt-muted`},St={key:5,class:`rt-artifacts`},Ct={key:6,class:`rt-muted`},wt={class:`rt-muted`},Tt={key:7,class:`rt-table-scroll`},Et={"data-testid":`runtime-receipts`},Dt={key:8,class:`rt-empty`,"data-testid":`no-runtime-receipts`},Ot=b({__name:`RoundtableResults`,props:{snapshot:{}},setup(e){let t=e,n=l(()=>t.snapshot.messages.filter(e=>e.actual)),a=l(()=>t.snapshot.messages.filter(e=>e.kind===`dissent`)),s=l(()=>[...t.snapshot.outcome?.artifacts??[],...t.snapshot.tasks.flatMap(e=>e.artifacts??[])]),c=e=>t.snapshot.room.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);function d(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;if(typeof t.body==`string`)return t.body;if(typeof t.reason==`string`)return t.reason}return j(e)}function f(e){return e==null?k(`未报告`,`Not reported`):typeof e==`string`?e:JSON.stringify(e,null,2)}function h(e){return!e||!Object.keys(e).length?`-`:Object.entries(e).filter(e=>{let t=e[1];return typeof t==`number`&&Number.isSafeInteger(t)&&t>=0}).map(([e,t])=>`${e}: ${t}`).join(` · `)||`-`}return(t,l)=>(r(),x(`section`,ot,[y(`div`,st,[y(`h2`,ct,m(_(k)(`结果与证据`,`Results and evidence`)),1),e.snapshot.outcome?(r(),x(`span`,lt,m(_(A)(e.snapshot.outcome.acceptance)),1)):u(``,!0)]),e.snapshot.outcome?(r(),x(p,{key:0},[y(`p`,ut,m(e.snapshot.outcome.body),1),y(`p`,dt,m(_(k)(`Agent 报告的结论保留为报告;人工验收和任务验证分别记录。`,`Agent conclusions remain reports. Human acceptance and task verification are recorded separately.`)),1),e.snapshot.outcome.verification?.reported==null?u(``,!0):(r(),x(`details`,ft,[y(`summary`,null,m(_(k)(`汇总验证报告`,`Outcome verification report`)),1),y(`p`,pt,m(f(e.snapshot.outcome.verification.reported)),1),y(`p`,mt,m(e.snapshot.outcome.verification.confirmed?_(k)(`服务端记录为已确认`,`Recorded as confirmed by server`):_(k)(`参与端报告,尚未确认`,`Participant report, not confirmed`)),1)]))],64)):(r(),x(`p`,ht,m(_(k)(`尚未提交最终结论。讨论、任务报告与实际执行记录会持续保留。`,`No final outcome has been submitted. Discussion, task reports and execution records are preserved.`)),1)),y(`h3`,null,m(_(k)(`任务`,`Tasks`)),1),e.snapshot.tasks.length?(r(),x(`div`,gt,[y(`table`,null,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`任务 / 阶段`,`Task / phase`)),1),y(`th`,null,m(_(k)(`负责人`,`Assignee`)),1),y(`th`,null,m(_(k)(`权限`,`Permission`)),1),y(`th`,null,m(_(k)(`状态`,`Status`)),1),y(`th`,null,m(_(k)(`依赖`,`Dependencies`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(e.snapshot.tasks,e=>(r(),x(`tr`,{key:e.id},[y(`td`,null,[o(m(e.title||e.id),1),y(`small`,null,m(_(A)(e.phase)),1)]),y(`td`,null,m(c(e.seatId)),1),y(`td`,null,m(_(A)(e.permission)),1),y(`td`,null,m(_(A)(e.status)),1),y(`td`,null,m(e.dependencies?.join(`, `)||`—`),1)]))),128))])])])):(r(),x(`p`,_t,m(_(k)(`本圆桌尚无执行任务。讨论消息不算工作进程执行。`,`No execution tasks in this room. Discussion messages are not worker execution.`)),1)),(r(!0),x(p,null,i(e.snapshot.tasks.filter(e=>e.verification!=null),e=>(r(),x(`div`,{key:e.id},[y(`details`,vt,[y(`summary`,null,m(_(k)(`任务验证报告`,`Task verification report`))+` · `+m(e.title||e.id),1),y(`p`,yt,m(f(e.verification)),1)])]))),128)),y(`h3`,null,m(_(k)(`保留的分歧`,`Retained dissent`)),1),(r(!0),x(p,null,i(a.value,e=>(r(),x(`article`,{key:e.id,class:`rt-dissent`},[y(`strong`,null,m(c(e.seatId))+` · #`+m(e.seq),1),y(`p`,bt,m(e.body),1)]))),128)),(r(!0),x(p,null,i(e.snapshot.outcome?.dissent??[],(e,t)=>(r(),x(`p`,{key:t,class:`rt-message-body`},m(d(e)),1))),128)),!a.value.length&&!e.snapshot.outcome?.dissent?.length?(r(),x(`p`,xt,m(_(k)(`尚未记录分歧。`,`No dissent recorded.`)),1)):u(``,!0),y(`h3`,null,m(_(k)(`产物引用`,`Artifact references`)),1),s.value.length?(r(),x(`ul`,St,[(r(!0),x(p,null,i(s.value,(e,t)=>(r(),x(`li`,{key:t},m(_(j)(e)),1))),128))])):(r(),x(`p`,Ct,m(_(k)(`尚无产物引用。`,`No artifact references reported.`)),1)),y(`h3`,null,m(_(k)(`实际运行回执`,`Actual runtime receipts`)),1),y(`p`,wt,m(_(k)(`只展示提交了运行来源的回执;来源由参与端报告,未独立验证运行时身份。加入、选择平台或配置席位不产生执行行;用量缺失时显示 -。`,`Only submitted runtime source receipts appear here. Sources are participant reports; runtime identity is not independently verified. Joining or configuring a seat does not create an execution row; missing usage displays -.`)),1),n.value.length?(r(),x(`div`,Tt,[y(`table`,Et,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`席位 / 消息`,`Seat / message`)),1),y(`th`,null,m(_(k)(`报告的应用`,`Reported application`)),1),y(`th`,null,m(_(k)(`报告的模型`,`Reported model`)),1),y(`th`,null,m(_(k)(`会话`,`Session`)),1),y(`th`,null,m(_(k)(`用量`,`Usage`)),1),y(`th`,null,m(_(k)(`证据来源`,`Provenance`)),1),y(`th`,null,m(_(k)(`时间`,`Time`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(n.value,e=>(r(),x(`tr`,{key:e.id},[y(`td`,null,[o(m(c(e.seatId)),1),y(`small`,null,`#`+m(e.seq)+` · `+m(_(A)(e.kind)),1)]),y(`td`,null,m(e.actual?.applicationLabel||e.actual?.reportedApplication||e.actual?.sourceApplication||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(e.actual?.model||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(e.actual?.sessionId||_(k)(`未知`,`Unknown`)),1),y(`td`,null,m(h(e.actual?.usage)),1),y(`td`,null,[o(m(_(k)(`参与端报告`,`Participant reported`)),1),y(`small`,null,m(_(k)(`身份未独立验证`,`Identity not independently verified`)),1)]),y(`td`,null,m(_(O)(e.createdAt)),1)]))),128))])])])):(r(),x(`p`,Dt,m(_(k)(`尚无实际运行回执。`,`No actual runtime receipts yet.`)),1))]))}}),kt={class:`rt-panel rt-event-details`},At={class:`rt-muted`},jt={key:0,class:`rt-table-scroll`},Mt={"data-testid":`turn-attempts`},Nt={key:1,class:`rt-muted`},Pt={class:`rt-muted`},Ft={class:`rt-message-body`},It={key:2,class:`rt-muted`},Lt={class:`rt-events`},Rt={key:0},zt=b({__name:`RoundtableEvents`,props:{snapshot:{}},setup(e){let t=e,n=e=>t.snapshot.room.seats.find(t=>t.id===e)?.name??e;return(t,a)=>(r(),x(`details`,kt,[y(`summary`,null,m(_(k)(`回合尝试、恢复与历史事件`,`Turn attempts, recovery and history`)),1),y(`p`,At,m(_(k)(`领取回合代表运行租约。下表保留失败、受阻、中断与取消请求,领取本身不证明已调用模型。`,`Claiming a turn creates a lease. This history retains failed, blocked and interrupted attempts and cancellation requests. A claim alone does not prove model execution.`)),1),e.snapshot.attempts?.length?(r(),x(`div`,jt,[y(`table`,Mt,[y(`thead`,null,[y(`tr`,null,[y(`th`,null,m(_(k)(`参与者`,`Participant`)),1),y(`th`,null,m(_(k)(`尝试`,`Attempt`)),1),y(`th`,null,m(_(k)(`状态`,`Status`)),1),y(`th`,null,m(_(k)(`领取时间`,`Claimed at`)),1),y(`th`,null,m(_(k)(`结束时间`,`Finished at`)),1)])]),y(`tbody`,null,[(r(!0),x(p,null,i(e.snapshot.attempts,e=>(r(),x(`tr`,{key:`${e.turnId}:${e.id}`},[y(`td`,null,m(n(e.seatId)),1),y(`td`,null,m(e.id),1),y(`td`,null,m(_(A)(e.status)),1),y(`td`,null,m(_(O)(e.startedAt)),1),y(`td`,null,m(e.finishedAt?_(O)(e.finishedAt):`—`),1)]))),128))])])])):(r(),x(`p`,Nt,m(_(k)(`尚无回合尝试。`,`No turn attempts yet.`)),1)),y(`h3`,null,m(_(k)(`过期结果存档`,`Stale result archive`)),1),y(`p`,Pt,m(_(k)(`晚到结果保留在历史中,不替代当前讨论或交付结论。`,`Late results remain in history and do not replace current discussion or delivery outcomes.`)),1),(r(!0),x(p,null,i(e.snapshot.lateResults??[],e=>(r(),x(`article`,{key:`${e.turnId}:${e.attemptId}`,class:`rt-message`},[y(`strong`,null,m(n(e.seatId))+` · `+m(_(O)(e.receivedAt)),1),y(`p`,Ft,m(e.body),1),y(`small`,null,m(e.turnId)+` / `+m(e.attemptId),1)]))),128)),e.snapshot.lateResults?.length?u(``,!0):(r(),x(`p`,It,m(_(k)(`没有过期结果。`,`No stale results.`)),1)),y(`h3`,null,m(_(k)(`状态事件`,`Status events`)),1),y(`ol`,Lt,[(r(!0),x(p,null,i(e.snapshot.events??[],e=>(r(),x(`li`,{key:e.id},[y(`span`,null,m(_(A)(e.kind)),1),o(` · `+m(_(O)(e.createdAt)),1),e.kind===`cancellation_requested`&&e.confirmed!==!0?(r(),x(`small`,Rt,` · `+m(_(k)(`取消尚未确认`,`Cancellation not confirmed`)),1)):u(``,!0)]))),128))])]))}}),Bt={class:`rt-detail`},Vt={class:`rt-panel rt-room-heading`},Ht={class:`rt-section-heading`},Ut={class:`rt-eyebrow`},Wt=[`data-status`],Gt={class:`rt-meta`},Kt={key:0,class:`rt-warning`},qt={class:`rt-actions`},Jt=[`disabled`],Yt=[`disabled`],Xt=[`disabled`],Zt=[`disabled`],Qt=[`disabled`],$t={key:1,class:`rt-muted`},en={key:3,class:`rt-confirm`},tn={class:`rt-field`},nn=[`disabled`],rn={key:4,class:`rt-error`,role:`alert`},an={key:5,class:`rt-advanced`},on={class:`rt-muted`},sn={class:`rt-limit-form`},cn={class:`rt-field`},ln={class:`rt-field`},un={class:`rt-field`},dn={class:`rt-field`},fn=[`disabled`],pn={class:`rt-panel`,"aria-labelledby":`rt-messages-title`},mn={class:`rt-section-heading`},hn={id:`rt-messages-title`},gn={key:0,class:`rt-current-turn`},_n={key:0},vn={class:`rt-messages`,"aria-live":`polite`,"aria-relevant":`additions`},yn={class:`rt-section-heading`},bn={class:`rt-message-body`},xn={key:0,class:`rt-empty`},Sn=[`disabled`],Cn={class:`rt-field`},wn=[`placeholder`],Tn=[`disabled`],En={key:1},Dn={key:3,class:`rt-advanced`},On={class:`rt-muted`},kn={class:`rt-field`},An={class:`rt-actions`},jn=[`disabled`],Mn=[`disabled`],Nn=[`disabled`],Pn={key:0,class:`rt-panel`},Fn=[`disabled`],In={key:0,class:`rt-confirm`},Ln=[`disabled`],Rn=b({__name:`RoundtableDetail`,props:{snapshot:{},refreshing:{type:Boolean}},emits:[`refresh`],setup(e,{emit:t}){let d=e,v=t,b=c(``),w=c(``),T=c(``),E=c(``),D=c(!1),j=c(!1),M=c(3),P=c(30),F=c(30),I=c(5),L=l(()=>d.snapshot.room),R=l(()=>[`concluded`,`failed`,`cancelled`].includes(L.value.status)),z=l(()=>L.value.seats.every(e=>e.joinedAt)),B=l(()=>L.value.status===`active`&&L.value.phase===`discussion`&&(L.value.round??1)>1&&d.snapshot.currentTurn?.status===`pending`&&L.value.phaseIndex===0),V=l(()=>[`paused`,`waiting_input`].includes(L.value.status)&&d.snapshot.currentTurn&&![`pending`,`claimed`].includes(d.snapshot.currentTurn.status)),H=l(()=>d.snapshot.currentTurn&&d.snapshot.currentTurn.status!==`claimed`&&[`discussion`,`planning`].includes(L.value.phase)),U=l(()=>!d.snapshot.currentTurn||[`pending`,`claimed`].includes(d.snapshot.currentTurn.status)),W=e=>L.value.seats.find(t=>t.id===e)?.name??e??k(`系统`,`System`);a(()=>L.value.id,()=>{b.value=``,w.value=``,D.value=!1,j.value=!1}),a(()=>`${L.value.id}:${JSON.stringify(L.value.limits)}`,()=>{let e=L.value.limits;M.value=e.maxRounds,P.value=e.maxMessages,F.value=e.maxDurationMs/6e4,I.value=e.turnTimeoutMs/6e4},{immediate:!0});async function G(){if(!T.value){T.value=`update_limits`,w.value=``;try{await N.control(L.value.id,`update_limits`,L.value.revision,``,{maxRounds:M.value,maxMessages:P.value,maxDurationMs:Math.round(F.value*6e4),turnTimeoutMs:Math.round(I.value*6e4)}),v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`更新停止条件失败`,`Could not update limits`),v(`refresh`)}finally{T.value=``}}}async function K(e){if(!T.value){T.value=e,w.value=``;try{await N.control(L.value.id,e,L.value.revision,E.value.trim()),D.value=!1,j.value=!1,E.value=``,v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`操作失败`,`Action failed`),v(`refresh`)}finally{T.value=``}}}async function ee(){if(!(!b.value.trim()||T.value)){T.value=`message`,w.value=``;try{await N.message(L.value.id,b.value.trim()),b.value=``,v(`refresh`)}catch(e){w.value=e instanceof Error?e.message:k(`发送失败`,`Could not send`)}finally{T.value=``}}}let te={start:`开始圆桌 · Starting roundtable`,pause:`暂停圆桌 · Pausing roundtable`,resume:`恢复圆桌 · Resuming roundtable`,stop:`停止圆桌 · Stopping roundtable`,advance_phase:`推进圆桌阶段 · Advancing roundtable phase`,next_round:`开启下一轮讨论 · Starting next discussion round`,retry_turn:`重试当前回合 · Retrying current turn`,skip_turn:`记录跳过回合 · Recording skipped turn`,complete:`记录人工验收 · Recording human acceptance`,update_limits:`更新圆桌停止条件 · Updating roundtable limits`};return(t,a)=>(r(),x(`div`,Bt,[y(`section`,Vt,[y(`div`,Ht,[y(`span`,Ut,m(_(A)(L.value.mode))+` · `+m(L.value.binding?.projectId||_(k)(`独立临时任务`,`Independent temporary task`)),1),y(`span`,{class:`rt-tag`,"data-status":L.value.status},m(_(A)(L.value.status)),9,Wt)]),y(`h1`,null,m(L.value.goal),1),y(`div`,Gt,[y(`span`,null,m(_(k)(`阶段`,`Phase`))+`: `+m(_(A)(L.value.phase)),1),y(`span`,null,m(_(k)(`讨论轮数`,`Discussion rounds`))+`: `+m(L.value.round??0)+` / `+m(L.value.limits.maxRounds),1),y(`span`,null,m(_(k)(`Agent 发言`,`Agent messages`))+`: `+m(L.value.agentMessageCount??0)+` / `+m(L.value.limits.maxMessages),1),y(`span`,null,m(_(k)(`总时限`,`Time limit`))+`: `+m(Math.round(L.value.limits.maxDurationMs/6e4))+` `+m(_(k)(`分钟`,`min`)),1)]),L.value.stopReason?(r(),x(`p`,Kt,m(_(k)(`当前原因`,`Current reason`))+`: `+m(L.value.stopReason),1)):u(``,!0),y(`div`,qt,[L.value.status===`draft`?(r(),x(`button`,{key:0,class:`rt-primary`,type:`button`,disabled:!!T.value||!z.value,onClick:a[0]||=e=>K(`start`)},m(_(k)(`开始圆桌`,`Start roundtable`)),9,Jt)):u(``,!0),L.value.status===`active`?(r(),x(`button`,{key:1,type:`button`,disabled:!!T.value,onClick:a[1]||=e=>K(`pause`)},m(_(k)(`暂停`,`Pause`)),9,Yt)):u(``,!0),[`paused`,`waiting_auth`,`waiting_input`].includes(L.value.status)&&!(L.value.phase===`synthesis`&&e.snapshot.outcome&&!e.snapshot.currentTurn)?(r(),x(`button`,{key:2,type:`button`,disabled:!!T.value||!U.value,onClick:a[2]||=e=>K(`resume`)},m(_(k)(`恢复`,`Resume`)),9,Xt)):u(``,!0),R.value?u(``,!0):(r(),x(`button`,{key:3,type:`button`,disabled:!!T.value,onClick:a[3]||=e=>D.value=!D.value},m(_(k)(`停止`,`Stop`)),9,Zt)),y(`button`,{type:`button`,disabled:e.refreshing||!!T.value,onClick:a[4]||=e=>v(`refresh`)},m(_(k)(`刷新`,`Refresh`)),9,Qt)]),L.value.status===`draft`&&!z.value?(r(),x(`p`,$t,m(_(k)(`先邀请所有席位,在各参与端完成预检并加入后开始。选择平台不会自动启动工作端。`,`Invite every seat and complete preflight and joining on each worker before starting. Choosing an adapter does not start a worker.`)),1)):u(``,!0),T.value&&T.value!==`message`?(r(),S(C,{key:2,variant:`inline`,label:te[T.value]||`更新圆桌 · Updating roundtable`},null,8,[`label`])):u(``,!0),D.value?(r(),x(`div`,en,[y(`p`,null,m(_(k)(`停止将拒绝新回合并请求取消当前运行。外部进程是否已取消,以工作端回执为准。`,`Stopping blocks new turns and requests cancellation of the current run. Worker receipts confirm whether external execution stopped.`)),1),y(`label`,tn,[o(m(_(k)(`停止原因(可选)`,`Stop reason (optional)`)),1),s(y(`input`,{"onUpdate:modelValue":a[5]||=e=>E.value=e,maxlength:`2000`},null,512),[[f,E.value]])]),y(`button`,{type:`button`,disabled:!!T.value,onClick:a[6]||=e=>K(`stop`)},m(_(k)(`确认停止`,`Confirm stop`)),9,nn)])):u(``,!0),w.value?(r(),x(`p`,rn,m(w.value),1)):u(``,!0),R.value?u(``,!0):(r(),x(`details`,an,[y(`summary`,null,m(_(k)(`由你修改停止条件`,`Change limits explicitly`)),1),y(`p`,on,m(_(k)(`修改后仍需明确恢复;总时限从最初开始时间计算。服务端限制可设置的最大预算,Agent 不会自动扩展。`,`After updating, resume explicitly. Total duration is measured from the original start. The server caps the allowed budget; agents do not increase it automatically.`)),1),y(`form`,{class:`rt-budget-form`,onSubmit:h(G,[`prevent`])},[y(`div`,sn,[y(`label`,cn,[o(m(_(k)(`讨论轮数`,`Discussion rounds`)),1),s(y(`input`,{"onUpdate:modelValue":a[7]||=e=>M.value=e,type:`number`,min:`1`,max:`3`,required:``},null,512),[[f,M.value,void 0,{number:!0}]])]),y(`label`,ln,[o(m(_(k)(`Agent 发言上限`,`Agent message limit`)),1),s(y(`input`,{"onUpdate:modelValue":a[8]||=e=>P.value=e,type:`number`,min:`1`,max:`30`,required:``},null,512),[[f,P.value,void 0,{number:!0}]])]),y(`label`,un,[o(m(_(k)(`总时限(分钟)`,`Total minutes`)),1),s(y(`input`,{"onUpdate:modelValue":a[9]||=e=>F.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`30`,required:``},null,512),[[f,F.value,void 0,{number:!0}]])]),y(`label`,dn,[o(m(_(k)(`单回合(分钟)`,`Minutes per turn`)),1),s(y(`input`,{"onUpdate:modelValue":a[10]||=e=>I.value=e,type:`number`,min:`0.1`,step:`0.1`,max:`5`,required:``},null,512),[[f,I.value,void 0,{number:!0}]])])]),y(`button`,{type:`submit`,disabled:!!T.value},m(_(k)(`确认修改停止条件`,`Confirm limit changes`)),9,fn)],32)]))]),n(at,{room:L.value,"active-seat-id":e.snapshot.currentTurn?.seatId,onChanged:a[11]||=e=>v(`refresh`)},null,8,[`room`,`active-seat-id`]),y(`section`,pn,[y(`div`,mn,[y(`h2`,hn,m(_(k)(`公开讨论`,`Shared discussion`)),1),y(`span`,null,m(e.snapshot.messages.length)+` `+m(_(k)(`条记录`,`records`)),1)]),e.snapshot.currentTurn?(r(),x(`div`,gn,[y(`strong`,null,m(_(k)(`当前回合`,`Current turn`))+` · `+m(W(e.snapshot.currentTurn.seatId)),1),y(`span`,null,m(_(A)(e.snapshot.currentTurn.status))+` · `+m(_(A)(e.snapshot.currentTurn.phase)),1),e.snapshot.currentTurn.deadline?(r(),x(`small`,_n,m(_(k)(`期限`,`Deadline`))+`: `+m(_(O)(e.snapshot.currentTurn.deadline)),1)):u(``,!0)])):u(``,!0),y(`div`,vn,[(r(!0),x(p,null,i(e.snapshot.messages,e=>(r(),x(`article`,{key:e.id,class:g([`rt-message`,{"rt-message-user":[`user`,`human`].includes(e.kind),"rt-message-system":e.kind===`system`}])},[y(`div`,yn,[y(`strong`,null,[o(m(e.kind===`human`?_(k)(`你`,`You`):W(e.seatId)),1),e.toSeatId?(r(),x(p,{key:0},[o(` → `+m(W(e.toSeatId)),1)],64)):u(``,!0)]),y(`span`,null,m(_(A)(e.kind))+` · #`+m(e.seq),1)]),y(`p`,bn,m(e.body),1),y(`small`,null,m(_(O)(e.createdAt)),1)],2))),128)),e.snapshot.messages.length?u(``,!0):(r(),x(`p`,xn,m(_(k)(`这里会保存按顺序发布的提案、审查、交接和补充要求。`,`Ordered proposals, reviews, handoffs and your additions will appear here.`)),1))]),e.snapshot.hasMore?(r(),x(`button`,{key:1,type:`button`,disabled:e.refreshing,onClick:a[12]||=e=>v(`refresh`)},m(_(k)(`读取后续消息`,`Load remaining messages`)),9,Sn)):u(``,!0),R.value?u(``,!0):(r(),x(`form`,{key:2,class:`rt-input-form`,onSubmit:h(ee,[`prevent`])},[y(`label`,Cn,[o(m(_(k)(`补充要求`,`Add a requirement`)),1),s(y(`textarea`,{"onUpdate:modelValue":a[13]||=e=>b.value=e,maxlength:`16000`,rows:`3`,placeholder:_(k)(`所有获授权席位可见。不要填写凭据或他人的私有记忆。`,`Visible to all authorized seats. Keep credentials and others’ private memory out.`)},null,8,wn),[[f,b.value]])]),y(`button`,{type:`submit`,disabled:!b.value.trim()||!!T.value},[T.value===`message`?(r(),S(C,{key:0,variant:`inline`,label:`发送补充要求 · Sending requirement`})):(r(),x(`span`,En,m(_(k)(`发送`,`Send`)),1))],8,Tn)],32)),R.value?u(``,!0):(r(),x(`details`,Dn,[y(`summary`,null,m(_(k)(`主持与恢复操作`,`Moderation and recovery`)),1),y(`p`,On,m(_(k)(`每位参与者完成回合后自动安排下一位和下一轮。完整一轮之后,可在下一轮开始前提前推进阶段。服务端检查阶段、预算与任务依赖,必需实施和审查不能跳过。`,`Turns and rounds advance automatically as participants finish. After a complete round, you may advance the phase before the next round starts. The server checks phases, limits and dependencies; required implementation and review cannot be skipped.`)),1),y(`label`,kn,[o(m(_(k)(`操作原因(跳过回合时必填)`,`Reason (required when skipping a turn)`)),1),s(y(`input`,{"onUpdate:modelValue":a[14]||=e=>E.value=e,maxlength:`2000`},null,512),[[f,E.value]])]),y(`div`,An,[y(`button`,{type:`button`,disabled:!!T.value||!B.value,onClick:a[15]||=e=>K(`advance_phase`)},m(_(k)(`提前推进阶段`,`Advance phase early`)),9,jn),y(`button`,{type:`button`,disabled:!!T.value||!V.value,onClick:a[16]||=e=>K(`retry_turn`)},m(_(k)(`重试回合`,`Retry turn`)),9,Mn),y(`button`,{type:`button`,disabled:!!T.value||!H.value||!E.value.trim(),onClick:a[17]||=e=>K(`skip_turn`)},m(_(k)(`记录并跳过回合`,`Record and skip turn`)),9,Nn)])]))]),n(Ot,{snapshot:e.snapshot},null,8,[`snapshot`]),n(zt,{snapshot:e.snapshot},null,8,[`snapshot`]),L.value.status===`waiting_input`&&L.value.phase===`synthesis`&&e.snapshot.outcome?(r(),x(`section`,Pn,[y(`h2`,null,m(_(k)(`由你验收`,`Your acceptance`)),1),y(`p`,null,m(_(k)(`检查结论、保留分歧、产物和验证报告后,明确记录是否接受交付。人工接受不会制造模型用量或工作进程证据。`,`Review the conclusion, dissent, artifacts and verification reports before accepting delivery. Acceptance does not create model usage or worker evidence.`)),1),y(`button`,{type:`button`,disabled:!!T.value,onClick:a[18]||=e=>j.value=!j.value},m(_(k)(`检查并接受交付`,`Review and accept delivery`)),9,Fn),j.value?(r(),x(`div`,In,[y(`p`,null,m(_(k)(`此操作记录你的人工验收,并结束本圆桌。`,`This records your acceptance and concludes this room.`)),1),y(`button`,{class:`rt-primary`,type:`button`,disabled:!!T.value,onClick:a[19]||=e=>K(`complete`)},m(_(k)(`确认接受交付`,`Confirm acceptance`)),9,Ln),y(`button`,{type:`button`,onClick:a[20]||=e=>j.value=!1},m(_(k)(`继续检查`,`Keep reviewing`)),1)])):u(``,!0)])):u(``,!0)]))}});function zn(t){let n=c([]),r=c(null),i=c(!1),o=c(``),s=c(!1),l=0,u=!1,d;async function f(){if(i.value||u)return;let e=l,a=t.value;i.value=!0;try{let t=r.value?.messages.at(-1)?.seq??0,i=a?await N.read(a,t):await N.list();if(u||e!==l)return;if(`room`in i){let e=new Map([...r.value?.messages??[],...i.messages].map(e=>[e.id,e]));r.value={...i,messages:[...e.values()].sort((e,t)=>e.seq-t.seq)}}else n.value=i.rooms;s.value=!0,o.value=``}catch(t){!u&&e===l&&(o.value=t instanceof Error?t.message:k(`读取圆桌失败`,`Could not read roundtable`))}finally{e===l&&(i.value=!1)}}function p(){u||(d=setTimeout(async()=>{await f(),p()},4e3))}return a(t,async()=>{l++,i.value=!1,r.value=null,o.value=``,s.value=!1;let e=l;d&&clearTimeout(d),await f(),e===l&&p()},{immediate:!0}),e(()=>{u=!0,l++,d&&clearTimeout(d)}),{rooms:n,snapshot:r,loading:i,loaded:s,error:o,refresh:f}}var Bn={class:`rt-workspace`},Vn={class:`rt-page-header`},Hn={class:`rt-breadcrumb`},Un={class:`rt-actions`},Wn={class:`rt-page-content`},Gn={key:0,class:`rt-error rt-panel`,role:`alert`},Kn=[`disabled`],qn={key:2,class:`rt-refresh-status`},Jn={class:`rt-intro`},Yn={class:`rt-panel`,"aria-labelledby":`rt-list-title`},Xn={class:`rt-section-heading`},Zn={id:`rt-list-title`},Qn=[`disabled`],$n={key:0,class:`rt-room-list`},er={class:`rt-section-heading`},tr={class:`rt-tag`},nr={key:1,class:`rt-empty`},rr=b({__name:`RoundtablesPage`,setup(e){let a=T(),s=w(),d=l(()=>typeof a.params.roomId==`string`?a.params.roomId:``),{rooms:f,snapshot:h,loading:g,loaded:v,error:b,refresh:j}=zn(d),M=c(!1),N=l(()=>d.value?!!h.value:v.value||M.value);async function P(e){M.value=!1,await s.push(`/roundtables/${encodeURIComponent(e)}`)}return(e,a)=>(r(),x(`main`,Bn,[y(`header`,Vn,[y(`div`,null,[n(_(E),{class:`rt-brand`,to:`/`},{default:t(()=>[a[4]||=o(`Fuli `,-1),y(`span`,null,m(_(k)(`复利`,``)),1)]),_:1}),y(`div`,Hn,[n(_(E),{to:`/roundtables`},{default:t(()=>[o(m(_(k)(`Agent 圆桌`,`Agent Roundtable`)),1)]),_:1})])]),y(`div`,Un,[d.value?(r(),S(_(E),{key:0,to:`/roundtables`},{default:t(()=>[o(m(_(k)(`全部圆桌`,`All roundtables`)),1)]),_:1})):u(``,!0),n(_(E),{to:`/project-agents`},{default:t(()=>[o(m(_(k)(`Agent 目录`,`Agent directory`)),1)]),_:1}),n(D)])]),y(`div`,Wn,[_(b)?(r(),x(`div`,Gn,[y(`strong`,null,m(_(k)(`读取失败,保留已加载内容`,`Could not refresh; loaded content is preserved`)),1),y(`p`,null,m(_(b)),1),y(`button`,{type:`button`,disabled:_(g),onClick:a[0]||=(...e)=>_(j)&&_(j)(...e)},m(_(k)(`重试`,`Retry`)),9,Kn)])):u(``,!0),_(g)&&!N.value?(r(),S(C,{key:1,label:d.value?`读取圆桌与公开消息 · Loading roundtable and shared messages`:`读取圆桌列表 · Loading roundtable list`},null,8,[`label`])):u(``,!0),_(g)&&N.value?(r(),x(`div`,qn,[n(C,{variant:`inline`,label:d.value?`刷新圆桌与公开消息 · Refreshing roundtable and shared messages`:`刷新圆桌列表 · Refreshing roundtable list`},null,8,[`label`])])):u(``,!0),_(h)?(r(),S(Rn,{key:_(h).room.id,snapshot:_(h),refreshing:_(g),onRefresh:_(j)},null,8,[`snapshot`,`refreshing`,`onRefresh`])):d.value?u(``,!0):(r(),x(p,{key:4},[y(`section`,Jn,[y(`div`,null,[y(`h1`,null,m(_(k)(`让不同 Agent 围绕同一个目标工作。`,`Bring different agents around one shared goal.`)),1),y(`p`,null,m(_(k)(`身份和长期知识由 Fuli 管理。本次讨论、分工、回合与结果留在圆桌里,执行由获授权的参与端完成。`,`Fuli manages identity and lasting knowledge. This roundtable keeps discussion, tasks, turns and outcomes; authorized participant workers perform execution.`)),1)]),y(`button`,{class:`rt-primary`,type:`button`,onClick:a[1]||=e=>M.value=!M.value},m(_(k)(`创建圆桌`,`Create roundtable`)),1)]),M.value?(r(),S(q,{key:0,onCreated:P,onCancel:a[2]||=e=>M.value=!1})):u(``,!0),y(`section`,Yn,[y(`div`,Xn,[y(`h2`,Zn,m(_(k)(`你的圆桌`,`Your roundtables`)),1),y(`button`,{type:`button`,disabled:_(g),onClick:a[3]||=(...e)=>_(j)&&_(j)(...e)},m(_(k)(`刷新`,`Refresh`)),9,Qn)]),_(f).length?(r(),x(`div`,$n,[(r(!0),x(p,null,i(_(f),e=>(r(),S(_(E),{key:e.id,class:`rt-room-card`,to:`/roundtables/${encodeURIComponent(e.id)}`},{default:t(()=>[y(`div`,er,[y(`span`,tr,m(_(A)(e.status)),1),y(`small`,null,m(_(A)(e.mode)),1)]),y(`h3`,null,m(e.goal),1),y(`p`,null,m(_(A)(e.phase))+` · `+m(e.seats.length)+` `+m(_(k)(`位参与者`,`participants`)),1),y(`small`,null,m(_(O)(e.updatedAt||e.createdAt)),1)]),_:2},1032,[`to`]))),128))])):!_(g)&&!_(b)?(r(),x(`p`,nr,m(_(k)(`还没有圆桌。创建一个目标明确的讨论或协作任务,邀请独立参与者加入。`,`No roundtables yet. Create a focused discussion or collaborative task and invite independent participants.`)),1)):u(``,!0)])],64))])]))}});export{rr as default};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RoundtablesPage-ByVeZlgC.js","assets/i18n-D2CJkEYK.js","assets/GrowthLoading-KTjE2e50.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/GrowthLoading-CIuQ1icy.css","assets/useApi-CROJJdhE-BtFMXFjw.js","assets/vue-router-DkaTtPn0.js","assets/copy-D2LqwtPZ.js","assets/RoundtablesPage-DCbIBnBq.css","assets/SharedJefaReportPage-CjpJ9bkk.js","assets/shared-report-DEK9wvhl.js","assets/client-B2cRl-7c.js","assets/ProjectScopePicker-BwB7gK-7.js","assets/ProjectScopePicker-DYA7L1Ex.css","assets/shared-report-CGlCpmNd.css","assets/SharedJefaReportPage-D92FSPru.css","assets/OverviewPage-0mYifpjp.js","assets/console-BtPqo79j.js","assets/profile-model-BQO4zNs9.js","assets/attention-store-Dk-_P4Oi.js","assets/paths-CDREouhi.js","assets/agent-work-summary-LeW-Al_S.js","assets/useAgentRoster-BAPKWZ9y.js","assets/OverviewPage-0CFWCG9-.css","assets/PersonalProfilePage-JW6Muix6.js","assets/useModalDialog-D8tiJfbc.js","assets/SearchableSelect-f7EHbyDL.js","assets/KnowledgeInspector-BcNjgw9H.js","assets/model-S7ehAjky.js","assets/conversation-launcher-settings-jkHRmWai.js","assets/KnowledgeInspector-pgDELOEf.css","assets/KnowledgeEditDialog-n9trHQ5d.js","assets/identity-B3zEw-1u.js","assets/KnowledgeEditDialog-B3x8vs3c.css","assets/personal-profile-graph--GG3Mizo.js","assets/PersonalProfilePage-Chv2a2pi.css","assets/WritingTastePage-DaHWY61P.js","assets/UiDisclosure-CWlC91Zt.js","assets/WritingTastePage-SMGF39mf.css","assets/PersonalProjectsPage-CRbi64JP.js","assets/KnowledgeWorkspace-2FvQadhB.js","assets/KnowledgeWorkspace-sb8OJ97I.css","assets/KnowledgeOrganizerPage-DMBpGxLr.js","assets/KnowledgeOrganizerPage-BzgxP-nG.css","assets/AgentsDirectoryPage-BTEfKZjF.js","assets/AgentHand-eGsXoGSq.js","assets/AgentHand-Y83Oo36U.css","assets/ProjectAgentFirstTask-DJ0wTbh8.js","assets/ProjectAgentFirstTask-6afJ8HUe.css","assets/EmployeeRecruitDialog-D11blfwU.js","assets/catalog-DN72452f.js","assets/EmployeeRecruitDialog-BrIMRblq.css","assets/agent-profile-CBvJHGjt.css","assets/AgentProfilePage-D8Tvayn7.js","assets/AgentName-Dtmu9Ff5.js","assets/AgentName-BQTFCWn0.css","assets/AgentConversations-DOuZgUeA.js","assets/AgentConversations-DS8h3yKn.css","assets/ProjectAgentsPage-CQemHFxy.js","assets/ProjectAgentsPage-BgQLIpxg.css","assets/EmployeeWorkbenchPage-CK2BAoGt.js","assets/EmployeeWorkbenchPage-BcEzYt65.css","assets/PublicProjectsPage-CB272Sq-.js","assets/KnowledgePage-POkCMW8f.js","assets/ReviewPage-CelTZU4C.js","assets/ConnectionsPage-DwOIcvl9.js","assets/ConnectionsPage-C1w99yN3.css","assets/SettingsPage-nAijmm5f.js","assets/SettingsPage-5g7mRN2F.css","assets/AboutPage-D-GyJNv1.js","assets/fuli-logo-Bu9WBuQe.js","assets/AboutPage-c4dQpUiP.css","assets/NotFoundPage-BCMZbeB8.js"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,F as r,I as i,M as a,P as o,Q as s,R as c,S as l,V as u,X as d,_ as f,a as p,b as m,g as h,h as g,it as _,j as v,k as y,m as b,nt as x,p as S,r as C,s as w,tt as T,u as E,v as D,w as O,x as k,y as A,z as j}from"./i18n-D2CJkEYK.js";import{n as M,t as N}from"./console-BtPqo79j.js";import{t as P}from"./GrowthLoading-KTjE2e50.js";import{t as F}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{m as I}from"./useApi-CROJJdhE-BtFMXFjw.js";import{i as L,n as R,r as z,t as B}from"./vue-router-DkaTtPn0.js";import{t as V}from"./fuli-logo-Bu9WBuQe.js";import{n as H}from"./client-B2cRl-7c.js";import{a as ee,n as U}from"./copy-D2LqwtPZ.js";import{a as W,s as G}from"./catalog-DN72452f.js";import{n as K,t as q}from"./AgentHand-eGsXoGSq.js";import{n as te}from"./profile-model-BQO4zNs9.js";import{n as ne,t as re}from"./attention-store-Dk-_P4Oi.js";import{t as ie}from"./useModalDialog-D8tiJfbc.js";import{t as ae}from"./UiDisclosure-CWlC91Zt.js";import{n as oe,t as se}from"./paths-CDREouhi.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ce=[`type`,`disabled`,`aria-busy`],J=O({__name:`UiButton`,props:{variant:{default:`default`},type:{default:`button`},busy:{type:Boolean,default:!1},busyLabel:{default:``},disabled:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),k(`button`,{type:e.type,class:x([`ui-button`,[`ui-button--${e.variant}`,{"ui-button--icon":e.icon}]]),disabled:e.disabled||e.busy,"aria-busy":e.busy||void 0},[e.busy?(a(),A(P,{key:0,variant:`inline`,label:e.busyLabel},null,8,[`label`])):r(t.$slots,`default`,{},void 0,void 0,1)],10,ce))}}),Y={name:`fuli-context`,version:`0.9.0`,description:`Local-first collaboration relationship graph for AI agents.`,type:`module`,files:[`README.zh-CN.md`,`npm-shrinkwrap.json`,`src/`,`dist/web/`,`docs/external-knowledge-architecture.md`,`docs/public-personal-architecture.md`,`docs/project-agent-memory.md`,`docs/agent-conversations-and-collaboration.md`,`docs/employee-agents.md`,`docs/agent-interface-architecture.md`,`docs/roundtable-beta-testing.md`,`docs/roundtable-beta-validation.md`,`docs/roundtable-research.md`,`examples/external-knowledge/markdown-folder.mjs`,`graph-provider/Dockerfile`,`graph-provider/pyproject.toml`,`graph-provider/fuli_graph/*.py`,`graph-provider/fuli_graph/**/*.py`,`skills/`,`compose.graphiti.yml`],bin:{fl:`src/cli.js`,fuli:`src/cli.js`},keywords:[`ai-agent`,`mcp`,`context`,`knowledge-graph`,`local-first`,`codex`,`claude-code`],scripts:{mcp:`node src/mcp-server.js`,dev:`run-p dev:server dev:web`,"dev:server":`node src/server.js`,"dev:web":`vite`,build:`run-s typecheck:web build:web`,"build:web":`vite build`,"typecheck:web":`vue-tsc --noEmit -p tsconfig.app.json`,"test:node":`node --test`,"test:web":`vitest run --config vitest.config.ts`,"test:package":`node scripts/package-smoke.js`,"test:knowledge:live":`node acceptance/knowledge-live.js`,"test:external-knowledge:live":`node scripts/validate-external-knowledge-live.js`,start:`node src/server.js`,"graph:setup":`node src/graphiti/setup.js`,"graph:up":`docker compose -f compose.graphiti.yml up -d --build`,"graph:down":`docker compose -f compose.graphiti.yml down`,"test:structure":`node --test test/source-structure.test.js`,pretest:`npm run build:web`,test:`run-s typecheck:web test:node test:web`,prepack:`npm run build`,prepublishOnly:`npm test`},engines:{node:`>=24.12`},repository:{type:`git`,url:`git+https://github.com/JevonsCode/fuli.git`},homepage:`https://jevonscode.github.io/fuli/`,bugs:{url:`https://github.com/JevonsCode/fuli/issues`},publishConfig:{access:`public`},license:`Apache-2.0`,dependencies:{"@a2a-js/sdk":`1.3.0`,"@hono/node-server":`2.0.12`,"@modelcontextprotocol/sdk":`^1.31.0`,zod:`^4.4.3`},devDependencies:{"@types/d3":`^7.4.3`,"@types/node":`^24.13.3`,"@vitejs/plugin-vue":`^6.0.8`,"@vue/test-utils":`^2.4.11`,"brace-expansion":`5.0.12`,d3:`^7.9.0`,jsdom:`^29.1.1`,linkedom:`^0.18.12`,"npm-run-all2":`^9.0.2`,pinia:`^4.0.2`,typescript:`~6.0.0`,vite:`^8.1.5`,vitest:`^4.1.10`,vue:`^3.5.42`,"vue-i18n":`^11.4.8`,"vue-router":`^5.2.0`,"vue-tsc":`^3.3.8`},overrides:{"@modelcontextprotocol/sdk":{"@hono/node-server":`2.0.12`},"brace-expansion":`$brace-expansion`,"fast-uri":`3.1.8`,qs:`6.16.0`}}.version,le=[`aria-label`],ue={class:`brand-mark-wrap`},de=[`src`],fe={class:`brand-copy`},pe={class:`brand-title-row`},me={class:`brand-name`},he=[`aria-label`,`aria-expanded`],ge={class:`brand-version`},_e={key:1,class:`brand-version`},ve={class:`brand-title-row`},ye={class:`brand-name`},be={class:`brand-version`},xe=[`aria-label`],Se=[`href`],Ce=F(O({__name:`BrandEasterEgg`,setup(t){let n=d(null),r=d(null),i=d(0),o=d(!1),s=d(!1),c=d(!1),l=d(null),u=f(()=>l.value?.status===`ready`&&l.value.updateAvailable&&!!l.value.latestVersion),h=f(()=>l.value?.latestVersion??``),g=f(()=>l.value?.packageUrl??`https://www.npmjs.com/package/fuli-context`),S=new AbortController,C=!1;function w(){i.value+=1,o.value=!0}function E(){o.value=!1}function O(){u.value&&(c.value=!c.value)}function A(e){C=!1,s.value=!1,c.value&&!n.value?.contains(e.target)&&(c.value=!1)}function j(e){e.key===`Tab`&&(C=!0),e.key===`Escape`&&c.value&&(e.preventDefault(),c.value=!1,y(()=>r.value?.focus()))}function M(){s.value=C}function N(){s.value=!1}return v(()=>{window.addEventListener(`pointerdown`,A,!0),window.addEventListener(`keydown`,j,!0),H(`/api/system/version`,{signal:S.signal}).then(e=>{l.value=e}).catch(()=>{})}),e(()=>{S.abort(),window.removeEventListener(`pointerdown`,A,!0),window.removeEventListener(`keydown`,j,!0)}),(e,t)=>(a(),k(`div`,{ref_key:`root`,ref:n,class:x([`brand-block`,{"is-sparkling":o.value,"is-keyboard-focused":s.value}])},[D(`button`,{class:`brand-effect-button`,type:`button`,"aria-label":T(p)(`console.brandEffect.aria`),onClick:w,onFocus:M,onBlur:N},[D(`span`,ue,[D(`img`,{class:`brand-mark`,src:T(V),alt:``,"aria-hidden":`true`},null,8,de),o.value?(a(),k(`span`,{key:`orbit-${i.value}`,class:`brand-orbit`,"aria-hidden":`true`})):m(``,!0)])],40,le),D(`span`,fe,[D(`span`,pe,[D(`span`,me,_(T(p)(`common.brand`)),1),u.value?(a(),k(`button`,{key:0,ref_key:`versionButton`,ref:r,class:`brand-version-button`,type:`button`,"aria-label":T(p)(`console.update.aria`,{version:h.value}),"aria-expanded":c.value,"aria-controls":`brand-update-details`,onClick:O},[D(`span`,ge,`v`+_(T(Y)),1),t[0]||=D(`span`,{class:`brand-update-dot`,"aria-hidden":`true`},null,-1)],8,he)):(a(),k(`span`,_e,`v`+_(T(Y)),1))]),t[1]||=D(`span`,{class:`brand-subtitle`},`Context Graph`,-1),o.value?(a(),k(`span`,{key:`copy-reflection-${i.value}`,class:`brand-copy-reflection`,"aria-hidden":`true`,onAnimationend:b(E,[`self`])},[D(`span`,ve,[D(`span`,ye,_(T(p)(`common.brand`)),1),D(`span`,be,`v`+_(T(Y)),1)])],32)):m(``,!0)]),c.value?(a(),k(`div`,{key:0,id:`brand-update-details`,class:`brand-update-popover`,role:`dialog`,"aria-label":T(p)(`console.update.title`,{version:h.value})},[D(`strong`,null,_(T(p)(`console.update.title`,{version:h.value})),1),D(`p`,null,_(T(p)(`console.update.copy`)),1),t[2]||=D(`code`,null,`fuli update --yes`,-1),D(`a`,{href:g.value,target:`_blank`,rel:`noopener noreferrer`},_(T(p)(`console.update.npmLink`)),9,Se)],8,xe)):m(``,!0)],2))}}),[[`__scopeId`,`data-v-68727ec7`]]),X=s(null);function we(e){let t=e.onError((t,n)=>{let r=e.resolve(n).href;!r.startsWith(`/`)||r.startsWith(`//`)||(X.value={href:r,resourceFailure:/dynamically imported module|module script|loading chunk|preload css|importing a module/i.test(String(t))})}),n=e.afterEach((e,t,n)=>{n||(X.value=null)});return()=>{t(),n()}}var Te={key:0,class:`navigation-recovery`,role:`alert`},Ee=[`href`],De=F(O({__name:`NavigationRecovery`,setup(e){return(e,t)=>T(X)?(a(),k(`div`,Te,[D(`div`,null,[D(`strong`,null,_(T(p)(`routes.loadFailure.title`)),1),D(`p`,null,_(T(p)(T(X).resourceFailure?`routes.loadFailure.resources`:`routes.loadFailure.message`)),1)]),D(`a`,{href:T(X).href,class:`quiet-button`},_(T(p)(`routes.loadFailure.reload`)),9,Ee),D(`button`,{type:`button`,class:`navigation-recovery-dismiss`,onClick:t[0]||=e=>X.value=null},_(T(p)(`routes.loadFailure.dismiss`)),1)])):m(``,!0)}}),[[`__scopeId`,`data-v-d154c242`]]),Oe={class:`nav-section-label`},ke={class:`employee-nav-mark`,"aria-hidden":`true`},Ae=[`src`],je={class:`nav-copy`},Me=F(O({__name:`EmployeeNavigation`,props:{personalSpaceId:{}},setup(e){let r=e;c(()=>r.personalSpaceId,e=>{G(e===`current`?``:e)},{immediate:!0});let i=f(()=>W.value.filter(e=>e.agentId&&e.agentStatus===`active`&&(e.runtime||e.workbench?.kind===`native`)));return(r,s)=>i.value.length?(a(),k(g,{key:0},[D(`p`,Oe,_(T(p)(`employees.directory`)),1),(a(!0),k(g,null,o(i.value,r=>(a(),k(`div`,{key:r.id,class:`employee-nav-row`},[n(T(B),{to:T(te)(e.personalSpaceId,r.agentId),class:`space-nav-button employee-nav`,"active-class":`is-active`},{default:t(()=>[D(`span`,ke,[T(K)(r.id)?(a(),k(`img`,{key:0,src:T(K)(r.id),alt:``},null,8,Ae)):(a(),k(g,{key:1},[l(_(r.name.slice(0,1)),1)],64))]),D(`span`,je,[D(`strong`,null,_(r.name),1)])]),_:2},1032,[`to`]),n(T(B),{class:`employee-workbench-link`,to:`/employees/${encodeURIComponent(r.id)}`,"aria-label":`${r.name} · ${T(p)(`agentProfiles.workbench`)}`,title:T(p)(`agentProfiles.workbench`)},{default:t(()=>[...s[0]||=[D(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,"aria-hidden":`true`},[D(`path`,{d:`M3 4h14v12H3zM3 8h14M8 8v8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`})],-1)]]),_:1},8,[`to`,`aria-label`,`title`]),n(q,{"agent-id":r.agentId},null,8,[`agent-id`])]))),128))],64)):m(``,!0)}}),[[`__scopeId`,`data-v-2f019061`]]);function Ne(e){let t=e.requestedAction.split(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RoundtablesPage-C9dXfWCl.js","assets/i18n-D2CJkEYK.js","assets/GrowthLoading-KTjE2e50.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/GrowthLoading-CIuQ1icy.css","assets/useApi-CROJJdhE-BtFMXFjw.js","assets/vue-router-DkaTtPn0.js","assets/copy-D2LqwtPZ.js","assets/RoundtablesPage-DCbIBnBq.css","assets/SharedJefaReportPage-CjpJ9bkk.js","assets/shared-report-DEK9wvhl.js","assets/client-B2cRl-7c.js","assets/ProjectScopePicker-BwB7gK-7.js","assets/ProjectScopePicker-DYA7L1Ex.css","assets/shared-report-CGlCpmNd.css","assets/SharedJefaReportPage-D92FSPru.css","assets/OverviewPage-0mYifpjp.js","assets/console-BtPqo79j.js","assets/profile-model-BQO4zNs9.js","assets/attention-store-Dk-_P4Oi.js","assets/paths-CDREouhi.js","assets/agent-work-summary-LeW-Al_S.js","assets/useAgentRoster-BAPKWZ9y.js","assets/OverviewPage-0CFWCG9-.css","assets/PersonalProfilePage-JW6Muix6.js","assets/useModalDialog-D8tiJfbc.js","assets/SearchableSelect-f7EHbyDL.js","assets/KnowledgeInspector-BcNjgw9H.js","assets/model-S7ehAjky.js","assets/conversation-launcher-settings-jkHRmWai.js","assets/KnowledgeInspector-pgDELOEf.css","assets/KnowledgeEditDialog-n9trHQ5d.js","assets/identity-B3zEw-1u.js","assets/KnowledgeEditDialog-B3x8vs3c.css","assets/personal-profile-graph--GG3Mizo.js","assets/PersonalProfilePage-Chv2a2pi.css","assets/WritingTastePage-DaHWY61P.js","assets/UiDisclosure-CWlC91Zt.js","assets/WritingTastePage-SMGF39mf.css","assets/PersonalProjectsPage-CRbi64JP.js","assets/KnowledgeWorkspace-2FvQadhB.js","assets/KnowledgeWorkspace-sb8OJ97I.css","assets/KnowledgeOrganizerPage-DMBpGxLr.js","assets/KnowledgeOrganizerPage-BzgxP-nG.css","assets/AgentsDirectoryPage-BTEfKZjF.js","assets/AgentHand-eGsXoGSq.js","assets/AgentHand-Y83Oo36U.css","assets/ProjectAgentFirstTask-DJ0wTbh8.js","assets/ProjectAgentFirstTask-6afJ8HUe.css","assets/EmployeeRecruitDialog-D11blfwU.js","assets/catalog-DN72452f.js","assets/EmployeeRecruitDialog-BrIMRblq.css","assets/agent-profile-CBvJHGjt.css","assets/AgentProfilePage-D8Tvayn7.js","assets/AgentName-Dtmu9Ff5.js","assets/AgentName-BQTFCWn0.css","assets/AgentConversations-DOuZgUeA.js","assets/AgentConversations-DS8h3yKn.css","assets/ProjectAgentsPage-CPgKVLgg.js","assets/ProjectAgentsPage-DeuRkMp1.css","assets/EmployeeWorkbenchPage-CK2BAoGt.js","assets/EmployeeWorkbenchPage-BcEzYt65.css","assets/PublicProjectsPage-CB272Sq-.js","assets/KnowledgePage-POkCMW8f.js","assets/ReviewPage-CelTZU4C.js","assets/ConnectionsPage-DwOIcvl9.js","assets/ConnectionsPage-C1w99yN3.css","assets/SettingsPage-nAijmm5f.js","assets/SettingsPage-5g7mRN2F.css","assets/AboutPage-D-GyJNv1.js","assets/fuli-logo-Bu9WBuQe.js","assets/AboutPage-c4dQpUiP.css","assets/NotFoundPage-BCMZbeB8.js"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,F as r,I as i,M as a,P as o,Q as s,R as c,S as l,V as u,X as d,_ as f,a as p,b as m,g as h,h as g,it as _,j as v,k as y,m as b,nt as x,p as S,r as C,s as w,tt as T,u as E,v as D,w as O,x as k,y as A,z as j}from"./i18n-D2CJkEYK.js";import{n as M,t as N}from"./console-BtPqo79j.js";import{t as P}from"./GrowthLoading-KTjE2e50.js";import{t as F}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{m as I}from"./useApi-CROJJdhE-BtFMXFjw.js";import{i as L,n as R,r as z,t as B}from"./vue-router-DkaTtPn0.js";import{t as V}from"./fuli-logo-Bu9WBuQe.js";import{n as H}from"./client-B2cRl-7c.js";import{a as ee,n as U}from"./copy-D2LqwtPZ.js";import{a as W,s as G}from"./catalog-DN72452f.js";import{n as K,t as q}from"./AgentHand-eGsXoGSq.js";import{n as te}from"./profile-model-BQO4zNs9.js";import{n as ne,t as re}from"./attention-store-Dk-_P4Oi.js";import{t as ie}from"./useModalDialog-D8tiJfbc.js";import{t as ae}from"./UiDisclosure-CWlC91Zt.js";import{n as oe,t as se}from"./paths-CDREouhi.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ce=[`type`,`disabled`,`aria-busy`],J=O({__name:`UiButton`,props:{variant:{default:`default`},type:{default:`button`},busy:{type:Boolean,default:!1},busyLabel:{default:``},disabled:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),k(`button`,{type:e.type,class:x([`ui-button`,[`ui-button--${e.variant}`,{"ui-button--icon":e.icon}]]),disabled:e.disabled||e.busy,"aria-busy":e.busy||void 0},[e.busy?(a(),A(P,{key:0,variant:`inline`,label:e.busyLabel},null,8,[`label`])):r(t.$slots,`default`,{},void 0,void 0,1)],10,ce))}}),Y={name:`fuli-context`,version:`0.10.0`,description:`Local-first collaboration relationship graph for AI agents.`,type:`module`,files:[`README.zh-CN.md`,`npm-shrinkwrap.json`,`src/`,`dist/web/`,`docs/external-knowledge-architecture.md`,`docs/public-personal-architecture.md`,`docs/project-agent-memory.md`,`docs/agent-conversations-and-collaboration.md`,`docs/employee-agents.md`,`docs/agent-interface-architecture.md`,`docs/roundtable.md`,`examples/external-knowledge/markdown-folder.mjs`,`graph-provider/Dockerfile`,`graph-provider/pyproject.toml`,`graph-provider/fuli_graph/*.py`,`graph-provider/fuli_graph/**/*.py`,`skills/`,`compose.graphiti.yml`],bin:{fl:`src/cli.js`,fuli:`src/cli.js`},keywords:[`ai-agent`,`mcp`,`context`,`knowledge-graph`,`local-first`,`codex`,`claude-code`],scripts:{mcp:`node src/mcp-server.js`,dev:`run-p dev:server dev:web`,"dev:server":`node src/server.js`,"dev:web":`vite`,build:`run-s typecheck:web build:web`,"build:web":`vite build`,"typecheck:web":`vue-tsc --noEmit -p tsconfig.app.json`,"test:node":`node --test`,"test:web":`vitest run --config vitest.config.ts`,"test:package":`node scripts/package-smoke.js`,"test:knowledge:live":`node acceptance/knowledge-live.js`,"test:external-knowledge:live":`node scripts/validate-external-knowledge-live.js`,start:`node src/server.js`,"graph:setup":`node src/graphiti/setup.js`,"graph:up":`docker compose -f compose.graphiti.yml up -d --build`,"graph:down":`docker compose -f compose.graphiti.yml down`,"test:structure":`node --test test/source-structure.test.js`,pretest:`npm run build:web`,test:`run-s typecheck:web test:node test:web`,prepack:`npm run build`,prepublishOnly:`npm test`},engines:{node:`>=24.12`},repository:{type:`git`,url:`git+https://github.com/JevonsCode/fuli.git`},homepage:`https://jevonscode.github.io/fuli/`,bugs:{url:`https://github.com/JevonsCode/fuli/issues`},publishConfig:{access:`public`},license:`Apache-2.0`,dependencies:{"@a2a-js/sdk":`1.3.0`,"@hono/node-server":`2.0.12`,"@modelcontextprotocol/sdk":`^1.31.0`,zod:`^4.4.3`},devDependencies:{"@types/d3":`^7.4.3`,"@types/node":`^24.13.3`,"@vitejs/plugin-vue":`^6.0.8`,"@vue/test-utils":`^2.4.11`,"brace-expansion":`5.0.12`,d3:`^7.9.0`,jsdom:`^29.1.1`,linkedom:`^0.18.12`,"npm-run-all2":`^9.0.2`,pinia:`^4.0.2`,typescript:`~6.0.0`,vite:`^8.1.5`,vitest:`^4.1.10`,vue:`^3.5.42`,"vue-i18n":`^11.4.8`,"vue-router":`^5.2.0`,"vue-tsc":`^3.3.8`},overrides:{"@modelcontextprotocol/sdk":{"@hono/node-server":`2.0.12`},"brace-expansion":`$brace-expansion`,"fast-uri":`3.1.8`,qs:`6.16.0`}}.version,le=[`aria-label`],ue={class:`brand-mark-wrap`},de=[`src`],fe={class:`brand-copy`},pe={class:`brand-title-row`},me={class:`brand-name`},he=[`aria-label`,`aria-expanded`],ge={class:`brand-version`},_e={key:1,class:`brand-version`},ve={class:`brand-title-row`},ye={class:`brand-name`},be={class:`brand-version`},xe=[`aria-label`],Se=[`href`],Ce=F(O({__name:`BrandEasterEgg`,setup(t){let n=d(null),r=d(null),i=d(0),o=d(!1),s=d(!1),c=d(!1),l=d(null),u=f(()=>l.value?.status===`ready`&&l.value.updateAvailable&&!!l.value.latestVersion),h=f(()=>l.value?.latestVersion??``),g=f(()=>l.value?.packageUrl??`https://www.npmjs.com/package/fuli-context`),S=new AbortController,C=!1;function w(){i.value+=1,o.value=!0}function E(){o.value=!1}function O(){u.value&&(c.value=!c.value)}function A(e){C=!1,s.value=!1,c.value&&!n.value?.contains(e.target)&&(c.value=!1)}function j(e){e.key===`Tab`&&(C=!0),e.key===`Escape`&&c.value&&(e.preventDefault(),c.value=!1,y(()=>r.value?.focus()))}function M(){s.value=C}function N(){s.value=!1}return v(()=>{window.addEventListener(`pointerdown`,A,!0),window.addEventListener(`keydown`,j,!0),H(`/api/system/version`,{signal:S.signal}).then(e=>{l.value=e}).catch(()=>{})}),e(()=>{S.abort(),window.removeEventListener(`pointerdown`,A,!0),window.removeEventListener(`keydown`,j,!0)}),(e,t)=>(a(),k(`div`,{ref_key:`root`,ref:n,class:x([`brand-block`,{"is-sparkling":o.value,"is-keyboard-focused":s.value}])},[D(`button`,{class:`brand-effect-button`,type:`button`,"aria-label":T(p)(`console.brandEffect.aria`),onClick:w,onFocus:M,onBlur:N},[D(`span`,ue,[D(`img`,{class:`brand-mark`,src:T(V),alt:``,"aria-hidden":`true`},null,8,de),o.value?(a(),k(`span`,{key:`orbit-${i.value}`,class:`brand-orbit`,"aria-hidden":`true`})):m(``,!0)])],40,le),D(`span`,fe,[D(`span`,pe,[D(`span`,me,_(T(p)(`common.brand`)),1),u.value?(a(),k(`button`,{key:0,ref_key:`versionButton`,ref:r,class:`brand-version-button`,type:`button`,"aria-label":T(p)(`console.update.aria`,{version:h.value}),"aria-expanded":c.value,"aria-controls":`brand-update-details`,onClick:O},[D(`span`,ge,`v`+_(T(Y)),1),t[0]||=D(`span`,{class:`brand-update-dot`,"aria-hidden":`true`},null,-1)],8,he)):(a(),k(`span`,_e,`v`+_(T(Y)),1))]),t[1]||=D(`span`,{class:`brand-subtitle`},`Context Graph`,-1),o.value?(a(),k(`span`,{key:`copy-reflection-${i.value}`,class:`brand-copy-reflection`,"aria-hidden":`true`,onAnimationend:b(E,[`self`])},[D(`span`,ve,[D(`span`,ye,_(T(p)(`common.brand`)),1),D(`span`,be,`v`+_(T(Y)),1)])],32)):m(``,!0)]),c.value?(a(),k(`div`,{key:0,id:`brand-update-details`,class:`brand-update-popover`,role:`dialog`,"aria-label":T(p)(`console.update.title`,{version:h.value})},[D(`strong`,null,_(T(p)(`console.update.title`,{version:h.value})),1),D(`p`,null,_(T(p)(`console.update.copy`)),1),t[2]||=D(`code`,null,`fuli update --yes`,-1),D(`a`,{href:g.value,target:`_blank`,rel:`noopener noreferrer`},_(T(p)(`console.update.npmLink`)),9,Se)],8,xe)):m(``,!0)],2))}}),[[`__scopeId`,`data-v-68727ec7`]]),X=s(null);function we(e){let t=e.onError((t,n)=>{let r=e.resolve(n).href;!r.startsWith(`/`)||r.startsWith(`//`)||(X.value={href:r,resourceFailure:/dynamically imported module|module script|loading chunk|preload css|importing a module/i.test(String(t))})}),n=e.afterEach((e,t,n)=>{n||(X.value=null)});return()=>{t(),n()}}var Te={key:0,class:`navigation-recovery`,role:`alert`},Ee=[`href`],De=F(O({__name:`NavigationRecovery`,setup(e){return(e,t)=>T(X)?(a(),k(`div`,Te,[D(`div`,null,[D(`strong`,null,_(T(p)(`routes.loadFailure.title`)),1),D(`p`,null,_(T(p)(T(X).resourceFailure?`routes.loadFailure.resources`:`routes.loadFailure.message`)),1)]),D(`a`,{href:T(X).href,class:`quiet-button`},_(T(p)(`routes.loadFailure.reload`)),9,Ee),D(`button`,{type:`button`,class:`navigation-recovery-dismiss`,onClick:t[0]||=e=>X.value=null},_(T(p)(`routes.loadFailure.dismiss`)),1)])):m(``,!0)}}),[[`__scopeId`,`data-v-d154c242`]]),Oe={class:`nav-section-label`},ke={class:`employee-nav-mark`,"aria-hidden":`true`},Ae=[`src`],je={class:`nav-copy`},Me=F(O({__name:`EmployeeNavigation`,props:{personalSpaceId:{}},setup(e){let r=e;c(()=>r.personalSpaceId,e=>{G(e===`current`?``:e)},{immediate:!0});let i=f(()=>W.value.filter(e=>e.agentId&&e.agentStatus===`active`&&(e.runtime||e.workbench?.kind===`native`)));return(r,s)=>i.value.length?(a(),k(g,{key:0},[D(`p`,Oe,_(T(p)(`employees.directory`)),1),(a(!0),k(g,null,o(i.value,r=>(a(),k(`div`,{key:r.id,class:`employee-nav-row`},[n(T(B),{to:T(te)(e.personalSpaceId,r.agentId),class:`space-nav-button employee-nav`,"active-class":`is-active`},{default:t(()=>[D(`span`,ke,[T(K)(r.id)?(a(),k(`img`,{key:0,src:T(K)(r.id),alt:``},null,8,Ae)):(a(),k(g,{key:1},[l(_(r.name.slice(0,1)),1)],64))]),D(`span`,je,[D(`strong`,null,_(r.name),1)])]),_:2},1032,[`to`]),n(T(B),{class:`employee-workbench-link`,to:`/employees/${encodeURIComponent(r.id)}`,"aria-label":`${r.name} · ${T(p)(`agentProfiles.workbench`)}`,title:T(p)(`agentProfiles.workbench`)},{default:t(()=>[...s[0]||=[D(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,"aria-hidden":`true`},[D(`path`,{d:`M3 4h14v12H3zM3 8h14M8 8v8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`})],-1)]]),_:1},8,[`to`,`aria-label`,`title`]),n(q,{"agent-id":r.agentId},null,8,[`agent-id`])]))),128))],64)):m(``,!0)}}),[[`__scopeId`,`data-v-2f019061`]]);function Ne(e){let t=e.requestedAction.split(`
3
3
  `).map(e=>e.trim()).filter(e=>/^[A-F][.、))::]\s*\S/.test(e));return/(?:选择|选项|choose|select|options?|pick)/iu.test(e.requestedAction)&&t.length>=2&&t.every((e,t)=>e[0]===String.fromCharCode(65+t))?t.map((e,t)=>({id:`option-${t}`,label:e,value:e})):({approval:[`agree`,`decline`],review:[`accept`,`revise`],permission:[`agree`,`decline`],blocked:[`resolved`,`clarify`],question:[`clarify`]}[e.kind]??[`clarify`]).map(e=>({id:e,label:p(`attention.replies.${e}`),value:p(`attention.replies.${e}`)}))}function Pe(e,t,n){if(e===`other`)return t.trim();let r=n.find(t=>t.id===e);return r?[r.value,t.trim()].filter(Boolean).join(`
4
4
 
5
- `):``}var Fe={class:`attention-question`},Ie={class:`attention-context`},Le=[`disabled`],Re=[`name`,`value`,`checked`,`onChange`],ze=[`name`,`checked`],Be={class:`attention-input`},Ve=[`for`],He=[`id`,`value`,`required`,`disabled`,`placeholder`],Ue={key:0,role:`alert`,class:`inline-error attention-response-error`},We={key:1,role:`alert`,class:`inline-error`},Ge={class:`attention-submit`},Ke=[`disabled`],qe={key:1},Je=F(O({__name:`AttentionReply`,props:{item:{},modelValue:{},busy:{type:Boolean},refreshing:{type:Boolean},error:{}},emits:[`update:modelValue`,`submit`],setup(e,{emit:n}){let r=e,i=n,s=f(()=>Ne(r.item)),c=f(()=>Pe(r.modelValue.choice,r.modelValue.text,s.value));function l(e){i(`update:modelValue`,{...r.modelValue,...e})}function u(){!r.busy&&!r.refreshing&&c.value&&c.value.length<=4096&&i(`submit`,c.value)}return(n,r)=>(a(),k(`form`,{class:`attention-reply`,onSubmit:b(u,[`prevent`])},[D(`div`,Fe,[D(`h3`,null,_(e.item.title),1),D(`p`,null,_(e.item.requestedAction),1)]),(a(),A(ae,{key:e.item.requestId,title:T(p)(`attention.context`)},{default:t(()=>[D(`p`,Ie,_(e.item.detail),1)]),_:1},8,[`title`])),D(`fieldset`,{disabled:e.busy||e.refreshing,class:`attention-choices`},[D(`legend`,null,_(T(p)(`attention.chooseReply`)),1),(a(!0),k(g,null,o(s.value,t=>(a(),k(`label`,{key:t.id,class:x([`attention-choice`,{"is-selected":e.modelValue.choice===t.id}])},[D(`input`,{type:`radio`,name:`reply-${e.item.requestId}`,value:t.id,checked:e.modelValue.choice===t.id,onChange:e=>l({choice:t.id})},null,40,Re),D(`span`,null,_(t.label),1)],2))),128)),D(`label`,{class:x([`attention-choice`,{"is-selected":e.modelValue.choice===`other`}])},[D(`input`,{type:`radio`,name:`reply-${e.item.requestId}`,value:`other`,checked:e.modelValue.choice===`other`,onChange:r[0]||=e=>l({choice:`other`})},null,40,ze),D(`span`,null,_(T(p)(`attention.other`)),1)],2)],8,Le),D(`div`,Be,[D(`label`,{for:`attention-${e.item.requestId}`},_(e.modelValue.choice===`other`?T(p)(`attention.response`):T(p)(`attention.note`)),9,Ve),D(`textarea`,{id:`attention-${e.item.requestId}`,value:e.modelValue.text,rows:`3`,maxlength:`4096`,required:e.modelValue.choice===`other`,disabled:e.busy||e.refreshing,placeholder:T(p)(`attention.placeholder`),onInput:r[1]||=t=>l({text:t.target.value,choice:e.modelValue.choice||`other`})},null,40,He)]),e.error?(a(),k(`p`,Ue,_(e.error),1)):m(``,!0),c.value.length>4096?(a(),k(`p`,We,_(T(p)(`attention.tooLong`)),1)):m(``,!0),D(`div`,Ge,[D(`p`,null,_(T(p)(`attention.replyHint`)),1),D(`button`,{type:`submit`,class:`primary-action`,disabled:e.busy||e.refreshing||!c.value||c.value.length>4096},[e.busy?(a(),A(P,{key:0,variant:`inline`,label:T(p)(`attention.sending`)},null,8,[`label`])):(a(),k(`span`,qe,_(T(p)(`attention.send`)),1))],8,Ke)])],32))}}),[[`__scopeId`,`data-v-6b64bc2c`]]),Ye=[`aria-label`],Xe={class:`attention-nav-status`},Ze=[`title`],Qe={class:`attention-header`},$e={id:`attention-title`},et={class:`ui-badge`},tt=[`disabled`,`aria-label`],nt={key:0,role:`alert`,class:`attention-error`},rt=[`disabled`],it={key:2,class:`attention-empty`},at=[`aria-busy`],ot=[`aria-label`],st={class:`attention-queue-toolbar`},ct=[`disabled`],lt={class:`attention-mobile-picker`},ut=[`disabled`],dt=[`value`],ft={class:`attention-request-list`},pt=[`aria-current`,`disabled`,`onClick`],mt={class:`attention-request-meta`},ht={class:`attention-request-project`},gt=[`disabled`],_t={class:`attention-detail-meta`},vt={class:`ui-badge`},yt=[`href`],bt=O({__name:`AgentAttentionCenter`,props:{personalSpaceId:{},projects:{}},setup(t){let r=t,i=ne(),s=d({}),y=d({}),b=d(``),S=d(``),C=0,w=d({}),O=f(()=>w.value[b.value]??``),j=f(()=>i.items.find(e=>e.requestId===b.value)),M=f({get:()=>y.value[b.value]??{choice:``,text:``},set:e=>{j.value&&(y.value[b.value]={...e,revision:j.value.revision})}}),N=f(()=>new Map(r.projects.map(e=>[e.project_id,e.profile.name]))),{dialogRef:F,initialFocusRef:I,onCancel:L,onKeydown:R}=ie(()=>i.open,()=>{S.value||(i.open=!1)});c(()=>r.personalSpaceId,e=>{C++,S.value=``,s.value={},y.value={},b.value=``,w.value={},i.setSpace(e===`current`?``:e)},{immediate:!0}),c(()=>i.open,async e=>{if(!e)return;let t=i.spaceId;try{let e=await H(`/api/project-agents?${new URLSearchParams({personalSpaceId:t})}`);t===i.spaceId&&(s.value=Object.fromEntries(e.map(e=>[e.agentId,e.profile.displayName||e.profile.name])))}catch{}}),c(()=>i.items,e=>{e.some(e=>e.requestId===b.value)||(b.value=e[0]?.requestId??``);for(let t of e){let e=y.value[t.requestId];e&&e.revision!==t.revision&&(y.value[t.requestId]={choice:``,text:e.text,revision:t.revision},w.value[t.requestId]=p(`attention.updated`))}});let z;function B(){document.visibilityState===`visible`&&!i.loading&&!i.open&&i.refresh()}v(()=>{z=setInterval(B,3e4),document.addEventListener(`visibilitychange`,B)}),e(()=>{clearInterval(z),document.removeEventListener(`visibilitychange`,B),i.setSpace(``)});async function V(e,t){if(S.value||!t.trim()||t.length>4096)return;let n=i.spaceId,r=++C;S.value=e.requestId,delete w.value[e.requestId];try{await i.respond(e,t),r===C&&n===i.spaceId&&delete y.value[e.requestId]}catch(t){r===C&&n===i.spaceId&&(w.value[e.requestId]=t instanceof Error?t.message:String(t),await i.refresh())}finally{r===C&&(S.value=``)}}return(e,t)=>(a(),k(g,null,[D(`button`,{class:`space-nav-button attention-nav`,"aria-label":T(i).total?`${T(p)(`attention.title`)} · ${T(p)(`attention.count`,{count:T(i).total})}`:T(p)(`attention.title`),type:`button`,onClick:t[0]||=e=>T(i).show()},[t[11]||=D(`span`,{class:`nav-icon nav-icon-review`,"aria-hidden":`true`},null,-1),D(`span`,null,_(T(p)(`attention.title`)),1),D(`span`,Xe,[n(q,{passive:``,"count-only":``}),T(i).error?(a(),k(`span`,{key:0,title:T(p)(`attention.loadError`)},`!`,8,Ze)):m(``,!0)])],8,Ye),(a(),A(h,{to:`body`},[T(i).open?(a(),k(`dialog`,{key:0,ref_key:`dialogRef`,ref:F,class:`attention-dialog`,"aria-labelledby":`attention-title`,onCancel:t[9]||=(...e)=>T(L)&&T(L)(...e),onKeydown:t[10]||=(...e)=>T(R)&&T(R)(...e)},[D(`header`,Qe,[D(`div`,null,[D(`h2`,$e,_(T(p)(`attention.title`)),1),D(`span`,et,_(T(i).agentId?T(i).counts[T(i).agentId]??T(i).filteredTotal:T(i).total),1)]),D(`button`,{ref_key:`initialFocusRef`,ref:I,class:`ui-button ui-button--ghost ui-button--icon`,type:`button`,disabled:!!S.value,"aria-label":T(p)(`attention.close`),onClick:t[1]||=e=>T(i).open=!1},`×`,8,tt)]),T(i).error?(a(),k(`div`,nt,[D(`span`,null,_(T(p)(`attention.loadError`)),1),D(`button`,{class:`ui-button`,disabled:T(i).loading,onClick:t[2]||=e=>T(i).refresh()},_(T(p)(`attention.refresh`)),9,rt)])):m(``,!0),T(i).loading&&!T(i).items.length?(a(),A(P,{key:1,variant:`page`,label:T(p)(`attention.loading`)},null,8,[`label`])):!T(i).items.length&&!T(i).error?(a(),k(`div`,it,[t[12]||=D(`span`,{"aria-hidden":`true`},`✓`,-1),D(`p`,null,_(T(p)(`attention.empty`)),1)])):T(i).items.length?(a(),k(`div`,{key:3,class:`attention-workspace`,"aria-busy":T(i).loading},[D(`aside`,{class:`attention-queue`,"aria-label":T(p)(`attention.queue`)},[D(`div`,st,[D(`span`,null,_(T(i).agentId?s.value[T(i).agentId]||T(p)(`attention.agentFallback`):T(p)(`attention.all`)),1),T(i).agentId||!T(i).error?(a(),k(`button`,{key:0,class:`ui-button ui-button--ghost`,disabled:T(i).loading||!!S.value,onClick:t[3]||=e=>T(i).agentId?T(i).show():T(i).refresh()},_(T(i).agentId?T(p)(`attention.all`):T(p)(`attention.refresh`)),9,ct)):m(``,!0)]),D(`label`,lt,[l(_(T(p)(`attention.selectRequest`)),1),u(D(`select`,{"onUpdate:modelValue":t[4]||=e=>b.value=e,disabled:!!S.value},[(a(!0),k(g,null,o(T(i).items,e=>(a(),k(`option`,{key:e.requestId,value:e.requestId},_(s.value[e.agentId]||T(p)(`attention.agentFallback`))+` · `+_(N.value.get(e.personalProjectId)||T(p)(`attention.projectFallback`))+` — `+_(e.title),9,dt))),128))],8,ut),[[E,b.value]])]),D(`div`,ft,[(a(!0),k(g,null,o(T(i).items,e=>(a(),k(`button`,{key:e.requestId,type:`button`,class:x([`attention-request`,{"is-selected":b.value===e.requestId}]),"aria-current":b.value===e.requestId?`true`:void 0,disabled:!!S.value,onClick:t=>b.value=e.requestId},[D(`span`,mt,[l(_(s.value[e.agentId]||T(p)(`attention.agentFallback`)),1),D(`span`,null,_(T(p)(`attention.kinds.${e.kind}`)),1)]),D(`strong`,null,_(e.title),1),D(`span`,ht,_(N.value.get(e.personalProjectId)||T(p)(`attention.projectFallback`)),1)],10,pt))),128))]),T(i).items.length<T(i).filteredTotal?(a(),k(`button`,{key:0,class:`ui-button attention-more`,type:`button`,disabled:T(i).loading||!!S.value,onClick:t[5]||=e=>T(i).more()},_(T(p)(`attention.more`)),9,gt)):m(``,!0)],8,ot),j.value?(a(),k(`section`,{key:j.value.requestId,class:`attention-detail`},[D(`div`,_t,[D(`span`,null,_(s.value[j.value.agentId]||T(p)(`attention.agentFallback`))+` · `+_(N.value.get(j.value.personalProjectId)||T(p)(`attention.projectFallback`)),1),D(`span`,vt,_(T(p)(`attention.kinds.${j.value.kind}`)),1)]),n(Je,{modelValue:M.value,"onUpdate:modelValue":t[6]||=e=>M.value=e,item:j.value,busy:S.value===j.value.requestId,refreshing:T(i).loading,error:O.value,onSubmit:t[7]||=e=>V(j.value,e)},null,8,[`modelValue`,`item`,`busy`,`refreshing`,`error`]),j.value.taskId&&!S.value?(a(),k(`a`,{key:0,class:`attention-task-link`,href:T(re)(j.value),onClick:t[8]||=e=>T(i).open=!1},_(T(p)(`attention.task`))+` ↗`,9,yt)):m(``,!0)])):m(``,!0)],8,at)):m(``,!0)],544)):m(``,!0)]))],64))}}),xt=[`routes.`,`common.`,`employees.`,`agentProfiles.`];function St(e,t=``){let n=typeof e==`string`&&e?e:t;return xt.some(e=>n.startsWith(e))?p(n):n}function Ct(e){if(typeof document>`u`)return;let t=St(e,`routes.overview.title`);document.title=`${t} · ${p(`common.brand`)}`}var wt={class:`app-shell`},Tt=[`onKeydown`],Et=[`aria-label`],Dt={class:`nav-section-label`},Ot={class:`nav-label`},kt={class:`nav-section-label nav-space-label`},At={class:`nav-copy`},jt={class:`nav-copy`},Mt={class:`nav-copy`},Nt={class:`nav-copy`},Pt={class:`nav-copy`},Ft={class:`nav-section-label nav-public-label`},It={class:`nav-copy`},Lt={class:`nav-section-label nav-tool-label`},Rt={class:`nav-label`},zt={class:`nav-label`},Bt={class:`nav-label`},Vt={class:`nav-section-label nav-about-label`},Ht={class:`nav-label`},Ut={class:`nav-label`},Wt={class:`sidebar-foot`},Gt=[`aria-label`],Kt={class:`runtime-status`},qt={class:`service-details`},Jt={class:`runtime-status`},Yt=[`aria-label`],Xt=[`inert`],Zt=[`aria-expanded`,`aria-label`],Qt={key:0,class:`workbench-host-label`},$t={key:1,class:`topbar-heading`},en={key:2,class:`topbar-actions`},tn=[`aria-label`],nn=F(O({__name:`ConsoleLayout`,setup(r){let o=N(),s=I(),u=d(!1),h=d(null),C=d(null),w=f(()=>o.activePersonalSpace?.id??`current`),E=f(()=>oe(w.value,`graph`)),O=f(()=>se(`personal`,w.value,`directory`)),M=f(()=>St(s.meta.title,`routes.overview.title`)),P=f(()=>s.meta.dedicatedWorkspace===!0),F=f(()=>o.publicRuntimeStatus===`ready`?p(`console.services.publicReady`):o.publicRuntimeStatus===`error`?p(`console.services.publicError`):p(`console.services.publicOffline`)),L=f(()=>{if(o.publicRuntimeStatus===`ready`){let e=o.state?.capabilities;return e?.browsePublicProjects&&e?.subscribeProject&&!e?.publishProject&&!e?.submitKnowledge&&!e?.reviewProposals?p(`console.services.publicBrowseSubscribe`):p(`console.services.publicAvailable`)}return o.publicRuntimeStatus===`error`?p(`console.services.localUnaffected`):p(`console.services.localOnly`)}),z=f(()=>o.state?.capabilities?.browsePublicProjects!==!1),V=f(()=>{let e=o.state?.capabilities;return e?.submitKnowledge!==!1||e?.reviewProposals===!0});v(()=>{o.runtimeStatus===`idle`&&o.refresh(),window.addEventListener(`resize`,H)}),e(()=>window.removeEventListener(`resize`,H));function H(){window.innerWidth>920&&(u.value=!1)}function W(e){if(!u.value||e.key!==`Tab`)return;let t=[...e.currentTarget.querySelectorAll(`button:not(:disabled), a[href], input:not(:disabled), [tabindex="0"]`)].filter(e=>e.getClientRects().length>0),n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}j(()=>{Ct(s.meta.title)}),c(()=>s.fullPath,()=>{u.value=!1});async function G(){u.value=!0,await y(),C.value?.focus({preventScroll:!0})}async function K(){u.value=!1,await y(),h.value?.focus({preventScroll:!0})}return(e,r)=>(a(),k(`div`,wt,[D(`aside`,{id:`console-primary-sidebar`,class:x([`sidebar`,{"is-mobile-open":u.value}]),onKeydown:[S(b(K,[`stop`]),[`esc`]),W]},[D(`button`,{ref_key:`mobileNavCloseRef`,ref:C,class:`mobile-nav-close quiet-button`,type:`button`,onClick:K},_(T(p)(`console.navigation.closeMenu`)),513),n(Ce),D(`nav`,{class:`primary-nav`,"aria-label":T(p)(`console.navigation.aria`)},[D(`p`,Dt,_(T(p)(`console.navigation.workspace`)),1),n(T(B),{to:`/`,"exact-active-class":`is-active`},{default:t(()=>[r[1]||=D(`span`,{class:`nav-icon nav-icon-overview`,"aria-hidden":`true`},null,-1),D(`span`,Ot,_(T(p)(`console.navigation.overview`)),1)]),_:1}),D(`p`,kt,_(T(p)(`console.navigation.personalSpace`)),1),n(T(B),{class:`space-nav-button personal-profile-button`,to:`/preferences`,"active-class":`is-active`},{default:t(()=>[r[2]||=D(`span`,{class:`nav-icon nav-icon-personal-profile`,"aria-hidden":`true`},null,-1),D(`span`,At,[D(`strong`,null,_(T(p)(`console.navigation.preferences`)),1)])]),_:1}),n(T(B),{class:`space-nav-button knowledge-organizer-button`,to:`/organize`,"active-class":`is-active`},{default:t(()=>[r[3]||=D(`span`,{class:`nav-icon nav-icon-knowledge-organizer`,"aria-hidden":`true`},null,-1),D(`span`,jt,[D(`strong`,null,_(T(p)(`console.navigation.organizer`)),1)])]),_:1}),n(T(B),{class:`space-nav-button personal-space-button`,to:E.value,"active-class":`is-active`},{default:t(()=>[r[4]||=D(`span`,{class:`nav-icon nav-icon-personal-project`,"aria-hidden":`true`},null,-1),D(`span`,Mt,[D(`strong`,null,_(T(p)(`console.navigation.personalProjects`)),1)])]),_:1},8,[`to`]),n(T(B),{class:`space-nav-button project-agents-button`,to:`/project-agents`,"active-class":`is-active`},{default:t(()=>[r[5]||=D(`span`,{class:`nav-icon nav-icon-project-agent`,"aria-hidden":`true`},null,-1),D(`span`,Nt,[D(`strong`,null,_(T(p)(`console.navigation.projectAgents`)),1)])]),_:1}),n(T(B),{class:`space-nav-button roundtables-button`,to:`/roundtables`,"active-class":`is-active`},{default:t(()=>[r[6]||=D(`span`,{class:`nav-icon nav-icon-project-agent`,"aria-hidden":`true`},null,-1),D(`span`,Pt,[D(`strong`,null,_(T(U)(`Agent 圆桌`,`Agent Roundtable`)),1),D(`small`,null,_(T(U)(`讨论 · 分工 · 结果`,`Discuss · assign · deliver`)),1)])]),_:1}),z.value?(a(),k(g,{key:0},[D(`p`,Ft,_(T(p)(`console.navigation.publicSpace`)),1),n(T(B),{class:`space-nav-button public-space-button`,to:`/public-projects`,"active-class":`is-active`},{default:t(()=>[r[7]||=D(`span`,{class:`nav-icon nav-icon-public-project`,"aria-hidden":`true`},null,-1),D(`span`,It,[D(`strong`,null,_(T(p)(`console.navigation.publicProjects`)),1)])]),_:1})],64)):m(``,!0),n(Me,{"personal-space-id":w.value},null,8,[`personal-space-id`]),n(bt,{"personal-space-id":w.value,projects:T(o).state?.personalProjects??[]},null,8,[`personal-space-id`,`projects`]),D(`p`,Lt,_(T(p)(`console.navigation.governance`)),1),n(T(B),{to:O.value,"active-class":`is-active`},{default:t(()=>[r[8]||=D(`span`,{class:`nav-icon nav-icon-knowledge-graph`,"aria-hidden":`true`},null,-1),D(`span`,Rt,_(T(p)(`console.navigation.knowledge`)),1)]),_:1},8,[`to`]),V.value?(a(),A(T(B),{key:1,to:`/review`,"active-class":`is-active`},{default:t(()=>[r[9]||=D(`span`,{class:`nav-icon nav-icon-review`,"aria-hidden":`true`},null,-1),D(`span`,zt,_(T(p)(`console.navigation.review`)),1)]),_:1})):m(``,!0),n(T(B),{to:`/connections`,"active-class":`is-active`},{default:t(()=>[r[10]||=D(`span`,{class:`nav-icon nav-icon-connections`,"aria-hidden":`true`},null,-1),D(`span`,Bt,_(T(p)(`console.navigation.connections`)),1)]),_:1}),D(`p`,Vt,_(T(p)(`console.navigation.aboutSection`)),1),n(T(B),{to:`/settings`,"active-class":`is-active`},{default:t(()=>[r[11]||=D(`span`,{class:`nav-icon nav-icon-settings`,"aria-hidden":`true`},null,-1),D(`span`,Ht,_(T(p)(`console.navigation.settings`)),1)]),_:1}),n(T(B),{to:`/about`,"active-class":`is-active`},{default:t(()=>[r[12]||=D(`span`,{class:`nav-icon nav-icon-about`,"aria-hidden":`true`},null,-1),D(`span`,Ut,_(T(p)(`console.navigation.about`)),1)]),_:1})],8,Et),D(`div`,Wt,[D(`div`,{class:`service-runtime-list`,"aria-label":T(p)(`console.services.aria`)},[D(`div`,Kt,[D(`span`,{class:x([`status-dot`,T(o).runtimeStatus])},null,2),D(`div`,null,[D(`strong`,null,_(T(o).runtimeStatus===`ready`?T(p)(`console.services.localReady`):T(o).runtimeStatus===`error`?T(p)(`console.services.localError`):T(p)(`console.services.localConnecting`)),1)])]),D(`details`,qt,[D(`summary`,null,[D(`span`,{class:x([`status-dot`,T(o).publicRuntimeStatus])},null,2),l(_(F.value),1)]),D(`div`,Jt,[D(`div`,null,[D(`small`,null,_(L.value),1),n(T(B),{to:`/connections`},{default:t(()=>[l(_(T(p)(`console.navigation.connections`)),1)]),_:1})])])])],8,Gt)])],42,Tt),u.value?(a(),k(`button`,{key:0,class:`mobile-nav-backdrop`,type:`button`,tabindex:`-1`,"aria-label":T(p)(`console.navigation.closeMenu`),onClick:K},null,8,Yt)):m(``,!0),D(`main`,{class:`workspace`,inert:u.value||void 0},[D(`header`,{class:x([`topbar`,{"topbar--workbench":P.value}])},[D(`button`,{ref_key:`mobileNavToggleRef`,ref:h,class:`mobile-nav-toggle quiet-button`,type:`button`,"aria-controls":`console-primary-sidebar`,"aria-expanded":u.value,"aria-label":T(p)(`console.navigation.openMenu`),onClick:G},[...r[13]||=[D(`span`,{class:`mobile-nav-icon`,"aria-hidden":`true`},null,-1)]],8,Zt),P.value?(a(),k(`span`,Qt,`FULI`)):(a(),k(`div`,$t,[D(`h1`,null,_(M.value),1)])),P.value?m(``,!0):(a(),k(`div`,en,[T(s).name===`settings`?(a(),A(J,{key:0,variant:`primary`,disabled:T(o).settingsSaving,form:`settings-form`,type:`submit`},{default:t(()=>[l(_(T(p)(`settings.save`)),1)]),_:1},8,[`disabled`])):m(``,!0),n(ee),n(J,{variant:`ghost`,icon:``,disabled:T(o).runtimeStatus===`loading`,"aria-label":T(p)(`common.actions.refresh`),title:T(p)(`common.actions.refresh`),onClick:T(o).refresh},{default:t(()=>[...r[14]||=[D(`svg`,{viewBox:`0 0 20 20`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[D(`path`,{d:`M16 7a6.5 6.5 0 1 0 .5 5M16 3v4h-4`})],-1)]]),_:1},8,[`disabled`,`aria-label`,`title`,`onClick`])]))],2),n(De),T(o).feedback?(a(),k(`div`,{key:0,class:x([`feedback feedback-message`,{success:T(o).feedback.tone===`success`}]),role:`status`,"aria-live":`polite`},[D(`span`,null,_(T(o).feedback.message),1),D(`button`,{class:`feedback-dismiss`,type:`button`,"aria-label":T(p)(`common.actions.close`),onClick:r[0]||=(...e)=>T(o).clearFeedback&&T(o).clearFeedback(...e)},`×`,8,tn)],2)):m(``,!0),n(T(R),null,{default:t(({Component:e})=>[(a(),A(i(e)))]),_:1})],8,Xt)]))}}),[[`__scopeId`,`data-v-ae0a6b85`]]),rn=O({__name:`App`,setup(e){let t=I();return(e,n)=>T(t).meta.publicReport?(a(),A(T(R),{key:0})):(a(),A(nn,{key:1}))}}),an=`modulepreload`,on=function(e){return`/`+e},sn={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=on(t,n),t=s(t),t in sn)return;sn[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:an,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function cn(e){let t=e.match(/^#\/knowledge\/([^/?#]+)\/([^/?#]+)\/(entity|relationship)\/([^/?#]+)(?:\?([^#]*))?$/);if(!t)return null;let[,n,r,i,a,o]=t;return`/knowledge/${n}/${r}/directory/${i}/${a}${o?`?${o}`:``}`}var Q=z({history:L(`/`),routes:[{path:`/roundtables`,name:`roundtables`,component:()=>Z(()=>import(`./RoundtablesPage-ByVeZlgC.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/roundtables/:roomId`,name:`roundtable-room`,component:()=>Z(()=>import(`./RoundtablesPage-ByVeZlgC.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/roundtables/:spaceId/:roomId`,name:`roundtable-project-room`,component:()=>Z(()=>import(`./RoundtablesPage-ByVeZlgC.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/reports/jefa`,name:`shared-jefa-report`,component:()=>Z(()=>import(`./SharedJefaReportPage-CjpJ9bkk.js`),__vite__mapDeps([9,1,2,3,4,5,10,11,12,13,14,15])),meta:{publicReport:!0,title:`employees.share.title`}},{path:`/`,name:`overview`,component:()=>Z(()=>import(`./OverviewPage-0mYifpjp.js`),__vite__mapDeps([16,1,17,11,2,3,4,6,5,18,19,20,21,22,23])),meta:{eyebrow:``,title:`routes.overview.title`}},{path:`/preferences`,name:`personal-profile`,component:()=>Z(()=>import(`./PersonalProfilePage-JW6Muix6.js`),__vite__mapDeps([24,1,17,11,2,3,4,6,5,25,26,27,28,29,30,31,32,33,34,35])),meta:{eyebrow:`PERSONAL LENS`,title:`routes.preferences.title`,description:`routes.preferences.description`}},{path:`/preferences/writing`,name:`writing-taste`,component:()=>Z(()=>import(`./WritingTastePage-DaHWY61P.js`),__vite__mapDeps([36,1,17,11,2,3,4,6,5,37,31,25,26,32,28,33,34,38])),meta:{eyebrow:``,title:`routes.writingTaste.title`}},{path:`/personal/:spaceId/projects/:projectId/:mode/:itemKind/:itemId`,name:`personal-project-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/personal/:spaceId/projects/:mode/:itemKind/:itemId`,name:`personal-projects-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:mode`,name:`personal-projects`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:projectId/:mode`,name:`personal-project`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/organize`,name:`knowledge-organizer`,component:()=>Z(()=>import(`./KnowledgeOrganizerPage-DMBpGxLr.js`),__vite__mapDeps([42,1,17,11,2,3,4,25,26,32,27,28,29,30,31,33,43])),meta:{eyebrow:`KNOWLEDGE CLASSIFICATION`,title:`routes.organizer.title`}},{path:`/project-agents`,name:`project-agents`,component:()=>Z(()=>import(`./AgentsDirectoryPage-BTEfKZjF.js`),__vite__mapDeps([44,1,17,11,2,3,4,5,6,45,19,46,18,21,22,47,20,48,12,13,49,50,25,26,51,52])),meta:{eyebrow:``,title:`routes.projectAgents.title`}},{path:`/agents/:spaceId/:agentId`,name:`agent-profile`,component:()=>Z(()=>import(`./AgentProfilePage-D8Tvayn7.js`),__vite__mapDeps([53,1,17,11,2,3,4,5,6,50,18,37,20,54,55,56,57,21,22,52])),meta:{eyebrow:``,title:`agentProfiles.profile`}},{path:`/project-agents/manage`,name:`agent-management`,component:()=>Z(()=>import(`./ProjectAgentsPage-CQemHFxy.js`),__vite__mapDeps([58,1,17,11,2,3,4,5,6,50,45,19,46,25,56,57,21,47,20,48,12,13,26,49,51,59])),meta:{eyebrow:``,title:`agentProfiles.advanced`}},{path:`/employees/:templateId`,name:`employee-workbench`,component:()=>Z(()=>import(`./EmployeeWorkbenchPage-CK2BAoGt.js`),__vite__mapDeps([60,1,17,11,2,3,4,5,6,50,45,19,46,18,25,54,55,12,13,49,20,26,51,10,14,61])),meta:{eyebrow:``,title:`routes.employeeWorkbench.title`,dedicatedWorkspace:!0}},{path:`/public-projects`,name:`public-projects`,component:()=>Z(()=>import(`./PublicProjectsPage-CB272Sq-.js`),__vite__mapDeps([62,1,17,11,2,3,4,5,25,20,26,32])),meta:{eyebrow:`PUBLIC PROJECTS`,title:`routes.publicProjects.title`,description:`routes.publicProjects.description`}},{path:`/knowledge`,name:`knowledge-default`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode/:itemKind/:itemId`,name:`project-knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode/:itemKind/:itemId`,name:`knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode`,name:`project-knowledge`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode`,name:`knowledge`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/review`,name:`review`,component:()=>Z(()=>import(`./ReviewPage-CelTZU4C.js`),__vite__mapDeps([64,1,17,11,2,3,4,26,32,28])),meta:{eyebrow:`REVIEW WORKSPACE`,title:`routes.review.title`,description:`routes.review.description`}},{path:`/connections`,name:`connections`,component:()=>Z(()=>import(`./ConnectionsPage-DwOIcvl9.js`),__vite__mapDeps([65,1,17,11,2,3,4,37,26,32,66])),meta:{eyebrow:`SERVICE CONNECTIONS`,title:`routes.connections.title`,description:`routes.connections.description`}},{path:`/settings`,name:`settings`,component:()=>Z(()=>import(`./SettingsPage-nAijmm5f.js`),__vite__mapDeps([67,1,17,11,2,3,4,37,26,29,68])),meta:{eyebrow:``,title:`routes.settings.title`}},{path:`/about`,name:`about`,component:()=>Z(()=>import(`./AboutPage-D-GyJNv1.js`),__vite__mapDeps([69,1,3,70,71])),meta:{eyebrow:`FULI`,title:`routes.about.title`}},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>Z(()=>import(`./NotFoundPage-BCMZbeB8.js`),__vite__mapDeps([72,1,6,5])),meta:{title:`common.errors.pageNotFound`}}],scrollBehavior:(e,t,n)=>n??(e.path!==t.path&&{top:0})});we(Q),Q.beforeEach(e=>e.path!==`/`||typeof window>`u`?!0:cn(window.location.hash)??!0),Q.afterEach(e=>{Ct(e.meta.title)});var $=w(rn);$.use(M()),$.use(C),$.use(Q),await Q.isReady().catch(()=>void 0),$.mount(`#app`);
5
+ `):``}var Fe={class:`attention-question`},Ie={class:`attention-context`},Le=[`disabled`],Re=[`name`,`value`,`checked`,`onChange`],ze=[`name`,`checked`],Be={class:`attention-input`},Ve=[`for`],He=[`id`,`value`,`required`,`disabled`,`placeholder`],Ue={key:0,role:`alert`,class:`inline-error attention-response-error`},We={key:1,role:`alert`,class:`inline-error`},Ge={class:`attention-submit`},Ke=[`disabled`],qe={key:1},Je=F(O({__name:`AttentionReply`,props:{item:{},modelValue:{},busy:{type:Boolean},refreshing:{type:Boolean},error:{}},emits:[`update:modelValue`,`submit`],setup(e,{emit:n}){let r=e,i=n,s=f(()=>Ne(r.item)),c=f(()=>Pe(r.modelValue.choice,r.modelValue.text,s.value));function l(e){i(`update:modelValue`,{...r.modelValue,...e})}function u(){!r.busy&&!r.refreshing&&c.value&&c.value.length<=4096&&i(`submit`,c.value)}return(n,r)=>(a(),k(`form`,{class:`attention-reply`,onSubmit:b(u,[`prevent`])},[D(`div`,Fe,[D(`h3`,null,_(e.item.title),1),D(`p`,null,_(e.item.requestedAction),1)]),(a(),A(ae,{key:e.item.requestId,title:T(p)(`attention.context`)},{default:t(()=>[D(`p`,Ie,_(e.item.detail),1)]),_:1},8,[`title`])),D(`fieldset`,{disabled:e.busy||e.refreshing,class:`attention-choices`},[D(`legend`,null,_(T(p)(`attention.chooseReply`)),1),(a(!0),k(g,null,o(s.value,t=>(a(),k(`label`,{key:t.id,class:x([`attention-choice`,{"is-selected":e.modelValue.choice===t.id}])},[D(`input`,{type:`radio`,name:`reply-${e.item.requestId}`,value:t.id,checked:e.modelValue.choice===t.id,onChange:e=>l({choice:t.id})},null,40,Re),D(`span`,null,_(t.label),1)],2))),128)),D(`label`,{class:x([`attention-choice`,{"is-selected":e.modelValue.choice===`other`}])},[D(`input`,{type:`radio`,name:`reply-${e.item.requestId}`,value:`other`,checked:e.modelValue.choice===`other`,onChange:r[0]||=e=>l({choice:`other`})},null,40,ze),D(`span`,null,_(T(p)(`attention.other`)),1)],2)],8,Le),D(`div`,Be,[D(`label`,{for:`attention-${e.item.requestId}`},_(e.modelValue.choice===`other`?T(p)(`attention.response`):T(p)(`attention.note`)),9,Ve),D(`textarea`,{id:`attention-${e.item.requestId}`,value:e.modelValue.text,rows:`3`,maxlength:`4096`,required:e.modelValue.choice===`other`,disabled:e.busy||e.refreshing,placeholder:T(p)(`attention.placeholder`),onInput:r[1]||=t=>l({text:t.target.value,choice:e.modelValue.choice||`other`})},null,40,He)]),e.error?(a(),k(`p`,Ue,_(e.error),1)):m(``,!0),c.value.length>4096?(a(),k(`p`,We,_(T(p)(`attention.tooLong`)),1)):m(``,!0),D(`div`,Ge,[D(`p`,null,_(T(p)(`attention.replyHint`)),1),D(`button`,{type:`submit`,class:`primary-action`,disabled:e.busy||e.refreshing||!c.value||c.value.length>4096},[e.busy?(a(),A(P,{key:0,variant:`inline`,label:T(p)(`attention.sending`)},null,8,[`label`])):(a(),k(`span`,qe,_(T(p)(`attention.send`)),1))],8,Ke)])],32))}}),[[`__scopeId`,`data-v-6b64bc2c`]]),Ye=[`aria-label`],Xe={class:`attention-nav-status`},Ze=[`title`],Qe={class:`attention-header`},$e={id:`attention-title`},et={class:`ui-badge`},tt=[`disabled`,`aria-label`],nt={key:0,role:`alert`,class:`attention-error`},rt=[`disabled`],it={key:2,class:`attention-empty`},at=[`aria-busy`],ot=[`aria-label`],st={class:`attention-queue-toolbar`},ct=[`disabled`],lt={class:`attention-mobile-picker`},ut=[`disabled`],dt=[`value`],ft={class:`attention-request-list`},pt=[`aria-current`,`disabled`,`onClick`],mt={class:`attention-request-meta`},ht={class:`attention-request-project`},gt=[`disabled`],_t={class:`attention-detail-meta`},vt={class:`ui-badge`},yt=[`href`],bt=O({__name:`AgentAttentionCenter`,props:{personalSpaceId:{},projects:{}},setup(t){let r=t,i=ne(),s=d({}),y=d({}),b=d(``),S=d(``),C=0,w=d({}),O=f(()=>w.value[b.value]??``),j=f(()=>i.items.find(e=>e.requestId===b.value)),M=f({get:()=>y.value[b.value]??{choice:``,text:``},set:e=>{j.value&&(y.value[b.value]={...e,revision:j.value.revision})}}),N=f(()=>new Map(r.projects.map(e=>[e.project_id,e.profile.name]))),{dialogRef:F,initialFocusRef:I,onCancel:L,onKeydown:R}=ie(()=>i.open,()=>{S.value||(i.open=!1)});c(()=>r.personalSpaceId,e=>{C++,S.value=``,s.value={},y.value={},b.value=``,w.value={},i.setSpace(e===`current`?``:e)},{immediate:!0}),c(()=>i.open,async e=>{if(!e)return;let t=i.spaceId;try{let e=await H(`/api/project-agents?${new URLSearchParams({personalSpaceId:t})}`);t===i.spaceId&&(s.value=Object.fromEntries(e.map(e=>[e.agentId,e.profile.displayName||e.profile.name])))}catch{}}),c(()=>i.items,e=>{e.some(e=>e.requestId===b.value)||(b.value=e[0]?.requestId??``);for(let t of e){let e=y.value[t.requestId];e&&e.revision!==t.revision&&(y.value[t.requestId]={choice:``,text:e.text,revision:t.revision},w.value[t.requestId]=p(`attention.updated`))}});let z;function B(){document.visibilityState===`visible`&&!i.loading&&!i.open&&i.refresh()}v(()=>{z=setInterval(B,3e4),document.addEventListener(`visibilitychange`,B)}),e(()=>{clearInterval(z),document.removeEventListener(`visibilitychange`,B),i.setSpace(``)});async function V(e,t){if(S.value||!t.trim()||t.length>4096)return;let n=i.spaceId,r=++C;S.value=e.requestId,delete w.value[e.requestId];try{await i.respond(e,t),r===C&&n===i.spaceId&&delete y.value[e.requestId]}catch(t){r===C&&n===i.spaceId&&(w.value[e.requestId]=t instanceof Error?t.message:String(t),await i.refresh())}finally{r===C&&(S.value=``)}}return(e,t)=>(a(),k(g,null,[D(`button`,{class:`space-nav-button attention-nav`,"aria-label":T(i).total?`${T(p)(`attention.title`)} · ${T(p)(`attention.count`,{count:T(i).total})}`:T(p)(`attention.title`),type:`button`,onClick:t[0]||=e=>T(i).show()},[t[11]||=D(`span`,{class:`nav-icon nav-icon-review`,"aria-hidden":`true`},null,-1),D(`span`,null,_(T(p)(`attention.title`)),1),D(`span`,Xe,[n(q,{passive:``,"count-only":``}),T(i).error?(a(),k(`span`,{key:0,title:T(p)(`attention.loadError`)},`!`,8,Ze)):m(``,!0)])],8,Ye),(a(),A(h,{to:`body`},[T(i).open?(a(),k(`dialog`,{key:0,ref_key:`dialogRef`,ref:F,class:`attention-dialog`,"aria-labelledby":`attention-title`,onCancel:t[9]||=(...e)=>T(L)&&T(L)(...e),onKeydown:t[10]||=(...e)=>T(R)&&T(R)(...e)},[D(`header`,Qe,[D(`div`,null,[D(`h2`,$e,_(T(p)(`attention.title`)),1),D(`span`,et,_(T(i).agentId?T(i).counts[T(i).agentId]??T(i).filteredTotal:T(i).total),1)]),D(`button`,{ref_key:`initialFocusRef`,ref:I,class:`ui-button ui-button--ghost ui-button--icon`,type:`button`,disabled:!!S.value,"aria-label":T(p)(`attention.close`),onClick:t[1]||=e=>T(i).open=!1},`×`,8,tt)]),T(i).error?(a(),k(`div`,nt,[D(`span`,null,_(T(p)(`attention.loadError`)),1),D(`button`,{class:`ui-button`,disabled:T(i).loading,onClick:t[2]||=e=>T(i).refresh()},_(T(p)(`attention.refresh`)),9,rt)])):m(``,!0),T(i).loading&&!T(i).items.length?(a(),A(P,{key:1,variant:`page`,label:T(p)(`attention.loading`)},null,8,[`label`])):!T(i).items.length&&!T(i).error?(a(),k(`div`,it,[t[12]||=D(`span`,{"aria-hidden":`true`},`✓`,-1),D(`p`,null,_(T(p)(`attention.empty`)),1)])):T(i).items.length?(a(),k(`div`,{key:3,class:`attention-workspace`,"aria-busy":T(i).loading},[D(`aside`,{class:`attention-queue`,"aria-label":T(p)(`attention.queue`)},[D(`div`,st,[D(`span`,null,_(T(i).agentId?s.value[T(i).agentId]||T(p)(`attention.agentFallback`):T(p)(`attention.all`)),1),T(i).agentId||!T(i).error?(a(),k(`button`,{key:0,class:`ui-button ui-button--ghost`,disabled:T(i).loading||!!S.value,onClick:t[3]||=e=>T(i).agentId?T(i).show():T(i).refresh()},_(T(i).agentId?T(p)(`attention.all`):T(p)(`attention.refresh`)),9,ct)):m(``,!0)]),D(`label`,lt,[l(_(T(p)(`attention.selectRequest`)),1),u(D(`select`,{"onUpdate:modelValue":t[4]||=e=>b.value=e,disabled:!!S.value},[(a(!0),k(g,null,o(T(i).items,e=>(a(),k(`option`,{key:e.requestId,value:e.requestId},_(s.value[e.agentId]||T(p)(`attention.agentFallback`))+` · `+_(N.value.get(e.personalProjectId)||T(p)(`attention.projectFallback`))+` — `+_(e.title),9,dt))),128))],8,ut),[[E,b.value]])]),D(`div`,ft,[(a(!0),k(g,null,o(T(i).items,e=>(a(),k(`button`,{key:e.requestId,type:`button`,class:x([`attention-request`,{"is-selected":b.value===e.requestId}]),"aria-current":b.value===e.requestId?`true`:void 0,disabled:!!S.value,onClick:t=>b.value=e.requestId},[D(`span`,mt,[l(_(s.value[e.agentId]||T(p)(`attention.agentFallback`)),1),D(`span`,null,_(T(p)(`attention.kinds.${e.kind}`)),1)]),D(`strong`,null,_(e.title),1),D(`span`,ht,_(N.value.get(e.personalProjectId)||T(p)(`attention.projectFallback`)),1)],10,pt))),128))]),T(i).items.length<T(i).filteredTotal?(a(),k(`button`,{key:0,class:`ui-button attention-more`,type:`button`,disabled:T(i).loading||!!S.value,onClick:t[5]||=e=>T(i).more()},_(T(p)(`attention.more`)),9,gt)):m(``,!0)],8,ot),j.value?(a(),k(`section`,{key:j.value.requestId,class:`attention-detail`},[D(`div`,_t,[D(`span`,null,_(s.value[j.value.agentId]||T(p)(`attention.agentFallback`))+` · `+_(N.value.get(j.value.personalProjectId)||T(p)(`attention.projectFallback`)),1),D(`span`,vt,_(T(p)(`attention.kinds.${j.value.kind}`)),1)]),n(Je,{modelValue:M.value,"onUpdate:modelValue":t[6]||=e=>M.value=e,item:j.value,busy:S.value===j.value.requestId,refreshing:T(i).loading,error:O.value,onSubmit:t[7]||=e=>V(j.value,e)},null,8,[`modelValue`,`item`,`busy`,`refreshing`,`error`]),j.value.taskId&&!S.value?(a(),k(`a`,{key:0,class:`attention-task-link`,href:T(re)(j.value),onClick:t[8]||=e=>T(i).open=!1},_(T(p)(`attention.task`))+` ↗`,9,yt)):m(``,!0)])):m(``,!0)],8,at)):m(``,!0)],544)):m(``,!0)]))],64))}}),xt=[`routes.`,`common.`,`employees.`,`agentProfiles.`];function St(e,t=``){let n=typeof e==`string`&&e?e:t;return xt.some(e=>n.startsWith(e))?p(n):n}function Ct(e){if(typeof document>`u`)return;let t=St(e,`routes.overview.title`);document.title=`${t} · ${p(`common.brand`)}`}var wt={class:`app-shell`},Tt=[`onKeydown`],Et=[`aria-label`],Dt={class:`nav-section-label`},Ot={class:`nav-label`},kt={class:`nav-section-label nav-space-label`},At={class:`nav-copy`},jt={class:`nav-copy`},Mt={class:`nav-copy`},Nt={class:`nav-copy`},Pt={class:`nav-copy`},Ft={class:`nav-section-label nav-public-label`},It={class:`nav-copy`},Lt={class:`nav-section-label nav-tool-label`},Rt={class:`nav-label`},zt={class:`nav-label`},Bt={class:`nav-label`},Vt={class:`nav-section-label nav-about-label`},Ht={class:`nav-label`},Ut={class:`nav-label`},Wt={class:`sidebar-foot`},Gt=[`aria-label`],Kt={class:`runtime-status`},qt={class:`service-details`},Jt={class:`runtime-status`},Yt=[`aria-label`],Xt=[`inert`],Zt=[`aria-expanded`,`aria-label`],Qt={key:0,class:`workbench-host-label`},$t={key:1,class:`topbar-heading`},en={key:2,class:`topbar-actions`},tn=[`aria-label`],nn=F(O({__name:`ConsoleLayout`,setup(r){let o=N(),s=I(),u=d(!1),h=d(null),C=d(null),w=f(()=>o.activePersonalSpace?.id??`current`),E=f(()=>oe(w.value,`graph`)),O=f(()=>se(`personal`,w.value,`directory`)),M=f(()=>St(s.meta.title,`routes.overview.title`)),P=f(()=>s.meta.dedicatedWorkspace===!0),F=f(()=>o.publicRuntimeStatus===`ready`?p(`console.services.publicReady`):o.publicRuntimeStatus===`error`?p(`console.services.publicError`):p(`console.services.publicOffline`)),L=f(()=>{if(o.publicRuntimeStatus===`ready`){let e=o.state?.capabilities;return e?.browsePublicProjects&&e?.subscribeProject&&!e?.publishProject&&!e?.submitKnowledge&&!e?.reviewProposals?p(`console.services.publicBrowseSubscribe`):p(`console.services.publicAvailable`)}return o.publicRuntimeStatus===`error`?p(`console.services.localUnaffected`):p(`console.services.localOnly`)}),z=f(()=>o.state?.capabilities?.browsePublicProjects!==!1),V=f(()=>{let e=o.state?.capabilities;return e?.submitKnowledge!==!1||e?.reviewProposals===!0});v(()=>{o.runtimeStatus===`idle`&&o.refresh(),window.addEventListener(`resize`,H)}),e(()=>window.removeEventListener(`resize`,H));function H(){window.innerWidth>920&&(u.value=!1)}function W(e){if(!u.value||e.key!==`Tab`)return;let t=[...e.currentTarget.querySelectorAll(`button:not(:disabled), a[href], input:not(:disabled), [tabindex="0"]`)].filter(e=>e.getClientRects().length>0),n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}j(()=>{Ct(s.meta.title)}),c(()=>s.fullPath,()=>{u.value=!1});async function G(){u.value=!0,await y(),C.value?.focus({preventScroll:!0})}async function K(){u.value=!1,await y(),h.value?.focus({preventScroll:!0})}return(e,r)=>(a(),k(`div`,wt,[D(`aside`,{id:`console-primary-sidebar`,class:x([`sidebar`,{"is-mobile-open":u.value}]),onKeydown:[S(b(K,[`stop`]),[`esc`]),W]},[D(`button`,{ref_key:`mobileNavCloseRef`,ref:C,class:`mobile-nav-close quiet-button`,type:`button`,onClick:K},_(T(p)(`console.navigation.closeMenu`)),513),n(Ce),D(`nav`,{class:`primary-nav`,"aria-label":T(p)(`console.navigation.aria`)},[D(`p`,Dt,_(T(p)(`console.navigation.workspace`)),1),n(T(B),{to:`/`,"exact-active-class":`is-active`},{default:t(()=>[r[1]||=D(`span`,{class:`nav-icon nav-icon-overview`,"aria-hidden":`true`},null,-1),D(`span`,Ot,_(T(p)(`console.navigation.overview`)),1)]),_:1}),D(`p`,kt,_(T(p)(`console.navigation.personalSpace`)),1),n(T(B),{class:`space-nav-button personal-profile-button`,to:`/preferences`,"active-class":`is-active`},{default:t(()=>[r[2]||=D(`span`,{class:`nav-icon nav-icon-personal-profile`,"aria-hidden":`true`},null,-1),D(`span`,At,[D(`strong`,null,_(T(p)(`console.navigation.preferences`)),1)])]),_:1}),n(T(B),{class:`space-nav-button knowledge-organizer-button`,to:`/organize`,"active-class":`is-active`},{default:t(()=>[r[3]||=D(`span`,{class:`nav-icon nav-icon-knowledge-organizer`,"aria-hidden":`true`},null,-1),D(`span`,jt,[D(`strong`,null,_(T(p)(`console.navigation.organizer`)),1)])]),_:1}),n(T(B),{class:`space-nav-button personal-space-button`,to:E.value,"active-class":`is-active`},{default:t(()=>[r[4]||=D(`span`,{class:`nav-icon nav-icon-personal-project`,"aria-hidden":`true`},null,-1),D(`span`,Mt,[D(`strong`,null,_(T(p)(`console.navigation.personalProjects`)),1)])]),_:1},8,[`to`]),n(T(B),{class:`space-nav-button project-agents-button`,to:`/project-agents`,"active-class":`is-active`},{default:t(()=>[r[5]||=D(`span`,{class:`nav-icon nav-icon-project-agent`,"aria-hidden":`true`},null,-1),D(`span`,Nt,[D(`strong`,null,_(T(p)(`console.navigation.projectAgents`)),1)])]),_:1}),n(T(B),{class:`space-nav-button roundtables-button`,to:`/roundtables`,"active-class":`is-active`},{default:t(()=>[r[6]||=D(`span`,{class:`nav-icon nav-icon-project-agent`,"aria-hidden":`true`},null,-1),D(`span`,Pt,[D(`strong`,null,_(T(U)(`Agent 圆桌`,`Agent Roundtable`)),1),D(`small`,null,_(T(U)(`讨论 · 分工 · 结果`,`Discuss · assign · deliver`)),1)])]),_:1}),z.value?(a(),k(g,{key:0},[D(`p`,Ft,_(T(p)(`console.navigation.publicSpace`)),1),n(T(B),{class:`space-nav-button public-space-button`,to:`/public-projects`,"active-class":`is-active`},{default:t(()=>[r[7]||=D(`span`,{class:`nav-icon nav-icon-public-project`,"aria-hidden":`true`},null,-1),D(`span`,It,[D(`strong`,null,_(T(p)(`console.navigation.publicProjects`)),1)])]),_:1})],64)):m(``,!0),n(Me,{"personal-space-id":w.value},null,8,[`personal-space-id`]),n(bt,{"personal-space-id":w.value,projects:T(o).state?.personalProjects??[]},null,8,[`personal-space-id`,`projects`]),D(`p`,Lt,_(T(p)(`console.navigation.governance`)),1),n(T(B),{to:O.value,"active-class":`is-active`},{default:t(()=>[r[8]||=D(`span`,{class:`nav-icon nav-icon-knowledge-graph`,"aria-hidden":`true`},null,-1),D(`span`,Rt,_(T(p)(`console.navigation.knowledge`)),1)]),_:1},8,[`to`]),V.value?(a(),A(T(B),{key:1,to:`/review`,"active-class":`is-active`},{default:t(()=>[r[9]||=D(`span`,{class:`nav-icon nav-icon-review`,"aria-hidden":`true`},null,-1),D(`span`,zt,_(T(p)(`console.navigation.review`)),1)]),_:1})):m(``,!0),n(T(B),{to:`/connections`,"active-class":`is-active`},{default:t(()=>[r[10]||=D(`span`,{class:`nav-icon nav-icon-connections`,"aria-hidden":`true`},null,-1),D(`span`,Bt,_(T(p)(`console.navigation.connections`)),1)]),_:1}),D(`p`,Vt,_(T(p)(`console.navigation.aboutSection`)),1),n(T(B),{to:`/settings`,"active-class":`is-active`},{default:t(()=>[r[11]||=D(`span`,{class:`nav-icon nav-icon-settings`,"aria-hidden":`true`},null,-1),D(`span`,Ht,_(T(p)(`console.navigation.settings`)),1)]),_:1}),n(T(B),{to:`/about`,"active-class":`is-active`},{default:t(()=>[r[12]||=D(`span`,{class:`nav-icon nav-icon-about`,"aria-hidden":`true`},null,-1),D(`span`,Ut,_(T(p)(`console.navigation.about`)),1)]),_:1})],8,Et),D(`div`,Wt,[D(`div`,{class:`service-runtime-list`,"aria-label":T(p)(`console.services.aria`)},[D(`div`,Kt,[D(`span`,{class:x([`status-dot`,T(o).runtimeStatus])},null,2),D(`div`,null,[D(`strong`,null,_(T(o).runtimeStatus===`ready`?T(p)(`console.services.localReady`):T(o).runtimeStatus===`error`?T(p)(`console.services.localError`):T(p)(`console.services.localConnecting`)),1)])]),D(`details`,qt,[D(`summary`,null,[D(`span`,{class:x([`status-dot`,T(o).publicRuntimeStatus])},null,2),l(_(F.value),1)]),D(`div`,Jt,[D(`div`,null,[D(`small`,null,_(L.value),1),n(T(B),{to:`/connections`},{default:t(()=>[l(_(T(p)(`console.navigation.connections`)),1)]),_:1})])])])],8,Gt)])],42,Tt),u.value?(a(),k(`button`,{key:0,class:`mobile-nav-backdrop`,type:`button`,tabindex:`-1`,"aria-label":T(p)(`console.navigation.closeMenu`),onClick:K},null,8,Yt)):m(``,!0),D(`main`,{class:`workspace`,inert:u.value||void 0},[D(`header`,{class:x([`topbar`,{"topbar--workbench":P.value}])},[D(`button`,{ref_key:`mobileNavToggleRef`,ref:h,class:`mobile-nav-toggle quiet-button`,type:`button`,"aria-controls":`console-primary-sidebar`,"aria-expanded":u.value,"aria-label":T(p)(`console.navigation.openMenu`),onClick:G},[...r[13]||=[D(`span`,{class:`mobile-nav-icon`,"aria-hidden":`true`},null,-1)]],8,Zt),P.value?(a(),k(`span`,Qt,`FULI`)):(a(),k(`div`,$t,[D(`h1`,null,_(M.value),1)])),P.value?m(``,!0):(a(),k(`div`,en,[T(s).name===`settings`?(a(),A(J,{key:0,variant:`primary`,disabled:T(o).settingsSaving,form:`settings-form`,type:`submit`},{default:t(()=>[l(_(T(p)(`settings.save`)),1)]),_:1},8,[`disabled`])):m(``,!0),n(ee),n(J,{variant:`ghost`,icon:``,disabled:T(o).runtimeStatus===`loading`,"aria-label":T(p)(`common.actions.refresh`),title:T(p)(`common.actions.refresh`),onClick:T(o).refresh},{default:t(()=>[...r[14]||=[D(`svg`,{viewBox:`0 0 20 20`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[D(`path`,{d:`M16 7a6.5 6.5 0 1 0 .5 5M16 3v4h-4`})],-1)]]),_:1},8,[`disabled`,`aria-label`,`title`,`onClick`])]))],2),n(De),T(o).feedback?(a(),k(`div`,{key:0,class:x([`feedback feedback-message`,{success:T(o).feedback.tone===`success`}]),role:`status`,"aria-live":`polite`},[D(`span`,null,_(T(o).feedback.message),1),D(`button`,{class:`feedback-dismiss`,type:`button`,"aria-label":T(p)(`common.actions.close`),onClick:r[0]||=(...e)=>T(o).clearFeedback&&T(o).clearFeedback(...e)},`×`,8,tn)],2)):m(``,!0),n(T(R),null,{default:t(({Component:e})=>[(a(),A(i(e)))]),_:1})],8,Xt)]))}}),[[`__scopeId`,`data-v-ae0a6b85`]]),rn=O({__name:`App`,setup(e){let t=I();return(e,n)=>T(t).meta.publicReport?(a(),A(T(R),{key:0})):(a(),A(nn,{key:1}))}}),an=`modulepreload`,on=function(e){return`/`+e},sn={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=on(t,n),t=s(t),t in sn)return;sn[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:an,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function cn(e){let t=e.match(/^#\/knowledge\/([^/?#]+)\/([^/?#]+)\/(entity|relationship)\/([^/?#]+)(?:\?([^#]*))?$/);if(!t)return null;let[,n,r,i,a,o]=t;return`/knowledge/${n}/${r}/directory/${i}/${a}${o?`?${o}`:``}`}var Q=z({history:L(`/`),routes:[{path:`/roundtables`,name:`roundtables`,component:()=>Z(()=>import(`./RoundtablesPage-C9dXfWCl.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/roundtables/:roomId`,name:`roundtable-room`,component:()=>Z(()=>import(`./RoundtablesPage-C9dXfWCl.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/roundtables/:spaceId/:roomId`,name:`roundtable-project-room`,component:()=>Z(()=>import(`./RoundtablesPage-C9dXfWCl.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),meta:{publicReport:!0,title:`Agent Roundtable`}},{path:`/reports/jefa`,name:`shared-jefa-report`,component:()=>Z(()=>import(`./SharedJefaReportPage-CjpJ9bkk.js`),__vite__mapDeps([9,1,2,3,4,5,10,11,12,13,14,15])),meta:{publicReport:!0,title:`employees.share.title`}},{path:`/`,name:`overview`,component:()=>Z(()=>import(`./OverviewPage-0mYifpjp.js`),__vite__mapDeps([16,1,17,11,2,3,4,6,5,18,19,20,21,22,23])),meta:{eyebrow:``,title:`routes.overview.title`}},{path:`/preferences`,name:`personal-profile`,component:()=>Z(()=>import(`./PersonalProfilePage-JW6Muix6.js`),__vite__mapDeps([24,1,17,11,2,3,4,6,5,25,26,27,28,29,30,31,32,33,34,35])),meta:{eyebrow:`PERSONAL LENS`,title:`routes.preferences.title`,description:`routes.preferences.description`}},{path:`/preferences/writing`,name:`writing-taste`,component:()=>Z(()=>import(`./WritingTastePage-DaHWY61P.js`),__vite__mapDeps([36,1,17,11,2,3,4,6,5,37,31,25,26,32,28,33,34,38])),meta:{eyebrow:``,title:`routes.writingTaste.title`}},{path:`/personal/:spaceId/projects/:projectId/:mode/:itemKind/:itemId`,name:`personal-project-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/personal/:spaceId/projects/:mode/:itemKind/:itemId`,name:`personal-projects-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:mode`,name:`personal-projects`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:projectId/:mode`,name:`personal-project`,component:()=>Z(()=>import(`./PersonalProjectsPage-CRbi64JP.js`),__vite__mapDeps([39,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/organize`,name:`knowledge-organizer`,component:()=>Z(()=>import(`./KnowledgeOrganizerPage-DMBpGxLr.js`),__vite__mapDeps([42,1,17,11,2,3,4,25,26,32,27,28,29,30,31,33,43])),meta:{eyebrow:`KNOWLEDGE CLASSIFICATION`,title:`routes.organizer.title`}},{path:`/project-agents`,name:`project-agents`,component:()=>Z(()=>import(`./AgentsDirectoryPage-BTEfKZjF.js`),__vite__mapDeps([44,1,17,11,2,3,4,5,6,45,19,46,18,21,22,47,20,48,12,13,49,50,25,26,51,52])),meta:{eyebrow:``,title:`routes.projectAgents.title`}},{path:`/agents/:spaceId/:agentId`,name:`agent-profile`,component:()=>Z(()=>import(`./AgentProfilePage-D8Tvayn7.js`),__vite__mapDeps([53,1,17,11,2,3,4,5,6,50,18,37,20,54,55,56,57,21,22,52])),meta:{eyebrow:``,title:`agentProfiles.profile`}},{path:`/project-agents/manage`,name:`agent-management`,component:()=>Z(()=>import(`./ProjectAgentsPage-CPgKVLgg.js`),__vite__mapDeps([58,1,17,11,2,3,4,5,6,50,45,19,46,25,56,57,21,47,20,48,12,13,26,49,51,59])),meta:{eyebrow:``,title:`agentProfiles.advanced`}},{path:`/employees/:templateId`,name:`employee-workbench`,component:()=>Z(()=>import(`./EmployeeWorkbenchPage-CK2BAoGt.js`),__vite__mapDeps([60,1,17,11,2,3,4,5,6,50,45,19,46,18,25,54,55,12,13,49,20,26,51,10,14,61])),meta:{eyebrow:``,title:`routes.employeeWorkbench.title`,dedicatedWorkspace:!0}},{path:`/public-projects`,name:`public-projects`,component:()=>Z(()=>import(`./PublicProjectsPage-CB272Sq-.js`),__vite__mapDeps([62,1,17,11,2,3,4,5,25,20,26,32])),meta:{eyebrow:`PUBLIC PROJECTS`,title:`routes.publicProjects.title`,description:`routes.publicProjects.description`}},{path:`/knowledge`,name:`knowledge-default`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode/:itemKind/:itemId`,name:`project-knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode/:itemKind/:itemId`,name:`knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode`,name:`project-knowledge`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode`,name:`knowledge`,component:()=>Z(()=>import(`./KnowledgePage-POkCMW8f.js`),__vite__mapDeps([63,1,40,17,11,2,3,4,5,6,25,37,20,26,32,27,28,29,30,31,33,41])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/review`,name:`review`,component:()=>Z(()=>import(`./ReviewPage-CelTZU4C.js`),__vite__mapDeps([64,1,17,11,2,3,4,26,32,28])),meta:{eyebrow:`REVIEW WORKSPACE`,title:`routes.review.title`,description:`routes.review.description`}},{path:`/connections`,name:`connections`,component:()=>Z(()=>import(`./ConnectionsPage-DwOIcvl9.js`),__vite__mapDeps([65,1,17,11,2,3,4,37,26,32,66])),meta:{eyebrow:`SERVICE CONNECTIONS`,title:`routes.connections.title`,description:`routes.connections.description`}},{path:`/settings`,name:`settings`,component:()=>Z(()=>import(`./SettingsPage-nAijmm5f.js`),__vite__mapDeps([67,1,17,11,2,3,4,37,26,29,68])),meta:{eyebrow:``,title:`routes.settings.title`}},{path:`/about`,name:`about`,component:()=>Z(()=>import(`./AboutPage-D-GyJNv1.js`),__vite__mapDeps([69,1,3,70,71])),meta:{eyebrow:`FULI`,title:`routes.about.title`}},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>Z(()=>import(`./NotFoundPage-BCMZbeB8.js`),__vite__mapDeps([72,1,6,5])),meta:{title:`common.errors.pageNotFound`}}],scrollBehavior:(e,t,n)=>n??(e.path!==t.path&&{top:0})});we(Q),Q.beforeEach(e=>e.path!==`/`||typeof window>`u`?!0:cn(window.location.hash)??!0),Q.afterEach(e=>{Ct(e.meta.title)});var $=w(rn);$.use(M()),$.use(C),$.use(Q),await Q.isReady().catch(()=>void 0),$.mount(`#app`);
@@ -9,7 +9,7 @@
9
9
  />
10
10
  <link rel="icon" type="image/png" href="/assets/fuli-logo-ER1wQ8Kk.png" />
11
11
  <title>复利 · Context Graph</title>
12
- <script type="module" crossorigin src="/assets/index-UygXwZDZ.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-ulISYH02.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/i18n-D2CJkEYK.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/client-B2cRl-7c.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/console-BtPqo79j.js">
@@ -0,0 +1,46 @@
1
+ # Agent Roundtable
2
+
3
+ Roundtable gives invited AI participants a shared goal, public responsibilities, addressed messages, and an ordered workflow from discussion to implementation and review.
4
+
5
+ ## Start
6
+
7
+ Requires Node.js 24.12 or newer.
8
+
9
+ ```sh
10
+ npm install -g fuli-context@latest
11
+ fl roundtable serve --data-dir ./roundtable-data --port 3738
12
+ ```
13
+
14
+ Open the local Roundtable page, create a goal, select 2–6 seats and issue an invitation for each participant. Each room has one moderator; collaboration rooms also have an implementer and an independent reviewer. Room history persists in the selected data directory.
15
+
16
+ ## AI onboarding
17
+
18
+ Connect the invited client to the room MCP URL shown by the invitation dialog, with its seat credential in the client's Bearer authentication setting. The MCP server supplies onboarding instructions and tools:
19
+
20
+ 1. `discover_roundtable` identifies the participant's seat, workflow, roster and next action.
21
+ 2. `join_roundtable` accepts the participant's own introduction, responsibilities and capabilities.
22
+ 3. `discover_roundtable` finds matching peers; `message_roundtable` sends a room-visible question or handoff to a selected seat.
23
+ 4. `read_roundtable` retrieves shared messages and tasks.
24
+ 5. `claim_roundtable_turn` claims the participant's assigned turn. `submit_roundtable_turn` records the result, artifacts and review verdict.
25
+
26
+ The room-specific MCP connection supplies its room ID automatically. When using these tools through the general FULI MCP server, supply the room ID and seat credential explicitly.
27
+
28
+ Self-descriptions help peers choose collaborators. They do not change the seat's execution grants. Peer messages are shared task material; room ownership and permissions remain with the user.
29
+
30
+ ## Local workers
31
+
32
+ Store the invitation in `FULI_ROUNDTABLE_TOKEN`, then run a worker with an already configured client:
33
+
34
+ ```sh
35
+ fl roundtable worker --url https://COORDINATOR --room ROOM_ID --runtime codex --workspace ./project
36
+ ```
37
+
38
+ Use `claude-code`, `pi`, `grok` or `a2a` for the corresponding adapter. Workers default to read only. Implementation requires both an owner-granted workspace and `--allow-write`. Reviews remain read only.
39
+
40
+ Grok uses `XAI_API_KEY` and `XAI_MODEL`. A2A uses `--a2a-url` and, when needed, `FULI_A2A_TOKEN`. Pi uses an installed Ollama model selected with `--model`; it is an experimental adapter and requires a tool-capable model with sufficient context.
41
+
42
+ ## Sharing a coordinator
43
+
44
+ Use a reachable HTTPS endpoint and `--public-url https://COORDINATOR`. Expose `/roundtable-peer/` through the proxy; retain the owner console on local loopback. Each invitation is limited to one room and seat and can be revoked.
45
+
46
+ Roundtable shares task messages and artifact references. Give reviewers authorized access to the actual artifacts through the shared workspace or referenced revision. Pause, resume, stop and completion remain available to the room owner.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fuli-graph-provider"
3
- version = "0.9.0"
3
+ version = "0.10.0"
4
4
  description = "Graphiti-backed personal and shared project provider for Fuli."
5
5
  requires-python = ">=3.12"
6
6
  dependencies = [
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "fuli-context",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "fuli-context",
9
- "version": "0.9.0",
9
+ "version": "0.10.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@a2a-js/sdk": "1.3.0",