claude-mcp-workflow 0.1.0 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.mcp.json +1 -2
  3. package/README.md +87 -14
  4. package/build/dashboard.d.ts.map +1 -1
  5. package/build/dashboard.js +9 -1
  6. package/build/dashboard.js.map +1 -1
  7. package/build/engine.d.ts +20 -1
  8. package/build/engine.d.ts.map +1 -1
  9. package/build/engine.js +367 -9
  10. package/build/engine.js.map +1 -1
  11. package/build/executor.d.ts +8 -0
  12. package/build/executor.d.ts.map +1 -0
  13. package/build/executor.js +177 -0
  14. package/build/executor.js.map +1 -0
  15. package/build/index.js +8 -1
  16. package/build/index.js.map +1 -1
  17. package/build/loader.d.ts.map +1 -1
  18. package/build/loader.js +37 -4
  19. package/build/loader.js.map +1 -1
  20. package/build/modifier.d.ts +1 -9
  21. package/build/modifier.d.ts.map +1 -1
  22. package/build/modifier.js +4 -0
  23. package/build/modifier.js.map +1 -1
  24. package/build/template.d.ts +2 -0
  25. package/build/template.d.ts.map +1 -0
  26. package/build/template.js +21 -0
  27. package/build/template.js.map +1 -0
  28. package/build/tools.d.ts.map +1 -1
  29. package/build/tools.js +44 -32
  30. package/build/tools.js.map +1 -1
  31. package/build/types.d.ts +527 -1
  32. package/build/types.d.ts.map +1 -1
  33. package/build/types.js +30 -11
  34. package/build/types.js.map +1 -1
  35. package/dashboard/index.html +139 -12
  36. package/hooks/workflow-start.sh +24 -0
  37. package/package.json +5 -3
  38. package/templates/bug-fix.yaml +64 -33
  39. package/templates/code-review.yaml +211 -41
  40. package/templates/coding.yaml +15 -7
  41. package/templates/debugging.yaml +12 -6
  42. package/templates/file-code.yaml +11 -5
  43. package/templates/file-review.yaml +48 -7
  44. package/templates/github-init.yaml +81 -0
  45. package/templates/investigate.yaml +14 -5
  46. package/templates/master.yaml +136 -38
  47. package/templates/new-feature.yaml +15 -6
  48. package/templates/planning.yaml +28 -4
  49. package/templates/reflection.yaml +39 -3
  50. package/templates/review-push.yaml +63 -0
  51. package/templates/skills/coding-skill-selector/SKILL.md +5 -3
  52. package/templates/skills/lang-haxe/SKILL.md +159 -1
  53. package/templates/skills/preferences/SKILL.md +39 -2
  54. package/templates/skills/task-delegation/SKILL.md +7 -15
  55. package/templates/skills/workflow-authoring/SKILL.md +136 -0
  56. package/templates/testing.yaml +2 -2
  57. package/templates/web-research.yaml +1 -1
  58. package/dashboard/dagre.min.js +0 -801
  59. package/templates/refactoring.yaml +0 -56
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "workflow",
3
- "version": "1.0.0",
4
- "description": "Structured workflow orchestration for AI agents via finite-state machines",
3
+ "version": "0.1.6",
4
+ "description": "Structured workflow orchestration for AI agents via finite-state machines. Dashboard: http://localhost:3100",
5
5
  "author": {
6
6
  "name": "AxGord",
7
7
  "email": "axgord@gmail.com",
package/.mcp.json CHANGED
@@ -2,8 +2,7 @@
2
2
  "mcpServers": {
3
3
  "wf": {
4
4
  "command": "node",
5
- "args": ["./build/index.js"],
6
- "env": {}
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/build/index.js"]
7
6
  }
8
7
  }
9
8
  }
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <a href="package.json"><img src="https://img.shields.io/badge/version-1.0.0-blue" alt="Version"></a>
6
+ <a href="https://www.npmjs.com/package/claude-mcp-workflow"><img src="https://img.shields.io/npm/v/claude-mcp-workflow" alt="npm"></a>
7
7
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"></a>
8
8
  <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.7-3178c6" alt="TypeScript"></a>
9
9
  <a href="https://code.claude.com/docs/en/plugins"><img src="https://img.shields.io/badge/Claude_Code-Plugin-ff6600" alt="Claude Code Plugin"></a>
@@ -20,27 +20,33 @@ A Claude Code plugin that drives agents through YAML-defined state machines. The
20
20
  - **Three-tier loading** — bundled templates < global (`~/.claude/workflows/`) < project (`.claude/workflows/`)
