text:
Script completed
Wall time 0.3 seconds
Output:

text:
Warning: truncated output (original token count: 30413)
Total output lines: 1099

---0---
17:| GET | `/admin/login` | Admin login page | `Livewire: Admin\Auth\Login` |
18:| POST | `/admin/login` | Process admin login | Handled by Livewire action |
19:| POST | `/admin/logout` | Logout and invalidate session | Handled by Livewire action |
20:| GET | `/admin/forgot-password` | Show forgot password form | `Livewire: Admin\Auth\ForgotPassword` |
21:| POST | `/admin/forgot-password` | Send password reset link | Handled by Livewire action |
22:| GET | `/admin/reset-password/{token}` | Show reset password form | `Livewire: Admin\Auth\ResetPassword` |
23:| POST | `/admin/reset-password` | Reset password with token | Handled by Livewire action |
42:| GET | `/admin` | Dashboard with KPI tiles, orders chart, conversion funnel | `Admin\Dashboard` |
48:| GET | `/admin/products` | Product list - searchable, filterable by status, bulk actions | `Admin\Products\Index` |
49:| GET | `/admin/products/create` | Create product form | `Admin\Products\Create` |
50:| GET | `/admin/products/{product}/edit` | Edit product form with variants, media, options | `Admin\Products\Edit` |
56:| GET | `/admin/inventory` | Inventory management page | `Admin\Inventory\Index` |
62:| GET | `/admin/collections` | Collection list | `Admin\Collections\Index` |
63:| GET | `/admin/collections/create` | Create collection form | `Admin\Collections\Create` |
64:| GET | `/admin/collections/{collection}/edit` | Edit collection form | `Admin\Collections\Edit` |
70:| GET | `/admin/orders` | Order list with status filters | `Admin\Orders\Index` |
71:| GET | `/admin/orders/{order}` | Order detail with timeline, payments, fulfillments | `Admin\Orders\Show` |
77:| GET | `/admin/customers` | Customer list | `Admin\Customers\Index` |
78:| GET | `/admin/customers/{customer}` | Customer detail with order history, addresses | `Admin\Customers\Show` |
84:| GET | `/admin/discounts` | Discount list | `Admin\Discounts\Index` |
85:| GET | `/admin/discounts/create` | Create discount form with rules builder | `Admin\Discounts\Create` |
86:| GET | `/admin/discounts/{discount}/edit` | Edit discount form | `Admin\Discounts\Edit` |
92:| GET | `/admin/settings` | Store settings (tabs: General, Domains, Shipping, Taxes, Checkout, Notifications) | `Admin\Settings\Index` |
93:| GET | `/admin/settings/shipping` | Shipping zones and rates configuration | `Admin\Settings\Shipping` |
94:| GET | `/admin/settings/taxes` | Tax settings - mode, provider config, rates | `Admin\Settings\Taxes` |
100:| GET | `/admin/themes` | Theme management - cards with actions (Customize, Preview, Publish, Duplicate, Delete) | `Admin\Themes\Index` |
101:| GET | `/admin/themes/{theme}/editor` | Theme editor - left panel sections, center preview iframe, right panel settings | `Admin\Themes\Editor` |
107:| GET | `/admin/pages` | Content pages list | `Admin\Pages\Index` |
108:| GET | `/admin/pages/create` | Create content page | `Admin\Pages\Create` |
109:| GET | `/admin/pages/{page}/edit` | Edit content page | `Admin\Pages\Edit` |
115:| GET | `/admin/navigation` | Navigation menus management | `Admin\Navigation\Index` |
121:| GET | `/admin/apps` | Apps directory - list installed and available apps | `Admin\Apps\Index` |
122:| GET | `/admin/apps/{installation}` | Installed app detail - scopes, webhooks, usage | `Admin\Apps\Show` |
128:| GET | `/admin/developers` | Developer settings - API keys/tokens, webhook management | `Admin\Developers\Index` |
136:| GET | `/admin/analytics` | Analytics dashboard - sales, traffic, funnel, exports | `Admin\Analytics\Index` |
142:| GET | `/admin/search/settings` | Search settings - synonyms, stopwords, reindex | `Admin\Search\Settings` |
154:| GET | `/` | Home page | `Storefront\Home` |
155:| GET | `/collections` | All collections listing | `Storefront\Collections\Index` |
156:| GET | `/collections/{handle}` | Single collection page with product grid and filters | `Storefront\Collections\Show` |
157:| GET | `/products/{handle}` | Product page - gallery, variant selector, add-to-cart | `Storefront\Products\Show` |
158:| GET | `/cart` | Full cart page - line items, quantity controls, discount input, totals | `Storefront\Cart\Show` |
159:| GET | `/search` | Search results page with filter panel, sort dropdown, product grid | `Storefront\Search\Index` |
160:| GET | `/pages/{handle}` | Static content page (About, FAQ, etc.) | `Storefront\Pages\Show` |
168:| GET | `/account` | Customer account overview | `Storefront\Account\Dashboard` |
169:| GET | `/account/orders` | Order history list | `Storefront\Account\Orders\Index` |
170:| GET | `/account/orders/{orderNumber}` | Order detail | `Storefront\Account\Orders\Show` |
171:| GET | `/account/addresses` | Address book management | `Storefront\Account\Addresses\Index` |
177:| GET | `/account/login` | Customer login page | `Storefront\Account\Auth\Login` |
178:| GET | `/account/register` | Customer registration page | `Storefront\Account\Auth\Register` |
179:| GET | `/forgot-password` | Forgot password page | `Storefront\Account\Auth\ForgotPassword` |
180:| POST | `/forgot-password` | Send reset link | Handled by Livewire action |
181:| GET | `/reset-password/{token}` | Reset password form | `Storefront\Account\Auth\ResetPassword` |
182:| POST | `/reset-password` | Reset password | Handled by Livewire action |
192:| GET | `/checkout/{checkoutId}` | Checkout page - stepper UI (Contact -> Shipping -> Payment) | `Storefront\Checkout\Show` |
193:| GET | `/checkout/{checkoutId}/confirmation` | Order confirmation page - order number, items, totals | `Storefront\Checkout\Confirmation` |
209:#### POST /api/storefront/v1/carts
255:#### GET /api/storefront/v1/carts/{cartId}
313:#### POST /api/storefront/v1/carts/{cartId}/lines
354:#### PUT /api/storefront/v1/carts/{cartId}/lines/{lineId}
386:#### DELETE /api/storefront/v1/carts/{cartId}/lines/{lineId}
458:#### POST /api/storefront/v1/checkouts
524:#### GET /api/storefront/v1/checkouts/{checkoutId}
541:#### PUT /api/storefront/v1/checkouts/{checkoutId}/address
661:#### PUT /api/storefront/v1/checkouts/{checkoutId}/shipping-method
721:#### PUT /api/storefront/v1/checkouts/{checkoutId}/payment-method
767:#### POST /api/storefront/v1/checkouts/{checkoutId}/apply-discount
829:#### DELETE /api/storefront/v1/checkouts/{checkoutId}/discount
848:#### POST /api/storefront/v1/checkouts/{checkoutId}/pay
958:#### GET /api/storefront/v1/orders/{orderNumber}
1019:#### GET /api/storefront/v1/search
1097:#### GET /api/storefront/v1/search/suggest
1143:#### POST /api/storefront/v1/analytics/events
1222:#### POST /api/admin/v1/platform/organizations
1263:#### POST /api/admin/v1/platform/stores
1316:#### POST /api/admin/v1/stores/{storeId}/invites
1357:#### GET /api/admin/v1/stores/{storeId}/me
1399:| GET | `/api/admin/v1/stores/{storeId}/products` | `read-products` | List products with filtering and pagination | `api.admin` (60/min) |
1400:| POST | `/api/admin/v1/stores/{storeId}/products` | `write-products` | Create a new product | `api.admin` (60/min) |
1401:| GET | `/api/admin/v1/stores/{storeId}/products/{productId}` | `read-products` | Get single product with all relations | `api.admin` (60/min) |
1402:| PUT | `/api/admin/v1/stores/{storeId}/products/{productId}` | `write-products` | Update a product (partial updates supported) | `api.admin` (60/min) |
1403:| DELETE | `/api/admin/v1/stores/{storeId}/products/{productId}` | `write-products` | Archive a product (soft delete) | `api.admin` (60/min) |
1404:| POST | `/api/admin/v1/stores/{storeId}/products/{productId}/media/presign-upload` | `write-products` | Generate presigned URL for media upload | `api.admin` (60/min) |
1406:#### GET /api/admin/v1/stores/{storeId}/products
1457:#### POST /api/admin/v1/stores/{storeId}/products
1547:#### GET /api/admin/v1/stores/{storeId}/products/{productId}
1645:#### PUT /api/admin/v1/stores/{storeId}/products/{productId}
1672:#### DELETE /api/admin/v1/stores/{storeId}/products/{productId}
1694:#### POST /api/admin/v1/stores/{storeId}/products/{productId}/media/presign-upload
1742:| GET | `/api/admin/v1/stores/{storeId}/collections` | `read-collections` | List collections | `api.admin` (60/min) |
1743:| POST | `/api/admin/v1/stores/{storeId}/collections` | `write-collections` | Create a collection | `api.admin` (60/min) |
1744:| PUT | `/api/admin/v1/stores/{storeId}/collections/{collectionId}` | `write-collections` | Update a collection | `api.admin` (60/min) |
1745:| DELETE | `/api/admin/v1/stores/{storeId}/collections/{collectionId}` | `write-collections` | Delete a collection | `api.admin` (60/min) |
1747:#### GET /api/admin/v1/stores/{storeId}/collections
1789:#### POST /api/admin/v1/stores/{storeId}/collections
1825:#### PUT /api/admin/v1/stores/{storeId}/collections/{collectionId}
1840:#### DELETE /api/admin/v1/stores/{storeId}/collections/{collectionId}
1866:| GET | `/api/admin/v1/stores/{storeId}/orders` | `read-orders` | List orders with filtering and pagination | `api.admin` (60/min) |
1867:| GET | `/api/admin/v1/stores/{storeId}/orders/{orderId}` | `read-orders` | Get full order details | `api.admin` (60/min) |
1868:| POST | `/api/admin/v1/stores/{storeId}/orders/{orderId}/fulfillments` | `write-orders` | Create a fulfillment (ship items) | `api.admin` (60/min) |
1869:| POST | `/api/admin/v1/stores/{storeId}/orders/{orderId}/refunds` | `write-orders` | Create a refund (partial or full) | `api.admin` (60/min) |
1871:#### GET /api/admin/v1/stores/{storeId}/orders
1928:#### GET /api/admin/v1/stores/{storeId}/orders/{orderId}
2016:#### POST /api/admin/v1/stores/{storeId}/orders/{orderId}/fulfillments
2077:#### POST /api/admin/v1/stores/{storeId}/orders/{orderId}/refunds
2138:| GET | `/api/admin/v1/stores/{storeId}/discounts` | `read-discounts` | List discounts | `api.admin` (60/min) |
2139:| POST | `/api/admin/v1/stores/{storeId}/discounts` | `write-discounts` | Create a discount | `api.admin` (60/min) |
2140:| PUT | `/api/admin/v1/stores/{storeId}/discounts/{discountId}` | `write-discounts` | Update a discount | `api.admin` (60/min) |
2141:| DELETE | `/api/admin/v1/stores/{storeId}/discounts/{discountId}` | `write-discounts` | Delete a discount | `api.admin` (60/min) |
2143:#### GET /api/admin/v1/stores/{storeId}/discounts
2192:#### POST /api/admin/v1/stores/{storeId}/discounts
2243:#### PUT /api/admin/v1/stores/{storeId}/discounts/{discountId}
2258:#### DELETE /api/admin/v1/stores/{storeId}/discounts/{discountId}
2284:| GET | `/api/admin/v1/stores/{storeId}/shipping/zones` | `read-settings` | List shipping zones with rates | `api.admin` (60/min) |
2285:| POST | `/api/admin/v1/stores/{storeId}/shipping/zones` | `write-settings` | Create a shipping zone | `api.admin` (60/min) |
2286:| PUT | `/api/admin/v1/stores/{storeId}/shipping/zones/{zoneId}` | `write-settings` | Update a shipping zone | `api.admin` (60/min) |
2287:| POST | `/api/admin/v1/stores/{storeId}/shipping/zones/{zoneId}/rates` | `write-settings` | Add a shipping rate to a zone | `api.admin` (60/min) |
2289:#### GET /api/admin/v1/stores/{storeId}/shipping/zones
2337:#### POST /api/admin/v1/stores/{storeId}/shipping/zones
2365:#### PUT /api/admin/v1/stores/{storeId}/shipping/zones/{zoneId}
2380:#### POST /api/admin/v1/stores/{storeId}/shipping/zones/{zoneId}/rates
2420:| GET | `/api/admin/v1/stores/{storeId}/tax/settings` | `read-settings` | Get tax configuration | `api.admin` (60/min) |
2421:| PUT | `/api/admin/v1/stores/{storeId}/tax/settings` | `write-settings` | Update tax configuration | `api.admin` (60/min) |
2423:#### GET /api/admin/v1/stores/{storeId}/tax/settings
2460:#### PUT /api/admin/v1/stores/{storeId}/tax/settings
2498:| POST | `/api/admin/v1/stores/{storeId}/themes` | `write-themes` | Upload or install a new theme | `api.admin` (60/min) |
2499:| POST | `/api/admin/v1/stores/{storeId}/themes/{themeId}/publish` | `write-themes` | Publish a theme (make active) | `api.admin` (60/min) |
2500:| PUT | `/api/admin/v1/stores/{storeId}/themes/{themeId}/settings` | `write-themes` | Update theme customization settings | `api.admin` (60/min) |
2502:#### POST /api/admin/v1/stores/{storeId}/themes
2535:#### POST /api/admin/v1/stores/{storeId}/themes/{themeId}/publish
2558:#### PUT /api/admin/v1/stores/{storeId}/themes/{themeId}/settings
2604:| GET | `/api/admin/v1/stores/{storeId}/pages` | `read-content` | List content pages | `api.admin` (60/min) |
2605:| POST | `/api/admin/v1/stores/{storeId}/pages` | `write-content` | Create a content page | `api.admin` (60/min) |
2606:| PUT | `/api/admin/v1/stores/{storeId}/pages/{pageId}` | `write-content` | Update a content page | `api.admin` (60/min) |
2607:| DELETE | `/api/admin/v1/stores/{storeId}/pages/{pageId}` | `write-content` | Delete a content page | `api.admin` (60/min) |
2609:#### GET /api/admin/v1/stores/{storeId}/pages
2648:#### POST /api/admin/v1/stores/{storeId}/pages
2678:#### PUT /api/admin/v1/stores/{storeId}/pages/{pageId}
2693:#### DELETE /api/admin/v1/stores/{storeId}/pages/{pageId}
2719:| POST | `/api/admin/v1/stores/{storeId}/search/reindex` | `write-settings` | Trigger full search reindex (async) | `api.admin` (60/min) |
2720:| GET | `/api/admin/v1/stores/{storeId}/search/status` | `read-settings` | Get current search index status | `api.admin` (60/min) |
2722:#### POST /api/admin/v1/stores/{storeId}/search/reindex
2743:#### GET /api/admin/v1/stores/{storeId}/search/status
2770:| GET | `/api/admin/v1/stores/{storeId}/analytics/summary` | `read-analytics` | Get analytics summary for date range | `api.admin` (60/min) |
2771:| POST | `/api/admin/v1/stores/{storeId}/exports/orders` | `read-orders` | Queue an order export job (async) | `api.admin` (60/min) |
2772:| GET | `/api/admin/v1/stores/{storeId}/exports/{exportId}` | `read-orders` | Check export status and get download URL | `api.admin` (60/min) |
2774:#### GET /api/admin/v1/stores/{storeId}/analytics/summary
2834:#### POST /api/admin/v1/stores/{storeId}/exports/orders
2868:#### GET /api/admin/v1/stores/{storeId}/exports/{exportId}
2983:| GET | `/api/apps/v1/stores/{storeId}/products` | `read-products` | List products (same schema as admin API) |
2984:| GET | `/api/apps/v1/stores/{storeId}/orders` | `read-orders` | List orders |
2985:| GET | `/api/apps/v1/stores/{storeId}/customers` | `read-customers` | List customers |

