Files
Claude-Code-Workflow/ccw/docs-site/build/assets/js/c5a82d8d.a992435d.js
catlog22 c6093ef741 feat: add CLI Command Node and Prompt Node components for orchestrator
- Implemented CliCommandNode component for executing CLI tools with AI models.
- Implemented PromptNode component for constructing AI prompts with context.
- Added styling for mode and tool badges in both components.
- Enhanced user experience with command and argument previews, execution status, and error handling.

test: add comprehensive tests for ask_question tool

- Created direct test for ask_question tool execution.
- Developed end-to-end tests to validate ask_question tool integration with WebSocket and A2UI surfaces.
- Implemented simple and integrated WebSocket tests to ensure proper message handling and surface reception.
- Added tool registration test to verify ask_question tool is correctly registered.

chore: add WebSocket listener and simulation tests

- Added WebSocket listener for A2UI surfaces to facilitate testing.
- Implemented frontend simulation test to validate complete flow from backend to frontend.
- Created various test scripts to ensure robust testing of ask_question tool functionality.
2026-02-03 23:10:36 +08:00

1 line
17 KiB
JavaScript

"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[482],{1184(e,n,l){l.d(n,{R:()=>r,x:()=>d});var i=l(3696);const s={},t=i.createContext(s);function r(e){const n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(t.Provider,{value:n},e.children)}},9293(e,n,l){l.r(n),l.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"workflows/level-1-ultra-lightweight","title":"Level 1 - Ultra-Lightweight Workflows","description":"Rapid execution workflow for simple tasks with zero overhead","source":"@site/docs/workflows/level-1-ultra-lightweight.mdx","sourceDirName":"workflows","slug":"/workflows/level-1-ultra-lightweight","permalink":"/docs/docs/workflows/level-1-ultra-lightweight","draft":false,"unlisted":false,"editUrl":"https://github.com/ccw/docs/tree/main/docs/workflows/level-1-ultra-lightweight.mdx","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"title":"Level 1 - Ultra-Lightweight Workflows","description":"Rapid execution workflow for simple tasks with zero overhead","sidebar_position":2},"sidebar":"docs","previous":{"title":"Introduction","permalink":"/docs/docs/workflows/introduction"},"next":{"title":"Level 2: Rapid","permalink":"/docs/docs/workflows/level-2-rapid"}}');var s=l(2540),t=l(1184),r=l(1540);const d={title:"Level 1 - Ultra-Lightweight Workflows",description:"Rapid execution workflow for simple tasks with zero overhead",sidebar_position:2},c="Level 1: Ultra-Lightweight Workflows",o={},a=[{value:"Overview",id:"overview",level:2},{value:"Included Workflow: lite-lite-lite",id:"included-workflow-lite-lite-lite",level:2},{value:"Command",id:"command",level:3},{value:"Flow Diagram",id:"flow-diagram",level:3},{value:"Characteristics",id:"characteristics",level:3},{value:"Process Phases",id:"process-phases",level:3},{value:"CLI Selection Logic",id:"cli-selection-logic",level:3},{value:"Use Cases",id:"use-cases",level:2},{value:"When to Use",id:"when-to-use",level:3},{value:"When NOT to Use",id:"when-not-to-use",level:3},{value:"Examples",id:"examples",level:2},{value:"Example 1: Quick Fix",id:"example-1-quick-fix",level:3},{value:"Example 2: Simple Feature",id:"example-2-simple-feature",level:3},{value:"Example 3: Config Adjustment",id:"example-3-config-adjustment",level:3},{value:"Pros &amp; Cons",id:"pros--cons",level:2},{value:"Pros",id:"pros",level:3},{value:"Cons",id:"cons",level:3},{value:"Comparison with Other Levels",id:"comparison-with-other-levels",level:2},{value:"When to Graduate to Higher Levels",id:"when-to-graduate-to-higher-levels",level:2},{value:"Related Workflows",id:"related-workflows",level:2}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"level-1-ultra-lightweight-workflows",children:"Level 1: Ultra-Lightweight Workflows"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Complexity"}),": Low | ",(0,s.jsx)(n.strong,{children:"Artifacts"}),": None | ",(0,s.jsx)(n.strong,{children:"State"}),": Stateless | ",(0,s.jsx)(n.strong,{children:"Iteration"}),": Via AskUser"]}),"\n",(0,s.jsx)(n.p,{children:"The simplest workflow for immediate simple tasks - minimal overhead, direct execution."}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsx)(n.p,{children:"Level 1 workflows are designed for quick, straightforward tasks that don't require planning, documentation, or persistent state. They execute directly from input to completion."}),"\n",(0,s.jsx)(r.A,{chart:"\n flowchart LR\n Input([User Input]) --\x3e Clarify[Clarification<br/>Optional]\n Clarify --\x3e Select{Auto-select<br/>CLI}\n Select --\x3e Analysis[Parallel Analysis<br/>Multi-tool exploration]\n Analysis --\x3e Results[Show Results]\n Results --\x3e Execute[Direct Execute]\n Execute --\x3e Done([Complete])\n\n classDef startend fill:#c8e6c9,stroke:#388e3c\n classDef action fill:#e3f2fd,stroke:#1976d2\n classDef decision fill:#fff9c4,stroke:#f57c00\n\n class Input,Done startend,Clarify,Select,Analysis,Results,Execute action,Select decision\n"}),"\n",(0,s.jsx)(n.h2,{id:"included-workflow-lite-lite-lite",children:"Included Workflow: lite-lite-lite"}),"\n",(0,s.jsx)(n.h3,{id:"command",children:"Command"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"/workflow:lite-lite-lite\n# Or CCW auto-selects for simple tasks\n"})}),"\n",(0,s.jsx)(n.h3,{id:"flow-diagram",children:"Flow Diagram"}),"\n",(0,s.jsx)(r.A,{chart:"\n flowchart TD\n A([User Input]) --\x3e B{Clarification<br/>Needed?}\n B --\x3e|Yes| C[AskUserQuestion<br/>Goal/Scope/Constraints]\n B --\x3e|No| D[Task Analysis]\n C --\x3e D\n\n D --\x3e E{CLI Selection}\n E --\x3e F[Gemini<br/>Analysis]\n E --\x3e G[Codex<br/>Implementation]\n E --\x3e H[Claude<br/>Reasoning]\n\n F --\x3e I[Aggregate Results]\n G --\x3e I\n H --\x3e I\n\n I --\x3e J{Direct<br/>Execute?}\n J --\x3e|Yes| K[Execute Directly]\n J --\x3e|Iterate| L[Refine via AskUser]\n L --\x3e K\n\n K --\x3e M([Complete])\n\n classDef startend fill:#c8e6c9,stroke:#388e3c\n classDef action fill:#e3f2fd,stroke:#1976d2\n classDef decision fill:#fff9c4,stroke:#f57c00\n\n class A,M startend,B,E,J decision,C,D,F,G,H,I,K action\n"}),"\n",(0,s.jsx)(n.h3,{id:"characteristics",children:"Characteristics"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Property"}),(0,s.jsx)(n.th,{children:"Value"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Complexity"})}),(0,s.jsx)(n.td,{children:"Low"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Artifacts"})}),(0,s.jsx)(n.td,{children:"None (no intermediate files)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"State"})}),(0,s.jsx)(n.td,{children:"Stateless"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"CLI Selection"})}),(0,s.jsx)(n.td,{children:"Auto-analyze task type"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Iteration"})}),(0,s.jsx)(n.td,{children:"Via AskUser interaction"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"process-phases",children:"Process Phases"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Input Analysis"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Parse user input for task intent"}),"\n",(0,s.jsx)(n.li,{children:"Detect complexity level"}),"\n",(0,s.jsx)(n.li,{children:"Identify required CLI tools"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Optional Clarification"})," (if clarity_score < 2)"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Goal: Create/Fix/Optimize/Analyze"}),"\n",(0,s.jsx)(n.li,{children:"Scope: Single file/Module/Cross-module"}),"\n",(0,s.jsx)(n.li,{children:"Constraints: Backward compat/Skip tests/Urgent hotfix"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"CLI Auto-Selection"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Task type -> CLI tool mapping"}),"\n",(0,s.jsx)(n.li,{children:"Parallel analysis across multiple tools"}),"\n",(0,s.jsx)(n.li,{children:"Aggregated result presentation"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Direct Execution"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Execute changes immediately"}),"\n",(0,s.jsx)(n.li,{children:"No intermediate artifacts"}),"\n",(0,s.jsx)(n.li,{children:"Optional iteration via AskUser"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"cli-selection-logic",children:"CLI Selection Logic"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-javascript",children:"function selectCLI(task) {\n const patterns = {\n 'gemini': /analyze|review|understand|explore/,\n 'codex': /implement|generate|create|write code/,\n 'claude': /debug|fix|optimize|refactor/,\n 'qwen': /consult|discuss|compare/\n };\n\n for (const [cli, pattern] of Object.entries(patterns)) {\n if (pattern.test(task)) return cli;\n }\n return 'gemini'; // Default\n}\n"})}),"\n",(0,s.jsx)(n.h2,{id:"use-cases",children:"Use Cases"}),"\n",(0,s.jsx)(n.h3,{id:"when-to-use",children:"When to Use"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Quick fixes (simple typos, minor adjustments)"}),"\n",(0,s.jsx)(n.li,{children:"Simple feature additions (single function, small utility)"}),"\n",(0,s.jsx)(n.li,{children:"Configuration adjustments (environment variables, config files)"}),"\n",(0,s.jsx)(n.li,{children:"Small-scope renaming (variable names, function names)"}),"\n",(0,s.jsx)(n.li,{children:"Documentation updates (readme, comments)"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"when-not-to-use",children:"When NOT to Use"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Multi-module changes (use Level 2+)"}),"\n",(0,s.jsx)(n.li,{children:"Need persistent records (use Level 3+)"}),"\n",(0,s.jsx)(n.li,{children:"Complex refactoring (use Level 3-4)"}),"\n",(0,s.jsx)(n.li,{children:"Test-driven development (use Level 3 TDD)"}),"\n",(0,s.jsx)(n.li,{children:"Architecture design (use Level 4-5)"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,s.jsx)(n.h3,{id:"example-1-quick-fix",children:"Example 1: Quick Fix"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'/workflow:lite-lite-lite "Fix typo in function name: getUserData"\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Flow"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Detect: Simple typo fix"}),"\n",(0,s.jsx)(n.li,{children:"Select: Codex for refactoring"}),"\n",(0,s.jsx)(n.li,{children:"Execute: Direct rename across files"}),"\n",(0,s.jsx)(n.li,{children:"Complete: No artifacts generated"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"example-2-simple-feature",children:"Example 2: Simple Feature"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'/workflow:lite-lite-lite "Add logging to user login function"\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Flow"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Detect: Single-module feature"}),"\n",(0,s.jsx)(n.li,{children:"Select: Claude for implementation"}),"\n",(0,s.jsx)(n.li,{children:"Clarify: Log level? Output destination?"}),"\n",(0,s.jsx)(n.li,{children:"Execute: Add log statements"}),"\n",(0,s.jsx)(n.li,{children:"Complete: Working code"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"example-3-config-adjustment",children:"Example 3: Config Adjustment"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'/workflow:lite-lite-lite "Update API timeout to 30 seconds"\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Flow"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Detect: Config change"}),"\n",(0,s.jsx)(n.li,{children:"Select: Gemini for analysis"}),"\n",(0,s.jsx)(n.li,{children:"Analysis: Find all timeout configs"}),"\n",(0,s.jsx)(n.li,{children:"Execute: Update values"}),"\n",(0,s.jsx)(n.li,{children:"Complete: Configuration updated"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"pros--cons",children:"Pros & Cons"}),"\n",(0,s.jsx)(n.h3,{id:"pros",children:"Pros"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Benefit"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Speed"})}),(0,s.jsx)(n.td,{children:"Fastest workflow, zero overhead"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Simplicity"})}),(0,s.jsx)(n.td,{children:"No planning or documentation"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Direct"})}),(0,s.jsx)(n.td,{children:"Input -> Execute -> Complete"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"No Artifacts"})}),(0,s.jsx)(n.td,{children:"Clean workspace, no file clutter"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Low Cognitive Load"})}),(0,s.jsx)(n.td,{children:"Simple, straightforward execution"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"cons",children:"Cons"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Limitation"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"No Trace"})}),(0,s.jsx)(n.td,{children:"No record of changes made"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"No Planning"})}),(0,s.jsx)(n.td,{children:"Can't handle complex tasks"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"No Review"})}),(0,s.jsx)(n.td,{children:"No built-in code review"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Limited Scope"})}),(0,s.jsx)(n.td,{children:"Single-module only"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"No Rollback"})}),(0,s.jsx)(n.td,{children:"Changes are immediate"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"comparison-with-other-levels",children:"Comparison with Other Levels"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Aspect"}),(0,s.jsx)(n.th,{children:"Level 1"}),(0,s.jsx)(n.th,{children:"Level 2"}),(0,s.jsx)(n.th,{children:"Level 3"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Planning"})}),(0,s.jsx)(n.td,{children:"None"}),(0,s.jsx)(n.td,{children:"In-memory"}),(0,s.jsx)(n.td,{children:"Persistent"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Artifacts"})}),(0,s.jsx)(n.td,{children:"None"}),(0,s.jsx)(n.td,{children:"Memory files"}),(0,s.jsx)(n.td,{children:"Session files"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Complexity"})}),(0,s.jsx)(n.td,{children:"Low"}),(0,s.jsx)(n.td,{children:"Low-Medium"}),(0,s.jsx)(n.td,{children:"Medium-High"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Traceability"})}),(0,s.jsx)(n.td,{children:"No"}),(0,s.jsx)(n.td,{children:"Partial"}),(0,s.jsx)(n.td,{children:"Full"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Review"})}),(0,s.jsx)(n.td,{children:"No"}),(0,s.jsx)(n.td,{children:"Optional"}),(0,s.jsx)(n.td,{children:"Built-in"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"when-to-graduate-to-higher-levels",children:"When to Graduate to Higher Levels"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Signs you need Level 2+"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Task involves multiple modules"}),"\n",(0,s.jsx)(n.li,{children:"Need to track progress"}),"\n",(0,s.jsx)(n.li,{children:"Requirements need clarification"}),"\n",(0,s.jsx)(n.li,{children:"Want code review"}),"\n",(0,s.jsx)(n.li,{children:"Need test generation"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Migration path"}),":"]}),"\n",(0,s.jsx)(r.A,{chart:'\n graph LR\n L1["Level 1:<br/>lite-lite-lite"] --\x3e L2["Level 2:<br/>lite-plan"]\n L2 --\x3e L3["Level 3:<br/>plan"]\n L3 --\x3e L4["Level 4:<br/>brainstorm"]\n L4 --\x3e L5["Level 5:<br/>ccw-coordinator"]\n\n classDef node fill:#e3f2fd,stroke:#1976d2\n\n class L1,L2,L3,L4,L5 node\n'}),"\n",(0,s.jsx)(n.h2,{id:"related-workflows",children:"Related Workflows"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/docs/docs/workflows/level-2-rapid",children:"Level 2: Rapid Workflows"})," - Next level up with planning"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/docs/docs/workflows/level-3-standard",children:"Level 3: Standard Workflows"})," - Full session management"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/docs/docs/workflows/faq",children:"FAQ"})," - Common questions"]}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]);