21
21
  - **Snapshot isolation** — workflow definitions frozen at session start; hot-reloads don't affect running sessions
22
22
  - **Runtime overlays** — modify workflows on the fly without touching YAML files
23
+ - **Action states** — `exec` runs shell commands, `fetch` makes HTTP requests, with auto-routing by exit code or HTTP status
23
24
  - **Web dashboard** — real-time session monitoring with DAG graph visualization
24
- - **16 bundled workflows** — complete agent lifecycle from routing to reflection
25
- - **8 bundled skills** — reusable knowledge modules auto-provisioned on first run
25
+ - **18 bundled workflows** — complete agent lifecycle from routing to reflection
26
+ - **9 bundled skills** — reusable knowledge modules auto-provisioned on first run
26
27
  - **SessionStart hook** — auto-provisions missing skills and injects workflow context
27
28
 
28
29
  ## Quick Start
29
30
 
30
- ### From the Official Marketplace
31
+ ### From npm (recommended)
31
32
 
32
- ```
33
- /plugin install workflow@claude-plugin-directory
34
- ```
35
-
36
- ### From GitHub
33
+ Create a `marketplace.json` and add it as a source, or install directly:
37
34
 
38
35
  ```bash
39
- # 1. Add the repository as a marketplace source
40
- /plugin marketplace add AxGord/claude-workflow
36
+ # 1. Add a marketplace with this plugin
37
+ /plugin marketplace add <marketplace-with-workflow>
41
38
 
42
- # 2. Install the plugin
43
- /plugin install workflow@AxGord-claude-workflow
39
+ # 2. Install
40
+ /plugin install workflow@<marketplace-name>
41
+ ```
42
+
43
+ See [Creating a marketplace](https://code.claude.com/docs/en/plugin-marketplaces) for how to set up an npm-based marketplace with this plugin:
44
+
45
+ ```json
46
+ {
47
+ "name": "workflow",
48
+ "source": { "source": "npm", "package": "claude-mcp-workflow" }
49
+ }
44
50
  ```
45
51
 
46
52
  ### Manual (for development)
@@ -103,6 +109,67 @@ states:
103
109
  outcome: complete # or "fail"
104
110
  ```
105
111
 
112
+ ## Action States
113
+
114
+ States can run shell commands or HTTP requests automatically — the agent doesn't participate, the engine handles execution and routes to the next state based on the result.
115
+
116
+ ### `exec` — run a shell command
117
+
118
+ ```yaml
119
+ run_tests:
120
+ type: exec
121
+ command: "npm test"
122
+ cwd: "{{context.cwd}}"
123
+ timeout: 30000
124
+ on_success: analyze
125
+ on_error: fix
126
+ success_prompt: "Tests passed:\n{{stdout}}"
127
+ error_prompt: "Tests failed (exit {{exit_code}}):\n{{stderr}}"
128
+ ```
129
+
130
+ ### `fetch` — make an HTTP request
131
+
132
+ ```yaml
133
+ check_api:
134
+ type: fetch
135
+ url: "http://localhost:8888/ping"
136
+ method: GET
137
+ timeout: 5000
138
+ retry:
139
+ max: 60
140
+ interval: 500
141
+ on_success: ready
142
+ on_error: wait
143
+ success_prompt: "API ready: {{body}}"
144
+ error_prompt: "Not responding: {{error}}"
145
+ ```
146
+
147
+ ### Routing
148
+
149
+ Action states route via `on_success`/`on_error`, or by specific codes using `cases`:
150
+
151
+ ```yaml
152
+ run_tests:
153
+ type: exec
154
+ command: "npm test"
155
+ cases:
156
+ "0": all_passed
157
+ "1": tests_failed
158
+ "2": no_tests_found
159
+ default: unknown_error
160
+ ```
161
+
162
+ ### Template variables
163
+
164
+ All prompts support `{{mustache}}` templates. Context values are available everywhere via `{{context.key}}`. After action execution, result variables are also available:
165
+
166
+ | Source | Variables |
167
+ |--------|-----------|
168
+ | `exec` | `{{stdout}}`, `{{stderr}}`, `{{exit_code}}`, `{{pid}}` (background) |
169
+ | `fetch` | `{{status}}`, `{{body}}`, `{{error}}` |
170
+
171
+ Action states can be chained — `exec` → `exec` → `fetch` → `prompt` — up to 20 steps without agent involvement.
172
+
106
173
  ## Three-Tier Loading
107
174
 
108
175
  Workflows load from three sources in ascending priority — later tiers override earlier ones:
@@ -123,7 +190,6 @@ A project workflow named `coding` overrides the bundled `coding` template. Same-
123
190
  | `coding` | Code writing pipeline: think → delegate → write → review → verify |
124
191
  | `bug-fix` | Standard bug fix: classify → diagnose → fix → verify |
125
192
  | `new-feature` | New feature implementation with planning and testing |
126
- | `refactoring` | Bring every touched file to current standards |
127
193
  | `debugging` | Diagnose first, fix never (until diagnosed) |
128
194
  | `code-review` | Code review with per-file deep analysis |
129
195
  | `explore` | Codebase exploration — understand structure, trace code, find patterns |
@@ -135,6 +201,8 @@ A project workflow named `coding` overrides the bundled `coding` template. Same-
135
201
  | `subagent` | Lightweight routing for sub-agents (no chat/plan/reflect) |
136
202
  | `file-code` | Per-file coding — spawned by coding/bug-fix for each file |
137
203
  | `file-review` | Per-file deep review — spawned by code-review for each file |
204
+ | `review-push` | Review uncommitted changes, then commit and push to GitHub |
205
+ | `github-init` | Initialize git repo and create private GitHub repository |
138
206
 
139
207
  ![Coding workflow graph](docs/screenshots/workflow-coding.png)
140
208
 
@@ -152,6 +220,7 @@ Skills are reusable knowledge modules loaded by workflows via `Skill()`. Auto-pr
152
220
  | `lang-python` | Python language gotchas |
153
221
  | `math` | Math overflow boundary gotchas |
154
222
  | `web-reading` | Fetch web content via subagents |
223
+ | `workflow-authoring` | Reference for creating workflows with exec/fetch action states |
155
224
 
156
225
  ## MCP Tools
157
226
 
@@ -195,6 +264,7 @@ The web dashboard runs on `localhost:3100` and provides real-time monitoring:
195
264
  | `WORKFLOW_DIR` | `~/.claude/workflows/` | Global workflow YAML directory |
196
265
  | `STATE_DIR` | `~/.claude/workflow-state/` | Session JSON persistence |
197
266
  | `DASHBOARD_PORT` | `3100` | Web dashboard HTTP port |
267
+ | `DASHBOARD_HOST` | `127.0.0.1` | Web dashboard bind address |
198
268
 
199
269
  ## Status Line
200
270
 
@@ -240,6 +310,7 @@ Then in `~/.claude/settings.json`:
240
310
  npm run build # tsc → compiles src/ to build/
241
311
  npm run dev # tsc --watch
242
312
  npm start # node build/index.js
313
+ npm test # vitest run
243
314
  ```
244
315
 
245
316
  ### Architecture
@@ -252,6 +323,8 @@ npm start # node build/index.js
252
323
  | `src/storage.ts` | JSON persistence with atomic writes and lockfile mutex |
253
324
  | `src/modifier.ts` | Runtime overlays + create (YAML writer) |
254
325
  | `src/tools.ts` | MCP tool registrations + response formatting |
326
+ | `src/executor.ts` | Action state execution — shell commands (`exec`) and HTTP requests (`fetch`) |
327
+ | `src/template.ts` | Mustache-style `{{var}}` template rendering for action parameters |
255
328
  | `src/dashboard.ts` | Express REST API + static file serving |
256
329
  | `src/types.ts` | Zod schemas, TypeScript types, constants |
257
330
 
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiG1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpF"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyG1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpF"}
@@ -1,5 +1,6 @@
1
1
  import express from "express";