---1---
specs/04-STOREFRONT-UI.md:7:## Conventions
specs/04-STOREFRONT-UI.md:21:## Currency Formatting
specs/04-STOREFRONT-UI.md:23:All monetary amounts are stored as integers in minor units (cents) and must be formatted for display according to these rules:
specs/04-STOREFRONT-UI.md:43:## 1. Theme System Architecture
specs/04-STOREFRONT-UI.md:45:### 1.1 View Organization
specs/04-STOREFRONT-UI.md:58:### 1.2 Layout Hierarchy
specs/04-STOREFRONT-UI.md:62:### 1.3 Theme Settings
specs/04-STOREFRONT-UI.md:74:### 1.4 Section-Based Architecture
specs/04-STOREFRONT-UI.md:86:### 1.5 Blade Components
specs/04-STOREFRONT-UI.md:92:## 2. Base Layout
specs/04-STOREFRONT-UI.md:94:### 2.1 Document Head
specs/04-STOREFRONT-UI.md:110:### 2.2 Skip Link
specs/04-STOREFRONT-UI.md:116:### 2.3 Announcement Bar
specs/04-STOREFRONT-UI.md:129:### 2.4 Header
specs/04-STOREFRONT-UI.md:181:### 2.5 Main Content Area
specs/04-STOREFRONT-UI.md:185:### 2.6 Footer
specs/04-STOREFRONT-UI.md:210:### 2.7 Cart Drawer (Livewire)
specs/04-STOREFRONT-UI.md:214:### 2.8 Dark Mode
specs/04-STOREFRONT-UI.md:237:## 3. Home Page (GET /)
specs/04-STOREFRONT-UI.md:247:### 3.1 Hero Banner Section
specs/04-STOREFRONT-UI.md:282:### 3.2 Featured Collections Section
specs/04-STOREFRONT-UI.md:317:### 3.3 Featured Products Section
specs/04-STOREFRONT-UI.md:332:### 3.4 Newsletter Signup Section
specs/04-STOREFRONT-UI.md:364:### 3.5 Rich Text Section
specs/04-STOREFRONT-UI.md:376:## 4. Collection Page (GET /collections/{handle})
specs/04-STOREFRONT-UI.md:380:### 4.1 Collection Header
specs/04-STOREFRONT-UI.md:389:### 4.2 Toolbar
specs/04-STOREFRONT-UI.md:424:### 4.3 Filter Sidebar
specs/04-STOREFRONT-UI.md:463:### 4.4 Product Grid
specs/04-STOREFRONT-UI.md:471:### 4.5 Product Card (Component)
specs/04-STOREFRONT-UI.md:521:### 4.6 Pagination
specs/04-STOREFRONT-UI.md:532:### 4.7 Empty State
specs/04-STOREFRONT-UI.md:555:## 5. Product Page (GET /products/{handle})
specs/04-STOREFRONT-UI.md:559:### 5.1 Layout
specs/04-STOREFRONT-UI.md:582:### 5.2 Image Gallery (Left Column)
specs/04-STOREFRONT-UI.md:621:### 5.3 Product Info (Right Column)
specs/04-STOREFRONT-UI.md:623:#### Breadcrumbs
specs/04-STOREFRONT-UI.md:627:#### Product Title
specs/04-STOREFRONT-UI.md:631:#### Price Display
specs/04-STOREFRONT-UI.md:641:#### Variant Selector
specs/04-STOREFRONT-UI.md:675:#### Stock Messaging
specs/04-STOREFRONT-UI.md:688:#### Quantity Selector
specs/04-STOREFRONT-UI.md:705:#### Add to Cart Button
specs/04-STOREFRONT-UI.md:723:#### Product Description
specs/04-STOREFRONT-UI.md:728:#### Tags
specs/04-STOREFRONT-UI.md:734:### 5.4 Accessibility Summary
specs/04-STOREFRONT-UI.md:746:## 6. Cart Drawer
specs/04-STOREFRONT-UI.md:750:### 6.1 Trigger and Animation
specs/04-STOREFRONT-UI.md:760:### 6.2 Drawer Header
specs/04-STOREFRONT-UI.md:775:### 6.3 Cart Line Items
specs/04-STOREFRONT-UI.md:801:### 6.4 Discount Code Section
specs/04-STOREFRONT-UI.md:829:### 6.5 Totals Section
specs/04-STOREFRONT-UI.md:848:### 6.6 Action Buttons
specs/04-STOREFRONT-UI.md:855:### 6.7 Empty Cart State
specs/04-STOREFRONT-UI.md:874:### 6.8 Accessibility
specs/04-STOREFRONT-UI.md:887:## 7. Full Cart Page (GET /cart)
specs/04-STOREFRONT-UI.md:893:### 7.1 Desktop Layout
specs/04-STOREFRONT-UI.md:924:### 7.2 Totals and Actions
specs/04-STOREFRONT-UI.md:932:### 7.3 Empty State
specs/04-STOREFRONT-UI.md:938:## 8. Checkout Page (GET /checkout/{checkoutId})
specs/04-STOREFRONT-UI.md:942:### 8.1 Layout
specs/04-STOREFRONT-UI.md:964:### 8.2 Checkout Steps
specs/04-STOREFRONT-UI.md:978:#### Step 1 - Contact Information
specs/04-STOREFRONT-UI.md:986:#### Step 2 - Shipping Address
specs/04-STOREFRONT-UI.md:1021:#### Step 3 - Shipping Method
specs/04-STOREFRONT-UI.md:1042:#### Step 4 - Payment Method & Pay
specs/04-STOREFRONT-UI.md:1116:### 8.3 Order Summary Sidebar (Right Column)
specs/04-STOREFRONT-UI.md:1147:### 8.4 Accessibility
specs/04-STOREFRONT-UI.md:1160:## 9. Order Confirmation (GET /checkout/{checkoutId}/confirmation)
specs/04-STOREFRONT-UI.md:1162:### 9.1 Layout
specs/04-STOREFRONT-UI.md:1198:### 9.2 Order Details
specs/04-STOREFRONT-UI.md:1207:#### Bank Transfer Instructions (shown only when `payment_method = bank_transfer`)
specs/04-STOREFRONT-UI.md:1230:### 9.3 Actions
specs/04-STOREFRONT-UI.md:1240:## 10. Customer Account Pages
specs/04-STOREFRONT-UI.md:1244:### 10.1 Login (GET /account/login)
specs/04-STOREFRONT-UI.md:1274:### 10.2 Register (GET /account/register)
specs/04-STOREFRONT-UI.md:1306:### 10.3 Account Dashboard (GET /account)
specs/04-STOREFRONT-UI.md:1332:### 10.4 Order History (GET /account/orders)
specs/04-STOREFRONT-UI.md:1342:### 10.5 Order Detail (GET /account/orders/{orderNumber})
specs/04-STOREFRONT-UI.md:1379:### 10.6 Address Book (GET /account/addresses)
specs/04-STOREFRONT-UI.md:1408:## 11. Search
specs/04-STOREFRONT-UI.md:1410:### 11.1 Search Modal
specs/04-STOREFRONT-UI.md:1448:### 11.2 Search Results Page (GET /search?q=)
specs/04-STOREFRONT-UI.md:1466:## 12. Content Pages (GET /pages/{handle})
specs/04-STOREFRONT-UI.md:1468:### 12.1 Layout
specs/04-STOREFRONT-UI.md:1479:## 13. Error Pages
specs/04-STOREFRONT-UI.md:1481:### 13.1 404 Page
specs/04-STOREFRONT-UI.md:1504:### 13.2 503 / Maintenance Page
specs/04-STOREFRONT-UI.md:1525:## 14. Responsive Breakpoints
specs/04-STOREFRONT-UI.md:1537:### Key Responsive Behaviors
specs/04-STOREFRONT-UI.md:1550:### Touch Considerations
specs/04-STOREFRONT-UI.md:1560:## 15. Accessibility Checklist
specs/04-STOREFRONT-UI.md:1562:### Global (All Pages)
specs/04-STOREFRONT-UI.md:1576:### Page-Specific Accessibility
specs/04-STOREFRONT-UI.md:1587:### Keyboard Interactions
specs/04-STOREFRONT-UI.md:1605:## 16. Component Library
specs/04-STOREFRONT-UI…20413 tokens truncated…},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/orders\/{orderId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@showOrder","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/orders\/{orderId}\/fulfillments","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@fulfillOrder","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/orders\/{orderId}\/refunds","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@refundOrder","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/pages","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@pages","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/pages","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@storePage","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"PUT","uri":"api\/admin\/v1\/stores\/{storeId}\/pages\/{pageId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@updatePage","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"DELETE","uri":"api\/admin\/v1\/stores\/{storeId}\/pages\/{pageId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@deletePage","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/products","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@products","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/products","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@storeProduct","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/products\/{productId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@showProduct","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"PUT","uri":"api\/admin\/v1\/stores\/{storeId}\/products\/{productId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@updateProduct","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"DELETE","uri":"api\/admin\/v1\/stores\/{storeId}\/products\/{productId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@deleteProduct","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/products\/{productId}\/media\/presign-upload","name":null,"action":"App\\Http\\Controllers\\Api\\PlatformController@presignMediaUpload","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/products\/{productId}\/media\/{mediaId}\/complete","name":null,"action":"App\\Http\\Controllers\\Api\\PlatformController@completeMediaUpload","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/search\/reindex","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@reindex","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/search\/status","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@searchStatus","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/shipping\/zones","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@shippingZones","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/shipping\/zones","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@storeShippingZone","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"PUT","uri":"api\/admin\/v1\/stores\/{storeId}\/shipping\/zones\/{zoneId}","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@updateShippingZone","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/shipping\/zones\/{zoneId}\/rates","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@storeShippingRate","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"GET|HEAD","uri":"api\/admin\/v1\/stores\/{storeId}\/tax\/settings","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@taxSettings","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin"]},{"domain":null,"method":"PUT","uri":"api\/admin\/v1\/stores\/{storeId}\/tax\/settings","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@updateTaxSettings","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/themes","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@storeTheme","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"POST","uri":"api\/admin\/v1\/stores\/{storeId}\/themes\/{themeId}\/publish","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@publishTheme","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"PUT","uri":"api\/admin\/v1\/stores\/{storeId}\/themes\/{themeId}\/settings","name":null,"action":"App\\Http\\Controllers\\Api\\AdminController@updateThemeSettings","middleware":["api","App\\Http\\Middleware\\ResolveStore","Illuminate\\Auth\\Middleware\\Authenticate:sanctum","App\\Http\\Middleware\\EnsureStoreRole:owner,admin,staff,support","App\\Http\\Middleware\\EnsureApiAbility","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.admin","App\\Http\\Middleware\\EnsureStoreRole:owner,admin"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/analytics\/events","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontAnalyticsController@store","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:analytics"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/carts","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCartController@store","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"GET|HEAD","uri":"api\/storefront\/v1\/carts\/{cartId}","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCartController@show","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/carts\/{cartId}\/lines","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCartController@addLine","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"PUT","uri":"api\/storefront\/v1\/carts\/{cartId}\/lines\/{lineId}","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCartController@updateLine","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"DELETE","uri":"api\/storefront\/v1\/carts\/{cartId}\/lines\/{lineId}","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCartController@removeLine","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/checkouts","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@store","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"GET|HEAD","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@show","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"PUT","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/address","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@address","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/apply-discount","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@applyDiscount","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"DELETE","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/discount","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@removeDiscount","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"POST","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/pay","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@pay","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"PUT","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/payment-method","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@paymentMethod","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"PUT","uri":"api\/storefront\/v1\/checkouts\/{checkoutId}\/shipping-method","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontCheckoutController@shippingMethod","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:checkout"]},{"domain":null,"method":"GET|HEAD","uri":"api\/storefront\/v1\/orders\/{orderNumber}","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontOrderController@show","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront"]},{"domain":null,"method":"GET|HEAD","uri":"api\/storefront\/v1\/search","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontSearchController@index","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:search"]},{"domain":null,"method":"GET|HEAD","uri":"api\/storefront\/v1\/search\/suggest","name":null,"action":"App\\Http\\Controllers\\Api\\StorefrontSearchController@suggest","middleware":["api","Illuminate\\Session\\Middleware\\StartSession","App\\Http\\Middleware\\ResolveStore","Illuminate\\Routing\\Middleware\\ThrottleRequests:api.storefront","Illuminate\\Routing\\Middleware\\ThrottleRequests:search"]},{"domain":null,"method":"GET|HEAD","uri":"dashboard","name":"dashboard","action":"Illuminate\\Routing\\ViewController","middleware":["web","Illuminate\\Auth\\Middleware\\Authenticate","Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified"]},{"domain":null,"method":"GET|HEAD","uri":"favicon.ico","name":"favicon","action":"Closure","middleware":["web"]},{"domain":null,"method":"GET|HEAD","uri":"oauth\/authorize","name":"oauth.authorize","action":"Closure","middleware":["web","Illuminate\\Auth\\Middleware\\Authenticate"]},{"domain":null,"method":"POST","uri":"oauth\/token","name":"oauth.token","action":"Closure","middleware":["web"]},{"domain":null,"method":"GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS","uri":"settings","name":null,"action":"Illuminate\\Routing\\RedirectController","middleware":["web","Illuminate\\Auth\\Middleware\\Authenticate"]}]


