Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/lib-descriptions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Library Descriptions

This directory contains structured descriptions of each library in the monorepo.
These files are used by the **issue triage agent** (`.github/workflows/issue-triage-agent.md`)
to understand library responsibilities, boundaries, and common issue patterns when
analyzing new GitHub issues.

## File naming

Each file is named `{library-directory}.md` (e.g., `designer.md` for `libs/designer/`).

## When to update

Update these files when:
- A library's responsibilities or boundaries change significantly
- New common issue patterns emerge that would help triage accuracy
- A new library is added to `libs/`
58 changes: 58 additions & 0 deletions .github/lib-descriptions/a2a-core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# libs/a2a-core — A2A Protocol Chat Client SDK

## Purpose
React SDK for building chat interfaces that connect to AI agents using the
Agent-to-Agent (A2A) protocol. Provides real-time streaming, session management,
agent discovery, and chat persistence.

## NPM Package
`@microsoft/logic-apps-chat`

## Key Subsystems
- `api/` — A2A protocol API client
- `client/` — A2A client implementation
- `session/` — Session lifecycle management
- `streaming/` — Real-time response streaming (SSE)
- `storage/` — Message persistence (IndexedDB)
- `discovery/` — Agent discovery and capabilities
- `plugins/` — Plugin system for extensibility
- `react/` — React hooks and components for chat UI

## Key Features
- Real-time streaming responses (SSE with auto-reconnection and exponential backoff)
- Multi-session support (multiple concurrent agent conversations)
- Chat message persistence (IndexedDB via `storage/`)
- Server-side history persistence support
- Authentication support (Bearer, OAuth2, API Key, Cookie, custom handler)
- Agent discovery protocol with capability negotiation
- File upload support with multipart handling
- Syntax-highlighted code blocks in responses
- Zod schema validation for protocol messages
- Plugin system for analytics, logging, and extensibility

## React Exports (react/)
- `ChatWidget` — Full-featured embeddable chat widget
- `ChatWindow` — Chat window container
- `MessageList` — Message history display
- `MessageInput` — User input composing
- `AgentCard` — Agent info and capability display
- React hooks: `useA2AClient`, `useSession`, `useMessages`, `useStreaming`
- Zustand store for client-side state management

## Dependencies
- No internal dependencies on other libs (standalone SDK)
- React 19+, Zustand for state management

## Common Issue Patterns

### Issues that belong HERE:
- A2A protocol communication failures
- Chat streaming issues (messages cut off, connection drops)
- Agent discovery failures
- Message persistence/storage bugs
- Authentication flow issues with A2A agents

### Issues that are often MISATTRIBUTED here:
- Designer chatbot issues → `chatbot` library
- Copilot workflow editing → `designer` copilot service
- General chat UI styling → may be `designer-ui` components
47 changes: 47 additions & 0 deletions .github/lib-descriptions/chatbot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# libs/chatbot — AI Chatbot Integration

## Purpose
AI-powered chatbot integration for the Logic Apps Designer. Provides
conversational assistance for workflow authoring — helping users with expression
syntax, error explanations, operation suggestions, and workflow editing.

## NPM Package
`@microsoft/logic-apps-chatbot`

## Key Components
- `ChatPanel` — Main chat UI panel for general AI assistance
- `CopilotChatbot` — Copilot-specific chatbot variant for workflow editing
(uses `BaseCopilotWorkflowEditorService` from `logic-apps-shared`)
- `UserMessage` / `AssistantMessage` — Message rendering
- `CodeBlock` — Code snippet display with syntax highlighting
- `SuggestionChips` — Quick-action suggestions

## Key Exports
- Chat panel components
- `Query` model — Structured chat query type
- Chat message types and utilities

## Architecture
- `core/` — AI service integration and message handling
- `ui/` — Chat UI components
- `common/` — Shared utilities and message types