2
2
  import path from "node:path";
3
+ import { createRequire } from "node:module";
3
4
  import { fileURLToPath } from "node:url";
4
5
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
6
  function buildApp(storage, loader) {
@@ -61,6 +62,12 @@ function buildApp(storage, loader) {
61
62
  res.status(500).json({ error: err.message });
62
63
  }
63
64
  });
65
+ // Serve dagre from node_modules (works both in dev and when installed as a dependency)
66
+ const require = createRequire(import.meta.url);
67
+ const dagrePath = require.resolve("@dagrejs/dagre/dist/dagre.min.js");
68
+ app.get("/dagre.min.js", (_req, res) => {
69
+ res.sendFile(dagrePath);
70
+ });
64
71
  // Serve dashboard HTML
65
72
  const dashboardDir = path.resolve(__dirname, "..", "dashboard");
66
73
  app.use(express.static(dashboardDir));
@@ -70,7 +77,8 @@ function buildApp(storage, loader) {
70
77
  return app;
71
78
  }
72
79
  function tryListen(app, port) {
73
- const server = app.listen(port);
80
+ const host = process.env.DASHBOARD_HOST || "127.0.0.1";
81
+ const server = app.listen(port, host);
74
82
  server.on("listening", () => {
75
83
  console.error(`Dashboard running at http://localhost:${port}`);
76
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
package/build/engine.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { StackFrame, HistoryEntry, StateDefinition } from "./types.js";
2
2
  import type { Storage } from "./storage.js";
3
3
  import type { Loader } from "./loader.js";
4
+ import type { Executor } from "./executor.js";
4
5
  export interface TransitionResult {
5
6
  readonly prompt: string;
6
7
  readonly warnings: string[];
@@ -23,14 +24,24 @@ export interface StatusResult {
23
24
  readonly context: Record<string, unknown>;
24
25
  readonly taskOps: TaskOp[];
25
26
  readonly visitCount: number;
27
+ readonly forcePrompt?: boolean;
26
28
  }
27
29
  export declare class Engine {
30
+ private static readonly GLOBAL_WORKFLOWS;
28
31
  private readonly _storage;
29
32
  private readonly _loader;
33
+ private readonly _executor;
30
34
  private readonly _snapshots;
31
- constructor(storage: Storage, loader: Loader);
35
+ constructor(storage: Storage, loader: Loader, executor: Executor);
32
36
  /** Find the most recently updated active session for the current Claude Code PID. */
33
37
  resolveSessionId(sessionId?: string): string;
38
+ private static _isPidAlive;
39
+ /**
40
+ * Check if the session belongs to the current Claude Code process.
41
+ * When force=true, skip the check but warn if the owner process is still alive.
42
+ * Returns a warning string if force was used, undefined otherwise.
43
+ */
44
+ assertOwnership(sessionId: string, force?: boolean): string | undefined;
34
45
  start(workflowName: string, actor?: string, parentSessionId?: string): Promise<StatusResult>;
35
46
  transition(sessionId: string, transitionName: string, actor?: string): Promise<StatusResult>;
36
47
  abort(sessionId: string): Promise<void>;
@@ -41,12 +52,20 @@ export declare class Engine {
41
52
  * Returns the new status if pop succeeded, or null if still pending.
42
53
  */
43
54
  retryPendingPop(sessionId: string): Promise<StatusResult | null>;
55
+ /** Abandon active sessions whose owner PID is no longer alive. */
56
+ reapOrphanedSessions(): Promise<string[]>;
44
57
  setContext(sessionId: string, key: string, value: unknown, actor?: string): Promise<void>;
58
+ private _isActionState;
59
+ private _isSkillGate;
60
+ private _handleSkillGate;
61
+ private _buildTemplateVars;
62
+ private _executeActionState;
45
63
  private _pushSubWorkflow;
46
64
  private _popStack;
47
65
  private _formatChildrenBlockError;
48
66
  private _getActiveChildren;
49
67
  private _cascadeAbandonChildren;
68
+ private _getProjectWorkflows;
50
69
  private _getWorkflow;
51
70
  private _resolveState;
52
71
  private _applyTransitionOverrides;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EACV,YAAY,EAEZ,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2D;gBAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAK5C,qFAAqF;IAC9E,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAWtC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0D5F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8G5F,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAMjD;;;;OAIG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAsBhE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAexF,gBAAgB;YAuChB,SAAS;IAiHvB,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,kBAAkB;YAMZ,uBAAuB;IAkBrC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,YAAY;CA8CrB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EACV,YAAY,EAEZ,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAID,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAIrC;IAEH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2D;gBAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAMhE,qFAAqF;IAC9E,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAWnD,OAAO,CAAC,MAAM,CAAC,WAAW;IAS1B;;;;OAIG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAejE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0E5F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiI5F,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B7C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAMjD;;;;OAIG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAsB7E,kEAAkE;IACrD,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAczC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetG,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;YAIN,gBAAgB;IAqH9B,OAAO,CAAC,kBAAkB;YAeZ,mBAAmB;YAuInB,gBAAgB;YA6ChB,SAAS;IAyHvB,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,kBAAkB;YAMZ,uBAAuB;IAkBrC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,YAAY;CA0DrB"}