Conversation
Creates apps/mae-client/ with: - backend/: Express + TypeScript server on port 5003 - In-memory document/version store - REST API: /api/documents, /api/generate - Forwards generation requests to Cyrano HTTP bridge (port 5002) - Streaming SSE endpoint: /api/generate/stream - frontend/: React 19 + Vite + Tailwind CSS 3 SPA on port 5174 - DocumentList page with create/delete - DocumentEditor with prompt input and model selection - ModelSelector: OpenAI + Anthropic model groups with checkboxes - VersionPanel: version cards, full-text dialog, side-by-side diff - Proxies /api to backend Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…te endpoints to HTTP bridge" Co-authored-by: MightyPrytanis <219587333+MightyPrytanis@users.noreply.github.com>
|
@copilot I'd like users to have the ability to add more models in particular, I'd like them to have access to perplexity sonar, Grok, and Gemini, as well as a locally hosted models and the option to add others like cohere and DeepSeek, (although DeepSeek should come with cautions) also is there a way to use the token-based anonymizing system that we developed for Lex Fiat in the standalone for when it is being used for sensitive documents? |
|
@copilot I also would like the ability to use more than one workflow. For EBOM, we had an orchestrator design a RFP, then three models prepared proposed specs, then the orchestrator combined the anonymized specs into a draft, then the draft went to the the three competing models for critique/comment, then back to the orchestrating model for final revision and submission. There are infinite variations on this, as well as straight head to head competition, relays, a "committee review," a panel of experts, etc etc. This standalone should be flexible enough to adapt to the needs of the user in this respect. Also: how do we feel about resurrecting the "SwimMeet" name for this standalone app? |
…k, Local) and anonymization to MAE thin client Co-authored-by: MightyPrytanis <219587333+MightyPrytanis@users.noreply.github.com>
Done in commit Extended model support added:
Anonymization (Cyrano's |
- Rename app to SwimMeet throughout (package.json names/descriptions, App.tsx header, health endpoint, port env var, README) - Add workflow-engine.ts: 6 workflow types (parallel, relay, committee, critique, ebom, panel) with full multi-stage orchestration logic - Add routes/workflow.ts: POST /api/workflow/run with Zod validation - Register /api/workflow router in index.ts - Add WorkflowSelector.tsx: collapsible 2-column workflow card grid, synthesizer dropdown, expert personas textarea - Add WorkflowStagePanel.tsx: vertical timeline of completed stages with collapsible output cards - Update DocumentEditor.tsx: integrate WorkflowSelector + WorkflowStagePanel, dispatch to runWorkflow for non-parallel workflows, disable Generate when synthesizer required but not selected - Update VersionPanel.tsx: add Stage N / stageName badges from metadata - Update lib/api.ts: add WorkflowStageResult types and runWorkflow() Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…; fix critique rotation; rename app to SwimMeet Co-authored-by: MightyPrytanis <219587333+MightyPrytanis@users.noreply.github.com>
Done in commits 6 workflow types implemented:
UI: A collapsible Stage results appear below the version list in a vertical timeline (each stage collapsible, last stage auto-expanded). All stage outputs are also saved as The architecture is fully extensible — new workflow types can be added in |
Implements SwimMeet (
apps/mae-client/), a standalone competitive AI document drafting client supporting multi-stage workflow orchestration across any combination of AI models. Also fixes a gap wherepdf_form_filler— used by all three Forecast modules — was never exposed via MCP.New:
apps/mae-client/— SwimMeetLightweight two-tier app (backend port 5003, frontend port 5174) for multi-model, multi-stage document drafting.
Backend (Express 5 + TypeScript):
version-control.ts— in-memory document/version store (with stage metadata)routes/documents.ts— document CRUD REST APIroutes/generate.ts— proxies to Cyrano's/api/mae/write/multifor simple parallel generationroutes/workflow.ts—POST /api/workflow/run+GET /api/workflow/presetsfor multi-stage orchestrationworkflow-engine.ts— core workflow executor (see Workflow Engine section)Frontend (React 19 + Vite + Tailwind + Radix UI):
DocumentEditor— split-panel: prompt + anonymize toggle +WorkflowSelector+ModelSelectorleft;WorkflowStagePanel+VersionPanelrightWorkflowSelector— collapsible 2-col card grid for picking workflow type; synthesizer dropdown + expert personas textarea for workflows that need themWorkflowStagePanel— vertical timeline of completed workflow stages, each collapsible, with output cards and provider/persona badgesModelSelector— checkbox groups across OpenAI, Anthropic, Perplexity, Gemini, Groq, Cohere, DeepSeek, Local/Open, and a free-entry Custom Model sectionVersionPanel— version cards (with stage badges) + full-text dialog + Radix Tabs side-by-side diffWorkflow Engine
Six workflow types are supported, selectable per document run:
Workflows requiring a synthesizer model show a dropdown (populated from the selected models). Expert Panel shows an editable textarea of personas. All stage outputs are saved as
DocumentVersionentries withstageIndex/stageName/workflowType/personametadata and appear in the VersionPanel for comparison.Extended Model Provider Support
The
ModelSelectorand all API layers now support:DeepSeek models display an inline warning when selected: "Data routed to DeepSeek servers (CN). Do not use with client-identifiable information."
Anonymization for Sensitive Documents
A "Anonymize for sensitive documents" toggle is added to the
DocumentEditor. When enabled, prompts are passed through Cyrano's existingClientAnonymizationService(token-based PII anonymization, MRPC 1.6 aligned) before being sent to any AI provider:Cyrano HTTP Bridge — MAE write endpoints
Both write endpoints accept
anonymize?: booleanand forward it toaiService.call(). Provider enum expanded to includeperplexity,google,deepseek,openrouter,groq,cohere.groqandcohereare resolved to theopenrouterprovider at runtime.pdf_form_filleralso added to the lazy-load tool cache.MCP Server — pdf_form_filler registration (fix)
pdf_form_fillerexisted and was used internally byTaxForecastModule,ChildSupportForecastModule, andQDROForecastModule, but was absent from bothListToolsRequestSchemaand theCallTooldispatch — making it invisible to any MCP client.AI Orchestrator — provider normalization fix
normalizeProviderName()in bothservices/ai-orchestrator.tsandtools/ai-orchestrator.tsnow mapsopenrouter,groq, andcohere(was throwingUnknown AI providerfor these).Original prompt
Implement completion of the standalone LexFiat Forecaster™ application and create a new standalone thin client for the MAE (Multi-Agent Engine) for document writing with multiple models and versions.
LexFiat Forecaster™ Completion
Complete the standalone forecaster application with PDF form filling, workflow integration, and branding implementation.
Current Status
apps/forecaster/Tasks
1. Implement PDF Form Filling
Files:
Cyrano/src/tools/pdf-form-filler.ts(new or update)Cyrano/src/modules/forecast/formulas/tax-formulas.ts(update for form filling)Requirements:
pdf_form_fillerMCP toolfill_pdf_formsaction indocument_processor.ts2. Complete Forecast Workflows
Files:
Cyrano/src/engines/forecast/forecast-engine.ts(update)Requirements:
3. Implement Forecast Branding
Files:
Cyrano/src/modules/forecast/branding.ts(new)apps/forecaster/backend/src/branding.ts(new)Requirements:
4. Register Forecast Tools
Files:
Cyrano/src/mcp-server.ts(update for tool registration)Cyrano/src/http-bridge.ts(update endpoints)Requirements:
pdf_form_fillertool in MCP serverMAE Thin Client (Multi-Version Document Writer)
Create a standalone thin client application for the MAE engine that allows document writing using multiple AI models and versions, similar to the EBOM spec creation process.
Concept
A lightweight web application that:
Implementation Tasks
1. Create MAE Thin Client App
Files:
apps/mae-client/(new directory)apps/mae-client/frontend/src/(React app)apps/mae-client/frontend/package.jsonapps/mae-client/README.mdRequirements:
2. MAE Client Backend/API
Files:
apps/mae-client/backend/src/(Express API)apps/mae-client/backend/package.jsonRequirements:
3. Multi-Version Document Generation
Files:
apps/mae-client/frontend/src/components/DocumentEditor.tsxapps/mae-client/frontend/src/components/VersionPanel.tsxapps/mae-client/frontend/src/components/ModelSelector.tsxRequirements:
4. Integration with Cyrano MAE
Files:
Cyrano/src/http-bridge.ts(add MAE client endpoints)apps/mae-client/frontend/src/lib/mae-api.tsRequirements:
5. Document Version Control
Files:
apps/mae-client/backend/src/version-control.tsRequirements:
This pull request was created from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.