## Dependencies
- `logic-apps-shared` — Utilities
- `designer-ui` — Shared UI components

## Common Issue Patterns

### Issues that belong HERE:
- Chat panel rendering issues
- AI response formatting problems
- Suggestion chip behavior
- Chat history management bugs
- CopilotChatbot UI issues (not the service — see `logic-apps-shared`)

### Issues that are often MISATTRIBUTED here:
- Copilot workflow editing **service logic** (tool calling, prompt engineering,
discover_connectors) → `logic-apps-shared` copilot service
- General AI/Azure Copilot integration → Portal extension, not this library
- Expression help accuracy → may be the AI model, not this library's code
- A2A protocol chat → `a2a-core` library, not this one
68 changes: 68 additions & 0 deletions .github/lib-descriptions/data-mapper-v2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# libs/data-mapper-v2 — Visual Data Transformation Tool (Current)

## Purpose
The current-generation visual data mapper that allows users to create data
transformations between schemas. Users visually map source fields to target
fields and apply transformation functions. Generates XSLT output.

## NPM Package
`@microsoft/logic-apps-data-mapper-v2`

## Key Export
`DataMapperDesignerV2` — Main React component

## Architecture

### Components (components/)
- `canvas/` — Main mapping canvas (XY Flow v12 based, ELK layout engine)
- `schema/` — Schema tree views (source and target) using react-arborist
- `functions/` — Function library panel (string, math, date, collection functions)
- `codeView/` — XSLT code visualization and editing
- `commandBar/` — Toolbar with save, undo, redo, test, discard actions
- `mapChecker/` — Map validation and error reporting
- `common/` — Shared UI components

### Core Logic (core/)
Redux Toolkit state management with `redux-undo` integration:
- `appSlice` — Application-level state
- `dataMapSlice` — Mapping connections and transformation state
- `errorsSlice` — Validation errors and warnings
- `functionSlice` — Function library state
- `modalSlice` — Modal dialog management
- `panelSlice` — Side panel state
- `schemaSlice` — Source/target schema state

### Map Processing (mapHandling/)
- XSLT generation from visual mappings
- YAML-based map definition format (serialization/deserialization)
- Schema loading and parsing (XSD, JSON Schema)
- Map definition conversion utilities

### Services
- `dataMapperApiService` — Backend API calls for map testing
- `dataMapperFileService` — File system operations for schemas/maps
- `appInsights` — Telemetry and performance tracking

## Dependencies
- `logic-apps-shared` — Utilities and models
- `designer-ui` — Shared UI components

## Common Issue Patterns

### Issues that belong HERE:
- Visual mapping canvas bugs (connections not drawing, nodes misaligned)
- Schema tree rendering issues (large schemas, nested types)
- Function panel behavior (function search, parameter editing)
- XSLT generation errors (incorrect output, missing mappings)
- Map file loading/saving failures (YAML format)
- Data type coercion issues in mappings
- Code view rendering issues
- Map validation (mapChecker) errors
- Undo/redo bugs in the data mapper
- Canvas layout or ELK positioning issues

### Issues that are often MISATTRIBUTED here:
- Workflow designer bugs → `designer` or `designer-v2`
- General panel/editor component bugs → may be `designer-ui`
- Issues mentioning "data mapper" but describing workflow action configuration
→ likely about the designer's parameter editors, not the data mapper tool
33 changes: 33 additions & 0 deletions .github/lib-descriptions/data-mapper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# libs/data-mapper — Legacy Data Mapper (v1)

## Purpose
The original visual data transformation tool. **Superseded by `data-mapper-v2`**
but maintained for backward compatibility. No active feature development.

## NPM Package
`@microsoft/logic-apps-data-mapper`

## Key Export
`DataMapperDesigner` — Main React component

## Architecture
- React Flow v11 based canvas (older version than v2)
- Redux state management
- YAML-based map definitions
- LESS styling (legacy, not migrated to makeStyles)

