Persist bounded ideation sessions through agent tools, the Command Center, and atomic Mission convergence. - Store ideation sessions and divergent candidates in PostgreSQL with async APIs and migration support. - Expose gated ideation tools, chat routes, and agent lifecycle integration. - Add the Ideation panel, documentation, release metadata, and regression coverage. Files changed: .changeset/fn-8295-ideation-diverge-converge.md | 7 ++ docs/ideation/persisted-diverge-converge.md | 22 ++++ docs/missions.md | 4 + .../__tests__/postgres/ideation-store.pg.test.ts | 57 +++++++++ packages/core/src/async-ideation-store-queries.ts | 117 +++++++++++++++++ packages/core/src/async-ideation-store.ts | 138 +++++++++++++++++++++ packages/core/src/async-mission-store.ts | 27 ++-- packages/core/src/ideation-types.ts | 69 +++++++++++ packages/core/src/index.ts | 3 + .../core/src/postgres/migrations/0022_ideation.sql | 67 ++++++++++ packages/core/src/postgres/schema-applier.ts | 18 ++- packages/core/src/postgres/schema/project.ts | 49 +++++++- packages/core/src/store.ts | 8 +- packages/core/src/task-store/remaining-ops-8.ts | 14 +++ .../components/command-center/CommandCenter.tsx | 7 +- .../components/command-center/IdeationPanel.css | 18 +++ .../components/command-center/IdeationPanel.tsx | 58 +++++++++ .../__tests__/CommandCenter.test.tsx | 6 +- .../dashboard/src/__tests__/chat-manager.test.ts | 1 + packages/dashboard/src/__tests__/chat.test.ts | 1 + .../__tests__/ideation-tool-route-parity.test.ts | 29 +++++ packages/dashboard/src/chat.ts | 4 + packages/dashboard/src/ideation-routes.ts | 50 ++++++++ .../src/routes/register-integrated-routers.ts | 2 + .../src/__tests__/agent-ideation-tools.test.ts | 40 ++++++ .../src/__tests__/gating-classifications.test.ts | 16 +++ .../src/__tests__/permanent-agent-gating.test.ts | 2 + packages/engine/src/agent-heartbeat.ts | 4 +- packages/engine/src/agent-tools.ts | 67 ++++++++++ packages/engine/src/executor.ts | 2 + packages/engine/src/gating-classifications.ts | 8 ++ packages/engine/src/index.ts | 1 + packages/engine/src/triage.ts | 2 + 33 files changed, 897 insertions(+), 21 deletions(-) Fusion-Task-Id: FN-8295 Fusion-Task-Lineage: 1b8b0752-22bd-4b2f-aebd-4305c63abcf9 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
19 lines
1.7 KiB
CSS
19 lines
1.7 KiB
CSS
.ideation-panel { display: flex; flex-direction: column; gap: var(--space-lg); }
|
|
.ideation-panel__header { display: flex; align-items: flex-start; gap: var(--space-md); }
|
|
.ideation-panel__header svg { color: var(--todo); }
|
|
.ideation-panel__header h2, .ideation-panel__header p, .ideation-panel__detail h3 { margin: 0; }
|
|
.ideation-panel__header p, .ideation-panel__sessions p, .ideation-panel__detail > p { color: var(--text-muted); }
|
|
.ideation-panel__form { display: flex; gap: var(--space-sm); }
|
|
.ideation-panel__form .input { flex: 1; }
|
|
.ideation-panel__body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: var(--space-lg); }
|
|
.ideation-panel__sessions, .ideation-panel__detail, .ideation-panel__candidates { display: flex; flex-direction: column; gap: var(--space-sm); }
|
|
.ideation-panel__session { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-xs); color: var(--text); cursor: pointer; text-align: left; }
|
|
.ideation-panel__session span, .ideation-panel__candidates small { color: var(--text-muted); }
|
|
.ideation-panel__session.is-selected { outline: solid var(--accent); }
|
|
.ideation-panel__candidates { margin: 0; padding: 0; list-style: none; }
|
|
.ideation-panel__candidates li { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-sm); padding: var(--space-md); }
|
|
.ideation-panel__candidates p { margin: 0; }
|
|
.ideation-panel__handoff { color: var(--color-success); }
|
|
.ideation-panel__error { color: var(--color-error); }
|
|
@media (max-width: 768px) { .ideation-panel__body { grid-template-columns: minmax(0, 1fr); } .ideation-panel__form { flex-direction: column; } .ideation-panel__form .btn { inline-size: 100%; } }
|