@nifrajs/cli 3.3.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -3
- package/dist/app-files.d.ts +11 -0
- package/dist/app-files.d.ts.map +1 -0
- package/dist/app-files.js +34 -0
- package/dist/app-files.js.map +1 -0
- package/dist/assure-hydration.d.ts +7 -1
- package/dist/assure-hydration.d.ts.map +1 -1
- package/dist/assure-hydration.js +128 -43
- package/dist/assure-hydration.js.map +1 -1
- package/dist/assure.d.ts.map +1 -1
- package/dist/assure.js +16 -2
- package/dist/assure.js.map +1 -1
- package/dist/capabilities-tool.d.ts +5 -1
- package/dist/capabilities-tool.d.ts.map +1 -1
- package/dist/capabilities-tool.js +32 -10
- package/dist/capabilities-tool.js.map +1 -1
- package/dist/cdn-check.d.ts +41 -0
- package/dist/cdn-check.d.ts.map +1 -0
- package/dist/cdn-check.js +207 -0
- package/dist/cdn-check.js.map +1 -0
- package/dist/check-diagnostics.d.ts +7 -15
- package/dist/check-diagnostics.d.ts.map +1 -1
- package/dist/check-diagnostics.js +162 -713
- package/dist/check-diagnostics.js.map +1 -1
- package/dist/check-scan.d.ts +58 -7
- package/dist/check-scan.d.ts.map +1 -1
- package/dist/check-scan.js +323 -62
- package/dist/check-scan.js.map +1 -1
- package/dist/check.d.ts +1 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +145 -54
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +42 -16
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +306 -87
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.d.ts +60 -5
- package/dist/command-catalog.d.ts.map +1 -1
- package/dist/command-catalog.js +298 -33
- package/dist/command-catalog.js.map +1 -1
- package/dist/config-target.d.ts +8 -0
- package/dist/config-target.d.ts.map +1 -0
- package/dist/config-target.js +45 -0
- package/dist/config-target.js.map +1 -0
- package/dist/contracts.d.ts +3 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +56 -16
- package/dist/contracts.js.map +1 -1
- package/dist/db-audit.d.ts +37 -0
- package/dist/db-audit.d.ts.map +1 -0
- package/dist/db-audit.js +99 -0
- package/dist/db-audit.js.map +1 -0
- package/dist/db-child.d.ts +64 -0
- package/dist/db-child.d.ts.map +1 -0
- package/dist/db-child.js +213 -0
- package/dist/db-child.js.map +1 -0
- package/dist/db-config.d.ts +60 -0
- package/dist/db-config.d.ts.map +1 -0
- package/dist/db-config.js +176 -0
- package/dist/db-config.js.map +1 -0
- package/dist/db-tool.d.ts +84 -0
- package/dist/db-tool.d.ts.map +1 -0
- package/dist/db-tool.js +537 -0
- package/dist/db-tool.js.map +1 -0
- package/dist/dev-bun-config.d.ts +20 -13
- package/dist/dev-bun-config.d.ts.map +1 -1
- package/dist/dev-bun-config.js +98 -41
- package/dist/dev-bun-config.js.map +1 -1
- package/dist/dev-feed-tool.d.ts +106 -0
- package/dist/dev-feed-tool.d.ts.map +1 -0
- package/dist/dev-feed-tool.js +713 -0
- package/dist/dev-feed-tool.js.map +1 -0
- package/dist/dev-server-client.d.ts +67 -0
- package/dist/dev-server-client.d.ts.map +1 -0
- package/dist/dev-server-client.js +195 -0
- package/dist/dev-server-client.js.map +1 -0
- package/dist/diagnostics.d.ts +86 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +85 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/diff-tool.d.ts +3 -3
- package/dist/diff-tool.d.ts.map +1 -1
- package/dist/diff-tool.js +6 -5
- package/dist/diff-tool.js.map +1 -1
- package/dist/docs-search.d.ts.map +1 -1
- package/dist/docs-search.js +12 -4
- package/dist/docs-search.js.map +1 -1
- package/dist/doctor.d.ts +17 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +76 -15
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.d.ts +15 -0
- package/dist/env-file.d.ts.map +1 -1
- package/dist/env-file.js +73 -1
- package/dist/env-file.js.map +1 -1
- package/dist/fix-recipes.d.ts.map +1 -1
- package/dist/fix-recipes.js +41 -21
- package/dist/fix-recipes.js.map +1 -1
- package/dist/frontend-guidance.js +5 -5
- package/dist/frontend-guidance.js.map +1 -1
- package/dist/i18n-check.d.ts +16 -0
- package/dist/i18n-check.d.ts.map +1 -0
- package/dist/i18n-check.js +154 -0
- package/dist/i18n-check.js.map +1 -0
- package/dist/init-agents.d.ts +49 -13
- package/dist/init-agents.d.ts.map +1 -1
- package/dist/init-agents.js +239 -34
- package/dist/init-agents.js.map +1 -1
- package/dist/internal/code-unit-order.d.ts +4 -0
- package/dist/internal/code-unit-order.d.ts.map +1 -0
- package/dist/internal/code-unit-order.js +6 -0
- package/dist/internal/code-unit-order.js.map +1 -0
- package/dist/internal/script-kind.d.ts +7 -0
- package/dist/internal/script-kind.d.ts.map +1 -0
- package/dist/internal/script-kind.js +12 -0
- package/dist/internal/script-kind.js.map +1 -0
- package/dist/internal/source-facts.d.ts +5 -0
- package/dist/internal/source-facts.d.ts.map +1 -1
- package/dist/internal/source-facts.js +61 -5
- package/dist/internal/source-facts.js.map +1 -1
- package/dist/internal/typescript-import.d.ts +49 -24
- package/dist/internal/typescript-import.d.ts.map +1 -1
- package/dist/internal/typescript-import.js +507 -67
- package/dist/internal/typescript-import.js.map +1 -1
- package/dist/introspect.d.ts +6 -4
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +93 -74
- package/dist/introspect.js.map +1 -1
- package/dist/learn.js +3 -3
- package/dist/learn.js.map +1 -1
- package/dist/levels-tool.d.ts +10 -0
- package/dist/levels-tool.d.ts.map +1 -1
- package/dist/levels-tool.js +33 -3
- package/dist/levels-tool.js.map +1 -1
- package/dist/load.d.ts +71 -16
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +78 -18
- package/dist/load.js.map +1 -1
- package/dist/manifest-tool.d.ts.map +1 -1
- package/dist/manifest-tool.js +3 -2
- package/dist/manifest-tool.js.map +1 -1
- package/dist/mcp-app-tool.d.ts.map +1 -1
- package/dist/mcp-app-tool.js +2 -0
- package/dist/mcp-app-tool.js.map +1 -1
- package/dist/mcp-context.d.ts.map +1 -1
- package/dist/mcp-context.js +5 -6
- package/dist/mcp-context.js.map +1 -1
- package/dist/mcp-delegate.d.ts +57 -0
- package/dist/mcp-delegate.d.ts.map +1 -0
- package/dist/mcp-delegate.js +130 -0
- package/dist/mcp-delegate.js.map +1 -0
- package/dist/mcp-docs-tools.d.ts.map +1 -1
- package/dist/mcp-docs-tools.js +23 -5
- package/dist/mcp-docs-tools.js.map +1 -1
- package/dist/mcp-exec.d.ts +3 -0
- package/dist/mcp-exec.d.ts.map +1 -1
- package/dist/mcp-exec.js +263 -131
- package/dist/mcp-exec.js.map +1 -1
- package/dist/mcp-http.d.ts.map +1 -1
- package/dist/mcp-http.js +20 -5
- package/dist/mcp-http.js.map +1 -1
- package/dist/mcp-io.d.ts +26 -0
- package/dist/mcp-io.d.ts.map +1 -1
- package/dist/mcp-io.js +113 -0
- package/dist/mcp-io.js.map +1 -1
- package/dist/mcp-isolate.d.ts +48 -0
- package/dist/mcp-isolate.d.ts.map +1 -0
- package/dist/mcp-isolate.js +222 -0
- package/dist/mcp-isolate.js.map +1 -0
- package/dist/mcp-path.d.ts +10 -0
- package/dist/mcp-path.d.ts.map +1 -0
- package/dist/mcp-path.js +51 -0
- package/dist/mcp-path.js.map +1 -0
- package/dist/mcp-project-child.d.ts +74 -0
- package/dist/mcp-project-child.d.ts.map +1 -0
- package/dist/mcp-project-child.js +130 -0
- package/dist/mcp-project-child.js.map +1 -0
- package/dist/mcp-reflect.d.ts.map +1 -1
- package/dist/mcp-reflect.js +2 -2
- package/dist/mcp-reflect.js.map +1 -1
- package/dist/mcp-render.d.ts.map +1 -1
- package/dist/mcp-render.js +64 -45
- package/dist/mcp-render.js.map +1 -1
- package/dist/mcp-root.d.ts +37 -9
- package/dist/mcp-root.d.ts.map +1 -1
- package/dist/mcp-root.js +124 -25
- package/dist/mcp-root.js.map +1 -1
- package/dist/mcp-run.d.ts +18 -1
- package/dist/mcp-run.d.ts.map +1 -1
- package/dist/mcp-run.js +159 -55
- package/dist/mcp-run.js.map +1 -1
- package/dist/mcp-ws.js +4 -1
- package/dist/mcp-ws.js.map +1 -1
- package/dist/mcp.d.ts +18 -5
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +165 -82
- package/dist/mcp.js.map +1 -1
- package/dist/migrate-layout.d.ts +44 -0
- package/dist/migrate-layout.d.ts.map +1 -0
- package/dist/migrate-layout.js +982 -0
- package/dist/migrate-layout.js.map +1 -0
- package/dist/openapi-tool.d.ts +2 -2
- package/dist/openapi-tool.d.ts.map +1 -1
- package/dist/openapi-tool.js.map +1 -1
- package/dist/openapi-types.d.ts +2 -1
- package/dist/openapi-types.d.ts.map +1 -1
- package/dist/openapi-types.js +240 -12
- package/dist/openapi-types.js.map +1 -1
- package/dist/pipeline-report.d.ts +3 -2
- package/dist/pipeline-report.d.ts.map +1 -1
- package/dist/pipeline-report.js +19 -16
- package/dist/pipeline-report.js.map +1 -1
- package/dist/port.d.ts +5 -4
- package/dist/port.d.ts.map +1 -1
- package/dist/port.js +46 -29
- package/dist/port.js.map +1 -1
- package/dist/project-facts.d.ts +28 -4
- package/dist/project-facts.d.ts.map +1 -1
- package/dist/project-facts.js +12 -2
- package/dist/project-facts.js.map +1 -1
- package/dist/recipes/4.0.0.d.ts +9 -0
- package/dist/recipes/4.0.0.d.ts.map +1 -0
- package/dist/recipes/4.0.0.js +34 -0
- package/dist/recipes/4.0.0.js.map +1 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/release-verification.d.ts +11 -1
- package/dist/release-verification.d.ts.map +1 -1
- package/dist/release-verification.js +47 -4
- package/dist/release-verification.js.map +1 -1
- package/dist/review.d.ts +21 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +823 -0
- package/dist/review.js.map +1 -0
- package/dist/route-types.d.ts +28 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +106 -0
- package/dist/route-types.js.map +1 -0
- package/dist/rules/codes.d.ts +9 -0
- package/dist/rules/codes.d.ts.map +1 -1
- package/dist/rules/codes.js +9 -0
- package/dist/rules/codes.js.map +1 -1
- package/dist/rules/data-guard.d.ts +12 -0
- package/dist/rules/data-guard.d.ts.map +1 -0
- package/dist/rules/data-guard.js +213 -0
- package/dist/rules/data-guard.js.map +1 -0
- package/dist/rules/index.d.ts +3 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +17 -5
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/islands.d.ts.map +1 -1
- package/dist/rules/islands.js +7 -4
- package/dist/rules/islands.js.map +1 -1
- package/dist/rules/legacy.d.ts +3 -1
- package/dist/rules/legacy.d.ts.map +1 -1
- package/dist/rules/legacy.js +829 -34
- package/dist/rules/legacy.js.map +1 -1
- package/dist/rules/nano.d.ts.map +1 -1
- package/dist/rules/nano.js +15 -6
- package/dist/rules/nano.js.map +1 -1
- package/dist/rules/pages.d.ts +15 -0
- package/dist/rules/pages.d.ts.map +1 -0
- package/dist/rules/pages.js +88 -0
- package/dist/rules/pages.js.map +1 -0
- package/dist/rules/routes.d.ts +11 -0
- package/dist/rules/routes.d.ts.map +1 -1
- package/dist/rules/routes.js +180 -2
- package/dist/rules/routes.js.map +1 -1
- package/dist/rules/secrets.d.ts +10 -0
- package/dist/rules/secrets.d.ts.map +1 -0
- package/dist/rules/secrets.js +169 -0
- package/dist/rules/secrets.js.map +1 -0
- package/dist/rules/security.d.ts +7 -0
- package/dist/rules/security.d.ts.map +1 -1
- package/dist/rules/security.js +171 -65
- package/dist/rules/security.js.map +1 -1
- package/dist/rules/typescript.d.ts +16 -0
- package/dist/rules/typescript.d.ts.map +1 -0
- package/dist/rules/typescript.js +59 -0
- package/dist/rules/typescript.js.map +1 -0
- package/dist/rules/zones.d.ts +17 -0
- package/dist/rules/zones.d.ts.map +1 -0
- package/dist/rules/zones.js +174 -0
- package/dist/rules/zones.js.map +1 -0
- package/dist/scaffold.d.ts +25 -12
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +154 -90
- package/dist/scaffold.js.map +1 -1
- package/dist/sdk.d.ts +17 -3
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +941 -153
- package/dist/sdk.js.map +1 -1
- package/dist/search-terms.d.ts +2 -0
- package/dist/search-terms.d.ts.map +1 -1
- package/dist/search-terms.js +23 -8
- package/dist/search-terms.js.map +1 -1
- package/dist/smoke.d.ts +79 -0
- package/dist/smoke.d.ts.map +1 -0
- package/dist/smoke.js +494 -0
- package/dist/smoke.js.map +1 -0
- package/dist/sync-manifest.d.ts.map +1 -1
- package/dist/sync-manifest.js +2 -1
- package/dist/sync-manifest.js.map +1 -1
- package/dist/sync-routes.d.ts +4 -3
- package/dist/sync-routes.d.ts.map +1 -1
- package/dist/sync-routes.js +4 -3
- package/dist/sync-routes.js.map +1 -1
- package/dist/test-tool.d.ts.map +1 -1
- package/dist/test-tool.js +30 -11
- package/dist/test-tool.js.map +1 -1
- package/dist/types-search.d.ts.map +1 -1
- package/dist/types-search.js +11 -5
- package/dist/types-search.js.map +1 -1
- package/dist/upgrade.d.ts +36 -6
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +167 -29
- package/dist/upgrade.js.map +1 -1
- package/dist/verification-plan.d.ts.map +1 -1
- package/dist/verification-plan.js +8 -0
- package/dist/verification-plan.js.map +1 -1
- package/dist/verification.d.ts.map +1 -1
- package/dist/verification.js +45 -12
- package/dist/verification.js.map +1 -1
- package/dist/web-app-options.d.ts +19 -0
- package/dist/web-app-options.d.ts.map +1 -0
- package/dist/web-app-options.js +49 -0
- package/dist/web-app-options.js.map +1 -0
- package/dist/work-graph.d.ts +3 -0
- package/dist/work-graph.d.ts.map +1 -1
- package/dist/work-graph.js +33 -16
- package/dist/work-graph.js.map +1 -1
- package/docs/examples.json +185 -29
- package/docs/llms-full.txt +4123 -548
- package/docs/types.json +14391 -10060
- package/package.json +19 -11
- package/src/app-files.ts +40 -0
- package/src/assure-hydration.ts +139 -46
- package/src/assure.ts +17 -2
- package/src/capabilities-tool.ts +35 -9
- package/src/cdn-check.ts +268 -0
- package/src/check-diagnostics.ts +199 -797
- package/src/check-scan.ts +394 -63
- package/src/check.ts +146 -58
- package/src/cli.ts +347 -92
- package/src/command-catalog.ts +407 -45
- package/src/config-target.ts +47 -0
- package/src/contracts.ts +66 -15
- package/src/db-audit.ts +128 -0
- package/src/db-child.ts +285 -0
- package/src/db-config.ts +224 -0
- package/src/db-tool.ts +690 -0
- package/src/dev-bun-config.ts +116 -40
- package/src/dev-feed-tool.ts +912 -0
- package/src/dev-server-client.ts +267 -0
- package/src/diagnostics.ts +179 -0
- package/src/diff-tool.ts +6 -5
- package/src/docs-search.ts +10 -3
- package/src/doctor.ts +98 -15
- package/src/env-file.ts +78 -1
- package/src/fix-recipes.ts +44 -31
- package/src/frontend-guidance.ts +5 -5
- package/src/i18n-check.ts +179 -0
- package/src/init-agents.ts +301 -38
- package/src/internal/code-unit-order.ts +5 -0
- package/src/internal/script-kind.ts +11 -0
- package/src/internal/source-facts.ts +96 -22
- package/src/internal/typescript-import.ts +663 -68
- package/src/introspect.ts +93 -82
- package/src/learn.ts +3 -3
- package/src/levels-tool.ts +47 -2
- package/src/load.ts +144 -32
- package/src/manifest-tool.ts +3 -2
- package/src/mcp-app-tool.ts +2 -0
- package/src/mcp-context.ts +5 -7
- package/src/mcp-delegate.ts +162 -0
- package/src/mcp-docs-tools.ts +23 -5
- package/src/mcp-exec.ts +301 -161
- package/src/mcp-http.ts +22 -5
- package/src/mcp-io.ts +130 -0
- package/src/mcp-isolate.ts +287 -0
- package/src/mcp-path.ts +50 -0
- package/src/mcp-project-child.ts +182 -0
- package/src/mcp-reflect.ts +3 -2
- package/src/mcp-render.ts +72 -42
- package/src/mcp-root.ts +130 -24
- package/src/mcp-run.ts +190 -56
- package/src/mcp-ws.ts +4 -1
- package/src/mcp.ts +193 -91
- package/src/migrate-layout.ts +1121 -0
- package/src/openapi-tool.ts +7 -3
- package/src/openapi-types.ts +315 -13
- package/src/pipeline-report.ts +22 -18
- package/src/port.ts +53 -30
- package/src/project-facts.ts +42 -8
- package/src/recipes/4.0.0.ts +35 -0
- package/src/recipes/index.ts +2 -0
- package/src/release-verification.ts +74 -5
- package/src/review.ts +988 -0
- package/src/route-types.ts +133 -0
- package/src/rules/codes.ts +9 -0
- package/src/rules/data-guard.ts +230 -0
- package/src/rules/index.ts +18 -5
- package/src/rules/islands.ts +12 -4
- package/src/rules/legacy.ts +947 -35
- package/src/rules/nano.ts +18 -6
- package/src/rules/pages.ts +99 -0
- package/src/rules/routes.ts +181 -2
- package/src/rules/secrets.ts +174 -0
- package/src/rules/security.ts +198 -70
- package/src/rules/typescript.ts +77 -0
- package/src/rules/zones.ts +195 -0
- package/src/scaffold.ts +175 -98
- package/src/sdk.ts +1215 -158
- package/src/search-terms.ts +24 -7
- package/src/smoke.ts +607 -0
- package/src/sync-manifest.ts +2 -1
- package/src/sync-routes.ts +4 -3
- package/src/test-tool.ts +32 -11
- package/src/types-search.ts +11 -4
- package/src/upgrade.ts +205 -25
- package/src/verification-plan.ts +27 -0
- package/src/verification.ts +50 -12
- package/src/web-app-options.ts +57 -0
- package/src/work-graph.ts +40 -16
package/dist/mcp.js
CHANGED
|
@@ -20,91 +20,102 @@
|
|
|
20
20
|
* - `nifra_levels` - the cumulative verification ladder (L0 contract → L4 invariants): what the
|
|
21
21
|
* project actually proves, and why each level it misses does not hold.
|
|
22
22
|
* - `nifra_doctor` - package.json dependency drift detector, with safe local-version auto-fix.
|
|
23
|
-
* - `
|
|
23
|
+
* - `nifra_errors` - the running dev server's errors (SSR, loader, API, build, browser, hydration,
|
|
24
|
+
* crash), each a structured diagnostic tagged with its request; `since` cursors, stale flags.
|
|
25
|
+
* - `nifra_logs` - the dev server's console output, server and browser, tagged by request.
|
|
26
|
+
* - `nifra_db_schema` / `nifra_db_query` / `nifra_db_role` - the development database declared as
|
|
27
|
+
* `devDatabase` in nifra.config.ts: its schema, one read-only query (or plan) per call in a fresh
|
|
28
|
+
* subprocess killed at the deadline, and the SQL for a read-only role. Separate tools, so a client
|
|
29
|
+
* can allow reading the schema without allowing queries.
|
|
30
|
+
* - `nifra_explain` - resolve an error (pasted, or the dev server's latest) into a structured
|
|
24
31
|
* diagnostic: stable code, a codeframe in the user's source, and the recognised cause + fix.
|
|
25
32
|
* - `nifra_inspect` - read the running dev server's recent request traces (method/path/status/
|
|
26
|
-
* duration/ISR)
|
|
33
|
+
* duration/ISR/errors): what your requests ACTUALLY did, not a guess.
|
|
27
34
|
*
|
|
28
35
|
* Wire it into a client (e.g. Claude Desktop / Cursor) as: command `nifra`, args `["mcp"]` (or
|
|
29
36
|
* `["mcp", "<dir>"]` to pin the project directory explicitly). The server does NOT silently trust its
|
|
30
37
|
* spawn directory: the root is resolved via `./mcp-root.ts` (marker walk-up, the client's MCP `roots`,
|
|
31
38
|
* fail-closed tools when no nifra project is found) and announced in `initialize` + on every project
|
|
32
|
-
* tool result.
|
|
39
|
+
* tool result. A project that installs its own `@nifrajs/cli` at a different version gets the session
|
|
40
|
+
* handed to that CLI; when that is impossible the version-sensitive tools refuse rather than answer
|
|
41
|
+
* for the wrong release (see `./mcp-delegate.ts`). The protocol is hand-rolled (newline-delimited JSON-RPC 2.0 over stdio), including
|
|
33
42
|
* standard MCP progress notifications and request cancellation - no SDK dependency, the same
|
|
34
43
|
* minimal-surface choice as the rest of nifra. The pure dispatch lives in `./mcp-protocol.ts`; this
|
|
35
44
|
* module is the I/O shell (stdin loop, tool wiring, the run subprocess).
|
|
45
|
+
*
|
|
46
|
+
* This process runs no project code and holds none of the project's `.env`: the config, the backend
|
|
47
|
+
* and everything they import run in a fresh subprocess per call (`./mcp-isolate.ts`), and a session
|
|
48
|
+
* whose process Bun started with `.env` values moves to a copy that never loads them (`./cli.ts`).
|
|
36
49
|
*/
|
|
37
50
|
import { stat } from "node:fs/promises";
|
|
38
51
|
import { resolve } from "node:path";
|
|
39
52
|
import { loadDocsCorpus } from "./docs-search.js";
|
|
40
53
|
import { loadExamplesCorpus } from "./examples.js";
|
|
41
|
-
import {
|
|
54
|
+
import { loadMonorepoApps } from "./load.js";
|
|
55
|
+
import { delegateToProjectCli, refuseVersionSensitive } from "./mcp-delegate.js";
|
|
42
56
|
import { docsTools } from "./mcp-docs-tools.js";
|
|
43
|
-
import { createMcpProtocolState, handleRpc, rpcError, } from "./mcp-protocol.js";
|
|
44
|
-
import { extractBackendPrompts, extractBackendResources, extractBackendTools, } from "./mcp-reflect.js";
|
|
57
|
+
import { createMcpProtocolState, handleRpc, isJsonRpcRequest, isJsonRpcResponse, rpcError, } from "./mcp-protocol.js";
|
|
45
58
|
import { loadTypesCorpus } from "./types-search.js";
|
|
46
59
|
export { extractBackendPrompts, extractBackendResources, extractBackendTools, } from "./mcp-reflect.js";
|
|
47
60
|
import { applyClientRoots, clientSupportsRoots, detectToolingDrift, driftNote, guardTools, pathsFromRootsResult, resolveRootState, rootInstructions, rootVerdict, } from "./mcp-root.js";
|
|
48
|
-
export { CHILD_OUTPUT_MAX_BYTES, CHILD_TIMEOUT_MS, LOCAL_TOOL_FETCH_TIMEOUT_MS, LOCAL_TOOL_MAX_RESPONSE_BYTES, notNifraResponse, readBoundedResponse, readBoundedStream, timeoutMessage, validateLocalPort, } from "./mcp-io.js";
|
|
61
|
+
export { CHILD_INPUT_MAX_BYTES, CHILD_OUTPUT_MAX_BYTES, CHILD_TIMEOUT_MS, LOCAL_TOOL_FETCH_TIMEOUT_MS, LOCAL_TOOL_MAX_RESPONSE_BYTES, notNifraResponse, readBoundedLines, readBoundedResponse, readBoundedStream, serializeBoundedJson, timeoutMessage, validateLocalPort, } from "./mcp-io.js";
|
|
49
62
|
export { clientSupportsRoots, guardTools } from "./mcp-root.js";
|
|
50
|
-
import {
|
|
63
|
+
import { projectTools } from "./mcp-exec.js";
|
|
64
|
+
import { createAppSurface, detectMonorepoIsolated, isolateResources, isolateTools, } from "./mcp-isolate.js";
|
|
51
65
|
export { catalogProjectTools, createCachedAppLoader, createWarmHandler, projectTools, renderHandler, runHandler, spawnChild, toMcpTool, WarmWorker, wsHandler, } from "./mcp-exec.js";
|
|
52
|
-
import { namespaceForApp,
|
|
66
|
+
import { namespaceForApp, projectPrompts, projectResources } from "./mcp-context.js";
|
|
53
67
|
export { dirError, namespaceForApp, projectFeatures, projectPrompts, projectResources, resolveProjectDir, } from "./mcp-context.js";
|
|
54
|
-
async function backendFeatures(loader, base) {
|
|
55
|
-
const resources = [...(base.resources ?? [])];
|
|
56
|
-
const prompts = [...(base.prompts ?? [])];
|
|
57
|
-
try {
|
|
58
|
-
const app = await loader();
|
|
59
|
-
resources.push(...extractBackendResources(app.backend));
|
|
60
|
-
prompts.push(...extractBackendPrompts(app.backend));
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
// Not loadable here (no web config, or the config itself throws). The server still serves.
|
|
64
|
-
}
|
|
65
|
-
return { resources, prompts };
|
|
66
|
-
}
|
|
67
68
|
/**
|
|
68
|
-
* The
|
|
69
|
-
*
|
|
70
|
-
* Same reasoning as {@link backendFeatures}, on the hotter path: this ran on EVERY JSON-RPC message,
|
|
71
|
-
* so an unloadable project failed `initialize` itself with a `-32603` and the session never opened.
|
|
72
|
-
* An app's own tools are an extension of the built-in set, so their absence must not withdraw the
|
|
73
|
-
* built-ins - a backend-only project still gets docs, examples, types, check, doctor, levels and test.
|
|
69
|
+
* The loader the server builds its tool and resource lists with. It never loads: every handler that
|
|
70
|
+
* reaches the app runs in a project subprocess (`./mcp-isolate.ts`), so one that tried here fails.
|
|
74
71
|
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
72
|
+
const noAppInServer = () => Promise.reject(new Error("[nifra] the MCP server does not load the app; project code runs in a subprocess"));
|
|
73
|
+
const isolatedToolsByDir = new Map();
|
|
74
|
+
/**
|
|
75
|
+
* The project's tools, each forwarded to a project subprocess unless it runs no project code. Built
|
|
76
|
+
* once per directory: `nifra_run`/`nifra_render` hold their warm worker in the tool, so a list rebuilt
|
|
77
|
+
* per message started a fresh worker for every `warm: true` call.
|
|
78
|
+
*/
|
|
79
|
+
function isolatedProjectTools(cwd) {
|
|
80
|
+
let tools = isolatedToolsByDir.get(cwd);
|
|
81
|
+
if (tools === undefined) {
|
|
82
|
+
tools = isolateTools(cwd, projectTools(cwd, noAppInServer));
|
|
83
|
+
isolatedToolsByDir.set(cwd, tools);
|
|
81
84
|
}
|
|
85
|
+
return tools;
|
|
86
|
+
}
|
|
87
|
+
/** The project's resources and prompts, with the ones the app declares. */
|
|
88
|
+
function appFeatures(cwd, surface) {
|
|
89
|
+
return {
|
|
90
|
+
resources: [
|
|
91
|
+
...isolateResources(cwd, projectResources(cwd, noAppInServer)),
|
|
92
|
+
...surface.resources,
|
|
93
|
+
],
|
|
94
|
+
prompts: [...projectPrompts(), ...surface.prompts],
|
|
95
|
+
};
|
|
82
96
|
}
|
|
83
97
|
const ROOTS_REQUEST_ID = "nifra:roots/list";
|
|
98
|
+
const MAX_STDIO_MESSAGE_BYTES = 8 * 1024 * 1024;
|
|
99
|
+
const STDIO_ENCODER = new TextEncoder();
|
|
84
100
|
async function createProjectContext(root) {
|
|
85
|
-
const monorepo = await
|
|
101
|
+
const monorepo = await detectMonorepoIsolated(root);
|
|
86
102
|
if (monorepo) {
|
|
87
|
-
const
|
|
103
|
+
const apps = (await loadMonorepoApps(root, monorepo)).map(({ name, cwd }) => ({ name, cwd, surface: createAppSurface(cwd) }));
|
|
88
104
|
const allResources = [];
|
|
89
105
|
const allPrompts = [];
|
|
90
|
-
for (const { name, cwd: appCwd } of
|
|
91
|
-
const
|
|
92
|
-
const ns = namespaceForApp(name, [], await backendFeatures(loader, projectFeatures(appCwd, loader)));
|
|
106
|
+
for (const { name, cwd: appCwd, surface } of apps) {
|
|
107
|
+
const ns = namespaceForApp(name, [], appFeatures(appCwd, await surface()));
|
|
93
108
|
allResources.push(...(ns.features.resources ?? []));
|
|
94
109
|
allPrompts.push(...(ns.features.prompts ?? []));
|
|
95
110
|
}
|
|
96
111
|
return {
|
|
97
|
-
|
|
112
|
+
apps,
|
|
98
113
|
features: { resources: allResources, prompts: allPrompts },
|
|
99
|
-
|
|
114
|
+
surface: createAppSurface(root),
|
|
100
115
|
};
|
|
101
116
|
}
|
|
102
|
-
const
|
|
103
|
-
return {
|
|
104
|
-
monorepo,
|
|
105
|
-
features: await backendFeatures(loadAppCached, projectFeatures(root, loadAppCached)),
|
|
106
|
-
loadAppCached,
|
|
107
|
-
};
|
|
117
|
+
const surface = createAppSurface(root);
|
|
118
|
+
return { apps: undefined, features: appFeatures(root, await surface()), surface };
|
|
108
119
|
}
|
|
109
120
|
/**
|
|
110
121
|
* Run the stdio MCP server: read newline-delimited JSON-RPC from stdin, write responses to stdout.
|
|
@@ -118,21 +129,45 @@ export async function runMcpServer(cwd, version, explicitDir) {
|
|
|
118
129
|
throw new Error(`nifra mcp: directory not found: ${requested}`);
|
|
119
130
|
}
|
|
120
131
|
let rootState = await resolveRootState(requested, explicitDir !== undefined);
|
|
132
|
+
if (rootState.isProject) {
|
|
133
|
+
// Before anything reads stdin: a hand-off child inherits the descriptor and owns the session.
|
|
134
|
+
const exitCode = await delegateToProjectCli({
|
|
135
|
+
cwd,
|
|
136
|
+
root: rootState.root,
|
|
137
|
+
version,
|
|
138
|
+
args: explicitDir === undefined ? [] : [requested],
|
|
139
|
+
});
|
|
140
|
+
if (exitCode !== undefined) {
|
|
141
|
+
process.exitCode = exitCode;
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
121
145
|
let ctx = await createProjectContext(rootState.root);
|
|
122
146
|
let drift = await detectToolingDrift(rootState.root, version);
|
|
123
147
|
const serverInfo = { name: "nifra", version };
|
|
124
148
|
const state = createMcpProtocolState();
|
|
125
149
|
const send = (message) => {
|
|
126
|
-
|
|
150
|
+
let encoded;
|
|
151
|
+
try {
|
|
152
|
+
encoded = JSON.stringify(message);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
encoded = JSON.stringify(rpcError(responseIdOf(message), -32603, "MCP response is not serializable"));
|
|
156
|
+
}
|
|
157
|
+
if (STDIO_ENCODER.encode(encoded).byteLength > MAX_STDIO_MESSAGE_BYTES)
|
|
158
|
+
encoded = JSON.stringify(rpcError(responseIdOf(message), -32603, "MCP response exceeded the size limit"));
|
|
159
|
+
process.stdout.write(`${encoded}\n`);
|
|
127
160
|
};
|
|
128
161
|
let rootsSupported = false;
|
|
162
|
+
let rootsRequestPending = false;
|
|
129
163
|
const requestRoots = () => {
|
|
130
|
-
if (!rootsSupported)
|
|
164
|
+
if (!rootsSupported || rootsRequestPending)
|
|
131
165
|
return;
|
|
166
|
+
rootsRequestPending = true;
|
|
132
167
|
process.stdout.write(`${JSON.stringify({ jsonrpc: "2.0", id: ROOTS_REQUEST_ID, method: "roots/list" })}\n`);
|
|
133
168
|
};
|
|
134
169
|
const onRootsAnswer = async (message) => {
|
|
135
|
-
const result = message.result;
|
|
170
|
+
const result = "result" in message ? message.result : undefined;
|
|
136
171
|
// An error response (or a malformed one) carries no roots: keep the current state - the absence
|
|
137
172
|
// of workspace data is not a mismatch, and never a reason to move the root.
|
|
138
173
|
if (result === undefined)
|
|
@@ -147,35 +182,39 @@ export async function runMcpServer(cwd, version, explicitDir) {
|
|
|
147
182
|
// Root updates are serialized against tool dispatch: a message read AFTER the client's roots answer
|
|
148
183
|
// must see the adopted root, even though dispatches themselves run concurrently.
|
|
149
184
|
let rootsUpdate = Promise.resolve();
|
|
150
|
-
const
|
|
151
|
-
// The
|
|
152
|
-
//
|
|
153
|
-
if (
|
|
154
|
-
// Swallow failures: a bad answer must not poison the chain and 500 every later dispatch.
|
|
155
|
-
rootsUpdate = onRootsAnswer(message).catch(() => { });
|
|
156
|
-
await rootsUpdate;
|
|
185
|
+
const dispatchRootsAnswer = (message) => {
|
|
186
|
+
// The roots answer is a response to a request initiated by this server, not a client RPC request.
|
|
187
|
+
// Serialize adoption with normal dispatch so a following request cannot observe a half-updated root.
|
|
188
|
+
if (!rootsRequestPending)
|
|
157
189
|
return;
|
|
158
|
-
|
|
190
|
+
rootsRequestPending = false;
|
|
191
|
+
rootsUpdate = onRootsAnswer(message).catch(() => { });
|
|
192
|
+
};
|
|
193
|
+
const dispatch = async (message) => {
|
|
159
194
|
await rootsUpdate;
|
|
160
195
|
if (message.method === "initialize") {
|
|
161
196
|
rootsSupported = clientSupportsRoots(message.params);
|
|
162
197
|
}
|
|
163
198
|
let activeTools;
|
|
164
|
-
if (ctx.
|
|
165
|
-
const appEntries = await loadMonorepoApps(rootState.root, ctx.monorepo);
|
|
199
|
+
if (ctx.apps) {
|
|
166
200
|
const allTools = [];
|
|
167
|
-
for (const { name, cwd: appCwd } of
|
|
168
|
-
const
|
|
169
|
-
|
|
201
|
+
for (const { name, cwd: appCwd, surface } of ctx.apps) {
|
|
202
|
+
const tools = [
|
|
203
|
+
...refuseVersionSensitive(isolatedProjectTools(appCwd), drift),
|
|
204
|
+
...(await surface()).tools,
|
|
205
|
+
];
|
|
170
206
|
const ns = namespaceForApp(name, tools, { resources: [], prompts: [] });
|
|
171
207
|
allTools.push(...ns.tools);
|
|
172
208
|
}
|
|
173
|
-
activeTools = [
|
|
209
|
+
activeTools = [
|
|
210
|
+
...refuseVersionSensitive(docsTools(loadDocsCorpus, loadExamplesCorpus, loadTypesCorpus), drift),
|
|
211
|
+
...allTools,
|
|
212
|
+
];
|
|
174
213
|
}
|
|
175
214
|
else {
|
|
176
215
|
activeTools = [
|
|
177
|
-
...
|
|
178
|
-
...(await
|
|
216
|
+
...refuseVersionSensitive(isolatedProjectTools(rootState.root), drift),
|
|
217
|
+
...(await ctx.surface()).tools,
|
|
179
218
|
];
|
|
180
219
|
}
|
|
181
220
|
const verdict = await rootVerdict(rootState);
|
|
@@ -189,6 +228,8 @@ export async function runMcpServer(cwd, version, explicitDir) {
|
|
|
189
228
|
const response = await handleRpc(message, activeTools, serverInfo, features, {
|
|
190
229
|
state,
|
|
191
230
|
sendNotification: send,
|
|
231
|
+
// The stdio caller is the developer's own agent: a failure it cannot read it cannot fix.
|
|
232
|
+
exposeToolErrors: true,
|
|
192
233
|
});
|
|
193
234
|
if (response)
|
|
194
235
|
send(response);
|
|
@@ -201,28 +242,70 @@ export async function runMcpServer(cwd, version, explicitDir) {
|
|
|
201
242
|
};
|
|
202
243
|
const decoder = new TextDecoder();
|
|
203
244
|
let buffer = "";
|
|
245
|
+
let bufferBytes = 0;
|
|
246
|
+
let discardingOversized = false;
|
|
247
|
+
const processLine = (rawLine) => {
|
|
248
|
+
const line = rawLine.trim();
|
|
249
|
+
if (line === "")
|
|
250
|
+
return;
|
|
251
|
+
if (STDIO_ENCODER.encode(rawLine).byteLength > MAX_STDIO_MESSAGE_BYTES) {
|
|
252
|
+
send(rpcError(null, -32600, "MCP message exceeded the size limit"));
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
let parsed;
|
|
256
|
+
try {
|
|
257
|
+
parsed = JSON.parse(line);
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
send(rpcError(null, -32700, "parse error"));
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (isJsonRpcRequest(parsed)) {
|
|
264
|
+
void dispatch(parsed).catch((err) => {
|
|
265
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
266
|
+
send(rpcError(parsed.id ?? null, -32603, msg));
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
else if (isJsonRpcResponse(parsed) && parsed.id === ROOTS_REQUEST_ID) {
|
|
270
|
+
dispatchRootsAnswer(parsed);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
// Do not let null, arrays, scalars, responses for unknown ids, or malformed envelopes reach the
|
|
274
|
+
// dispatch shell. In particular, reading `.id` from a hostile `null` must never crash the loop.
|
|
275
|
+
send(rpcError(null, -32600, "Invalid Request"));
|
|
276
|
+
}
|
|
277
|
+
};
|
|
204
278
|
for await (const chunk of Bun.stdin.stream()) {
|
|
205
|
-
|
|
279
|
+
let text = decoder.decode(chunk, { stream: true });
|
|
280
|
+
if (discardingOversized) {
|
|
281
|
+
const newline = text.indexOf("\n");
|
|
282
|
+
if (newline === -1)
|
|
283
|
+
continue;
|
|
284
|
+
text = text.slice(newline + 1);
|
|
285
|
+
discardingOversized = false;
|
|
286
|
+
}
|
|
287
|
+
buffer += text;
|
|
288
|
+
bufferBytes += STDIO_ENCODER.encode(text).byteLength;
|
|
206
289
|
let nl = buffer.indexOf("\n");
|
|
207
290
|
while (nl !== -1) {
|
|
208
|
-
const line = buffer.slice(0, nl)
|
|
291
|
+
const line = buffer.slice(0, nl);
|
|
209
292
|
buffer = buffer.slice(nl + 1);
|
|
293
|
+
bufferBytes = Math.max(0, bufferBytes - STDIO_ENCODER.encode(line).byteLength - 1);
|
|
210
294
|
nl = buffer.indexOf("\n");
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
send(rpcError(null, -32700, "parse error"));
|
|
219
|
-
continue;
|
|
220
|
-
}
|
|
221
|
-
void dispatch(message).catch((err) => {
|
|
222
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
223
|
-
send(rpcError(message.id ?? null, -32603, msg));
|
|
224
|
-
});
|
|
295
|
+
processLine(line);
|
|
296
|
+
}
|
|
297
|
+
if (bufferBytes > MAX_STDIO_MESSAGE_BYTES) {
|
|
298
|
+
buffer = "";
|
|
299
|
+
bufferBytes = 0;
|
|
300
|
+
discardingOversized = true;
|
|
301
|
+
send(rpcError(null, -32600, "MCP message exceeded the size limit"));
|
|
225
302
|
}
|
|
226
303
|
}
|
|
227
304
|
}
|
|
305
|
+
function responseIdOf(message) {
|
|
306
|
+
if (!("id" in message))
|
|
307
|
+
return null;
|
|
308
|
+
const id = message.id;
|
|
309
|
+
return id === null || typeof id === "string" || typeof id === "number" ? id : null;
|
|
310
|
+
}
|
|
228
311
|
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type * as TS from "typescript";
|
|
2
|
+
export interface LayoutMigrationIssue {
|
|
3
|
+
readonly file: string;
|
|
4
|
+
readonly reason: string;
|
|
5
|
+
}
|
|
6
|
+
export interface LayoutMigrationResult {
|
|
7
|
+
readonly ok: boolean;
|
|
8
|
+
readonly write: boolean;
|
|
9
|
+
/** Route files whose backend exports moved, and where they went. */
|
|
10
|
+
readonly splits: ReadonlyArray<{
|
|
11
|
+
readonly file: string;
|
|
12
|
+
readonly backend: string;
|
|
13
|
+
readonly moved: readonly string[];
|
|
14
|
+
}>;
|
|
15
|
+
/** Files that moved, app-relative. */
|
|
16
|
+
readonly moves: ReadonlyArray<{
|
|
17
|
+
readonly from: string;
|
|
18
|
+
readonly to: string;
|
|
19
|
+
}>;
|
|
20
|
+
/** Files whose imports were rewritten (and were not otherwise created). */
|
|
21
|
+
readonly rewritten: readonly string[];
|
|
22
|
+
readonly issues: readonly LayoutMigrationIssue[];
|
|
23
|
+
}
|
|
24
|
+
export interface LayoutMigrationOptions {
|
|
25
|
+
readonly write?: boolean;
|
|
26
|
+
/** Inject the TypeScript compiler (tests); defaults to the CLI's own. */
|
|
27
|
+
readonly typescript?: typeof TS;
|
|
28
|
+
}
|
|
29
|
+
export interface SplitResult {
|
|
30
|
+
readonly frontend: string;
|
|
31
|
+
/** `undefined` when the file exports nothing for the server. */
|
|
32
|
+
readonly backend: string | undefined;
|
|
33
|
+
readonly moved: readonly string[];
|
|
34
|
+
readonly issues: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Split one route module's source into its frontend and backend halves. `backendSpecifier` is how the
|
|
38
|
+
* frontend refers to the backend half in an `import type` (`./index.backend.ts`).
|
|
39
|
+
*/
|
|
40
|
+
export declare function splitRouteSource(ts: typeof TS, source: string, fileName: string, backendSpecifier: string): SplitResult;
|
|
41
|
+
/** `_middleware.ts`'s default export, as the `middleware` export of a `_layout.backend.ts`. */
|
|
42
|
+
export declare function middlewareSource(ts: typeof TS, source: string, fileName: string): string;
|
|
43
|
+
export declare function migrateLayout(appRoot: string, options?: LayoutMigrationOptions): Promise<LayoutMigrationResult>;
|
|
44
|
+
//# sourceMappingURL=migrate-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-layout.d.ts","sourceRoot":"","sources":["../src/migrate-layout.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AA8BrC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAClC,CAAC,CAAA;IACF,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7E,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAA;CACjD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;CAChC;AAqCD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAsKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,OAAO,EAAE,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB,WAAW,CAyKb;AAeD,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6BxF;AAwUD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA+PhC"}
|