## Dependencies
- `logic-apps-shared` — Utilities and models
- `designer-ui` — Shared UI components
- `designer` — Some shared types

## Common Issue Patterns
Most data mapper issues should be directed to `data-mapper-v2` unless the
reporter explicitly mentions the legacy data mapper or v1.

### Issues that belong HERE:
- Bugs explicitly reported against the legacy/v1 data mapper
- Migration issues when converting v1 maps to v2 format

### Issues that are often MISATTRIBUTED here:
- Any new data mapper bug → likely `data-mapper-v2`
55 changes: 55 additions & 0 deletions .github/lib-descriptions/designer-ui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# libs/designer-ui — Shared Stateless UI Components

## Purpose
A library of **stateless** UI components shared across the designer, data mapper,
chatbot, and other packages. Components here are purely presentational — they
receive props and render UI. They do NOT access Redux state, call services, or
manage business logic.

## NPM Package
`@microsoft/designer-ui`

## Key Component Categories
- **Editors**: Array editor, dictionary editor, expression editor (Monaco), date/time
editor, schema editor, HTML editor, code editor, text editor, condition editor
- **Panels**: Panel header, panel container, panel tabs
- **Cards**: Operation cards, connector cards, action cards
- **Pickers**: Token picker, resource picker, file picker, combo box
- **Monitoring**: Run history inputs/outputs visualization, status badges
- **Templates**: Template card, template panel components
- **Workflow**: Edge components, node components, scope containers
- **Settings**: Settings sections, setting toggles, setting inputs
- **AI/Agent**: Agent instruction editor, built-in tools panel, Foundry agent
details, Foundry agent picker, copilot get-started, copilot chat components
- **MCP**: MCP resource selection and configuration components
- **Knowledge**: Knowledge source management components
- **Unit Testing**: Unit test definition editors, assertion components
- **Common**: Labels, buttons, checkboxes, dropdowns, dialogs, modals, flyouts,
copy-to-clipboard controls, recommendation panels, peek overlays

## Architecture
- 68+ component directories under `src/lib/`
- Fluent UI v8 and v9 components (migration from v8 → v9 in progress)
- CodeMirror 6 for code editing capabilities
- Lexical editor for rich text editing
- All components are props-driven with no internal state management
- Design tokens centralized in `src/lib/tokens/designTokens.ts`
Comment thread
rllyy97 marked this conversation as resolved.

## Dependencies
- `logic-apps-shared` — Utility functions and type definitions only

## Common Issue Patterns

### Issues that belong HERE:
- Visual rendering bugs in editors, cards, panels, pickers
- Styling/theming issues (dark mode, light mode inconsistencies)
- Accessibility issues in individual UI components (keyboard nav, screen readers)
- Component-level interaction bugs (click handlers, focus management)
- Editor-specific issues (token picker behavior, expression editor, Monaco integration)

### Issues that are often MISATTRIBUTED here:
- Data not appearing in a panel → usually the parent component in `designer/`
is not passing the right props (state management issue, not UI issue)
- "Wrong value shown" → usually a serialization or state issue in `designer/`
- Connection-specific UI → may be the connection service in `logic-apps-shared`
- Template content issues → may be template data fetching, not the template UI
93 changes: 93 additions & 0 deletions .github/lib-descriptions/designer-v2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# libs/designer-v2 — Next-Generation Workflow Designer

## Purpose
The next-generation workflow designer with performance improvements, new features,
and architectural enhancements. Currently in active development alongside v1.
Accessible at `/designer-v2` in the standalone app.

## NPM Package
`@microsoft/logic-apps-designer-v2`

## Architecture
Same general structure as `libs/designer/` (Redux slices, parsers, serializers)
but with key improvements and new features:
- `react-window` for virtualized node lists (better performance with large workflows)
- Optimized Redux selectors with better memoization
- ELK (Eclipse Layout Kernel) graph layout engine
- Compressed undo/redo state snapshots (`lz-string`)
- Cleaner separation between UI and state layers
Comment thread
rllyy97 marked this conversation as resolved.

