@getripple/mcp 1.0.8 → 1.0.10

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @getripple/mcp Changelog
2
2
 
3
+ ## [1.0.9] - 2026-06-13
4
+
5
+ ### Changed
6
+ - Reframe the MCP package as the agent-facing wire for Ripple's local authorization gate.
7
+ - Add `ripple_record_verification` to the documented agent workflow so agents record test or verification evidence before the final gate.
8
+ - Update package metadata to depend on `@getripple/core@^1.0.9`.
9
+
10
+ ## [1.0.8] - 2026-06-09
11
+
12
+ ### Validation
13
+ - Manually validated MCP-backed agent workflows against a real `sindresorhus/ky` clone through planning, gate checks, repair handoff, policy-based human approval, and CI-style blocking.
14
+
15
+ ### Fixed
16
+ - Consume the core history fix so MCP scans preserve architectural history after cached graph refreshes.
17
+
18
+ ## [1.0.7] - 2026-06-08
19
+
20
+ ### Added
21
+ - Return evidence-backed risk summaries through MCP gate responses.
22
+ - Add MCP contract coverage for gate risk level, score, reasons, evidence, and required actions.
23
+ - Expose the same continue/repair/human-review language used by CLI and CI.
24
+
25
+ ### Changed
26
+ - Make MCP gate responses easier for AI agents to obey by pairing each stop decision with concrete repair or human-review instructions.
27
+
3
28
  ## [1.0.6] - 2026-06-07
4
29
 
5
30
  ### Fixed
package/README.md CHANGED
@@ -1,35 +1,24 @@
1
1
  # @getripple/mcp
2
2
 
3
- Plan before edit. Check after edit. Catch drift. Tell the agent what to fix.
3
+ **The agent-facing wire for Ripple's local authorization gate.**
4
4
 
5
- **MCP stdio server for Ripple's local drift-control gate for AI coding agents.**
5
+ `@getripple/mcp` lets MCP-compatible AI coding agents ask Ripple what they are
6
+ allowed to change, record verification evidence, and receive a final
7
+ continue/repair/human-review decision.
6
8
 
7
- `@getripple/mcp` lets MCP-compatible AI coding agents call Ripple directly from inside their workflow.
8
-
9
- Use this package when you want an agent to ask Ripple:
9
+ Use this package when you want the agent itself to call Ripple:
10
10
 
11
11
  ```txt
12
12
  What should I read before editing?
13
- What boundary was approved?
13
+ What boundary is approved?
14
+ What verification is required?
14
15
  Did my staged changes drift?
15
16
  Can I continue?
16
17
  What must I fix?
17
18
  ```
18
19
 
19
- Ripple helps agents work inside a human-approved boundary:
20
-
21
- ```txt
22
- plan before edit
23
- save intent
24
- check after edit
25
- catch drift
26
- tell the agent what to fix
27
- continue / repair / human review
28
- ```
29
-
30
- The MCP server is best when the AI agent should call Ripple tools directly.
31
-
32
- For terminal, CI, and human-controlled workflows, use `@getripple/cli`.
20
+ For Git hooks, CI, terminal audits, and repository initialization, use
21
+ `@getripple/cli`.
33
22
 
34
23
  ---
35
24
 
@@ -64,40 +53,55 @@ Windows: C:\\Users\\yourname\\projects\\myapp
64
53
 
65
54
  No global install is required. `npx` fetches and runs the MCP server.
66
55
 
56
+ Before relying on MCP in a repo, initialize the local control layer:
57
+
58
+ ```bash
59
+ npx -y @getripple/cli init
60
+ ```
61
+
67
62
  ---
68
63
 
69
64
  ## Agent Workflow
70
65
 
71
- Use the Ripple MCP tools in this order.
66
+ Agents should use the Ripple MCP tools in this order:
72
67
 
