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.
- package/README.md +17 -43
- package/README.zh-CN.md +14 -40
- package/dist/web/assets/{ProjectAgentsPage-CQemHFxy.js → ProjectAgentsPage-CPgKVLgg.js} +1 -1
- package/dist/web/assets/{ProjectAgentsPage-BgQLIpxg.css → ProjectAgentsPage-DeuRkMp1.css} +1 -1
- package/dist/web/assets/RoundtablesPage-C9dXfWCl.js +2 -0
- package/dist/web/assets/{index-UygXwZDZ.js → index-ulISYH02.js} +3 -3
- package/dist/web/index.html +1 -1
- package/docs/roundtable.md +46 -0
- package/graph-provider/pyproject.toml +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -4
- package/skills/capturing-session-knowledge/SKILL.md +1 -1
- package/src/agents/claude-code/lifecycle-hook.js +6 -19
- package/src/agents/codex/lifecycle-hook.js +51 -27
- package/src/agents/codex/token-usage.js +235 -0
- package/src/agents/cursor/lifecycle-hook.js +3 -9
- package/src/agents/token-usage-resolver.js +147 -0
- package/src/graphiti/federated-application.js +5 -1
- package/src/graphiti/project-agent-mapping.js +1 -1
- package/src/graphiti/project-agent-workflows.js +6 -1
- package/src/mcp/instructions.js +1 -1
- package/src/mcp/session-id.js +1 -1
- package/src/mcp/tool-annotations.js +3 -1
- package/src/roundtables/domain.js +3 -3
- package/src/roundtables/http-router.js +5 -3
- package/src/roundtables/mcp-server.js +15 -8
- package/src/roundtables/profiles.js +84 -0
- package/src/roundtables/service.js +86 -2
- package/src/roundtables/store.js +4 -0
- package/src/roundtables/tool-contract.js +22 -5
- package/dist/web/assets/RoundtablesPage-ByVeZlgC.js +0 -2
- package/docs/roundtable-beta-testing.md +0 -102
- package/docs/roundtable-beta-validation.md +0 -133
- 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-
|
|
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`);
|
package/dist/web/index.html
CHANGED
|
@@ -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-
|
|
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.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuli-context",
|
|
3
|
-
"version": "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
|
+
"version": "0.10.0",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@a2a-js/sdk": "1.3.0",
|