exec

status: completed

input:
const results = await Promise.all([
  tools.exec_command({cmd:"php artisan route:list --path=products --except-vendor", workdir:"/Users/wesner/Herd/shop", yield_time_ms:1000, max_output_tokens:12000}),
  tools.exec_command({cmd:"sed -n '1,260p' routes/web.php && php artisan about | sed -n '1,100p'", workdir:"/Users/wesner/Herd/shop", yield_time_ms:10000, max_output_tokens:20000}),
  tools.exec_command({cmd:"rg -n \"Route::livewire|livewire\" vendor/livewire/livewire/src vendor/livewire/livewire/routes | head -100", workdir:"/Users/wesner/Herd/shop", yield_time_ms:10000, max_output_tokens:12000})
]);
results.forEach((r,i)=>text(`---${i}---\n${r.output}`));


type: CommandExecution

command: rg -n "Route::livewire|livewire" vendor/livewire/livewire/src vendor/livewire/livewire/routes | head -100

type: search

cmd: rg -n 'Route::livewire|livewire' vendor/livewire/livewire/src vendor/livewire/livewire/routes

query: Route::livewire|livewire

path: livewire

status: completed

stdout:
vendor/livewire/livewire/src/LivewireServiceProvider.php:30:        $this->app->alias(LivewireManager::class, 'livewire');
vendor/livewire/livewire/src/LivewireServiceProvider.php:33:        app('livewire')->setProvider($this);
vendor/livewire/livewire/src/LivewireServiceProvider.php:35:        $this->app->singleton('livewire.finder', function () {
vendor/livewire/livewire/src/LivewireServiceProvider.php:38:            $finder->addLocation(classNamespace: config('livewire.class_namespace'));
vendor/livewire/livewire/src/LivewireServiceProvider.php:43:        $this->app->singleton('livewire.compiler', function () {
vendor/livewire/livewire/src/LivewireServiceProvider.php:46:                    storage_path('framework/views/livewire')
vendor/livewire/livewire/src/LivewireServiceProvider.php:51:        $this->app->singleton('livewire.factory', function ($app) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:53:                $app['livewire.finder'],
vendor/livewire/livewire/src/LivewireServiceProvider.php:54:                $app['livewire.compiler']
vendor/livewire/livewire/src/LivewireServiceProvider.php:61:        $config = __DIR__.'/../config/livewire.php';
vendor/livewire/livewire/src/LivewireServiceProvider.php:63:        $this->publishes([$config => base_path('config/livewire.php')], ['livewire', 'livewire:config']);
vendor/livewire/livewire/src/LivewireServiceProvider.php:65:        $this->mergeConfigFrom($config, 'livewire');
vendor/livewire/livewire/src/LivewireServiceProvider.php:101:            'livewire.component_locations',
vendor/livewire/livewire/src/LivewireServiceProvider.php:102:            config('livewire.component_locations', [
vendor/livewire/livewire/src/LivewireServiceProvider.php:104:                resource_path('views/livewire'),
vendor/livewire/livewire/src/LivewireServiceProvider.php:109:            'livewire.component_layout',
vendor/livewire/livewire/src/LivewireServiceProvider.php:110:            config('livewire.component_layout', config('livewire.layout', null))
vendor/livewire/livewire/src/LivewireServiceProvider.php:114:            'livewire.component_placeholder',
vendor/livewire/livewire/src/LivewireServiceProvider.php:115:            config('livewire.component_placeholder', config('livewire.lazy_placeholder', null))
vendor/livewire/livewire/src/LivewireServiceProvider.php:119:            'livewire.make_command',
vendor/livewire/livewire/src/LivewireServiceProvider.php:120:            config('livewire.make_command', [
vendor/livewire/livewire/src/LivewireServiceProvider.php:128:        foreach (config('livewire.component_locations', []) as $location) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:129:            app('livewire.finder')->addLocation(viewPath: $location);
vendor/livewire/livewire/src/LivewireServiceProvider.php:137:        foreach (config('livewire.component_namespaces', []) as $namespace => $location) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:138:            app('livewire.finder')->addNamespace($namespace, viewPath: $location);
vendor/livewire/livewire/src/LivewireServiceProvider.php:151:                'Livewire' => InstalledVersions::getPrettyVersion('livewire/livewire'),
vendor/livewire/livewire/src/LivewireServiceProvider.php:213:            app('livewire')->componentHook($feature);
vendor/livewire/livewire/src/LivewireManager.php:39:        app('livewire.finder')->addComponent($name, class: $class, viewPath: $viewPath);
vendor/livewire/livewire/src/LivewireManager.php:44:        return app('livewire.finder')->addLocation(classNamespace: $classNamespace, viewPath: $viewPath);
vendor/livewire/livewire/src/LivewireManager.php:49:        return app('livewire.finder')->addNamespace($namespace, classNamespace: $classNamespace, viewPath: $viewPath, classPath: $classPath, classViewPath: $classViewPath);
vendor/livewire/livewire/src/LivewireManager.php:64:        app(ExtendBlade::class)->livewireOnlyDirective($name, $callback);
vendor/livewire/livewire/src/LivewireManager.php:69:        app(ExtendBlade::class)->livewireOnlyPrecompiler($callback);
vendor/livewire/livewire/src/LivewireManager.php:74:        app('livewire.compiler')->prepareViewsForCompilationUsing($callback);
vendor/livewire/livewire/src/LivewireManager.php:79:        return app('livewire.factory')->create($name, $id);
vendor/livewire/livewire/src/LivewireManager.php:92:        return app('livewire.factory')->exists($componentNameOrClass);
vendor/livewire/livewire/src/LivewireManager.php:97:        return app('livewire.factory')->resolveMissingComponent($resolver);
vendor/livewire/livewire/src/LivewireManager.php:289:        return app('livewire.zap');
vendor/livewire/livewire/src/LivewireManager.php:330:        return config('livewire.csp_safe', false);
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:56:        $pattern = '/'.Regexes::$livewireOpeningTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:76:            if ($component === 'styles') return '@livewireStyles';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:77:            if ($component === 'scripts') return '@livewireScripts';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:123:        $pattern = '/'.Regexes::$livewireClosingTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:130:            $output .= '@livewire($__component, $__attributes, key($__key), $__slots ?? [])' . PHP_EOL;
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:143:        $pattern = '/'.Regexes::$livewireOpeningTagOrSelfClosingTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:163:            if ($component === 'styles') return '@livewireStyles';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:164:            if ($component === 'scripts') return '@livewireScripts';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:183:                return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false)."], key({$key}))";
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:186:            return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false).'])';
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:28:                    ->name('default-livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:57:        // Find the route with name ending in 'livewire.update'.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:58:        // Custom routes can have prefixes (e.g., 'tenant.livewire.update')
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:59:        // so we check for routes ending with 'livewire.update', not just exact matches.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:64:            if (str($route->getName())->endsWith('livewire.update')) {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:66:                if ($route->getName() === 'default-livewire.update') {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:94:        // Append `livewire.update` to the existing name, if any.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:95:        if (! str($route->getName())->endsWith('livewire.update')) {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:96:            $route->name('livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:115:         * Check to see if route name ends with `livewire.update`, as if
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:117:         * we call `->name('livewire.update')` on the route it will
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:118:         *rg: vendor/livewire/livewire/routes: No such file or directory (os error 2)
 suffix the existing name with `livewire.update`.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:120:        return $route->named('*livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:126:        $maxSize = config('livewire.payload.max_size');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:139:        $maxComponents = config('livewire.payload.max_components');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:156:            [ $snapshot, $effects ] = app('livewire')->update($snapshot, $updates, $calls);
vendor/livewire/livewire/src/Mechanisms/ClearCachedFiles.php:18:                    app('livewire.compiler')->clearCompiled($event->output);
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:15:        $hash = substr(hash('sha256', config('app.key') . 'livewire-endpoint'), 0, 8);
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:17:        return '/livewire-' . $hash;
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:33:        $file = $minified ? 'livewire.min.js' : 'livewire.js';
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:43:        $file = $csp ? 'livewire.csp.min.js.map' : 'livewire.min.js.map';
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:11:        Blade::directive('livewire', [static::class, 'livewire']);
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:14:    public static function livewire($expression)
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:56:\$__html = app('livewire')->mount(\$__name, \$__params, \$key, \$__componentSlots);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:33:        Blade::directive('livewireScripts', [static::class, 'livewireScripts']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:34:        Blade::directive('livewireScriptConfig', [static::class, 'livewireScriptConfig']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:35:        Blade::directive('livewireStyles', [static::class, 'livewireStyles']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:37:        app('livewire')->provide(function() {
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:40:                    __DIR__.'/../../../dist' => public_path('vendor/livewire'),
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:42:                'livewire:assets',
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:66:    public static function livewireScripts($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:71:    public static function livewireScriptConfig($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:76:    public static function livewireStyles($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:83:        $isCsp = app('livewire')->isCspSafe();
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:86:            $file = $isCsp ? 'livewire.csp.js' : 'livewire.js';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:88:            $file = $isCsp ? 'livewire.csp.min.js' : 'livewire.min.js';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:96:        $file = app('livewire')->isCspSafe()
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:97:            ? 'livewire.csp.min.js.map'
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:98:            : 'livewire.min.js.map';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:105:        return Utils::pretendResponseIsFile(__DIR__.'/../../../dist/livewire.csp.min.js.map');
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:118:        $nonce = $nonce ? "{$nonce} data-livewire-style" : '';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:120:        $progressBarColor = config('livewire.navigate.progress_bar_color', '#2299dd');
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:144:                --livewire-progress-bar-color: {$progressBarColor};
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:155:            dialog#livewire-error::backdrop {
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:191:        $url = config('livewire.asset_url') ?: $url;
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:205:        $versionHash = $manifest['/livewire.js'];
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:216:        $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:218:        $moduleUrl = url(app('livewire')->getUriPrefix());
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:220:        $updateUri = url(app('livewire')->getUpdateUri());
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:237:        $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:241:            'uri' => url(app('livewire')->getUpdateUri()),
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:242:            'moduleUrl' => url(app('livewire')->getUriPrefix()),


command: php artisan route:list --path=products --except-vendor

type: unknown

stdout:
  GET|HEAD  api/admin/v1/stores/{storeId}/products Api\AdminController@produc…
  POST      api/admin/v1/stores/{storeId}/products Api\AdminController@storeP…
  GET|HEAD  api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  PUT       api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  DELETE    api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  POST      api/admin/v1/stores/{storeId}/products/{productId}/media/presign-upload Api\PlatformController@presignMedi…
  POST      api/admin/v1/stores/{storeId}/products/{productId}/media/{mediaId}/complete Api\PlatformController@complete…

                                                            Showing [7] routes


command: sed -n '1,260p' routes/web.php && php artisan about | sed -n '1,100p'


text:
Script completed
Wall time 0.3 seconds
Output:

text:
---0---

  GET|HEAD  api/admin/v1/stores/{storeId}/products Api\AdminController@produc…
  POST      api/admin/v1/stores/{storeId}/products Api\AdminController@storeP…
  GET|HEAD  api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  PUT       api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  DELETE    api/admin/v1/stores/{storeId}/products/{productId} Api\AdminContr…
  POST      api/admin/v1/stores/{storeId}/products/{productId}/media/presign-upload Api\PlatformController@presignMedi…
  POST      api/admin/v1/stores/{storeId}/products/{productId}/media/{mediaId}/complete Api\PlatformController@complete…

                                                            Showing [7] routes

text:
---1---
<?php

use App\Livewire\Admin\Analytics\Index as AdminAnalyticsIndex;
use App\Livewire\Admin\Apps\Index as AdminAppsIndex;
use App\Livewire\Admin\Apps\Show as AdminAppsShow;
use App\Livewire\Admin\Auth\ForgotPassword as AdminForgotPassword;
use App\Livewire\Admin\Auth\Login as AdminLogin;
use App\Livewire\Admin\Auth\ResetPassword as AdminResetPassword;
use App\Livewire\Admin\Collections\Create as AdminCollectionsCreate;
use App\Livewire\Admin\Collections\Edit as AdminCollectionsEdit;
use App\Livewire\Admin\Collections\Index as AdminCollectionsIndex;
use App\Livewire\Admin\Customers\Index as AdminCustomersIndex;
use App\Livewire\Admin\Customers\Show as AdminCustomersShow;
use App\Livewire\Admin\Dashboard as AdminDashboard;
use App\Livewire\Admin\Developers\Index as AdminDevelopersIndex;
use App\Livewire\Admin\Discounts\Form as AdminDiscountForm;
use App\Livewire\Admin\Discounts\Index as AdminDiscountsIndex;
use App\Livewire\Admin\Inventory\Index as AdminInventoryIndex;
use App\Livewire\Admin\Navigation\Index as AdminNavigationIndex;
use App\Livewire\Admin\Orders\Index as AdminOrdersIndex;
use App\Livewire\Admin\Orders\Show as AdminOrdersShow;
use App\Livewire\Admin\Pages\Create as AdminPagesCreate;
use App\Livewire\Admin\Pages\Edit as AdminPagesEdit;
use App\Livewire\Admin\Pages\Index as AdminPagesIndex;
use App\Livewire\Admin\Products\Form as AdminProductForm;
use App\Livewire\Admin\Products\Index as AdminProductsIndex;
use App\Livewire\Admin\Search\Settings as AdminSearchSettings;
use App\Livewire\Admin\Settings\General as AdminSettingsGeneral;
use App\Livewire\Admin\Settings\Shipping as AdminSettingsShipping;
use App\Livewire\Admin\Settings\Taxes as AdminSettingsTaxes;
use App\Livewire\Admin\Themes\Editor as AdminThemesEditor;
use App\Livewire\Admin\Themes\Index as AdminThemesIndex;
use App\Livewire\Storefront\Account\Addresses\Index as AccountAddresses;
use App\Livewire\Storefront\Account\Auth\ForgotPassword as CustomerForgotPassword;
use App\Livewire\Storefront\Account\Auth\Login as CustomerLogin;
use App\Livewire\Storefront\Account\Auth\Register as CustomerRegister;
use App\Livewire\Storefront\Account\Auth\ResetPassword as CustomerResetPassword;
use App\Livewire\Storefront\Account\Dashboard as AccountDashboard;
use App\Livewire\Storefront\Account\Orders\Index as AccountOrders;
use App\Livewire\Storefront\Account\Orders\Show as AccountOrderShow;
use App\Livewire\Storefront\Cart\Show as CartShow;
use App\Livewire\Storefront\Checkout\Confirmation as CheckoutConfirmation;
use App\Livewire\Storefront\Checkout\Show as CheckoutShow;
use App\Livewire\Storefront\Collections\Index as CollectionsIndex;
use App\Livewire\Storefront\Collections\Show as CollectionShow;
use App\Livewire\Storefront\Home;
use App\Livewire\Storefront\Pages\Show as PageShow;
use App\Livewire\Storefront\Products\Show as ProductShow;
use App\Livewire\Storefront\Search\Index as SearchIndex;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;

Route::view('dashboard', 'dashboard')
    ->middleware(['auth', 'verified'])
    ->name('dashboard');

require __DIR__.'/settings.php';

Route::get('/favicon.ico', fn (): \Symfony\Component\HttpFoundation\Response => response('', 204))->name('favicon');

Route::middleware('store.resolve')->group(function (): void {
    Route::livewire('/', Home::class)->name('home');
    Route::livewire('/collections', CollectionsIndex::class)->name('collections.index');
    Route::livewire('/collections/{handle}', CollectionShow::class)->name('collection.show');
    Route::livewire('/products/{handle}', ProductShow::class)->name('product.show');
    Route::livewire('/cart', CartShow::class)->name('cart.show');
    Route::livewire('/search', SearchIndex::class)->name('search');
    Route::livewire('/pages/{handle}', PageShow::class)->name('page.show');
    Route::livewire('/checkout/{checkoutId}', CheckoutShow::class)->name('checkout.show');
    Route::livewire('/checkout/{checkoutId}/confirmation', CheckoutConfirmation::class)->name('checkout.confirmation');
    Route::livewire('/account/login', CustomerLogin::class)->middleware('throttle:login')->name('account.login');
    Route::livewire('/account/register', CustomerRegister::class)->name('account.register');
    Route::livewire('/forgot-password', CustomerForgotPassword::class)->name('password.request');
    Route::livewire('/reset-password/{token}', CustomerResetPassword::class)->name('password.reset');
    Route::post('/account/logout', function (): \Illuminate\Http\RedirectResponse {
        Auth::guard('customer')->logout();
        request()->session()->invalidate();
        request()->session()->regenerateToken();

        return redirect()->route('home');
    })->name('account.logout');

    Route::middleware('auth:customer')->group(function (): void {
        Route::livewire('/account', AccountDashboard::class)->name('account.dashboard');
        Route::livewire('/account/orders', AccountOrders::class)->name('account.orders');
        Route::livewire('/account/orders/{orderNumber}', AccountOrderShow::class)->name('account.order.show');
        Route::livewire('/account/addresses', AccountAddresses::class)->name('account.addresses');
    });
});

Route::livewire('/admin/login', AdminLogin::class)->middleware('throttle:login')->name('admin.login');
Route::livewire('/admin/forgot-password', AdminForgotPassword::class)->middleware('throttle:login')->name('admin.password.request');
Route::livewire('/admin/reset-password/{token}', AdminResetPassword::class)->name('admin.password.reset');
Route::post('/admin/logout', function (): \Illuminate\Http\RedirectResponse {
    Auth::guard('web')->logout();
    request()->session()->invalidate();
    request()->session()->regenerateToken();

    return redirect()->route('admin.login');
})->name('admin.logout');

Route::get('/oauth/authorize', fn (): \Illuminate\Http\JsonResponse => response()->json(['message' => 'OAuth is not enabled in this deployment.'], 501))->middleware('auth')->name('oauth.authorize');
Route::post('/oauth/token', fn (): \Illuminate\Http\JsonResponse => response()->json(['message' => 'OAuth is not enabled in this deployment.'], 501))->name('oauth.token');

Route::prefix('admin')->middleware(['auth', 'verified', 'store.resolve', 'role.check:owner,admin,staff,support'])->group(function (): void {
    Route::livewire('/', AdminDashboard::class)->name('admin.dashboard');
    Route::livewire('/products', AdminProductsIndex::class)->name('admin.products.index');
    Route::livewire('/products/create', AdminProductForm::class)->middleware('role.check:owner,admin,staff')->name('admin.products.create');
    Route::livewire('/products/{product}/edit', AdminProductForm::class)->middleware('role.check:owner,admin,staff')->name('admin.products.edit');
    Route::livewire('/orders', AdminOrdersIndex::class)->name('admin.orders.index');
    Route::livewire('/orders/{order}', AdminOrdersShow::class)->name('admin.orders.show');
    Route::livewire('/customers', AdminCustomersIndex::class)->name('admin.customers.index');
    Route::livewire('/customers/{customer}', AdminCustomersShow::class)->name('admin.customers.show');
    Route::livewire('/discounts', AdminDiscountsIndex::class)->name('admin.discounts.index');
    Route::livewire('/discounts/create', AdminDiscountForm::class)->middleware('role.check:owner,admin,staff')->name('admin.discounts.create');
    Route::livewire('/discounts/{discount}/edit', AdminDiscountForm::class)->middleware('role.check:owner,admin,staff')->name('admin.discounts.edit');
    Route::livewire('/settings', AdminSettingsGeneral::class)->middleware('role.check:owner,admin')->name('admin.settings');
    Route::livewire('/settings/domains', \App\Livewire\Admin\Settings\Domains::class)->middleware('role.check:owner,admin')->name('admin.settings.domains');
    Route::livewire('/settings/shipping', AdminSettingsShipping::class)->middleware('role.check:owner,admin')->name('admin.settings.shipping');
    Route::livewire('/settings/taxes', AdminSettingsTaxes::class)->middleware('role.check:owner,admin')->name('admin.settings.taxes');
    Route::livewire('/inventory', AdminInventoryIndex::class)->name('admin.inventory.index');
    Route::livewire('/collections', AdminCollectionsIndex::class)->name('admin.collections.index');
    Route::livewire('/collections/create', AdminCollectionsCreate::class)->middleware('role.check:owner,admin,staff')->name('admin.collections.create');
    Route::livewire('/collections/{collection}/edit', AdminCollectionsEdit::class)->middleware('role.check:owner,admin,staff')->name('admin.collections.edit');
    Route::livewire('/themes', AdminThemesIndex::class)->name('admin.themes.index');
    Route::livewire('/themes/{theme}/editor', AdminThemesEditor::class)->name('admin.themes.editor');
    Route::livewire('/pages', AdminPagesIndex::class)->name('admin.pages.index');
    Route::livewire('/pages/create', AdminPagesCreate::class)->middleware('role.check:owner,admin')->name('admin.pages.create');
    Route::livewire('/pages/{page}/edit', AdminPagesEdit::class)->middleware('role.check:owner,admin')->name('admin.pages.edit');
    Route::livewire('/navigation', AdminNavigationIndex::class)->name('admin.navigation.index');
    Route::livewire('/apps', AdminAppsIndex::class)->name('admin.apps.index');
    Route::livewire('/apps/{installation}', AdminAppsShow::class)->name('admin.apps.show');
    Route::livewire('/developers', AdminDevelopersIndex::class)->middleware('role.check:owner,admin')->name('admin.developers.index');
    Route::livewire('/analytics', AdminAnalyticsIndex::class)->name('admin.analytics.index');
    Route::livewire('/search/settings', AdminSearchSettings::class)->name('admin.search.settings');
});

  Environment ................................................................
  Application Name ................................................... Laravel
  Laravel Version .................................................... 12.51.0
  PHP Version ......................................................... 8.4.21
  Composer Version ..................................................... 2.9.5
  Environment .......................................................... local
  Debug Mode ......................................................... ENABLED
  URL .............................................................. localhost
  Maintenance Mode ....................................................... OFF
  Timezone ............................................................... UTC
  Locale .................................................................. en

  Cache ......................................................................
  Config .......................................................... NOT CACHED
  Events .......................................................... NOT CACHED
  Routes .......................................................... NOT CACHED
  Views ............................................................... CACHED

  Drivers ....................................................................
  Broadcasting ........................................................... log
  Cache ................................................................. file
  Database ............................................................ sqlite
  Logs ........................................................ stack / single
  Mail ................................................................... log
  Queue ................................................................. sync
  Session ............................................................... file

  Storage ....................................................................
  public/storage .................................................. NOT LINKED

  Livewire ...................................................................
  Livewire ............................................................ v4.1.4

text:
---2---
vendor/livewire/livewire/src/LivewireServiceProvider.php:30:        $this->app->alias(LivewireManager::class, 'livewire');
vendor/livewire/livewire/src/LivewireServiceProvider.php:33:        app('livewire')->setProvider($this);
vendor/livewire/livewire/src/LivewireServiceProvider.php:35:        $this->app->singleton('livewire.finder', function () {
vendor/livewire/livewire/src/LivewireServiceProvider.php:38:            $finder->addLocation(classNamespace: config('livewire.class_namespace'));
vendor/livewire/livewire/src/LivewireServiceProvider.php:43:        $this->app->singleton('livewire.compiler', function () {
vendor/livewire/livewire/src/LivewireServiceProvider.php:46:                    storage_path('framework/views/livewire')
vendor/livewire/livewire/src/LivewireServiceProvider.php:51:        $this->app->singleton('livewire.factory', function ($app) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:53:                $app['livewire.finder'],
vendor/livewire/livewire/src/LivewireServiceProvider.php:54:                $app['livewire.compiler']
vendor/livewire/livewire/src/LivewireServiceProvider.php:61:        $config = __DIR__.'/../config/livewire.php';
vendor/livewire/livewire/src/LivewireServiceProvider.php:63:        $this->publishes([$config => base_path('config/livewire.php')], ['livewire', 'livewire:config']);
vendor/livewire/livewire/src/LivewireServiceProvider.php:65:        $this->mergeConfigFrom($config, 'livewire');
vendor/livewire/livewire/src/LivewireServiceProvider.php:101:            'livewire.component_locations',
vendor/livewire/livewire/src/LivewireServiceProvider.php:102:            config('livewire.component_locations', [
vendor/livewire/livewire/src/LivewireServiceProvider.php:104:                resource_path('views/livewire'),
vendor/livewire/livewire/src/LivewireServiceProvider.php:109:            'livewire.component_layout',
vendor/livewire/livewire/src/LivewireServiceProvider.php:110:            config('livewire.component_layout', config('livewire.layout', null))
vendor/livewire/livewire/src/LivewireServiceProvider.php:114:            'livewire.component_placeholder',
vendor/livewire/livewire/src/LivewireServiceProvider.php:115:            config('livewire.component_placeholder', config('livewire.lazy_placeholder', null))
vendor/livewire/livewire/src/LivewireServiceProvider.php:119:            'livewire.make_command',
vendor/livewire/livewire/src/LivewireServiceProvider.php:120:            config('livewire.make_command', [
vendor/livewire/livewire/src/LivewireServiceProvider.php:128:        foreach (config('livewire.component_locations', []) as $location) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:129:            app('livewire.finder')->addLocation(viewPath: $location);
vendor/livewire/livewire/src/LivewireServiceProvider.php:137:        foreach (config('livewire.component_namespaces', []) as $namespace => $location) {
vendor/livewire/livewire/src/LivewireServiceProvider.php:138:            app('livewire.finder')->addNamespace($namespace, viewPath: $location);
vendor/livewire/livewire/src/LivewireServiceProvider.php:151:                'Livewire' => InstalledVersions::getPrettyVersion('livewire/livewire'),
vendor/livewire/livewire/src/LivewireServiceProvider.php:213:            app('livewire')->componentHook($feature);
vendor/livewire/livewire/src/LivewireManager.php:39:        app('livewire.finder')->addComponent($name, class: $class, viewPath: $viewPath);
vendor/livewire/livewire/src/LivewireManager.php:44:        return app('livewire.finder')->addLocation(classNamespace: $classNamespace, viewPath: $viewPath);
vendor/livewire/livewire/src/LivewireManager.php:49:        return app('livewire.finder')->addNamespace($namespace, classNamespace: $classNamespace, viewPath: $viewPath, classPath: $classPath, classViewPath: $classViewPath);
vendor/livewire/livewire/src/LivewireManager.php:64:        app(ExtendBlade::class)->livewireOnlyDirective($name, $callback);
vendor/livewire/livewire/src/LivewireManager.php:69:        app(ExtendBlade::class)->livewireOnlyPrecompiler($callback);
vendor/livewire/livewire/src/LivewireManager.php:74:        app('livewire.compiler')->prepareViewsForCompilationUsing($callback);
vendor/livewire/livewire/src/LivewireManager.php:79:        return app('livewire.factory')->create($name, $id);
vendor/livewire/livewire/src/LivewireManager.php:92:        return app('livewire.factory')->exists($componentNameOrClass);
vendor/livewire/livewire/src/LivewireManager.php:97:        return app('livewire.factory')->resolveMissingComponent($resolver);
vendor/livewire/livewire/src/LivewireManager.php:289:        return app('livewire.zap');
vendor/livewire/livewire/src/LivewireManager.php:330:        return config('livewire.csp_safe', false);
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:56:        $pattern = '/'.Regexes::$livewireOpeningTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:76:            if ($component === 'styles') return '@livewireStyles';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:77:            if ($component === 'scripts') return '@livewireScripts';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:123:        $pattern = '/'.Regexes::$livewireClosingTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:130:            $output .= '@livewire($__component, $__attributes, key($__key), $__slots ?? [])' . PHP_EOL;
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:143:        $pattern = '/'.Regexes::$livewireOpeningTagOrSelfClosingTag.'/x';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:163:            if ($component === 'styles') return '@livewireStyles';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:164:            if ($component === 'scripts') return '@livewireScripts';
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:183:                return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false)."], key({$key}))";
vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php:186:            return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false).'])';
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:28:                    ->name('default-livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:57:        // Find the route with name ending in 'livewire.update'.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:58:        // Custom routes can have prefixes (e.g., 'tenant.livewire.update')
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:59:        // so we check for routes ending with 'livewire.update', not just exact matches.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:64:            if (str($route->getName())->endsWith('livewire.update')) {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:66:                if ($route->getName() === 'default-livewire.update') {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:94:        // Append `livewire.update` to the existing name, if any.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:95:        if (! str($route->getName())->endsWith('livewire.update')) {
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:96:            $route->name('livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:115:         * Check to see if route name ends with `livewire.update`, as if
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:117:         * we call `->name('livewire.update')` on the route it will
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:118:         *rg: vendor/livewire/livewire/routes: No such file or directory (os error 2)
 suffix the existing name with `livewire.update`.
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:120:        return $route->named('*livewire.update');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:126:        $maxSize = config('livewire.payload.max_size');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:139:        $maxComponents = config('livewire.payload.max_components');
vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php:156:            [ $snapshot, $effects ] = app('livewire')->update($snapshot, $updates, $calls);
vendor/livewire/livewire/src/Mechanisms/ClearCachedFiles.php:18:                    app('livewire.compiler')->clearCompiled($event->output);
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:15:        $hash = substr(hash('sha256', config('app.key') . 'livewire-endpoint'), 0, 8);
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:17:        return '/livewire-' . $hash;
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:33:        $file = $minified ? 'livewire.min.js' : 'livewire.js';
vendor/livewire/livewire/src/Mechanisms/HandleRequests/EndpointResolver.php:43:        $file = $csp ? 'livewire.csp.min.js.map' : 'livewire.min.js.map';
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:11:        Blade::directive('livewire', [static::class, 'livewire']);
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:14:    public static function livewire($expression)
vendor/livewire/livewire/src/Mechanisms/RenderComponent.php:56:\$__html = app('livewire')->mount(\$__name, \$__params, \$key, \$__componentSlots);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:33:        Blade::directive('livewireScripts', [static::class, 'livewireScripts']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:34:        Blade::directive('livewireScriptConfig', [static::class, 'livewireScriptConfig']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:35:        Blade::directive('livewireStyles', [static::class, 'livewireStyles']);
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:37:        app('livewire')->provide(function() {
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:40:                    __DIR__.'/../../../dist' => public_path('vendor/livewire'),
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:42:                'livewire:assets',
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:66:    public static function livewireScripts($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:71:    public static function livewireScriptConfig($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:76:    public static function livewireStyles($expression)
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:83:        $isCsp = app('livewire')->isCspSafe();
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:86:            $file = $isCsp ? 'livewire.csp.js' : 'livewire.js';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:88:            $file = $isCsp ? 'livewire.csp.min.js' : 'livewire.min.js';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:96:        $file = app('livewire')->isCspSafe()
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:97:            ? 'livewire.csp.min.js.map'
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:98:            : 'livewire.min.js.map';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:105:        return Utils::pretendResponseIsFile(__DIR__.'/../../../dist/livewire.csp.min.js.map');
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:118:        $nonce = $nonce ? "{$nonce} data-livewire-style" : '';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:120:        $progressBarColor = config('livewire.navigate.progress_bar_color', '#2299dd');
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:144:                --livewire-progress-bar-color: {$progressBarColor};
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:155:            dialog#livewire-error::backdrop {
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:191:        $url = config('livewire.asset_url') ?: $url;
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:205:        $versionHash = $manifest['/livewire.js'];
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:216:        $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:218:        $moduleUrl = url(app('livewire')->getUriPrefix());
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:220:        $updateUri = url(app('livewire')->getUpdateUri());
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:237:        $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar';
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:241:            'uri' => url(app('livewire')->getUpdateUri()),
vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php:242:            'moduleUrl' => url(app('livewire')->getUriPrefix()),


status: completed

input:
const results = await Promise.all([
  tools.exec_command({cmd:"curl -s -o /tmp/shop_home.html -w 'home %{http_code}\\n' -H 'Host: shop.test' http://127.0.0.1:8000/ || true", workdir:"/Users/wesner/Herd/shop", yield_time_ms:1000, max_output_tokens:3000}),
  tools.exec_command({cmd:"curl -s -o /tmp/shop_admin.html -w 'admin %{http_code}\\n' -H 'Host: shop.test' http://127.0.0.1:8000/admin || true", workdir:"/Users/wesner/Herd/shop", yield_time_ms:1000, max_output_tokens:3000}),
  tools.exec_command({cmd:"php artisan tinker --execute='dump(app(\"router\")->getRoutes()->getByName(\"home\")); dump(app(\"router\")->getRoutes()->match(Illuminate\\Http\\Request::create(\"/\", \"GET\"))->getAction());' 2>/tmp/tinker.err", workdir:"/Users/wesner/Herd/shop", yield_time_ms:1000, max_output_tokens:8000})
]);
results.forEach((r,i)=>text(`---${i}---\n${r.output}`));


command: curl -s -o /tmp/shop_home.html -w 'home %{http_code}\n' -H 'Host: shop.test' http://127.0.0.1:8000/ || true

stdout: home 200

aggregated_output: home 200

formatted_output: home 200


command: curl -s -o /tmp/shop_admin.html -w 'admin %{http_code}\n' -H 'Host: shop.test' http://127.0.0.1:8000/admin || true

stdout: admin 403

aggregated_output: admin 403

formatted_output: admin 403