73
68
  ```txt
74
- 1. Check readiness
75
- 2. Plan before edit
76
- 3. Save the approved intent
77
- 4. Let the agent edit inside the boundary
78
- 5. Check after edit
79
- 6. Catch drift
80
- 7. Tell the agent what to fix
81
- 8. Continue, repair, or ask the human
82
- ```
69
+ 1. ripple_doctor
70
+ Check repo readiness.
83
71
 
84
- ---
72
+ 2. ripple_plan_context
73
+ Plan before editing and save the approved intent.
85
74
 
86
- ## 1. Check Readiness
75
+ 3. Agent edits code
76
+ Stay inside allowed_files and allowed_symbols.
87
77
 
88
- Call:
78
+ 4. ripple_check_staged or ripple_check_changed
79
+ Compare the real Git diff against the saved intent.
89
80
 
90
- ```txt
91
- ripple_doctor
81
+ 5. ripple_record_verification
82
+ Record the result of required tests, typechecks, or manual verification.
83
+
84
+ 6. ripple_gate
85
+ Get the final continue, repair, human-review, or restore-readiness decision.
86
+
87
+ 7. ripple_repair_intent_drift
88
+ If the gate stops, get exact repair actions.
92
89
  ```
93
90
 
94
- This checks whether the repo is ready for Ripple's saved-intent workflow.
91
+ Agent rule:
92
+
93
+ ```txt
94
+ canContinue=true -> continue only after required verification
95
+ mustStop=true -> stop and follow fixNow
96
+ needsHuman=true -> ask the human; do not self-approve
97
+ ```
95
98
 
96
- If the result says `mustStop=true`, fix readiness before editing.
99
+ Do not claim Ripple passed unless you called a Ripple MCP tool and the final
100
+ gate allowed the work to continue.
97
101
 
98
102
  ---
99
103
 
100
- ## 2. Plan Before Edit
104
+ ## Plan Before Edit
101
105
 
102
106
  Call:
103
107
 
@@ -109,8 +113,8 @@ Pass:
109
113
 
110
114
  ```txt
111
115
  task
112
- target file
113
- control mode
116
+ targetFile
117
+ controlMode
114
118
  saveIntent: true
115
119
  ```
116
120
 
@@ -125,43 +129,52 @@ allowedSymbols
125
129
  editableFiles
126
130
  verificationTargets
127
131
  risk
132
+ policyExplanation
128
133
  human gate state
129
134
  ```
130
135
 
131
- When `saveIntent: true` is used, Ripple saves the human-approved boundary for later drift checks.
132
-
133
- The saved intent becomes the trust boundary for the agent's work.
136
+ When `saveIntent: true` is used, Ripple saves the approved boundary for later
137
+ drift checks.
134
138
 
135
139
  ---
136
140
 
137
- ## 3. Check After Edit
141
+ ## Record Verification
138
142
 
139
- After the agent edits code and the intended files are staged, call:
143
+ After editing, the agent must run or report the narrowest relevant verification
144
+ target before final handoff when Ripple asks for it.
145
+
146
+ Call:
140
147
 
141
148
  ```txt
142
- ripple_check_staged
149
+ ripple_record_verification
143
150
  ```
144
151
 
145
- This compares staged changes against the saved intent and reports:
152
+ Example reported evidence:
146
153
 
147
154
  ```txt
148
- intent drift
149
- boundary drift
150
- policy drift
151
- contract drift
152
- approval state
153
- handoff
155
+ command: npm test -- tests/auth.test.ts
156
+ status: passed
157
+ note: auth retry tests passed after boundary-scoped change
154
158
  ```
155
159
 
156
- For changed files against a base branch, call:
160
+ Supported statuses:
157
161
 
158
162
  ```txt
