@auto-engineer/frontend-implementer 0.14.0 → 0.15.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @auto-engineer/frontend-implementer@0.14.0 build /home/runner/work/auto-engineer/auto-engineer/packages/frontend-implementer
2
+ > @auto-engineer/frontend-implementer@0.15.0 build /home/runner/work/auto-engineer/auto-engineer/packages/frontend-implementer
3
3
  > tsc && tsx ../../scripts/fix-esm-imports.ts && cp src/*.html dist/src/ 2>/dev/null || true
4
4
 
5
5
  Fixed ESM imports in dist/
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @auto-engineer/frontend-implementer
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - version bump
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies []:
12
+ - @auto-engineer/message-bus@0.15.0
13
+ - @auto-engineer/ai-gateway@0.15.0
14
+
3
15
  ## 0.14.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -1,358 +1,190 @@
1
1
  # @auto-engineer/frontend-implementer
2
2
 
3
- AI-powered frontend implementation plugin for the Auto Engineer CLI that implements client-side code with AI assistance. This plugin creates React components, hooks, and application logic from specifications and design requirements.
3
+ AI-powered frontend implementation that transforms IA schemes into complete React applications.
4
4
 
5
- ## Installation
6
-
7
- This is a plugin for the Auto Engineer CLI. Install both the CLI and this plugin:
8
-
9
- ```bash
10
- npm install -g @auto-engineer/cli
11
- npm install @auto-engineer/frontend-implementer
12
- ```
5
+ ---
13
6
 
14
- ## Configuration
7
+ ## Purpose
15
8
 
16
- Add this plugin to your `auto.config.ts`:
9
+ Without `@auto-engineer/frontend-implementer`, you would have to manually translate Information Architecture specifications into React components, maintain consistency across atoms/molecules/organisms/pages, and integrate GraphQL operations by hand.
17
10
 
18
- ```typescript
19
- export default {
20
- plugins: [
21
- '@auto-engineer/frontend-implementer',
22
- // ... other plugins
23
- ],
24
- };
25
- ```
26
-
27
- ## Commands
11
+ This package provides an AI agent that reads IA scheme specifications and generates production-ready React code with TypeScript types, atomic design structure, and GraphQL integration.
28
12
 
29
- This plugin provides the following commands:
13
+ ---
30
14
 
31
- - `implement:client` - Implement client-side code with AI assistance
32
-
33
- ## What does this plugin do?
15
+ ## Installation
34
16
 
35
- The Frontend Implementer plugin uses AI capabilities to implement React applications, including components, pages, hooks, and business logic. It understands design systems, GraphQL schemas, and user experience requirements to create functional user interfaces.
17
+ ```bash
18
+ pnpm add @auto-engineer/frontend-implementer
19
+ ```
36
20
 
37
- ## Key Features
21
+ ## Quick Start
38
22
 
39
- ### AI React Development
23
+ Register the handler and implement a frontend project:
40
24
 
41
- - Generates functional React components from specifications
42
- - Implements custom hooks for state management and API interactions
43
- - Creates responsive layouts and interactive user interfaces
44
- - Integrates with design systems and component libraries
25
+ ### 1. Register the handlers
45
26
 
46
- ### GraphQL Integration
27
+ ```typescript
28
+ import { COMMANDS } from '@auto-engineer/frontend-implementer';
29
+ import { createMessageBus } from '@auto-engineer/message-bus';
47
30
 
48
- - Generates Apollo Client queries and mutations
49
- - Implements optimistic updates and error handling
50
- - Creates type-safe GraphQL operations
51
- - Handles loading states and data caching
31
+ const bus = createMessageBus();
32
+ COMMANDS.forEach(cmd => bus.registerCommand(cmd));
33
+ ```
52
34
 
53
- ### Design System Awareness
35
+ ### 2. Send a command
54
36
 
55
- - Uses imported design tokens and components consistently
56
- - Follows established design patterns and UI conventions
57
- - Implements accessibility standards and best practices
58
- - Maintains visual consistency across the application
37
+ ```typescript
38
+ const result = await bus.dispatch({
39
+ type: 'ImplementClient',
40
+ data: {
41
+ projectDir: './client',
42
+ iaSchemeDir: './.context',
43
+ designSystemPath: './design-system.md',
44
+ },
45
+ requestId: 'req-123',
46
+ });
47
+
48
+ console.log(result);
49
+ // → { type: 'ClientImplemented', data: { projectDir: './client' } }
50
+ ```
59
51
 
60
- ### User Experience Focus
52
+ The command analyzes the IA scheme and generates the complete frontend implementation.
61
53
 
62
- - Implements intuitive user workflows and navigation
63
- - Handles edge cases and error scenarios gracefully
64
- - Creates responsive designs for mobile and desktop
65
- - Optimizes for performance and user experience
54
+ ---
66
55
 
67
- ## Implementation Patterns
56
+ ## How-to Guides
68
57
 
69
- ### Page Component Implementation
58
+ ### Run via CLI
70
59
 
71
- The plugin creates complete page implementations:
60
+ ```bash
61
+ auto implement:client --project-dir=./client --ia-scheme-dir=./.context --design-system-path=./design-system.md
62
+ ```
72
63
 
73
- ```typescript
74
- // Before (generated stub)
75
- export function OrderHistoryPage() {
76
- // TODO: Implement order history display
77
- return <div>Order History - Not implemented</div>;
78
- }
64
+ ### Run via Script
79
65
 
80
- // After (AI implementation)
81
- export function OrderHistoryPage() {
82
- const { data, loading, error, refetch } = useOrderHistoryQuery({
83
- variables: { customerId: useCurrentUser().id },
84
- errorPolicy: 'partial'
85
- });
86
-
87
- const [selectedOrder, setSelectedOrder] = useState<Order | null>(null);
88
-
89
- if (loading) return <LoadingSpinner message="Loading your orders..." />;
90
- if (error) return <ErrorMessage error={error} onRetry={refetch} />;
91
-
92
- return (
93
- <PageLayout title="Order History" breadcrumbs={[{ label: 'Orders', href: '/orders' }]}>
94
- <div className="space-y-6">
95
- <OrderFilters onFilterChange={handleFilterChange} />
96
-
97
- {data?.orders.length === 0 ? (
98
- <EmptyState
99
- title="No orders found"
100
- description="You haven't placed any orders yet."
101
- action={<Button href="/products">Start Shopping</Button>}
102
- />
103
- ) : (
104
- <OrderList
105
- orders={data?.orders || []}
106
- onSelectOrder={setSelectedOrder}
107
- />
108
- )}
109
-
110
- {selectedOrder && (
111
- <OrderDetailModal
112
- order={selectedOrder}
113
- isOpen={!!selectedOrder}
114
- onClose={() => setSelectedOrder(null)}
115
- />
116
- )}
117
- </div>
118
- </PageLayout>
119
- );
120
- }
66
+ ```bash
67
+ pnpm ai-agent ./client ./.context ./design-system.md
121
68
  ```
122
69
 
123
- ### Custom Hook Implementation
124
-
125
- Creates reusable hooks for complex logic:
70
+ ### Run Programmatically
126
71
 
127
72
  ```typescript
128
- // Implements data fetching and state management
129
- export function useOrderManagement() {
130
- const [placeOrderMutation] = usePlaceOrderMutation();
131
- const [cancelOrderMutation] = useCancelOrderMutation();
132
- const [orders, setOrders] = useState<Order[]>([]);
133
-
134
- const placeOrder = useCallback(
135
- async (orderData: PlaceOrderInput) => {
136
- try {
137
- const result = await placeOrderMutation({
138
- variables: { input: orderData },
139
- optimisticResponse: {
140
- placeOrder: {
141
- __typename: 'Order',
142
- id: `temp-${Date.now()}`,
143
- status: OrderStatus.Pending,
144
- ...orderData,
145
- },
146
- },
147
- update: (cache, { data }) => {
148
- if (data?.placeOrder) {
149
- cache.modify({
150
- fields: {
151
- orders: (existing = []) => [...existing, data.placeOrder],
152
- },
153
- });
154
- }
155
- },
156
- });
157
-
158
- return result.data?.placeOrder;
159
- } catch (error) {
160
- throw new OrderPlacementError('Failed to place order', error);
161
- }
162
- },
163
- [placeOrderMutation],
164
- );
165
-
166
- const cancelOrder = useCallback(
167
- async (orderId: string) => {
168
- // Implementation with optimistic updates and error handling
169
- },
170
- [cancelOrderMutation],
171
- );
172
-
173
- return { placeOrder, cancelOrder, orders };
174
- }
73
+ import { runAIAgent } from '@auto-engineer/frontend-implementer/dist/src/agent';
74
+
75
+ await runAIAgent(
76
+ './client',
77
+ './.context',
78
+ './design-system.md',
79
+ []
80
+ );
175
81
  ```
176
82
 
177
- ### Component Implementation
178
-
179
- Creates feature-rich, accessible components:
83
+ ### Handle Errors
180
84
 
181
85
  ```typescript
182
- // Implements interactive components with full functionality
183
- export function ProductCard({ product, onAddToCart }: ProductCardProps) {
184
- const [isAdding, setIsAdding] = useState(false);
185
- const [imageError, setImageError] = useState(false);
186
- const { addToast } = useToast();
187
-
188
- const handleAddToCart = async () => {
189
- setIsAdding(true);
190
- try {
191
- await onAddToCart(product.id);
192
- addToast({
193
- type: 'success',
194
- message: `${product.name} added to cart`
195
- });
196
- } catch (error) {
197
- addToast({
198
- type: 'error',
199
- message: 'Failed to add item to cart'
200
- });
201
- } finally {
202
- setIsAdding(false);
203
- }
204
- };
205
-
206
- return (
207
- <Card className="group hover:shadow-lg transition-shadow">
208
- <CardContent className="p-0">
209
- {!imageError ? (
210
- <img
211
- src={product.imageUrl}
212
- alt={product.name}
213
- className="w-full h-48 object-cover rounded-t-lg"
214
- onError={() => setImageError(true)}
215
- />
216
- ) : (
217
- <div className="w-full h-48 bg-gray-100 flex items-center justify-center rounded-t-lg">
218
- <ImageIcon className="text-gray-400" size={48} />
219
- </div>
220
- )}
221
-
222
- <div className="p-4">
223
- <h3 className="font-semibold text-lg mb-2">{product.name}</h3>
224
- <p className="text-gray-600 text-sm mb-3 line-clamp-2">
225
- {product.description}
226
- </p>
227
-
228
- <div className="flex justify-between items-center">
229
- <span className="text-xl font-bold text-primary">
230
- ${product.price.toFixed(2)}
231
- </span>
232
-
233
- <Button
234
- onClick={handleAddToCart}
235
- disabled={isAdding || !product.inStock}
236
- className="min-w-24"
237
- >
238
- {isAdding ? (
239
- <Spinner size="sm" />
240
- ) : !product.inStock ? (
241
- 'Out of Stock'
242
- ) : (
243
- 'Add to Cart'
244
- )}
245
- </Button>
246
- </div>
247
- </div>
248
- </CardContent>
249
- </Card>
250
- );
86
+ if (result.type === 'ClientImplementationFailed') {
87
+ console.error(result.data.error);
251
88
  }
252
89
  ```
253
90
 
254
- ## Configuration Options
91
+ ### Enable Debug Logging
255
92
 
256
- Customize implementation behavior:
257
-
258
- ```typescript
259
- // auto.config.ts
260
- export default {
261
- plugins: [
262
- [
263
- '@auto-engineer/frontend-implementer',
264
- {
265
- // AI model configuration
266
- model: 'claude-3-sonnet',
267
-
268
- // Framework preferences
269
- framework: 'react',
270
- stateManagement: 'apollo-client',
271
-
272
- // UI library integration
273
- designSystem: 'shadcn/ui',
274
- iconLibrary: 'lucide-react',
275
-
276
- // Implementation preferences
277
- includeAccessibility: true,
278
- includeAnimations: true,
279
- includeErrorBoundaries: true,
280
-
281
- // Testing
282
- generateTests: true,
283
- testingLibrary: 'testing-library',
284
- },
285
- ],
286
- ],
287
- };
93
+ ```bash
94
+ DEBUG=auto:frontend-implementer:* pnpm ai-agent ./client ./.context ./design-system.md
288
95
  ```
289
96
 
290
- ## Features
97
+ ---
291
98
 
292
- ### Responsive Design Implementation
99
+ ## API Reference
293
100
 
294
- - Mobile-first approach with responsive breakpoints
295
- - Touch-friendly interactions for mobile devices
296
- - Optimized layouts for different screen sizes
297
- - Progressive enhancement patterns
101
+ ### Exports
298
102
 
299
- ### Accessibility (a11y) Integration
300
-
301
- - ARIA labels and roles for screen readers
302
- - Keyboard navigation support
303
- - Color contrast compliance
304
- - Focus management and visual indicators
103
+ ```typescript
104
+ import { COMMANDS } from '@auto-engineer/frontend-implementer';
305
105
 
306
- ### Performance Optimization
106
+ import type {
107
+ ImplementClientCommand,
108
+ ClientImplementedEvent,
109
+ ClientImplementationFailedEvent,
110
+ } from '@auto-engineer/frontend-implementer';
111
+ ```
307
112
 
308
- - Lazy loading for images and components
309
- - Code splitting for optimal bundle sizes
310
- - Memoization for expensive computations
311
- - Efficient re-rendering patterns
113
+ ### Commands
312
114
 
313
- ### Error Handling
115
+ | Command | CLI Alias | Description |
116
+ |---------|-----------|-------------|
117
+ | `ImplementClient` | `implement:client` | Generate React frontend from IA scheme |
314
118
 
315
- - Comprehensive error boundaries
316
- - User-friendly error messages
317
- - Retry mechanisms for failed operations
318
- - Graceful degradation patterns
119
+ ### ImplementClientCommand
319
120
 
320
- ## Integration with Other Plugins
121
+ ```typescript
122
+ type ImplementClientCommand = Command<
123
+ 'ImplementClient',
124
+ {
125
+ projectDir: string;
126
+ iaSchemeDir: string;
127
+ designSystemPath: string;
128
+ failures?: string[];
129
+ }
130
+ >;
131
+ ```
321
132
 
322
- Works with the Auto Engineer ecosystem:
133
+ ### ClientImplementedEvent
323
134
 
324
- - **@auto-engineer/frontend-generator-react-graphql**: Implements generated component scaffolds
325
- - **@auto-engineer/design-system-importer**: Uses imported design tokens and components
326
- - **@auto-engineer/frontend-checks**: Validates implementations pass tests and type checking
327
- - **@auto-engineer/information-architect**: Uses IA specifications for navigation and content structure
135
+ ```typescript
136
+ type ClientImplementedEvent = Event<
137
+ 'ClientImplemented',
138
+ {
139
+ projectDir: string;
140
+ }
141
+ >;
142
+ ```
328
143
 
329
- ## Quality Assurance
144
+ ### ClientImplementationFailedEvent
330
145
 
331
- Ensures high-quality implementations through:
146
+ ```typescript
147
+ type ClientImplementationFailedEvent = Event<
148
+ 'ClientImplementationFailed',
149
+ {
150
+ error: string;
151
+ projectDir: string;
152
+ }
153
+ >;
154
+ ```
332
155
 
333
- - **TypeScript Compliance**: Full type safety and IntelliSense support
334
- - **Component Testing**: Comprehensive test coverage for user interactions
335
- - **Accessibility Auditing**: WCAG compliance and screen reader compatibility
336
- - **Performance Monitoring**: Identifies and resolves performance bottlenecks
337
- - **Code Review**: AI-powered review for best practices and patterns
156
+ ---
338
157
 
339
- ## Advanced Features
158
+ ## Architecture
340
159
 
341
- ### Context-Aware Implementation
160
+ ```
161
+ src/
162
+ ├── index.ts
163
+ ├── agent.ts
164
+ ├── agent-cli.ts
165
+ └── commands/
166
+ └── implement-client.ts
167
+ ```
342
168
 
343
- The AI understands:
169
+ The following diagram shows the implementation flow:
344
170
 
345
- - Existing design patterns and component structure
346
- - GraphQL schema and available operations
347
- - Design system tokens and component props
348
- - User experience requirements and workflows
349
- - Performance considerations and optimization opportunities
171
+ ```mermaid
172
+ flowchart TB
173
+ A[ImplementClient] --> B[Load Project Context]
174
+ B --> C[Load IA Scheme]
175
+ C --> D[Analyze Atoms/Components]
176
+ D --> E[Plan File Changes]
177
+ E --> F[Generate Files via AI]
178
+ F --> G[ClientImplementedEvent]
179
+ ```
350
180
 
351
- ### Progressive Implementation
181
+ *Flow: Command loads context, plans changes based on IA scheme, generates files via AI.*
352
182
 
353
- - Implements core functionality first
354
- - Adds advanced features incrementally
355
- - Supports partial implementations and manual refinements
356
- - Adapts to user feedback and requirements changes
183
+ ### Dependencies
357
184
 
358
- The Frontend Implementer plugin transforms UI specifications and design requirements into functional React applications, accelerating frontend development while maintaining quality and consistency.
185
+ | Package | Usage |
186
+ |---------|-------|
187
+ | `@auto-engineer/ai-gateway` | AI text generation |
188
+ | `@auto-engineer/message-bus` | Command/event infrastructure |
189
+ | `zod` | Schema validation |
190
+ | `debug` | Debug logging |
@@ -1 +1 @@
1
- {"version":3,"file":"implement-client.d.ts","sourceRoot":"","sources":["../../../src/commands/implement-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAM5F,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,iBAAiB,EACjB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,4BAA4B,EAC5B;IACE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG,+BAA+B,CAAC;AAE7F,eAAO,MAAM,cAAc;;;oBAxBX,MAAM;qBACL,MAAM;0BACD,MAAM;mBACb,MAAM,EAAE;;;;;GA+DrB,CAAC;AAuCH,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"implement-client.d.ts","sourceRoot":"","sources":["../../../src/commands/implement-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAM5F,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,iBAAiB,EACjB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,4BAA4B,EAC5B;IACE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG,+BAA+B,CAAC;AAE7F,eAAO,MAAM,cAAc;;;oBAxBX,MAAM;qBACL,MAAM;0BACD,MAAM;mBACb,MAAM,EAAE;;;;;GAmErB,CAAC;AAuCH,eAAe,cAAc,CAAC"}
@@ -4,6 +4,7 @@ import { runAIAgent } from '../agent.js';
4
4
  const debug = createDebug('auto:frontend-implementer:implement-client');
5
5
  export const commandHandler = defineCommandHandler({
6
6
  name: 'ImplementClient',
7
+ displayName: 'Implement Client',
7
8
  alias: 'implement:client',
8
9
  description: 'AI implements client',
9
10
  category: 'implement',
@@ -29,7 +30,10 @@ export const commandHandler = defineCommandHandler({
29
30
  examples: [
30
31
  '$ auto implement:client --project-dir=./client --ia-scheme-dir=./.context --design-system-path=./design-system.md',
31
32
  ],
32
- events: ['ClientImplemented', 'ClientImplementationFailed'],
33
+ events: [
34
+ { name: 'ClientImplemented', displayName: 'Client Implemented' },
35
+ { name: 'ClientImplementationFailed', displayName: 'Client Implementation Failed' },
36
+ ],
33
37
  handle: async (command) => {
34
38
  const result = await handleImplementClientCommandInternal(command);
35
39
  if (result.type === 'ClientImplemented') {
@@ -1 +1 @@
1
- {"version":3,"file":"implement-client.js","sourceRoot":"","sources":["../../../src/commands/implement-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,KAAK,GAAG,WAAW,CAAC,4CAA4C,CAAC,CAAC;AA6BxE,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAGhD;IACA,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,UAAU,EAAE;YACV,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,IAAI;SACf;QACD,WAAW,EAAE;YACX,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,IAAI;SACf;QACD,gBAAgB,EAAE;YAChB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,QAAQ,EAAE;QACR,mHAAmH;KACpH;IACD,MAAM,EAAE,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;IAC3D,MAAM,EAAE,KAAK,EACX,OAA+B,EACoC,EAAE;QACrE,MAAM,MAAM,GAAG,MAAM,oCAAoC,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACxC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,oCAAoC,CACjD,OAA+B;IAE/B,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEtE,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE;gBACJ,UAAU;aACX;YACD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE;gBACJ,KAAK,EAAE,YAAY;gBACnB,UAAU;aACX;YACD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"implement-client.js","sourceRoot":"","sources":["../../../src/commands/implement-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,KAAK,GAAG,WAAW,CAAC,4CAA4C,CAAC,CAAC;AA6BxE,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAGhD;IACA,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,kBAAkB;IAC/B,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,UAAU,EAAE;YACV,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,IAAI;SACf;QACD,WAAW,EAAE;YACX,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,IAAI;SACf;QACD,gBAAgB,EAAE;YAChB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,QAAQ,EAAE;QACR,mHAAmH;KACpH;IACD,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE;QAChE,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,8BAA8B,EAAE;KACpF;IACD,MAAM,EAAE,KAAK,EACX,OAA+B,EACoC,EAAE;QACrE,MAAM,MAAM,GAAG,MAAM,oCAAoC,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACxC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,oCAAoC,CACjD,OAA+B;IAE/B,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEtE,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE;gBACJ,UAAU;aACX;YACD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE;gBACJ,KAAK,EAAE,YAAY;gBACnB,UAAU;aACX;YACD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,eAAe,cAAc,CAAC"}