### Directory Structure
- `core/` — State management, actions, business logic
- `ui/` — UI components (canvas, panels, floating controls, custom nodes)
- `common/` — Shared utilities, models, constants

### State Management (core/state/)
Redux Toolkit with 15+ slices:
- `workflowSlice` — Workflow graph and structure
- `operationMetadataSlice` — Node parameters and metadata
- `connectionSlice` — API connections and references
- `panelSlice` — Right-side panel state
- `settingsSlice` — Operation settings validation
- `designerOptionsSlice` — Services, read-only mode, host options
- `designerViewSlice` — Viewport, minimap, zoom state
- `tokensSlice` — Expression tokens and autocomplete
- `workflowparametersSlice` — Workflow parameters validation
- `staticresultsSlice` — Static test result schemas
- `undoRedoSlice` — **v2 NEW**: Undo/redo with compressed state snapshots
- `unitTestSlice` — **v2 NEW**: Unit test definitions and assertions
- `customcodeSlice` — **v2 NEW**: Custom code management
- `notesSlice` — **v2 NEW**: Canvas sticky notes
- `modalSlice` — Modal dialog state

**Separate stores:** `mcpStore` (MCP wizard), `templateStore` (template config)

### New Features (not in v1)
- **Canvas Notes** — Sticky notes on the workflow canvas (`notesSlice`, `NoteNode`)
- **FloatingRunButton** — Workflow execution button with agent chat integration,
payload preview, and authentication flows
- **Agent Support** — Agent connector operations, agentChat panel, `isAgentWorkflow`
detection, Foundry agent integration
- **MCP Integration** — Model Context Protocol resource selection and management
- **Compressed Undo/Redo** — `Uint8Array` state snapshots with `lz-string` compression
- **Unit Testing** — Test definition serialization, assertions panel
Comment thread
rllyy97 marked this conversation as resolved.
- **Run History Panel** — In-designer run history viewer with tree view
- **Canvas Finder** — Node search/finder overlay
- **Performance Debug** — Performance metrics display

### UI Components (ui/)
- `Designer.tsx` — Top-level designer with hotkeys
- `DesignerReactFlow.tsx` — React Flow canvas
- `Controls.tsx`, `Minimap.tsx` — Designer controls
- `FloatingRunButton/` — Workflow run trigger with chat
- `CustomNodes/` — OperationCard, ScopeCard, SubgraphCard, CollapsedCard,
GraphContainer, Placeholder, Hidden, **NoteNode** (sticky notes)
- Panels: agentChat, assertionsPanel, connectionsPanel, errorsPanel,
nodeDetailsPanel, nodeSearchPanel, runHistoryPanel, runTreeView,
templatePanel, workflowParametersPanel, recommendation
- `exportconsumption/` — Export workflow wizard
- `templates/` — Template gallery and designer
- `mcp/` — MCP UI

## Dependencies
- `logic-apps-shared` — Service interfaces, utilities
- `designer-ui` — Shared stateless UI components
- `chatbot` — AI assistant integration

## Common Issue Patterns

### Issues that belong HERE:
- Bugs specific to the v2 designer canvas or layout
- Performance issues in the v2 designer
- Feature parity gaps between v1 and v2
- FloatingRunButton or agent chat issues (v2 only)
- Canvas notes behavior
- Undo/redo bugs in v2 (compressed snapshots)
- Unit test panel or assertions issues
- Run history panel within the designer

### Issues that are often MISATTRIBUTED here:
- Most designer bugs currently affect v1 (`libs/designer/`) since v2 is not
yet the default in production
- Unless the reporter explicitly mentions designer-v2 or the `/designer-v2`
route, assume the issue is about v1
Loading
Loading