159
- ripple_check_changed
163
+ passed
164
+ failed
165
+ skipped
166
+ unknown
160
167
  ```
161
168
 
169
+ Failed evidence blocks as repair. Skipped or unknown evidence requires human
170
+ review. Stale evidence must be rerun against the current changed files.
171
+
172
+ After recording verification evidence, call `ripple_gate` again so the final
173
+ decision includes that evidence.
174
+
162
175
  ---
163
176
 
164
- ## 4. Ask the Gate
177
+ ## Ask The Gate
165
178
 
166
179
  Call:
167
180
 
@@ -171,13 +184,7 @@ ripple_gate
171
184
 
172
185
  `ripple_gate` is the compact continue/stop decision.
173
186
 
174
- It answers one question:
175
-
176
- ```txt
177
- Can the AI agent continue?
178
- ```
179
-
180
- Example:
187
+ Example stop response:
181
188
 
182
189
  ```json
183
190
  {
@@ -190,40 +197,22 @@ Example:
190
197
  }
191
198
  ```
192
199
 
193
- Agent rule:
194
-
195
- ```txt
196
- canContinue=true -> continue only after required verification
197
- mustStop=true -> stop and follow fixNow
198
- needsHuman=true -> ask the human; do not self-approve
199
- ```
200
-
201
- ---
202
-
203
- ## 5. Repair Drift
204
-
205
- Call:
200
+ If the agent crossed a function boundary, the gate can return evidence like:
206
201
 
207
202
  ```txt
208
- ripple_repair_intent_drift
209
- ```
210
-
211
- This tells the agent what to fix.
203
+ Allowed:
204
+ - src/auth.ts::refreshToken
212
205
 
213
- It may return:
206
+ Changed outside boundary:
207
+ - symbol: src/auth.ts::login
214
208
 
215
- ```txt
216
- which files to unstage
217
- which symbols to undo
218
- which contracts to review
219
- which tests to run
220
- when to create a wider human-approved intent
221
- when to ask the human
209
+ Fix now:
210
+ - Undo or replan unapproved symbol: src/auth.ts::login
211
+ - Ask the human to approve a wider boundary before keeping these changes.
222
212
  ```
223
213
 
224
- If the task scope changed, the agent should not silently continue.
225
-
226
- It should ask for a wider human-approved intent.
214
+ Ripple does not silently delete code. It stops the workflow and tells the agent
215
+ what must be fixed or when a human must review.
227
216
 
228
217
  ---
229
218
 
@@ -232,12 +221,14 @@ It should ask for a wider human-approved intent.
232
221
  ```txt
233
222
  ripple_get_agent_workflow full agent workflow guide and output contracts
234
223
  ripple_doctor check project readiness
224
+ ripple_get_intent_status check whether saved intent is missing, active, closed, or invalid
235
225
  ripple_plan_context plan before editing and optionally save intent
236
226
  ripple_check_staged check staged files against saved intent
237
227
  ripple_check_changed check changed files against a git base ref
238
228
  ripple_audit_change audit a completed change for drift signals
239
229
  ripple_gate compact continue/stop decision
240
230
  ripple_get_approval_status check whether a human gate is required
231
+ ripple_record_verification record passed/failed/skipped/unknown verification evidence
241
232
  ripple_repair_intent_drift get repair actions when drift is detected
242
233
  ripple_get_focus focused context for one file
243
234
  ripple_get_blast_radius files that depend on a target file
@@ -247,116 +238,32 @@ ripple_get_recent_changes recent architectural changes from history
247
238
 
248
239
  ---
249
240
 
250
- ## Example Agent Loop
251
-
252
- A safe AI-agent workflow should look like this:
253
-
254
- ```txt
255
- 1. Call ripple_doctor
256
- 2. Call ripple_plan_context with saveIntent=true
257
- 3. Read only the suggested context
258
- 4. Edit only inside the approved boundary
259
- 5. Stage the intended changes
260
- 6. Call ripple_check_staged
261
- 7. Call ripple_gate
262
- 8. Continue, repair, or stop based on the gate
263
- ```
264
-
265
- If `mustStop=true`, the agent must stop.
266
-
267
- If `needsHuman=true`, the agent must ask the human.
268
-
269
- If `canContinue=true`, the agent may continue only after required verification passes.
270
-
271
- ---
272
-
273
241
  ## Trust Boundaries
