@mandujs/core 0.54.32 → 0.55.0-beta.1
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 +654 -654
- package/package.json +106 -210
- package/scripts/postinstall-lock.ts +153 -153
- package/src/a11y/__tests__/run-audit.test.ts +333 -333
- package/src/a11y/fix-hints.ts +76 -76
- package/src/a11y/index.ts +18 -18
- package/src/a11y/run-audit.ts +15 -15
- package/src/a11y/types.ts +125 -125
- package/src/agent/__tests__/apply.test.ts +224 -0
- package/src/agent/__tests__/context.test.ts +97 -98
- package/src/agent/apply.ts +1031 -0
- package/src/agent/context.ts +552 -552
- package/src/agent/index.ts +4 -3
- package/src/agent/plan.ts +161 -243
- package/src/agent/repair.ts +239 -162
- package/src/agent/sync.ts +197 -198
- package/src/agent/types.ts +242 -94
- package/src/agent/verify.ts +55 -55
- package/src/auth/__tests__/login.test.ts +1 -1
- package/src/auth/__tests__/password.test.ts +15 -5
- package/src/auth/__tests__/reset.test.ts +2 -2
- package/src/auth/__tests__/tokens.test.ts +274 -274
- package/src/auth/__tests__/verification.test.ts +274 -274
- package/src/auth/index.ts +76 -76
- package/src/auth/login.ts +225 -225
- package/src/auth/password.ts +14 -2
- package/src/auth/reset.ts +243 -243
- package/src/auth/tokens.ts +612 -612
- package/src/auth/verification.ts +253 -253
- package/src/brain/__tests__/redactor.test.ts +94 -94
- package/src/brain/adapters/__tests__/_helpers.ts +83 -83
- package/src/brain/adapters/__tests__/anthropic-oauth.test.ts +196 -196
- package/src/brain/adapters/__tests__/chatgpt-auth.test.ts +193 -193
- package/src/brain/adapters/__tests__/openai-oauth.test.ts +209 -209
- package/src/brain/adapters/__tests__/resolver.test.ts +143 -143
- package/src/brain/adapters/anthropic-oauth.ts +1 -1
- package/src/brain/adapters/chatgpt-auth.ts +300 -300
- package/src/brain/adapters/index.ts +319 -319
- package/src/brain/adapters/oauth-flow.ts +439 -439
- package/src/brain/consent.ts +240 -240
- package/src/brain/credentials.ts +396 -396
- package/src/brain/doctor/analyzer.ts +7 -7
- package/src/bundler/__snapshots__/build.test.ts.snap +5 -5
- package/src/bundler/__tests__/build-runner.ts +166 -166
- package/src/bundler/__tests__/client-boundary-transform.test.ts +524 -524
- package/src/bundler/__tests__/cold-start.test.ts +60 -60
- package/src/bundler/__tests__/css.test.ts +49 -20
- package/src/bundler/__tests__/dev-reliability.test.ts +619 -619
- package/src/bundler/__tests__/extended-watch.test.ts +711 -711
- package/src/bundler/__tests__/fast-refresh.test.ts +24 -24
- package/src/bundler/__tests__/generation.test.ts +447 -0
- package/src/bundler/__tests__/hdr.test.ts +24 -18
- package/src/bundler/__tests__/hmr-client.test.ts +62 -24
- package/src/bundler/__tests__/jsx-runtime-shim.test.ts +179 -140
- package/src/bundler/__tests__/manifest-schema.test.ts +305 -266
- package/src/bundler/__tests__/prod-smoke.test.ts +138 -138
- package/src/bundler/__tests__/reverse-import-graph.test.ts +42 -42
- package/src/bundler/__tests__/slot-dispatch.test.ts +573 -573
- package/src/bundler/__tests__/url-cap-and-slot-regex.test.ts +286 -286
- package/src/bundler/__tests__/vendor-cache.test.ts +455 -455
- package/src/bundler/analyzer.ts +15 -15
- package/src/bundler/budget.ts +404 -404
- package/src/bundler/build.test.ts +898 -915
- package/src/bundler/build.ts +113 -24
- package/src/bundler/client-boundary-transform.ts +977 -977
- package/src/bundler/css.ts +65 -44
- package/src/bundler/dev.ts +105 -73
- package/src/bundler/fast-refresh-preamble.ts +47 -47
- package/src/bundler/generation.ts +602 -0
- package/src/bundler/index.ts +3 -3
- package/src/bundler/manifest-schema.ts +55 -40
- package/src/bundler/plugins/__tests__/block-generated-imports.test.ts +13 -13
- package/src/bundler/plugins/__tests__/react-compiler-config.test.ts +83 -83
- package/src/bundler/plugins/__tests__/react-compiler-lint.test.ts +110 -110
- package/src/bundler/plugins/block-generated-imports.ts +16 -15
- package/src/bundler/plugins/index.ts +83 -83
- package/src/bundler/plugins/react-compiler-config.ts +108 -108
- package/src/bundler/plugins/react-compiler-lint.ts +253 -253
- package/src/bundler/plugins/react-compiler.ts +162 -162
- package/src/bundler/prerender.ts +29 -9
- package/src/bundler/reverse-import-graph.ts +339 -339
- package/src/bundler/safe-build.test.ts +1 -1
- package/src/bundler/safe-build.ts +103 -103
- package/src/bundler/scenario-matrix.ts +229 -229
- package/src/bundler/types.ts +58 -56
- package/src/bundler/vendor-cache-types.ts +130 -130
- package/src/bundler/vendor-cache.ts +526 -526
- package/src/change/snapshot.ts +18 -18
- package/src/client/Form.tsx +105 -105
- package/src/client/Link.tsx +9 -9
- package/src/client/__tests__/props-serialization.test.ts +37 -37
- package/src/client/__tests__/use-sse.test.ts +153 -153
- package/src/client/globals.ts +1 -1
- package/src/client/hooks.ts +362 -362
- package/src/client/hydrate.ts +2 -2
- package/src/client/index.ts +1 -1
- package/src/client/island.ts +79 -79
- package/src/client/prefetch-helper.ts +55 -55
- package/src/client/props-serialization.ts +233 -233
- package/src/client/runtime-entry.ts +598 -598
- package/src/client/runtime.ts +1 -1
- package/src/client/serialize.ts +50 -50
- package/src/client/use-fetch.ts +6 -6
- package/src/client/use-head.ts +197 -197
- package/src/client/use-sse.ts +378 -378
- package/src/client/window-state.ts +101 -101
- package/src/components/Image-compat.ts +3 -0
- package/src/components/Image.tsx +162 -162
- package/src/config/validate.ts +1 -1
- package/src/config/watcher.ts +311 -311
- package/src/constants.ts +40 -40
- package/src/content/collection.ts +9 -9
- package/src/content/content-layer.ts +7 -7
- package/src/content/data-store.ts +245 -245
- package/src/content/frontmatter.ts +189 -189
- package/src/content/generate-types.ts +1 -1
- package/src/content/index.ts +2 -2
- package/src/content/loader-context.ts +171 -171
- package/src/content/loaders/api.ts +216 -216
- package/src/content/loaders/file.ts +172 -172
- package/src/content/loaders/glob.ts +253 -253
- package/src/content/loaders/index.ts +34 -34
- package/src/content/loaders/types.ts +137 -137
- package/src/content/meta-store.ts +209 -209
- package/src/content/prebuild.test.ts +571 -571
- package/src/content/prebuild.ts +636 -636
- package/src/content/schema.ts +20 -20
- package/src/content/sidebar.ts +630 -630
- package/src/content/slug.ts +110 -110
- package/src/content/types.ts +282 -282
- package/src/content/watcher.ts +135 -135
- package/src/contract/client-safe.test.ts +42 -42
- package/src/contract/client-safe.ts +114 -114
- package/src/contract/define.ts +11 -11
- package/src/contract/index.ts +1 -1
- package/src/contract/normalize.test.ts +276 -276
- package/src/contract/normalize.ts +410 -410
- package/src/contract/registry.test.ts +206 -206
- package/src/contract/route-helpers.ts +1 -1
- package/src/contract/rpc.ts +443 -443
- package/src/contract/types.ts +58 -58
- package/src/db/__tests__/db.test.ts +9 -9
- package/src/db/index.ts +2 -2
- package/src/db/migrations/history-table.ts +345 -345
- package/src/db/migrations/index.ts +3 -3
- package/src/db/migrations/lock.ts +324 -324
- package/src/db/migrations/runner.ts +650 -650
- package/src/deploy/cache.ts +140 -140
- package/src/deploy/compile/vercel.ts +344 -344
- package/src/deploy/index.ts +87 -87
- package/src/deploy/inference/brain.ts +268 -268
- package/src/deploy/inference/context.ts +82 -82
- package/src/deploy/inference/filling-extract.ts +245 -245
- package/src/deploy/inference/heuristic.ts +182 -182
- package/src/deploy/intent.ts +173 -173
- package/src/deploy/plan.ts +178 -178
- package/src/design/__tests__/agents-link.test.ts +109 -109
- package/src/design/__tests__/extract-patch-diff.test.ts +265 -265
- package/src/design/__tests__/lint.test.ts +110 -110
- package/src/design/__tests__/parser.test.ts +195 -195
- package/src/design/__tests__/tailwind-theme.test.ts +229 -229
- package/src/design/agents-link.ts +165 -165
- package/src/design/diff.ts +138 -138
- package/src/design/extract.ts +285 -285
- package/src/design/index.ts +102 -102
- package/src/design/lint.ts +209 -209
- package/src/design/parser.ts +555 -555
- package/src/design/patch.ts +241 -241
- package/src/design/scaffold.ts +147 -147
- package/src/design/tailwind-theme.ts +441 -441
- package/src/design/types.ts +210 -210
- package/src/desktop/__tests__/smoke.test.ts +2 -2
- package/src/desktop/__tests__/webview-fallback.test.ts +12 -32
- package/src/desktop/__tests__/window.test.ts +20 -99
- package/src/desktop/__tests__/worker.test.ts +266 -266
- package/src/desktop/index.ts +43 -43
- package/src/desktop/types.ts +158 -158
- package/src/desktop/webview-fallback.ts +17 -4
- package/src/desktop/window.ts +17 -8
- package/src/desktop/worker.ts +180 -180
- package/src/dev-error-overlay/__tests__/overlay-injector.test.ts +241 -241
- package/src/dev-error-overlay/index.ts +30 -30
- package/src/dev-error-overlay/overlay-injector.ts +243 -243
- package/src/dev-error-overlay/overlay-styles.ts +52 -52
- package/src/dev-error-overlay/types.ts +66 -66
- package/src/devtools/ai/context-builder.ts +375 -375
- package/src/devtools/ai/index.ts +25 -25
- package/src/devtools/ai/mcp-connector.ts +25 -25
- package/src/devtools/client/catchers/error-catcher.ts +344 -344
- package/src/devtools/client/catchers/index.ts +18 -18
- package/src/devtools/client/components/index.ts +39 -39
- package/src/devtools/client/components/mandu-character.tsx +331 -331
- package/src/devtools/client/components/panel/errors-panel.tsx +259 -259
- package/src/devtools/client/components/panel/guard-panel.tsx +30 -30
- package/src/devtools/client/components/panel/islands-panel.tsx +16 -16
- package/src/devtools/client/components/panel/network-panel.tsx +291 -291
- package/src/devtools/client/components/panel/panel-container.tsx +1 -1
- package/src/devtools/client/components/panel/preview-panel.tsx +46 -46
- package/src/devtools/client/filters/context-filters.ts +282 -282
- package/src/devtools/client/filters/index.ts +16 -16
- package/src/devtools/client/index.ts +63 -63
- package/src/devtools/hook/create-hook.ts +207 -207
- package/src/devtools/hook/index.ts +13 -13
- package/src/devtools/index.ts +439 -439
- package/src/devtools/init.ts +265 -265
- package/src/devtools/protocol.ts +237 -237
- package/src/devtools/server/index.ts +17 -17
- package/src/devtools/types.ts +35 -35
- package/src/devtools/worker/index.ts +25 -25
- package/src/devtools/worker/redaction-worker.ts +233 -233
- package/src/diagnose/__tests__/checks.test.ts +136 -136
- package/src/diagnose/checks.ts +185 -185
- package/src/diagnose/index.ts +17 -17
- package/src/diagnose/run.ts +10 -10
- package/src/diagnose/types.ts +53 -53
- package/src/email/__tests__/email.test.ts +355 -355
- package/src/email/index.ts +282 -282
- package/src/email/smtp.ts +64 -64
- package/src/error/domains.ts +265 -265
- package/src/error/types.ts +6 -6
- package/src/errors/extractor.ts +409 -409
- package/src/errors/index.ts +19 -19
- package/src/filling/__tests__/session-sqlite.test.ts +5 -1
- package/src/filling/auth.ts +308 -308
- package/src/filling/body-parse.test.ts +60 -60
- package/src/filling/cookie-codec.ts +5 -3
- package/src/filling/deps.ts +265 -265
- package/src/filling/head-method.test.ts +154 -154
- package/src/filling/session-sqlite.ts +617 -617
- package/src/filling/sse.ts +5 -5
- package/src/filling/ws.ts +78 -78
- package/src/generator/generate.ts +30 -30
- package/src/generator/index.ts +3 -3
- package/src/generator/templates.test.ts +48 -48
- package/src/generator/templates.ts +219 -219
- package/src/guard/__tests__/design-inline-class.test.ts +219 -219
- package/src/guard/__tests__/tsgolint-bridge.test.ts +347 -347
- package/src/guard/analyzer.ts +360 -360
- package/src/guard/auto-correct.ts +1 -1
- package/src/guard/check.ts +39 -24
- package/src/guard/config-guard.ts +13 -13
- package/src/guard/contract-guard.ts +9 -9
- package/src/guard/define-rule.ts +243 -243
- package/src/guard/design-inline-class.ts +393 -393
- package/src/guard/file-type.test.ts +24 -24
- package/src/guard/fs-routes-policy.ts +51 -51
- package/src/guard/graph.ts +1 -1
- package/src/guard/healing.ts +36 -36
- package/src/guard/index.ts +11 -11
- package/src/guard/presets/atomic.ts +70 -70
- package/src/guard/presets/clean.ts +77 -77
- package/src/guard/presets/fsd.ts +79 -79
- package/src/guard/presets/hexagonal.ts +68 -68
- package/src/guard/reporter.ts +442 -442
- package/src/guard/rule-presets.ts +379 -379
- package/src/guard/semantic-slots.ts +1 -1
- package/src/guard/suggestions.ts +358 -358
- package/src/guard/tsgolint-bridge.ts +512 -512
- package/src/guard/types.ts +348 -348
- package/src/guard/watcher.ts +405 -405
- package/src/i18n/define.ts +126 -126
- package/src/i18n/index.ts +52 -52
- package/src/i18n/message-registry.ts +173 -173
- package/src/i18n/types.ts +112 -112
- package/src/id/__tests__/id.test.ts +3 -3
- package/src/id/index.ts +105 -105
- package/src/index.ts +9 -48
- package/src/internal/client-boundary.ts +266 -266
- package/src/internal/index.ts +2 -2
- package/src/kitchen/api/agent-devtools-api.ts +779 -779
- package/src/kitchen/api/bundle-inspector.ts +179 -0
- package/src/kitchen/api/errors-grouping.ts +126 -126
- package/src/kitchen/api/file-api.ts +11 -11
- package/src/kitchen/kitchen-handler.ts +36 -0
- package/src/kitchen/kitchen-ui.ts +456 -0
- package/src/logging/index.ts +22 -22
- package/src/logging/transports.ts +365 -365
- package/src/middleware/bridge.ts +147 -147
- package/src/middleware/compose.ts +134 -134
- package/src/middleware/compress.ts +62 -62
- package/src/middleware/cors.ts +47 -47
- package/src/middleware/csrf.ts +328 -328
- package/src/middleware/define.ts +132 -132
- package/src/middleware/jwt.ts +134 -134
- package/src/middleware/logger.ts +58 -58
- package/src/middleware/oauth/__tests__/oauth.test.ts +1 -1
- package/src/middleware/oauth/index.ts +505 -505
- package/src/middleware/oauth/providers.ts +115 -115
- package/src/middleware/rate-limit/index.ts +522 -522
- package/src/middleware/rate-limit/sqlite-store.ts +382 -382
- package/src/middleware/scheduler-cron.ts +96 -96
- package/src/middleware/secure/__tests__/secure.test.ts +360 -360
- package/src/middleware/secure/csp.ts +193 -193
- package/src/middleware/session.ts +174 -174
- package/src/middleware/timeout.ts +55 -55
- package/src/observability/logger-adapter.ts +36 -36
- package/src/observability/sqlite-store.ts +254 -254
- package/src/openapi/generator.ts +1 -1
- package/src/openapi/openapi.test.ts +43 -43
- package/src/perf/__tests__/user-marks.test.ts +354 -354
- package/src/perf/index.ts +133 -133
- package/src/perf/user-marks.ts +1 -1
- package/src/plugins/__tests__/lifecycle-integration.test.ts +272 -272
- package/src/plugins/__tests__/runner.test.ts +409 -409
- package/src/plugins/define.ts +124 -124
- package/src/plugins/examples/dep-check-plugin.ts +80 -80
- package/src/plugins/examples/prerender-cache-plugin.ts +111 -111
- package/src/plugins/examples/sitemap-plugin.ts +65 -65
- package/src/plugins/runner.ts +361 -361
- package/src/plugins/types.ts +368 -368
- package/src/report/index.ts +1 -1
- package/src/resource/__tests__/generator.test.ts +7 -7
- package/src/resource/__tests__/schema.test.ts +14 -14
- package/src/resource/ddl/__tests__/diff.test.ts +639 -639
- package/src/resource/ddl/__tests__/emit.test.ts +165 -165
- package/src/resource/ddl/__tests__/snapshot.test.ts +499 -499
- package/src/resource/ddl/emit.ts +146 -146
- package/src/resource/ddl/persistence-types.ts +218 -218
- package/src/resource/ddl/type-map.ts +223 -223
- package/src/resource/ddl/types.ts +232 -232
- package/src/resource/generator-repo.ts +630 -630
- package/src/resource/generator-schema.ts +11 -11
- package/src/resource/generators/slot.ts +72 -72
- package/src/resource/schema.ts +21 -21
- package/src/router/client-entry.test.ts +227 -227
- package/src/router/client-entry.ts +218 -218
- package/src/router/fs-patterns.test.ts +96 -96
- package/src/router/fs-routes.test.ts +532 -532
- package/src/router/fs-routes.ts +53 -53
- package/src/router/fs-scanner.ts +216 -216
- package/src/router/fs-types.ts +19 -19
- package/src/router/route-source-analyzer.ts +521 -521
- package/src/routes/index.ts +74 -74
- package/src/routes/metadata-routes.ts +427 -427
- package/src/routes/types.ts +341 -341
- package/src/runtime/__tests__/devtools-adapter.test.ts +68 -68
- package/src/runtime/__tests__/error-boundary-redaction.test.ts +141 -141
- package/src/runtime/__tests__/hdr-client.test.ts +223 -223
- package/src/runtime/__tests__/http-errors.test.ts +117 -117
- package/src/runtime/__tests__/inline-client-hydration.test.ts +237 -237
- package/src/runtime/__tests__/not-found.test.ts +152 -152
- package/src/runtime/__tests__/observability-lifecycle.test.ts +103 -103
- package/src/runtime/__tests__/page-render-response.test.ts +517 -517
- package/src/runtime/__tests__/request-middleware.test.ts +70 -70
- package/src/runtime/__tests__/searchparams-page-props.test.ts +81 -81
- package/src/runtime/adapter.ts +47 -47
- package/src/runtime/boundary.tsx +252 -252
- package/src/runtime/cache.ts +494 -494
- package/src/runtime/compose.ts +222 -222
- package/src/runtime/devtools-adapter.ts +68 -68
- package/src/runtime/escape.ts +34 -34
- package/src/runtime/fast-refresh-runtime.ts +322 -322
- package/src/runtime/fast-refresh-types.ts +1 -1
- package/src/runtime/handler.ts +65 -65
- package/src/runtime/handlers.ts +30 -11
- package/src/runtime/http-errors.ts +113 -113
- package/src/runtime/image-handler.ts +1 -1
- package/src/runtime/lifecycle.ts +381 -381
- package/src/runtime/logger.test.ts +345 -345
- package/src/runtime/middleware.ts +264 -264
- package/src/runtime/not-found.ts +93 -93
- package/src/runtime/observability-lifecycle.ts +290 -290
- package/src/runtime/openapi-endpoint.ts +236 -236
- package/src/runtime/page-render-response.ts +287 -274
- package/src/runtime/ppr.ts +74 -74
- package/src/runtime/rate-limit.ts +1 -1
- package/src/runtime/redirect.ts +1 -1
- package/src/runtime/registry.ts +171 -171
- package/src/runtime/request-middleware.ts +31 -31
- package/src/runtime/router.test.ts +4 -4
- package/src/runtime/router.ts +10 -10
- package/src/runtime/server.ts +127 -211
- package/src/runtime/shims.ts +48 -48
- package/src/runtime/ssr.ts +43 -17
- package/src/runtime/static-files.ts +369 -289
- package/src/runtime/streaming-ssr.ts +219 -180
- package/src/runtime/trace.ts +144 -144
- package/src/scheduler/__tests__/scheduler.test.ts +12 -11
- package/src/scheduler/index.ts +11 -5
- package/src/scheduler/validate.ts +169 -169
- package/src/seo/index.ts +219 -219
- package/src/seo/integration/ssr.ts +306 -306
- package/src/seo/render/basic.ts +435 -435
- package/src/seo/render/index.ts +143 -143
- package/src/seo/render/jsonld.ts +539 -539
- package/src/seo/render/opengraph.ts +197 -197
- package/src/seo/render/robots.ts +116 -116
- package/src/seo/render/sitemap.ts +137 -137
- package/src/seo/render/twitter.ts +127 -127
- package/src/seo/resolve/opengraph.ts +143 -143
- package/src/seo/resolve/robots.ts +73 -73
- package/src/seo/resolve/title.ts +94 -94
- package/src/seo/resolve/twitter.ts +73 -73
- package/src/seo/resolve/url.ts +104 -104
- package/src/seo/routes/index.ts +290 -290
- package/src/seo/types.ts +588 -588
- package/src/slot/validator.ts +39 -39
- package/src/spec/schema.ts +35 -35
- package/src/storage/s3/__tests__/s3.test.ts +479 -479
- package/src/storage/s3/index.ts +412 -412
- package/src/testing/__tests__/assertions.test.ts +632 -632
- package/src/testing/__tests__/reporter.test.ts +454 -454
- package/src/testing/assertions.ts +986 -986
- package/src/testing/db.ts +157 -157
- package/src/testing/index.ts +9 -3
- package/src/testing/lcov.ts +192 -0
- package/src/testing/mocks.ts +203 -203
- package/src/testing/session.ts +190 -190
- package/src/types/branded.ts +56 -56
- package/src/types/index.ts +1 -1
- package/src/utils/safe-io.ts +188 -188
- package/src/utils/string-safe.ts +298 -298
- package/src/watcher/__tests__/watcher.test.ts +59 -59
- package/src/watcher/watcher.ts +61 -61
|
@@ -60,6 +60,8 @@ export function renderKitchenHTML(): string {
|
|
|
60
60
|
<nav class="tabs">
|
|
61
61
|
<button class="tab" data-panel="activity">Activity</button>
|
|
62
62
|
<button class="tab" data-panel="errors">Errors</button>
|
|
63
|
+
<button class="tab" data-panel="diagnose">Diagnose</button>
|
|
64
|
+
<button class="tab" data-panel="bundle">Bundle</button>
|
|
63
65
|
<button class="tab" data-panel="agent">Agent</button>
|
|
64
66
|
<button class="tab active" data-panel="routes">Routes</button>
|
|
65
67
|
<button class="tab" data-panel="guard">Guard</button>
|
|
@@ -115,6 +117,44 @@ export function renderKitchenHTML(): string {
|
|
|
115
117
|
</div>
|
|
116
118
|
</section>
|
|
117
119
|
|
|
120
|
+
<section id="panel-diagnose" class="panel">
|
|
121
|
+
<div class="panel-header">
|
|
122
|
+
<div>
|
|
123
|
+
<h2>Diagnose</h2>
|
|
124
|
+
<p class="panel-subtitle">Extended diagnose suite (manifest, prerender, dev-artifacts, package exports, nested core, a11y). Errors block deploy; warnings are FYI.</p>
|
|
125
|
+
</div>
|
|
126
|
+
<button id="refresh-diagnose" class="btn-sm">Refresh</button>
|
|
127
|
+
</div>
|
|
128
|
+
<div id="diagnose-summary" class="diagnose-summary">
|
|
129
|
+
<span id="diagnose-summary-text">Open Diagnose to run the suite.</span>
|
|
130
|
+
</div>
|
|
131
|
+
<div id="diagnose-list" class="diagnose-list">
|
|
132
|
+
<div class="empty-state">Press Refresh to run extended diagnose.</div>
|
|
133
|
+
</div>
|
|
134
|
+
</section>
|
|
135
|
+
|
|
136
|
+
<section id="panel-bundle" class="panel">
|
|
137
|
+
<div class="panel-header">
|
|
138
|
+
<div>
|
|
139
|
+
<h2>Bundle Inspector</h2>
|
|
140
|
+
<p class="panel-subtitle">Bundle manifest + on-disk byte sizes. Largest island first — quick perf-budget read.</p>
|
|
141
|
+
</div>
|
|
142
|
+
<button id="refresh-bundle" class="btn-sm">Refresh</button>
|
|
143
|
+
</div>
|
|
144
|
+
<div id="bundle-summary" class="bundle-summary">
|
|
145
|
+
<span id="bundle-summary-text">Open Bundle to inspect emitted bundles.</span>
|
|
146
|
+
</div>
|
|
147
|
+
<div id="bundle-shared" class="bundle-shared"></div>
|
|
148
|
+
<h3 class="bundle-section-title">Islands</h3>
|
|
149
|
+
<div id="bundle-islands" class="bundle-list">
|
|
150
|
+
<div class="empty-state">Press Refresh to load bundle manifest.</div>
|
|
151
|
+
</div>
|
|
152
|
+
<h3 class="bundle-section-title">Route bundles</h3>
|
|
153
|
+
<div id="bundle-routes" class="bundle-list">
|
|
154
|
+
<div class="empty-state">Press Refresh to load bundle manifest.</div>
|
|
155
|
+
</div>
|
|
156
|
+
</section>
|
|
157
|
+
|
|
118
158
|
<section id="panel-agent" class="panel">
|
|
119
159
|
<div class="panel-header">
|
|
120
160
|
<div>
|
|
@@ -564,6 +604,237 @@ const CSS = /* css */ `
|
|
|
564
604
|
|
|
565
605
|
.error-group.expanded .error-detail { display: block; }
|
|
566
606
|
|
|
607
|
+
/* Plan 18 P2-5 — Diagnose panel */
|
|
608
|
+
.diagnose-summary {
|
|
609
|
+
display: flex;
|
|
610
|
+
align-items: center;
|
|
611
|
+
gap: 16px;
|
|
612
|
+
flex-wrap: wrap;
|
|
613
|
+
padding: 10px 14px;
|
|
614
|
+
background: var(--surface-strong);
|
|
615
|
+
border: 2px solid var(--line);
|
|
616
|
+
border-radius: var(--radius-md);
|
|
617
|
+
margin-bottom: 12px;
|
|
618
|
+
font-size: 13px;
|
|
619
|
+
color: var(--ink);
|
|
620
|
+
font-weight: 500;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
.diagnose-summary .pill {
|
|
624
|
+
display: inline-flex;
|
|
625
|
+
align-items: center;
|
|
626
|
+
gap: 6px;
|
|
627
|
+
padding: 2px 10px;
|
|
628
|
+
border-radius: var(--radius-sm);
|
|
629
|
+
font-size: 12px;
|
|
630
|
+
font-weight: 700;
|
|
631
|
+
}
|
|
632
|
+
.diagnose-summary .pill.healthy { background: rgba(107, 158, 71, 0.18); color: var(--success); }
|
|
633
|
+
.diagnose-summary .pill.unhealthy { background: rgba(200, 84, 80, 0.18); color: var(--danger); }
|
|
634
|
+
|
|
635
|
+
.diagnose-list {
|
|
636
|
+
max-height: calc(100vh - 240px);
|
|
637
|
+
overflow-y: auto;
|
|
638
|
+
display: flex;
|
|
639
|
+
flex-direction: column;
|
|
640
|
+
gap: 8px;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
.diagnose-check {
|
|
644
|
+
background: var(--surface);
|
|
645
|
+
border: 2px solid var(--line);
|
|
646
|
+
border-left-width: 6px;
|
|
647
|
+
border-radius: var(--radius-md);
|
|
648
|
+
padding: 10px 14px;
|
|
649
|
+
cursor: pointer;
|
|
650
|
+
transition: transform 100ms ease, box-shadow 100ms ease;
|
|
651
|
+
}
|
|
652
|
+
.diagnose-check:hover {
|
|
653
|
+
box-shadow: var(--shadow-sm);
|
|
654
|
+
}
|
|
655
|
+
.diagnose-check.expanded {
|
|
656
|
+
box-shadow: var(--shadow);
|
|
657
|
+
}
|
|
658
|
+
.diagnose-check.sev-error { border-left-color: var(--danger); }
|
|
659
|
+
.diagnose-check.sev-warning { border-left-color: var(--warning); }
|
|
660
|
+
.diagnose-check.sev-info { border-left-color: var(--info); }
|
|
661
|
+
.diagnose-check.ok { border-left-color: var(--success); }
|
|
662
|
+
|
|
663
|
+
.diagnose-head {
|
|
664
|
+
display: flex;
|
|
665
|
+
align-items: center;
|
|
666
|
+
gap: 10px;
|
|
667
|
+
flex-wrap: wrap;
|
|
668
|
+
}
|
|
669
|
+
.diagnose-icon { font-size: 16px; }
|
|
670
|
+
.diagnose-rule {
|
|
671
|
+
font-family: var(--font-mono);
|
|
672
|
+
font-size: 12px;
|
|
673
|
+
color: var(--muted);
|
|
674
|
+
}
|
|
675
|
+
.diagnose-message {
|
|
676
|
+
flex: 1 1 280px;
|
|
677
|
+
font-size: 13px;
|
|
678
|
+
color: var(--ink);
|
|
679
|
+
font-weight: 500;
|
|
680
|
+
}
|
|
681
|
+
.diagnose-sev-badge {
|
|
682
|
+
font-size: 10px;
|
|
683
|
+
font-weight: 700;
|
|
684
|
+
text-transform: uppercase;
|
|
685
|
+
padding: 2px 6px;
|
|
686
|
+
border-radius: var(--radius-sm);
|
|
687
|
+
}
|
|
688
|
+
.diagnose-sev-badge.error { background: rgba(200, 84, 80, 0.18); color: var(--danger); }
|
|
689
|
+
.diagnose-sev-badge.warning { background: rgba(232, 169, 58, 0.20); color: var(--warning); }
|
|
690
|
+
.diagnose-sev-badge.info { background: rgba(74, 144, 194, 0.18); color: var(--info); }
|
|
691
|
+
.diagnose-sev-badge.ok { background: rgba(107, 158, 71, 0.18); color: var(--success); }
|
|
692
|
+
|
|
693
|
+
.diagnose-detail {
|
|
694
|
+
display: none;
|
|
695
|
+
margin-top: 10px;
|
|
696
|
+
padding-top: 10px;
|
|
697
|
+
border-top: 1px dashed var(--line);
|
|
698
|
+
font-size: 12px;
|
|
699
|
+
color: var(--muted);
|
|
700
|
+
}
|
|
701
|
+
.diagnose-check.expanded .diagnose-detail { display: block; }
|
|
702
|
+
|
|
703
|
+
.diagnose-suggestion {
|
|
704
|
+
margin-top: 6px;
|
|
705
|
+
padding: 6px 10px;
|
|
706
|
+
background: var(--accent-soft);
|
|
707
|
+
border-radius: var(--radius-sm);
|
|
708
|
+
font-family: var(--font-mono);
|
|
709
|
+
font-size: 12px;
|
|
710
|
+
color: var(--ink);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
.diagnose-details-json {
|
|
714
|
+
margin-top: 8px;
|
|
715
|
+
padding: 8px;
|
|
716
|
+
background: var(--surface-strong);
|
|
717
|
+
border-radius: var(--radius-sm);
|
|
718
|
+
font-family: var(--font-mono);
|
|
719
|
+
font-size: 11px;
|
|
720
|
+
white-space: pre-wrap;
|
|
721
|
+
word-break: break-word;
|
|
722
|
+
max-height: 200px;
|
|
723
|
+
overflow-y: auto;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/* Plan 18 P2-6 — Bundle inspector */
|
|
727
|
+
.bundle-summary {
|
|
728
|
+
display: flex;
|
|
729
|
+
gap: 14px;
|
|
730
|
+
flex-wrap: wrap;
|
|
731
|
+
padding: 10px 14px;
|
|
732
|
+
background: var(--surface-strong);
|
|
733
|
+
border: 2px solid var(--line);
|
|
734
|
+
border-radius: var(--radius-md);
|
|
735
|
+
margin-bottom: 12px;
|
|
736
|
+
font-size: 13px;
|
|
737
|
+
color: var(--ink);
|
|
738
|
+
font-weight: 500;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
.bundle-summary strong {
|
|
742
|
+
font-family: var(--font-mono);
|
|
743
|
+
font-weight: 700;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
.bundle-shared {
|
|
747
|
+
display: grid;
|
|
748
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
749
|
+
gap: 8px;
|
|
750
|
+
margin-bottom: 16px;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
.bundle-shared-card {
|
|
754
|
+
padding: 8px 12px;
|
|
755
|
+
background: var(--surface);
|
|
756
|
+
border: 2px solid var(--line);
|
|
757
|
+
border-radius: var(--radius-md);
|
|
758
|
+
font-size: 12px;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
.bundle-shared-card .label {
|
|
762
|
+
color: var(--muted);
|
|
763
|
+
text-transform: uppercase;
|
|
764
|
+
font-size: 10px;
|
|
765
|
+
letter-spacing: 0.05em;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
.bundle-shared-card .size {
|
|
769
|
+
font-family: var(--font-mono);
|
|
770
|
+
font-size: 14px;
|
|
771
|
+
color: var(--ink);
|
|
772
|
+
font-weight: 700;
|
|
773
|
+
margin-top: 2px;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
.bundle-section-title {
|
|
777
|
+
margin: 18px 0 8px;
|
|
778
|
+
font-family: var(--font-display);
|
|
779
|
+
font-size: 15px;
|
|
780
|
+
font-weight: 700;
|
|
781
|
+
color: var(--ink);
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
.bundle-list {
|
|
785
|
+
display: flex;
|
|
786
|
+
flex-direction: column;
|
|
787
|
+
gap: 6px;
|
|
788
|
+
max-height: 320px;
|
|
789
|
+
overflow-y: auto;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.bundle-row {
|
|
793
|
+
display: grid;
|
|
794
|
+
grid-template-columns: minmax(0, 2fr) 90px 70px minmax(120px, 1fr);
|
|
795
|
+
gap: 10px;
|
|
796
|
+
align-items: center;
|
|
797
|
+
padding: 8px 12px;
|
|
798
|
+
background: var(--surface);
|
|
799
|
+
border: 2px solid var(--line);
|
|
800
|
+
border-radius: var(--radius-md);
|
|
801
|
+
font-size: 12px;
|
|
802
|
+
color: var(--ink);
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
.bundle-row .name {
|
|
806
|
+
font-family: var(--font-mono);
|
|
807
|
+
overflow: hidden;
|
|
808
|
+
text-overflow: ellipsis;
|
|
809
|
+
white-space: nowrap;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
.bundle-row .size {
|
|
813
|
+
font-family: var(--font-mono);
|
|
814
|
+
font-weight: 700;
|
|
815
|
+
text-align: right;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.bundle-row .priority {
|
|
819
|
+
font-size: 10px;
|
|
820
|
+
text-transform: uppercase;
|
|
821
|
+
color: var(--muted);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
.bundle-row .bar {
|
|
825
|
+
height: 8px;
|
|
826
|
+
background: var(--surface-strong);
|
|
827
|
+
border: 1px solid var(--line);
|
|
828
|
+
border-radius: var(--radius-sm);
|
|
829
|
+
overflow: hidden;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
.bundle-row .bar > span {
|
|
833
|
+
display: block;
|
|
834
|
+
height: 100%;
|
|
835
|
+
background: var(--accent);
|
|
836
|
+
}
|
|
837
|
+
|
|
567
838
|
.activity-item {
|
|
568
839
|
padding: 8px 12px;
|
|
569
840
|
border-bottom: 1px solid var(--line);
|
|
@@ -2578,6 +2849,189 @@ const JS = /* js */ `
|
|
|
2578
2849
|
.catch(function() { /* noop */ });
|
|
2579
2850
|
});
|
|
2580
2851
|
|
|
2852
|
+
// ─── Diagnose (plan 18 P2-5) ────────────────
|
|
2853
|
+
var diagnoseSummaryEl = document.getElementById('diagnose-summary-text');
|
|
2854
|
+
var diagnoseListEl = document.getElementById('diagnose-list');
|
|
2855
|
+
|
|
2856
|
+
function diagnoseIcon(check) {
|
|
2857
|
+
if (check.ok) return 'OK';
|
|
2858
|
+
if (check.severity === 'error') return 'ER';
|
|
2859
|
+
if (check.severity === 'warning') return 'WN';
|
|
2860
|
+
return 'IN';
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2863
|
+
function loadDiagnose() {
|
|
2864
|
+
if (!diagnoseListEl) return;
|
|
2865
|
+
diagnoseListEl.innerHTML = '<div class="empty-state">Running diagnose suite...</div>';
|
|
2866
|
+
if (diagnoseSummaryEl) diagnoseSummaryEl.textContent = 'Running...';
|
|
2867
|
+
|
|
2868
|
+
fetchJson('/__kitchen/api/diagnose', function(err, report) {
|
|
2869
|
+
if (err) {
|
|
2870
|
+
diagnoseListEl.innerHTML = '<div class="empty-state">Failed: ' + escapeHtml(err.message) + '</div>';
|
|
2871
|
+
return;
|
|
2872
|
+
}
|
|
2873
|
+
var checks = report.checks || [];
|
|
2874
|
+
var summary = report.summary || { total: 0, passed: 0, failed: 0 };
|
|
2875
|
+
|
|
2876
|
+
if (diagnoseSummaryEl) {
|
|
2877
|
+
diagnoseSummaryEl.innerHTML =
|
|
2878
|
+
'<span class="pill ' + (report.healthy ? 'healthy' : 'unhealthy') + '">' +
|
|
2879
|
+
(report.healthy ? 'HEALTHY' : 'UNHEALTHY') +
|
|
2880
|
+
'</span>' +
|
|
2881
|
+
'<span>' + summary.passed + '/' + summary.total + ' checks passed</span>' +
|
|
2882
|
+
(report.errorCount ? '<span>' + report.errorCount + ' error(s)</span>' : '') +
|
|
2883
|
+
(report.warningCount ? '<span>' + report.warningCount + ' warning(s)</span>' : '');
|
|
2884
|
+
}
|
|
2885
|
+
|
|
2886
|
+
if (!checks.length) {
|
|
2887
|
+
diagnoseListEl.innerHTML = '<div class="empty-state">No diagnose checks ran.</div>';
|
|
2888
|
+
return;
|
|
2889
|
+
}
|
|
2890
|
+
|
|
2891
|
+
// Sort: errors first, then warnings, then info, then ok.
|
|
2892
|
+
var weight = { error: 0, warning: 1, info: 2 };
|
|
2893
|
+
var sorted = checks.slice().sort(function(a, b) {
|
|
2894
|
+
var aw = a.ok ? 3 : (weight[a.severity] || 2);
|
|
2895
|
+
var bw = b.ok ? 3 : (weight[b.severity] || 2);
|
|
2896
|
+
return aw - bw;
|
|
2897
|
+
});
|
|
2898
|
+
|
|
2899
|
+
var html = '';
|
|
2900
|
+
for (var i = 0; i < sorted.length; i++) {
|
|
2901
|
+
var c = sorted[i];
|
|
2902
|
+
var sevCls = c.ok ? 'ok' : ('sev-' + (c.severity || 'info'));
|
|
2903
|
+
var sevBadge = c.ok ? 'ok' : (c.severity || 'info');
|
|
2904
|
+
var sevLabel = c.ok ? 'OK' : (c.severity || 'info');
|
|
2905
|
+
var hasDetails = c.suggestion || c.details;
|
|
2906
|
+
var suggestionBlock = c.suggestion
|
|
2907
|
+
? '<div class="diagnose-suggestion">' + escapeHtml(c.suggestion) + '</div>'
|
|
2908
|
+
: '';
|
|
2909
|
+
var detailsBlock = c.details
|
|
2910
|
+
? '<div class="diagnose-details-json">' + escapeHtml(JSON.stringify(c.details, null, 2)) + '</div>'
|
|
2911
|
+
: '';
|
|
2912
|
+
html += '<div class="diagnose-check ' + sevCls + (hasDetails ? '' : ' no-detail') + '" data-rule="' + escapeHtml(c.rule) + '">' +
|
|
2913
|
+
'<div class="diagnose-head">' +
|
|
2914
|
+
'<span class="diagnose-icon">' + diagnoseIcon(c) + '</span>' +
|
|
2915
|
+
'<span class="diagnose-sev-badge ' + sevBadge + '">' + escapeHtml(sevLabel) + '</span>' +
|
|
2916
|
+
'<span class="diagnose-rule">' + escapeHtml(c.rule) + '</span>' +
|
|
2917
|
+
'<div class="diagnose-message">' + escapeHtml(c.message || '') + '</div>' +
|
|
2918
|
+
'</div>' +
|
|
2919
|
+
(hasDetails ? '<div class="diagnose-detail">' + suggestionBlock + detailsBlock + '</div>' : '') +
|
|
2920
|
+
'</div>';
|
|
2921
|
+
}
|
|
2922
|
+
diagnoseListEl.innerHTML = html;
|
|
2923
|
+
var rows = diagnoseListEl.querySelectorAll('.diagnose-check');
|
|
2924
|
+
for (var r = 0; r < rows.length; r++) {
|
|
2925
|
+
rows[r].addEventListener('click', function() {
|
|
2926
|
+
if (this.classList.contains('no-detail')) return;
|
|
2927
|
+
this.classList.toggle('expanded');
|
|
2928
|
+
});
|
|
2929
|
+
}
|
|
2930
|
+
});
|
|
2931
|
+
}
|
|
2932
|
+
|
|
2933
|
+
var refreshDiagnoseBtn = document.getElementById('refresh-diagnose');
|
|
2934
|
+
if (refreshDiagnoseBtn) refreshDiagnoseBtn.addEventListener('click', loadDiagnose);
|
|
2935
|
+
|
|
2936
|
+
// ─── Bundle Inspector (plan 18 P2-6) ───────
|
|
2937
|
+
var bundleSummaryEl = document.getElementById('bundle-summary-text');
|
|
2938
|
+
var bundleSharedEl = document.getElementById('bundle-shared');
|
|
2939
|
+
var bundleIslandsEl = document.getElementById('bundle-islands');
|
|
2940
|
+
var bundleRoutesEl = document.getElementById('bundle-routes');
|
|
2941
|
+
|
|
2942
|
+
function fmtBytes(n) {
|
|
2943
|
+
if (!n) return '0 B';
|
|
2944
|
+
if (n < 1024) return n + ' B';
|
|
2945
|
+
if (n < 1024 * 1024) return (n / 1024).toFixed(1) + ' KB';
|
|
2946
|
+
return (n / 1024 / 1024).toFixed(2) + ' MB';
|
|
2947
|
+
}
|
|
2948
|
+
|
|
2949
|
+
function bundleRow(name, bytes, maxBytes, priority, route) {
|
|
2950
|
+
var pct = maxBytes > 0 ? Math.max(2, Math.round((bytes / maxBytes) * 100)) : 0;
|
|
2951
|
+
return '<div class="bundle-row">' +
|
|
2952
|
+
'<span class="name" title="' + escapeHtml(name) + '">' + escapeHtml(name) + '</span>' +
|
|
2953
|
+
'<span class="size">' + escapeHtml(fmtBytes(bytes)) + '</span>' +
|
|
2954
|
+
'<span class="priority">' + escapeHtml(priority || '') + (route ? ' / ' + escapeHtml(route) : '') + '</span>' +
|
|
2955
|
+
'<span class="bar"><span style="width:' + pct + '%"></span></span>' +
|
|
2956
|
+
'</div>';
|
|
2957
|
+
}
|
|
2958
|
+
|
|
2959
|
+
function loadBundle() {
|
|
2960
|
+
if (!bundleIslandsEl) return;
|
|
2961
|
+
if (bundleSummaryEl) bundleSummaryEl.textContent = 'Loading bundle manifest...';
|
|
2962
|
+
bundleIslandsEl.innerHTML = '<div class="empty-state">Loading...</div>';
|
|
2963
|
+
bundleRoutesEl.innerHTML = '<div class="empty-state">Loading...</div>';
|
|
2964
|
+
if (bundleSharedEl) bundleSharedEl.innerHTML = '';
|
|
2965
|
+
|
|
2966
|
+
fetchJson('/__kitchen/api/bundle', function(err, report) {
|
|
2967
|
+
if (err) {
|
|
2968
|
+
bundleIslandsEl.innerHTML = '<div class="empty-state">Failed: ' + escapeHtml(err.message) + '</div>';
|
|
2969
|
+
return;
|
|
2970
|
+
}
|
|
2971
|
+
if (!report.loaded) {
|
|
2972
|
+
if (bundleSummaryEl) bundleSummaryEl.textContent = report.reason || 'Bundle manifest not loaded.';
|
|
2973
|
+
bundleIslandsEl.innerHTML = '<div class="empty-state">Run \`mandu build\` first.</div>';
|
|
2974
|
+
bundleRoutesEl.innerHTML = '<div class="empty-state">No bundles yet.</div>';
|
|
2975
|
+
return;
|
|
2976
|
+
}
|
|
2977
|
+
|
|
2978
|
+
var totals = report.totals || {};
|
|
2979
|
+
var meta = report.manifest || {};
|
|
2980
|
+
if (bundleSummaryEl) {
|
|
2981
|
+
bundleSummaryEl.innerHTML =
|
|
2982
|
+
'<span>env <strong>' + escapeHtml(meta.env || '?') + '</strong></span>' +
|
|
2983
|
+
'<span>built <strong>' + escapeHtml(meta.buildTime || '?') + '</strong></span>' +
|
|
2984
|
+
'<span>total <strong>' + escapeHtml(fmtBytes(totals.totalBytes)) + '</strong></span>' +
|
|
2985
|
+
'<span>islands <strong>' + (totals.islandCount || 0) + ' (' + escapeHtml(fmtBytes(totals.islandBytes)) + ')</strong></span>' +
|
|
2986
|
+
'<span>routes <strong>' + (totals.bundleCount || 0) + ' (' + escapeHtml(fmtBytes(totals.bundleBytes)) + ')</strong></span>';
|
|
2987
|
+
}
|
|
2988
|
+
|
|
2989
|
+
if (bundleSharedEl) {
|
|
2990
|
+
var sharedHtml = '';
|
|
2991
|
+
var shared = report.shared || {};
|
|
2992
|
+
['runtime', 'vendor', 'router'].forEach(function(k) {
|
|
2993
|
+
var s = shared[k];
|
|
2994
|
+
if (!s) return;
|
|
2995
|
+
sharedHtml += '<div class="bundle-shared-card">' +
|
|
2996
|
+
'<div class="label">' + escapeHtml(k) + '</div>' +
|
|
2997
|
+
'<div class="size">' + escapeHtml(fmtBytes(s.bytes)) + '</div>' +
|
|
2998
|
+
'<div class="name" title="' + escapeHtml(s.path) + '" style="font-family:var(--font-mono);color:var(--muted);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">' + escapeHtml(s.path) + '</div>' +
|
|
2999
|
+
'</div>';
|
|
3000
|
+
});
|
|
3001
|
+
bundleSharedEl.innerHTML = sharedHtml;
|
|
3002
|
+
}
|
|
3003
|
+
|
|
3004
|
+
var islands = report.islands || [];
|
|
3005
|
+
var maxIslandBytes = islands.length ? islands[0].bytes : 0;
|
|
3006
|
+
if (!islands.length) {
|
|
3007
|
+
bundleIslandsEl.innerHTML = '<div class="empty-state">No island bundles emitted. Either this project is SSR-only or no client islands were declared.</div>';
|
|
3008
|
+
} else {
|
|
3009
|
+
var islandHtml = '';
|
|
3010
|
+
for (var i = 0; i < islands.length; i++) {
|
|
3011
|
+
var isl = islands[i];
|
|
3012
|
+
islandHtml += bundleRow(isl.islandId, isl.bytes, maxIslandBytes, isl.priority, isl.route);
|
|
3013
|
+
}
|
|
3014
|
+
bundleIslandsEl.innerHTML = islandHtml;
|
|
3015
|
+
}
|
|
3016
|
+
|
|
3017
|
+
var routes = report.bundles || [];
|
|
3018
|
+
var maxRouteBytes = routes.length ? routes[0].bytes : 0;
|
|
3019
|
+
if (!routes.length) {
|
|
3020
|
+
bundleRoutesEl.innerHTML = '<div class="empty-state">No per-route bundles emitted.</div>';
|
|
3021
|
+
} else {
|
|
3022
|
+
var routeHtml = '';
|
|
3023
|
+
for (var j = 0; j < routes.length; j++) {
|
|
3024
|
+
var rt = routes[j];
|
|
3025
|
+
routeHtml += bundleRow(rt.routeId, rt.bytes, maxRouteBytes, rt.priority, '');
|
|
3026
|
+
}
|
|
3027
|
+
bundleRoutesEl.innerHTML = routeHtml;
|
|
3028
|
+
}
|
|
3029
|
+
});
|
|
3030
|
+
}
|
|
3031
|
+
|
|
3032
|
+
var refreshBundleBtn = document.getElementById('refresh-bundle');
|
|
3033
|
+
if (refreshBundleBtn) refreshBundleBtn.addEventListener('click', loadBundle);
|
|
3034
|
+
|
|
2581
3035
|
function loadRequests() {
|
|
2582
3036
|
requestsListEl.innerHTML = '<div class="empty-state">Loading requests...</div>';
|
|
2583
3037
|
fetchJson('/__kitchen/api/requests?limit=100', function(err, data) {
|
|
@@ -2779,6 +3233,8 @@ const JS = /* js */ `
|
|
|
2779
3233
|
var tabLoaders = {
|
|
2780
3234
|
'agent': loadAgentContext,
|
|
2781
3235
|
'errors': loadErrors,
|
|
3236
|
+
'diagnose': loadDiagnose,
|
|
3237
|
+
'bundle': loadBundle,
|
|
2782
3238
|
'requests': loadRequests,
|
|
2783
3239
|
'mcp-activity': loadMcpActivity,
|
|
2784
3240
|
'cache': loadCacheStats,
|
package/src/logging/index.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DNA-008: Structured Logging System
|
|
3
|
-
*
|
|
4
|
-
* 구조화된 로깅 시스템
|
|
5
|
-
* - Transport 기반 다중 출력
|
|
6
|
-
* - 동적 전송 추가/제거
|
|
7
|
-
* - 레벨별 필터링
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
transportRegistry,
|
|
12
|
-
attachLogTransport,
|
|
13
|
-
detachLogTransport,
|
|
14
|
-
entryToTransportRecord,
|
|
15
|
-
createConsoleTransport,
|
|
16
|
-
createBufferTransport,
|
|
17
|
-
createFilteredTransport,
|
|
18
|
-
createBatchTransport,
|
|
19
|
-
type LogTransport,
|
|
20
|
-
type LogTransportRecord,
|
|
21
|
-
type TransportRegistration,
|
|
22
|
-
} from "./transports.js";
|
|
1
|
+
/**
|
|
2
|
+
* DNA-008: Structured Logging System
|
|
3
|
+
*
|
|
4
|
+
* 구조화된 로깅 시스템
|
|
5
|
+
* - Transport 기반 다중 출력
|
|
6
|
+
* - 동적 전송 추가/제거
|
|
7
|
+
* - 레벨별 필터링
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
transportRegistry,
|
|
12
|
+
attachLogTransport,
|
|
13
|
+
detachLogTransport,
|
|
14
|
+
entryToTransportRecord,
|
|
15
|
+
createConsoleTransport,
|
|
16
|
+
createBufferTransport,
|
|
17
|
+
createFilteredTransport,
|
|
18
|
+
createBatchTransport,
|
|
19
|
+
type LogTransport,
|
|
20
|
+
type LogTransportRecord,
|
|
21
|
+
type TransportRegistration,
|
|
22
|
+
} from "./transports.js";
|