274
242
 
275
- Ripple saves the freedom level the agent was given before editing and checks whether the agent stayed inside it after editing.
243
+ Ripple saves the freedom level the agent was given before editing and checks
244
+ whether the agent stayed inside it after editing.
276
245
 
277
- Supported control modes:
278
-
279
- | Mode | Boundary |
280
- | ------------ | -------------------------------------------- |
281
- | `brainstorm` | No edits allowed. Suggest and explain only. |
282
- | `function` | Only the approved symbol may change. |
283
- | `file` | Only the selected file may change. |
284
- | `task` | Files in the saved task plan may change. |
285
- | `pr` | Full task scope. Human reviews before merge. |
246
+ | Mode | Agent is allowed to |
247
+ | --- | --- |
248
+ | `brainstorm` | Suggest and explain only. No edits. |
249
+ | `function` | Edit only the approved symbol. |
250
+ | `file` | Edit only the approved file. |
251
+ | `task` | Edit files in the saved task plan. |
252
+ | `pr` | Complete low-risk PR work for human review before merge. |
286
253
 
287
254
  Example function boundary:
288
255
 
289
256
  ```txt
290
- file: src/auth.ts
291
- symbol: refreshToken
292
- mode: function
257
+ tool: ripple_plan_context
293
258
  task: fix retry behavior
259
+ targetFile: src/auth.ts
260
+ symbol: refreshToken
261
+ controlMode: function
294
262
  saveIntent: true
295
263
  ```
296
264
 
297
- If `function` mode approves only `refreshToken` but the agent also changes `login`, Ripple stops the workflow and tells the agent what to fix.
298
-
299
- ---
300
-
301
- ## Gate Decisions
302
-
303
- `ripple_gate` returns the decision an agent should obey.
304
-
305
- Possible decisions include:
306
-
307
- ```txt
308
- continue
309
- repair
310
- human-review
311
- restore-readiness
312
- ```
313
-
314
- Example stop decision:
315
-
316
- ```txt
317
- STOP: agent crossed approved function boundary.
318
-
319
- Allowed:
320
- - src/auth.ts::refreshToken
321
-
322
- Changed outside boundary:
323
- - src/auth.ts::login
324
-
325
- Fix:
326
- - undo src/auth.ts::login
327
- - or create a wider human-approved intent
328
- ```
329
-
330
- Machine-readable output includes:
331
-
332
- ```json
333
- {
334
- "status": "closed",
335
- "decision": "human-review",
336
- "canContinue": false,
337
- "mustStop": true,
338
- "needsHuman": true,
339
- "why": ["Changed symbol outside approved boundary: src/auth.ts::login"],
340
- "fixNow": ["Undo src/auth.ts::login or replan with human approval."]
341
- }
342
- ```
343
-
344
- ---
345
-
346
- ## Run Manually
347
-
348
- Run without installing:
349
-
350
- ```bash
351
- npx -y @getripple/mcp --workspace /absolute/path/to/your/repo
352
- ```
353
-
354
- Or install globally:
355
-
356
- ```bash
357
- npm install -g @getripple/mcp
358
- ripple-mcp --workspace /absolute/path/to/your/repo
359
- ```
265
+ If `function` mode approves only `refreshToken` but the agent also changes
266
+ `login`, Ripple stops the workflow and tells the agent what to fix.
360
267
 
361
268
  ---
362
269
 
@@ -364,11 +271,8 @@ ripple-mcp --workspace /absolute/path/to/your/repo
364
271
 
365
272
  The server communicates over stdio using JSON-RPC.
366
273
 
367
- Only MCP protocol messages are written to stdout.
368
-
369
- Non-protocol scan/cache output is kept off stdout so MCP clients can parse responses reliably.
370
-
371
- This matters because MCP clients expect clean JSON-RPC messages on stdout.
274
+ Only MCP protocol messages are written to stdout. Non-protocol scan/cache output
275
+ is kept off stdout so MCP clients can parse responses reliably.
372
276
 
373
277
  ---
374
278
 
@@ -395,25 +299,13 @@ ignore: .ripple/.cache/
395
299
 
396
300
  `.ripple/.cache/` is machine cache.
397
301
 
398
- Policy, history, intents, and approvals are durable workflow/audit state.
399
-
400
302
  ---
401
303
 
402
304
  ## CLI Relationship
403
305
 
404
306
  The MCP package is for agents.
405
307
 
406
- The CLI package is for humans, terminals, scripts, and CI.
407
-
408
- Use CLI when you want:
409
-
410
- ```txt
411
- manual commands
412
- CI gates
413
- local terminal workflows
414
- release proofs
415
- human-controlled checks
416
- ```
308
+ The CLI package is for humans, terminals, hooks, scripts, and CI.
417
309
 
418
310
  Use MCP when you want:
419
311
 
@@ -422,28 +314,31 @@ agents to call Ripple directly
422
314
  structured tool responses
423
315
  stdio JSON-RPC protocol
424
316
  agent-readable handoff decisions
317
+ verification evidence recorded into the saved intent
425
318
  ```
426
319
 
427
- ---
428
-
429
- ## Language Support
430
-
431
- Strongest today:
320
+ Use CLI when you want:
432
321
 
433
322
  ```txt
434
- JavaScript
435
- TypeScript
323
+ repo initialization
324
+ Git hook enforcement
325
+ CI gates
326
+ local terminal workflows
327
+ release proofs
328
+ human-controlled checks
436
329
  ```
437
330
 
438
- Basic support:
331
+ ---
439
332
 
440
- ```txt
441
- Python imports
442
- Python functions
443
- Python classes
444
- Python methods
445
- file-level staged checks
446
- ```
333
+ ## Language Support
334
+
335
+ | Language | Status |
336
+ | --- | --- |
337
+ | TypeScript / JavaScript | Deep support for imports, exports, symbols, callers, staged drift, and blast radius |
338
+ | Python | Basic support for imports, functions, classes, methods, and file-level staged checks |
339
+
340
+ Ripple uses static analysis. It can miss runtime-only behavior, dynamic imports,
341
+ reflection, decorators, generated code, and framework-specific magic.
447
342
 
448
343
  ---
449
344
 
@@ -452,37 +347,27 @@ file-level staged checks
452
347
  Ripple runs locally.
453
348
 
454
349
  ```txt
455
- No account required
456
- No telemetry
457
- No cloud indexing
458
- No code upload
459
- No remote model call required
350
+ No account required.
351
+ No telemetry.
352
+ No cloud indexing.
353
+ No code upload.
354
+ No remote model call required.
460
355
  ```
461
356
 
462
- Your repo is scanned on your machine.
463
-
464
- The MCP server does not require sending your code to a cloud service.
357
+ Your repository is scanned on your machine. The MCP server does not require
358
+ sending your code to a cloud service.
465
359
 
466
360
  ---
467
361
 
468
- ## Status
469
-
470
- Public alpha.
362
+ ## Honest Limits
471
363
 
472
- Ripple is a local signal and gate.
473
-
474
- It is not:
475
-
476
- ```txt
477
- a sandbox
478
- a test replacement
479
- a typechecker replacement
480
- a code review replacement
481
- a CI replacement
482
- a human judgment replacement
483
- ```
364
+ Ripple is deterministic infrastructure, not a magical AI wrapper.
484
365
 
485
- Ripple helps an agent know whether it stayed inside the work it was trusted to do.
366
+ - Ripple is not a coding agent.
367
+ - Ripple is not a sandbox.
368
+ - Ripple relies on agents actually calling the MCP tools.
369
+ - Ripple uses static analysis.
370
+ - Ripple does not replace your compiler, test suite, code review, or judgment.
486
371
 
487
372
  ---
488
373
 
package/dist/server.js CHANGED
@@ -223,19 +223,7 @@ function parseToolCallParams(params) {
223
223
  };
224
224
  }
225
225
  function isRippleMcpToolName(name) {
226
- return (name === "ripple_doctor" ||
227
- name === "ripple_check_changed" ||
228
- name === "ripple_check_staged" ||
229
- name === "ripple_audit_change" ||
230
- name === "ripple_gate" ||
231
- name === "ripple_get_approval_status" ||
232
- name === "ripple_get_agent_workflow" ||
233
- name === "ripple_repair_intent_drift" ||
234
- name === "ripple_get_focus" ||
235
- name === "ripple_get_blast_radius" ||
236
- name === "ripple_explain_policy" ||
237
- name === "ripple_plan_context" ||
238
- name === "ripple_get_recent_changes");
226
+ return typeof name === "string" && tools_1.RIPPLE_MCP_TOOLS.some((tool) => tool.name === name);
239
227
  }
240
228
  function isJsonRpcRequest(value) {
241
229
  if (!isRecord(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AACrC,mCAMiB;AAEJ,QAAA,oBAAoB,GAAG,YAAY,CAAC;AAkCjD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,CAAC,KAAK;IAClB,cAAc,EAAE,CAAC,KAAK;IACtB,cAAc,EAAE,CAAC,KAAK;IACtB,aAAa,EAAE,CAAC,KAAK;IACrB,aAAa,EAAE,CAAC,KAAK;CACb,CAAC;AAEX,MAAa,sBAAsB;IACjC,YACmB,IAAuB,EACvB,UAAkB,kBAAkB,EAAE;QADtC,SAAI,GAAJ,IAAI,CAAmB;QACvB,YAAO,GAAP,OAAO,CAA+B;IACtD,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC;QAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;QAEhD,IAAI,OAAO,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,cAAc;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACpC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACpC,OAAO,cAAc;oBACnB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACpC,OAAO,cAAc;oBACnB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,cAAc;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,OAAO;YACL,eAAe,EAAE,4BAAoB;YACrC,YAAY,EAAE;gBACZ,KAAK,EAAE;oBACL,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;YACD,YAAY,EACV,mIAAmI;SACtI,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAe;QAC1C,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI;qBACL;iBACF;gBACD,iBAAiB,EAAE,MAAM,CAAC,IAAI;gBAC9B,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;qBACxB;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,EAAa,EAAE,MAAe;QAC5C,OAAO;YACL,OAAO,EAAE,gBAAgB;YACzB,EAAE;YACF,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,KAAK,CACX,EAAa,EACb,IAAY,EACZ,OAAe,EACf,IAAc;QAEd,OAAO;YACL,OAAO,EAAE,gBAAgB;YACzB,EAAE;YACF,KAAK,EAAE;gBACL,IAAI;gBACJ,OAAO;gBACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;aACxC;SACF,CAAC;IACJ,CAAC;CACF;AA7ID,wDA6IC;AAEM,KAAK,UAAU,cAAc,CAAC,aAAqB;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAA,+BAAuB,EAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,CAAC,QAAgC,EAAQ,EAAE;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;QAC5D,IAAI,CAAC;YACH,aAAa,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,aAAa,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE;oBACL,IAAI,EAAE,eAAe,CAAC,aAAa;oBACnC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;YACtB,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAjDD,wCAiDC;AAED,SAAS,mBAAmB,CAAC,MAAe;IAI1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,MAAwB,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,SAAS,EAAE,UAAU,CAAC,SAAS;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAa;IACxC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,wBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACtB,OAAO,CACL,OAAO,CAAC,OAAO,KAAK,gBAAgB;QACpC,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,CAAC;QACrF,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QACjF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAc;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAClD,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACnB,yBAAyB;gBACzB,EAAE;gBACF,QAAQ;gBACR,mCAAmC;gBACnC,EAAE;gBACF,cAAc;gBACd,+EAA+E;gBAC/E,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,GAAG,KAAK,CAAC;YACb,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,KAAK,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}