#994 by GitHub stars

omdsh-dev/dsh-genui

Render structured interactive UI inline through the dsh-ui fence. Use for key points, emphasis, comparisons, flows, steps, status, data, demos, and interactions whenever structured presentation would be clearer than prose. Preserve conversation language for all user-visible text.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +19 / −6 lines

Before Not checked yet → After Network or broad shell

c40c9ce9d722 → c2624ce0e08f

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → c40c9ce9d722

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit c2624ce0e08fd18510bef640168fcb81e817ed58

git clone --filter=blob:none --no-checkout https://github.com/omdsh-dev/dsh-genui.git .hotskills/omdsh-dev-dsh-genui && git -C .hotskills/omdsh-dev-dsh-genui checkout --detach c2624ce0e08fd18510bef640168fcb81e817ed58 # Copy each selected skill directory from .hotskills/omdsh-dev-dsh-genui into .agents/skills/<skill-name>/
881GitHub stars
44stars in 7 days
1skill in this repository
227commits in 30 days

Heat

8.2
  • Star growth, last 7 daysAhead of 96% of tracked repositories
  • Star growth, last 24 hoursAhead of 97% of tracked repositories
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysAhead of 97% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 9, 2026Nov 7, 2026881

Individual skills in this repository

How it works

genui

When your agent uses it

Render structured interactive UI inline through the dsh-ui fence. Use for key points, emphasis, comparisons, flows, steps, status, data, demos, and interactions whenever structured presentation would be clearer than prose. Preserve conversation language for all user-visible text.

What it loads into context

Frontmatter

59 tokens

Always available to the agent

SKILL.md

18,385 tokens

When the skill is activated

Reference documents

104,571 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 围栏书写铁律(先读这一节)
  2. 组件词汇(只允许这些 type)
  3. 什么时候用:内容类型 → 组件映射
  4. 行内富文本(文字类回答的底座)
  5. 回答级版式:默认无卡,焦点唯一
  6. 范例:示范「判断」,不要照抄组件序列
  7. 版式参考:几个见过的好形状(不是起点,也不是菜单)
  8. 使用规则

Scripts executed separately

  • package.json
  • scripts/build-anthology-page.mts
  • scripts/check-blocks-theme-browser.mjs
  • scripts/check-content-font-size-browser.mjs
  • scripts/check-host-api.mjs
  • scripts/check-interaction-state-browser.mjs
  • scripts/check-map-assets.mjs
  • scripts/check-mermaid-browser.mjs
  • scripts/check-standalone.mjs
  • scripts/check-steps-marker-browser.mjs
  • scripts/check-table-wrap-browser.mjs
  • scripts/check-text-newlines-browser.mjs
  • scripts/clean.mjs
  • scripts/computed-browser-checks.mjs
  • scripts/e2e-gallery-host.mjs
  • scripts/e2e-map-host.mjs
  • scripts/e2e-visual.mts
  • scripts/e2e.mjs
  • scripts/fixtures/gallery-host.mjs
  • scripts/fixtures/map-host.mjs
  • scripts/gallery-browser-checks.mjs
  • scripts/gallery-fixed-contexts.mjs
  • scripts/gallery-input-mode.mjs
  • scripts/gallery-touch-checks.mjs
  • scripts/generate-icon-data.mjs
  • scripts/genui-usage-audit.mjs
  • scripts/host-dependency-policy.mjs
  • scripts/install.sh
  • scripts/map-acceptance/browser-checks.mjs
  • scripts/map-acceptance/contract.mjs
  • scripts/map-acceptance/run.mjs
  • scripts/prepack.mjs
  • scripts/prepare-published-host.mjs
  • scripts/sidechat-acceptance/ci.mjs
  • scripts/sidechat-acceptance/fixture/lib/index.mjs
  • scripts/sidechat-acceptance/fixture/lib/snapshot-diagnostics.mjs
  • scripts/sidechat-acceptance/fixture/lib/spec.mjs
  • scripts/sidechat-acceptance/fixture/lib/ui-away.mjs
  • scripts/sidechat-acceptance/scripts/exact-pack.mjs
  • scripts/sidechat-acceptance/scripts/owned-process.mjs
  • scripts/sidechat-acceptance/scripts/run-sidechat-acceptance.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-away-navigation.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-backend-oracle.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-browser-checks.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-browser-contracts.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-browser-locators.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-browser-transport.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-host-contract.mjs
  • scripts/sidechat-acceptance/scripts/sidechat-onboarding.mjs
  • scripts/sidechat-acceptance/tests/ci.test.mjs
  • scripts/sidechat-acceptance/tests/exact-pack.test.mjs
  • scripts/sidechat-acceptance/tests/host-resolution.test.mjs
  • scripts/sidechat-acceptance/tests/independent-review.test.mjs
  • scripts/sidechat-acceptance/tests/owned-process.test.mjs
  • scripts/sidechat-acceptance/tests/owned-root.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-away-navigation.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-backend-oracle.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-browser-contracts.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-onboarding.test.mjs
  • scripts/sidechat-acceptance/tests/sidechat-system-head.test.mjs
  • scripts/sidechat-acceptance/tests/snapshot-diagnostics.test.mjs
  • scripts/sidechat-acceptance/tests/transport-review.test.mjs
  • scripts/verify-pack.mjs
  • site/assets/index-CbA0uR5g.js
  • src/client/EChartNode.tsx
  • src/client/ErrorBoundary.tsx
  • src/client/GenuiBlock.tsx
  • src/client/PlotBlock.tsx
  • src/client/TemplateDrawer.tsx
  • src/client/achievement-store.ts
  • src/client/achievement-toast.tsx
  • src/client/achievements.ts
  • src/client/action-context.ts
  • src/client/artifact/ExportableGenuiBlock.tsx
  • src/client/artifact/create.ts
  • src/client/artifact/download.ts
  • src/client/artifact/html.ts
  • src/client/artifact/index.ts
  • src/client/artifact/json.ts
  • src/client/artifact/parse.ts
  • src/client/artifact/portability.ts
  • src/client/artifact/standalone-theme.ts
  • src/client/artifact/types.ts
  • src/client/asset-echarts-core.ts
  • src/client/asset-echarts.ts
  • src/client/asset-loader.ts
  • src/client/asset-maplibre.ts
  • src/client/asset-mermaid.ts
  • src/client/asset-three.ts
  • src/client/blocks/advanced.tsx
  • src/client/blocks/basic.tsx
  • src/client/blocks/blocks.tsx
  • src/client/blocks/carousel.tsx
  • src/client/blocks/charts.tsx
  • src/client/blocks/checkbox.tsx
  • src/client/blocks/choices.tsx
  • src/client/blocks/compare.tsx
  • src/client/blocks/date-picker.tsx
  • src/client/blocks/diagram/geometry.ts
  • src/client/blocks/diagram/index.tsx
  • src/client/blocks/diagram/layout.ts
  • src/client/blocks/diagram/theme.ts
  • src/client/blocks/editor.tsx
  • src/client/blocks/entity-card.tsx
  • src/client/blocks/forms.tsx
  • src/client/blocks/icon.tsx
  • src/client/blocks/image-group.tsx
  • src/client/blocks/image.tsx
  • src/client/blocks/map.tsx
  • src/client/blocks/popover.tsx
  • src/client/blocks/render-node.tsx
  • src/client/blocks/segmented-control.tsx
  • src/client/blocks/skeleton.tsx
  • src/client/blocks/state.ts
  • src/client/blocks/svg.tsx
  • src/client/computed.ts
  • src/client/conditions.ts
  • src/client/copy-preview-state.ts
  • src/client/date-picker.ts
  • src/client/dom-fence.tsx
  • src/client/echarts-engine.ts
  • src/client/echarts-lazy.ts
  • src/client/embed.ts
  • src/client/fence-render.tsx
  • src/client/file-address.ts
  • src/client/file-link-context.tsx
  • src/client/file-link.ts
  • src/client/gallery.ts
  • src/client/genui-runtime/diagnostics.ts
  • src/client/genui-runtime/index.ts
  • src/client/genui-runtime/limits.ts
  • src/client/genui-runtime/normalize.ts
  • src/client/genui-runtime/schema.ts
  • src/client/genui-runtime/value-utils.ts
  • src/client/guard.ts
  • src/client/i18n/en.ts
  • src/client/i18n/index.ts
  • src/client/i18n/runtime.ts
  • src/client/i18n/zh.ts
  • src/client/icons/asset-icons.ts
  • src/client/icons/icon-data-full.ts
  • src/client/icons/icon-data.ts
  • src/client/icons/icon-lazy.ts
  • src/client/icons/icon-names-full.ts
  • src/client/index.tsx
  • src/client/inline.ts
  • src/client/interaction-store.ts
  • src/client/map-config.ts
  • src/client/map-core.ts
  • src/client/map-data.ts
  • src/client/map-lazy.ts
  • src/client/map-worker-ownership.ts
  • src/client/maplibre-resources.ts
  • src/client/mermaid-colors.ts
  • src/client/mermaid-core.ts
  • src/client/mermaid-lazy.ts
  • src/client/mermaid-safe.ts
  • src/client/panel-command.ts
  • src/client/panel-store.ts
  • src/client/panel.tsx
  • src/client/parse-partial.ts
  • src/client/primitive-adapter.ts
  • src/client/primitive-labels.ts
  • src/client/safe-math.ts
  • src/client/scene3d-core.ts
  • src/client/scene3d-lazy.ts
  • src/client/session-resolver.ts
  • src/client/sidechat-surface.tsx
  • src/client/source-fence.ts
  • src/client/spec.ts
  • src/client/standalone/asset-loader.ts
  • src/client/standalone/bootstrap-types.ts
  • src/client/standalone/katex-style.ts
  • src/client/standalone/primitive-adapter.tsx
  • src/client/standalone/runtime.tsx
  • src/client/streaming-shape.ts
  • src/client/submission-registry.ts
  • src/client/svg-fence.tsx
  • src/client/table-details.ts
  • src/client/table-export.ts
  • src/client/templates.ts
  • src/client/toolview.tsx
  • src/client/walk-spec.ts
  • src/css-modules.d.ts
  • src/index.ts
  • src/plugin/chart-contract.ts
  • src/plugin/dsh-go-compiler.ts
  • src/plugin/dsh-go-native.ts
  • src/plugin/dsh-go-submission.ts
  • src/plugin/dsh-go-types.ts
  • src/plugin/dsh-go-view.ts
  • src/plugin/fence-feedback.ts
  • src/plugin/genui-diagnostic.ts
  • src/plugin/index.ts
  • src/plugin/inline-content-diagnostic.ts
  • src/plugin/node-shims.d.ts
  • src/plugin/tool.ts
  • src/shared/fence-language.ts
  • src/shared/fence-repair.ts
  • src/shared/fence-resolve.ts
  • src/shared/panel-merge.ts
  • tests/achievements.spec.ts
  • tests/browser/blocks-theme.tsx
  • tests/browser/interaction-state.tsx
  • tests/browser/map.tsx
  • tests/browser/steps-marker.tsx
  • tests/browser/table-wrap.tsx
  • tests/browser/text-newlines.tsx
  • tests/dom-fence-container-stream.spec.tsx
  • tests/dom-fence-maintenance.spec.tsx
  • tests/dom-fence-ordinals.spec.tsx
  • tests/dom-fence-raf-cleanup.spec.tsx
  • tests/dom-fence-skeleton.spec.tsx
  • tests/dom-fence.spec.tsx
  • tests/dsh-go-native.spec.ts
  • tests/dsh-go-view.spec.ts
  • tests/e2e-auth.spec.ts
  • tests/fence-feedback-agentloop.spec.ts
  • tests/fence-feedback.spec.ts
  • tests/fence-repair-cjk-punctuation.spec.ts
  • tests/fence-repair-json-quotes.spec.ts
  • tests/fence-repair-trailing-junk.spec.ts
  • tests/fence-repair-trim-root.spec.ts
  • tests/fence-repair-valueless-keys.spec.ts
  • tests/fence-repair-wrapped-key.spec.ts
  • tests/gallery-carousel-settle.spec.ts
  • tests/gallery-dialog-controls.spec.ts
  • tests/gallery-input-mode.spec.ts
  • tests/genui-artifact-assets.spec.ts
  • tests/genui-artifact-html.spec.ts
  • tests/genui-artifact.spec.ts
  • tests/genui-asset-loader.spec.ts
  • tests/genui-boundaries.spec.tsx
  • tests/genui-chart-contract.spec.tsx
  • tests/genui-checkbox-group.spec.tsx
  • tests/genui-choices.spec.tsx
  • tests/genui-combined-fields.spec.tsx
  • tests/genui-compare.spec.tsx
  • tests/genui-computed-checkbox.spec.tsx
  • tests/genui-computed-echart.spec.tsx
  • tests/genui-computed.spec.tsx
  • tests/genui-conditions.spec.tsx
  • tests/genui-copy-occurrence.spec.tsx
  • tests/genui-copy-preview.spec.tsx
  • tests/genui-date-picker.spec.tsx
  • tests/genui-debounce-handler.spec.tsx
  • tests/genui-debounce.spec.tsx
  • tests/genui-diagnostic.spec.ts
  • tests/genui-diagram-guard.spec.ts
  • tests/genui-diagram.spec.tsx
  • tests/genui-diff-labels.spec.tsx
  • tests/genui-echart-font-size.spec.tsx
  • tests/genui-echart-guard.spec.ts
  • tests/genui-echart.spec.tsx
  • tests/genui-editor-entity-card-popover.spec.tsx
  • tests/genui-embed.spec.tsx
  • tests/genui-empty-containers.spec.tsx
  • tests/genui-enable-when.spec.tsx
  • tests/genui-error-boundary.spec.tsx
  • tests/genui-export-state.spec.tsx
  • tests/genui-export-ui.spec.tsx
  • tests/genui-fence-fallback.spec.tsx
  • tests/genui-field-identity.spec.tsx
  • tests/genui-field-name-regression.spec.ts
  • tests/genui-figure-primitives.spec.tsx
  • tests/genui-file-link.spec.tsx
  • tests/genui-file-tree-collapse-key.spec.tsx
  • tests/genui-file-tree.spec.tsx
  • tests/genui-gallery-contract.spec.ts
  • tests/genui-gallery-control-scope.spec.tsx
  • tests/genui-gallery-feedback.spec.ts
  • tests/genui-gallery-render.spec.tsx
  • tests/genui-gallery-resolve.spec.tsx
  • tests/genui-gallery.spec.tsx
  • tests/genui-grade-layout.spec.ts
  • tests/genui-guard.spec.ts
  • tests/genui-hardening.spec.tsx
  • tests/genui-icon-fidelity.spec.tsx
  • tests/genui-icon-generator.spec.ts
  • tests/genui-image.spec.tsx
  • tests/genui-inline.spec.tsx
  • tests/genui-invalid-input.spec.tsx
  • tests/genui-list-item-fields.spec.ts
  • tests/genui-map-assets.spec.ts
  • tests/genui-map-browser-contract.spec.ts
  • tests/genui-map-engine.spec.ts
  • tests/genui-map-guard.spec.ts
  • tests/genui-map-types.spec.ts
  • tests/genui-map-worker-build.spec.ts
  • tests/genui-map.spec.tsx
  • tests/genui-markdown.tsx
  • tests/genui-math-fields.spec.tsx
  • tests/genui-media.spec.tsx
  • tests/genui-mermaid-colors.spec.ts
  • tests/genui-mermaid-render-state.spec.tsx
  • tests/genui-mermaid-safe.spec.ts
  • tests/genui-panel.spec.tsx
  • tests/genui-partial-render.spec.ts
  • tests/genui-partial.spec.tsx
  • tests/genui-plot-lock.spec.tsx
  • tests/genui-plot-pan.spec.tsx
  • tests/genui-plot-redraw.spec.tsx
  • tests/genui-plot-view.spec.tsx
  • tests/genui-plot-wheel-lock.spec.tsx
  • tests/genui-quiz-guard.spec.ts
  • tests/genui-root-shape.spec.ts
  • tests/genui-schema.spec.ts
  • tests/genui-segmented-control.spec.tsx
  • tests/genui-skill-examples.spec.ts
  • tests/genui-slider-precision.spec.tsx
  • tests/genui-standalone-runtime.spec.tsx
  • tests/genui-standalone-theme.spec.ts
  • tests/genui-stat-decimal-comma.spec.tsx
  • tests/genui-state-key.spec.tsx
  • tests/genui-submit-members.spec.tsx
  • tests/genui-svg.spec.tsx
  • tests/genui-table-column-name.spec.tsx
  • tests/genui-table-external-links.spec.tsx
  • tests/genui-table-filter-details.spec.tsx
  • tests/genui-table-multiline-cell.spec.tsx
  • tests/genui-table-scroll.spec.tsx
  • tests/genui-table-smart-sort.spec.tsx
  • tests/genui-table-wrap.spec.tsx
  • tests/genui-tabs-active-index.spec.tsx
  • tests/genui-teach.spec.tsx
  • tests/genui-tetris-table.spec.ts
  • tests/genui-toolview.spec.tsx
  • tests/genui-v11.spec.tsx
  • tests/genui-v12.spec.tsx
  • tests/genui-v25.spec.tsx
  • tests/genui-v26.spec.tsx
  • tests/genui-v27.spec.tsx
  • tests/genui-v28.spec.tsx
  • tests/genui-v29.spec.tsx
  • tests/genui.spec.tsx
  • tests/helpers/standalone.ts
  • tests/host-dependency-policy.spec.ts
  • tests/i18n.spec.tsx
  • tests/input-color.spec.tsx
  • tests/input-durable-value-priority.spec.tsx
  • tests/install-script.spec.ts
  • tests/markdown-labels.tsx
  • tests/panel-append.spec.tsx
  • tests/panel-command.spec.ts
  • tests/panel-computed-state.spec.tsx
  • tests/peer-range.spec.ts
  • tests/plot-loop.spec.tsx
  • tests/plugin-genui.spec.ts
  • tests/plugin-tool.spec.ts
  • tests/quiz-id-reset.spec.tsx
  • tests/safe-math-tokenizer.spec.ts
  • tests/scene3d-events.spec.tsx
  • tests/session-resolver.spec.ts
  • tests/setup.ts
  • tests/sidechat-surface.spec.tsx
  • tests/skill-md.spec.ts
  • tests/source-fence.spec.ts
  • tests/streaming-shape.spec.ts
  • tests/submission-registry.spec.ts
  • tests/svg-fence.spec.tsx
  • tests/template-drawer.spec.tsx
  • tests/templates.spec.ts
  • tests/textarea-durable-value-priority.spec.tsx
  • tsdown.config.ts
  • vitest.config.ts

Files

  • .github/workflows/ci.ymlasset13,310 bytes
  • .github/workflows/deploy-product-site.ymlasset1,428 bytes
  • .github/workflows/release.ymlasset9,042 bytes
  • .gitignoreasset268 bytes
  • .npmrcasset25 bytes
  • AGENTS.mddoc2,520 bytes
  • CHANGELOG.mddoc99,728 bytes
  • ICON-NAMES.mddoc9,809 bytes
  • LICENSEasset1,069 bytes
  • README.mddoc23,555 bytes
  • README.zh-CN.mddoc22,224 bytes
  • SKILL.mdcore62,440 bytes
  • SKILL.mdcore62,440 bytes
  • SKILL.mdcore62,440 bytes
  • THIRD_PARTY_NOTICES.mddoc8,588 bytes
  • assets/demo-thumb.pngasset161,552 bytes
  • assets/demo.mp4asset2,608,997 bytes
  • assets/genui-icon.svgasset982 bytes
  • assets/genui-logo.svgasset1,461 bytes
  • assets/showcase-panel.pngasset90,117 bytes
  • assets/showcase-plot.pngasset71,286 bytes
  • assets/showcase.pngasset84,415 bytes
  • cordis.patch.ymlasset473 bytes
  • demo-prompts.mddoc6,797 bytes
  • docs/copy-preview.mddoc3,023 bytes
  • docs/diagram-component-design.mddoc11,343 bytes
  • docs/dsh-go.mddoc5,791 bytes
  • docs/gallery.mddoc5,350 bytes
  • docs/hub-registration.mddoc1,707 bytes
  • docs/map.mddoc9,776 bytes
  • docs/plans/2026-08-11-dsh-genui-hardening-execution-plan.mddoc52,583 bytes
  • docs/plans/2026-08-12-dsh-genui-design-optimization.mddoc36,185 bytes
  • docs/plans/2026-09-08-genui-upgrade-research.mddoc26,608 bytes
  • docs/plans/2026-10-13-dsh-genui-anthological-aesthetics.mddoc22,875 bytes
  • docs/screenshots/achievements.pngasset96,894 bytes
  • docs/screenshots/issue-159-light-surface.pngasset190,339 bytes
  • docs/screenshots/issue-183-wordcloud-svg.pngasset135,752 bytes
  • docs/screenshots/template-center.pngasset119,250 bytes
  • docs/sidechat-surfaces.mddoc4,792 bytes
  • package.jsonruns10,505 bytes
  • pnpm-lock.yamlasset275,551 bytes
  • pnpm-workspace.yamlasset3,686 bytes
  • scripts/build-anthology-page.mtsruns1,826 bytes
  • scripts/check-blocks-theme-browser.mjsruns9,880 bytes
  • scripts/check-content-font-size-browser.mjsruns1,993 bytes
  • scripts/check-host-api.mjsruns5,102 bytes
  • scripts/check-interaction-state-browser.mjsruns9,260 bytes
  • scripts/check-map-assets.mjsruns1,269 bytes
  • scripts/check-mermaid-browser.mjsruns22,547 bytes
  • scripts/check-standalone.mjsruns1,159 bytes
  • scripts/check-steps-marker-browser.mjsruns9,652 bytes
  • scripts/check-table-wrap-browser.mjsruns8,962 bytes
  • scripts/check-text-newlines-browser.mjsruns4,183 bytes
  • scripts/clean.mjsruns611 bytes
  • scripts/computed-browser-checks.mjsruns8,640 bytes
  • scripts/e2e-gallery-host.mjsruns13,440 bytes
  • scripts/e2e-map-host.mjsruns10,477 bytes
  • scripts/e2e-visual.mtsruns37,510 bytes
  • scripts/e2e.mjsruns44,458 bytes
  • scripts/fixtures/gallery-host.mjsruns3,472 bytes
  • scripts/fixtures/map-host.mjsruns3,569 bytes
  • scripts/gallery-browser-checks.mjsruns34,061 bytes
  • scripts/gallery-fixed-contexts.mjsruns7,894 bytes
  • scripts/gallery-input-mode.mjsruns2,754 bytes
  • scripts/gallery-touch-checks.mjsruns7,987 bytes
  • scripts/generate-icon-data.mjsruns9,528 bytes
  • scripts/genui-usage-audit.mjsruns10,345 bytes
  • scripts/host-dependency-policy.mjsruns733 bytes
  • scripts/install.shruns6,747 bytes
  • scripts/map-acceptance/README.mddoc3,862 bytes
  • scripts/map-acceptance/browser-checks.mjsruns8,377 bytes
  • scripts/map-acceptance/contract.mjsruns4,906 bytes
  • scripts/map-acceptance/run.mjsruns20,388 bytes
  • scripts/prepack.mjsruns911 bytes
  • scripts/prepare-published-host.mjsruns2,474 bytes
  • scripts/sidechat-acceptance/README.mddoc5,035 bytes
  • scripts/sidechat-acceptance/ci.mjsruns8,336 bytes
  • scripts/sidechat-acceptance/fixture/lib/index.mjsruns18,841 bytes
  • scripts/sidechat-acceptance/fixture/lib/snapshot-diagnostics.mjsruns3,926 bytes
  • scripts/sidechat-acceptance/fixture/lib/spec.mjsruns1,467 bytes
  • scripts/sidechat-acceptance/fixture/lib/ui-away.mjsruns1,634 bytes
  • scripts/sidechat-acceptance/fixture/replay/first-child.v4.jsonlasset2,193 bytes
  • scripts/sidechat-acceptance/fixture/replay/second-child.v4.jsonlasset2,193 bytes
  • scripts/sidechat-acceptance/scripts/exact-pack.mjsruns3,436 bytes
  • scripts/sidechat-acceptance/scripts/owned-process.mjsruns4,328 bytes
  • scripts/sidechat-acceptance/scripts/run-sidechat-acceptance.mjsruns18,520 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-away-navigation.mjsruns4,008 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-backend-oracle.mjsruns9,553 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-browser-checks.mjsruns17,339 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-browser-contracts.mjsruns8,207 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-browser-locators.mjsruns796 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-browser-transport.mjsruns2,405 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-host-contract.mjsruns7,586 bytes
  • scripts/sidechat-acceptance/scripts/sidechat-onboarding.mjsruns11,903 bytes
  • scripts/sidechat-acceptance/tests/ci.test.mjsruns19,775 bytes
  • scripts/sidechat-acceptance/tests/exact-pack.test.mjsruns1,511 bytes
  • scripts/sidechat-acceptance/tests/host-resolution.test.mjsruns4,382 bytes
  • scripts/sidechat-acceptance/tests/independent-review.test.mjsruns6,879 bytes
  • scripts/sidechat-acceptance/tests/owned-process.test.mjsruns1,995 bytes
  • scripts/sidechat-acceptance/tests/owned-root.test.mjsruns1,313 bytes
  • scripts/sidechat-acceptance/tests/sidechat-away-navigation.test.mjsruns9,092 bytes
  • scripts/sidechat-acceptance/tests/sidechat-backend-oracle.test.mjsruns9,200 bytes
  • scripts/sidechat-acceptance/tests/sidechat-browser-contracts.test.mjsruns7,879 bytes
  • scripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjsruns5,693 bytes
  • scripts/sidechat-acceptance/tests/sidechat-onboarding.test.mjsruns10,883 bytes
  • scripts/sidechat-acceptance/tests/sidechat-system-head.test.mjsruns2,813 bytes
  • scripts/sidechat-acceptance/tests/snapshot-diagnostics.test.mjsruns5,672 bytes
  • scripts/sidechat-acceptance/tests/transport-review.test.mjsruns4,885 bytes
  • scripts/verify-pack.mjsruns5,851 bytes
  • site/assets/demo-thumb.pngasset161,552 bytes
  • site/assets/demo.mp4asset2,608,997 bytes
  • site/assets/github-octocat-original_b664c28d.pngasset17,954 bytes
  • site/assets/index-BtlSWbij.cssasset166,339 bytes
  • site/assets/index-CbA0uR5g.jsruns615,315 bytes
  • site/assets/showcase-panel.pngasset83,612 bytes
  • site/assets/showcase-plot.pngasset38,424 bytes
  • site/assets/showcase.pngasset45,747 bytes
  • site/index.htmlasset368,141 bytes
  • src/client/EChartNode.tsxruns23,536 bytes
  • src/client/ErrorBoundary.tsxruns2,228 bytes
  • src/client/GenuiBlock.module.cssasset113,300 bytes
  • src/client/GenuiBlock.tsxruns18,650 bytes
  • src/client/PlotBlock.module.cssasset5,514 bytes
  • src/client/PlotBlock.tsxruns20,795 bytes
  • src/client/TemplateDrawer.module.cssasset3,508 bytes
  • src/client/TemplateDrawer.tsxruns6,040 bytes
  • src/client/achievement-store.tsruns5,079 bytes
  • src/client/achievement-toast.tsxruns2,644 bytes
  • src/client/achievements.tsruns6,357 bytes
  • src/client/action-context.tsruns897 bytes
  • src/client/artifact/ArtifactExport.module.cssasset2,426 bytes
  • src/client/artifact/ExportableGenuiBlock.tsxruns5,436 bytes
  • src/client/artifact/create.tsruns3,480 bytes
  • src/client/artifact/download.tsruns1,922 bytes
  • src/client/artifact/html.tsruns8,050 bytes
  • src/client/artifact/index.tsruns566 bytes
  • src/client/artifact/json.tsruns222 bytes
  • src/client/artifact/parse.tsruns2,111 bytes
  • src/client/artifact/portability.tsruns4,175 bytes
  • src/client/artifact/standalone-theme.tsruns5,085 bytes
  • src/client/artifact/types.tsruns1,329 bytes
  • src/client/asset-echarts-core.tsruns1,870 bytes
  • src/client/asset-echarts.tsruns1,356 bytes
  • src/client/asset-loader.tsruns4,223 bytes
  • src/client/asset-maplibre.tsruns220 bytes
  • src/client/asset-mermaid.tsruns646 bytes
  • src/client/asset-three.tsruns526 bytes
  • src/client/blocks/advanced.tsxruns27,967 bytes
  • src/client/blocks/basic.tsxruns4,612 bytes
  • src/client/blocks/blocks.tsxruns6,952 bytes
  • src/client/blocks/carousel.tsxruns6,165 bytes
  • src/client/blocks/charts.tsxruns51,464 bytes
  • src/client/blocks/checkbox.tsxruns2,564 bytes
  • src/client/blocks/choices.module.cssasset4,290 bytes
  • src/client/blocks/choices.tsxruns6,383 bytes
  • src/client/blocks/compare.module.cssasset5,323 bytes
  • src/client/blocks/compare.tsxruns8,662 bytes
  • src/client/blocks/date-picker.module.cssasset955 bytes
  • src/client/blocks/date-picker.tsxruns4,921 bytes
  • src/client/blocks/diagram/geometry.tsruns5,841 bytes
  • src/client/blocks/diagram/index.tsxruns16,362 bytes
  • src/client/blocks/diagram/layout.tsruns6,983 bytes
  • src/client/blocks/diagram/theme.tsruns5,019 bytes
  • src/client/blocks/editor.module.cssasset1,053 bytes
  • src/client/blocks/editor.tsxruns2,994 bytes
  • src/client/blocks/entity-card.module.cssasset2,428 bytes
  • src/client/blocks/entity-card.tsxruns3,202 bytes
  • src/client/blocks/forms.tsxruns23,362 bytes
  • src/client/blocks/gallery.module.cssasset5,470 bytes
  • src/client/blocks/icon.tsxruns3,618 bytes
  • src/client/blocks/image-group.tsxruns8,460 bytes
  • src/client/blocks/image.tsxruns1,204 bytes
  • src/client/blocks/map.module.cssasset1,460 bytes
  • src/client/blocks/map.tsxruns5,595 bytes
  • src/client/blocks/popover.module.cssasset1,254 bytes
  • src/client/blocks/popover.tsxruns4,220 bytes
  • src/client/blocks/render-node.tsxruns30,726 bytes
  • src/client/blocks/segmented-control.module.cssasset1,340 bytes
  • src/client/blocks/segmented-control.tsxruns2,842 bytes
  • src/client/blocks/skeleton.tsxruns6,436 bytes
  • src/client/blocks/state.tsruns3,688 bytes
  • src/client/blocks/svg.tsxruns3,188 bytes
  • src/client/computed.tsruns16,060 bytes
  • src/client/conditions.tsruns8,581 bytes
  • src/client/copy-preview-state.tsruns1,478 bytes
  • src/client/date-picker.tsruns1,096 bytes
  • src/client/dom-fence.tsxruns89,682 bytes
  • src/client/echarts-engine.tsruns454 bytes
  • src/client/echarts-lazy.tsruns1,667 bytes
  • src/client/embed.tsruns1,028 bytes
  • src/client/fence-render.tsxruns11,772 bytes
  • src/client/file-address.tsruns1,808 bytes
  • src/client/file-link-context.tsxruns4,489 bytes
  • src/client/file-link.tsruns1,690 bytes
  • src/client/gallery.tsruns17,050 bytes
  • src/client/genui-runtime/diagnostics.tsruns7,758 bytes
  • src/client/genui-runtime/index.tsruns43 bytes
  • src/client/genui-runtime/limits.tsruns2,510 bytes
  • src/client/genui-runtime/normalize.tsruns17,406 bytes
  • src/client/genui-runtime/schema.tsruns27,152 bytes
  • src/client/genui-runtime/value-utils.tsruns3,402 bytes
  • src/client/guard.tsruns123,229 bytes
  • src/client/i18n/en.tsruns24,021 bytes
  • src/client/i18n/index.tsruns3,980 bytes
  • src/client/i18n/runtime.tsruns4,940 bytes
  • src/client/i18n/zh.tsruns22,808 bytes
  • src/client/icons/asset-icons.tsruns741 bytes
  • src/client/icons/icon-data-full.tsruns1,015,592 bytes
  • src/client/icons/icon-data.tsruns71,256 bytes
  • src/client/icons/icon-lazy.tsruns3,495 bytes
  • src/client/icons/icon-names-full.tsruns10,926 bytes
  • src/client/index.tsxruns12,056 bytes
  • src/client/inline.tsruns5,940 bytes
  • src/client/interaction-store.tsruns4,746 bytes
  • src/client/map-config.tsruns1,474 bytes
  • src/client/map-core.tsruns8,813 bytes
  • src/client/map-data.tsruns6,305 bytes
  • src/client/map-lazy.tsruns771 bytes
  • src/client/map-worker-ownership.tsruns314 bytes
  • src/client/maplibre-resources.tsruns156 bytes
  • src/client/mermaid-colors.tsruns1,651 bytes
  • src/client/mermaid-core.tsruns7,999 bytes
  • src/client/mermaid-lazy.tsruns4,713 bytes
  • src/client/mermaid-safe.tsruns7,457 bytes
  • src/client/panel-command.tsruns6,812 bytes
  • src/client/panel-store.tsruns25,980 bytes
  • src/client/panel.tsxruns13,273 bytes
  • src/client/parse-partial.tsruns8,003 bytes
  • src/client/primitive-adapter.tsruns196 bytes
  • src/client/primitive-labels.tsruns2,124 bytes
  • src/client/safe-math.tsruns12,074 bytes
  • src/client/scene3d-core.tsruns7,322 bytes
  • src/client/scene3d-lazy.tsruns1,126 bytes
  • src/client/session-resolver.tsruns843 bytes
  • src/client/sidechat-surface.tsxruns11,199 bytes
  • src/client/source-fence.tsruns2,583 bytes
  • src/client/spec.tsruns42,503 bytes
  • src/client/standalone/asset-loader.tsruns587 bytes
  • src/client/standalone/bootstrap-types.tsruns220 bytes
  • src/client/standalone/katex-style.tsruns10 bytes
  • src/client/standalone/primitive-adapter.tsxruns3,968 bytes
  • src/client/standalone/runtime.tsxruns1,141 bytes
  • src/client/streaming-shape.tsruns6,039 bytes
  • src/client/submission-registry.tsruns8,505 bytes
  • src/client/svg-fence.tsxruns1,818 bytes
  • src/client/table-details.tsruns8,939 bytes
  • src/client/table-export.tsruns1,351 bytes
  • src/client/templates.tsruns12,942 bytes
  • src/client/toolview.tsxruns3,360 bytes
  • src/client/walk-spec.tsruns2,440 bytes
  • src/css-modules.d.tsruns172 bytes
  • src/index.tsruns410 bytes
  • src/plugin/chart-contract.tsruns515 bytes
  • src/plugin/dsh-go-compiler.tsruns20,554 bytes
  • src/plugin/dsh-go-native.tsruns17,437 bytes
  • src/plugin/dsh-go-submission.tsruns1,680 bytes
  • src/plugin/dsh-go-types.tsruns1,373 bytes
  • src/plugin/dsh-go-view.tsruns538 bytes
  • src/plugin/fence-feedback.tsruns31,244 bytes
  • src/plugin/genui-diagnostic.tsruns4,967 bytes
  • src/plugin/index.tsruns13,771 bytes
  • src/plugin/inline-content-diagnostic.tsruns7,037 bytes
  • src/plugin/node-shims.d.tsruns959 bytes
  • src/plugin/tool.tsruns21,658 bytes
  • src/shared/fence-language.tsruns1,470 bytes
  • src/shared/fence-repair.tsruns29,225 bytes
  • src/shared/fence-resolve.tsruns3,295 bytes
  • src/shared/panel-merge.tsruns1,760 bytes
  • tests/achievements.spec.tsruns4,070 bytes
  • tests/browser/blocks-theme.README.mddoc2,485 bytes
  • tests/browser/blocks-theme.htmlasset945 bytes
  • tests/browser/blocks-theme.tsxruns5,309 bytes
  • tests/browser/content-font-size.htmlasset1,511 bytes
  • tests/browser/interaction-state.README.mddoc1,373 bytes
  • tests/browser/interaction-state.htmlasset306 bytes
  • tests/browser/interaction-state.tsxruns1,069 bytes
  • tests/browser/map.htmlasset286 bytes
  • tests/browser/map.tsxruns3,844 bytes
  • tests/browser/plot-content-font-size.htmlasset1,214 bytes
  • tests/browser/steps-marker.README.mddoc3,081 bytes
  • tests/browser/steps-marker.htmlasset1,071 bytes
  • tests/browser/steps-marker.tsxruns4,612 bytes
  • tests/browser/table-wrap.htmlasset1,499 bytes
  • tests/browser/table-wrap.tsxruns6,736 bytes
  • tests/browser/text-newlines.htmlasset1,872 bytes
  • tests/browser/text-newlines.tsxruns25,039 bytes
  • tests/dom-fence-container-stream.spec.tsxruns3,234 bytes
  • tests/dom-fence-maintenance.spec.tsxruns15,603 bytes
  • tests/dom-fence-ordinals.spec.tsxruns17,059 bytes
  • tests/dom-fence-raf-cleanup.spec.tsxruns2,073 bytes
  • tests/dom-fence-skeleton.spec.tsxruns3,494 bytes
  • tests/dom-fence.spec.tsxruns103,297 bytes
  • tests/dsh-go-native.spec.tsruns20,705 bytes
  • tests/dsh-go-view.spec.tsruns5,475 bytes
  • tests/e2e-auth.spec.tsruns823 bytes
  • tests/fence-feedback-agentloop.spec.tsruns6,426 bytes
  • tests/fence-feedback.spec.tsruns54,758 bytes
  • tests/fence-repair-cjk-punctuation.spec.tsruns4,401 bytes
  • tests/fence-repair-json-quotes.spec.tsruns7,274 bytes
  • tests/fence-repair-trailing-junk.spec.tsruns4,746 bytes
  • tests/fence-repair-trim-root.spec.tsruns1,325 bytes
  • tests/fence-repair-valueless-keys.spec.tsruns2,499 bytes
  • tests/fence-repair-wrapped-key.spec.tsruns5,971 bytes
  • tests/fixtures/dsh-go-native.jsonasset17,509 bytes
  • tests/gallery-carousel-settle.spec.tsruns7,369 bytes
  • tests/gallery-dialog-controls.spec.tsruns4,372 bytes
  • tests/gallery-input-mode.spec.tsruns3,215 bytes
  • tests/genui-artifact-assets.spec.tsruns2,244 bytes
  • tests/genui-artifact-html.spec.tsruns6,725 bytes
  • tests/genui-artifact.spec.tsruns3,620 bytes
  • tests/genui-asset-loader.spec.tsruns3,561 bytes
  • tests/genui-boundaries.spec.tsxruns13,271 bytes
  • tests/genui-chart-contract.spec.tsxruns6,870 bytes
  • tests/genui-checkbox-group.spec.tsxruns8,532 bytes
  • tests/genui-choices.spec.tsxruns8,717 bytes
  • tests/genui-combined-fields.spec.tsxruns5,641 bytes
  • tests/genui-compare.spec.tsxruns4,594 bytes
  • tests/genui-computed-checkbox.spec.tsxruns2,424 bytes
  • tests/genui-computed-echart.spec.tsxruns2,460 bytes
  • tests/genui-computed.spec.tsxruns26,652 bytes
  • tests/genui-conditions.spec.tsxruns13,911 bytes
  • tests/genui-copy-occurrence.spec.tsxruns6,395 bytes
  • tests/genui-copy-preview.spec.tsxruns13,341 bytes
  • tests/genui-date-picker.spec.tsxruns11,635 bytes
  • tests/genui-debounce-handler.spec.tsxruns3,186 bytes
  • tests/genui-debounce.spec.tsxruns5,653 bytes
  • tests/genui-diagnostic.spec.tsruns1,119 bytes
  • tests/genui-diagram-guard.spec.tsruns3,911 bytes
  • tests/genui-diagram.spec.tsxruns10,468 bytes
  • tests/genui-diff-labels.spec.tsxruns3,413 bytes
  • tests/genui-echart-font-size.spec.tsxruns4,435 bytes
  • tests/genui-echart-guard.spec.tsruns9,135 bytes
  • tests/genui-echart.spec.tsxruns8,474 bytes
  • tests/genui-editor-entity-card-popover.spec.tsxruns10,658 bytes
  • tests/genui-embed.spec.tsxruns2,024 bytes
  • tests/genui-empty-containers.spec.tsxruns2,966 bytes
  • tests/genui-enable-when.spec.tsxruns3,829 bytes
  • tests/genui-error-boundary.spec.tsxruns2,420 bytes
  • tests/genui-export-state.spec.tsxruns1,256 bytes
  • tests/genui-export-ui.spec.tsxruns5,617 bytes
  • tests/genui-fence-fallback.spec.tsxruns16,911 bytes
  • tests/genui-field-identity.spec.tsxruns9,847 bytes
  • tests/genui-field-name-regression.spec.tsruns10,446 bytes
  • tests/genui-figure-primitives.spec.tsxruns14,047 bytes
  • tests/genui-file-link.spec.tsxruns16,047 bytes
  • tests/genui-file-tree-collapse-key.spec.tsxruns1,643 bytes
  • tests/genui-file-tree.spec.tsxruns17,979 bytes
  • tests/genui-gallery-contract.spec.tsruns13,170 bytes
  • tests/genui-gallery-control-scope.spec.tsxruns5,574 bytes
  • tests/genui-gallery-feedback.spec.tsruns9,021 bytes
  • tests/genui-gallery-render.spec.tsxruns17,250 bytes
  • tests/genui-gallery-resolve.spec.tsxruns934 bytes
  • tests/genui-gallery.spec.tsxruns4,116 bytes
  • tests/genui-grade-layout.spec.tsruns1,649 bytes
  • tests/genui-guard.spec.tsruns24,660 bytes
  • tests/genui-hardening.spec.tsxruns10,471 bytes
  • tests/genui-icon-fidelity.spec.tsxruns2,674 bytes
  • tests/genui-icon-generator.spec.tsruns3,144 bytes
  • tests/genui-image.spec.tsxruns2,445 bytes
  • tests/genui-inline.spec.tsxruns13,365 bytes
  • tests/genui-invalid-input.spec.tsxruns9,774 bytes
  • tests/genui-list-item-fields.spec.tsruns2,472 bytes
  • tests/genui-map-assets.spec.tsruns2,802 bytes
  • tests/genui-map-browser-contract.spec.tsruns19,741 bytes
  • tests/genui-map-engine.spec.tsruns14,432 bytes
  • tests/genui-map-guard.spec.tsruns4,717 bytes
  • tests/genui-map-types.spec.tsruns2,703 bytes
  • tests/genui-map-worker-build.spec.tsruns6,092 bytes
  • tests/genui-map.spec.tsxruns15,657 bytes
  • tests/genui-markdown.tsxruns1,791 bytes
  • tests/genui-math-fields.spec.tsxruns2,299 bytes
  • tests/genui-media.spec.tsxruns2,702 bytes
  • tests/genui-mermaid-colors.spec.tsruns5,388 bytes
  • tests/genui-mermaid-render-state.spec.tsxruns17,957 bytes
  • tests/genui-mermaid-safe.spec.tsruns9,720 bytes
  • tests/genui-panel.spec.tsxruns30,706 bytes
  • tests/genui-partial-render.spec.tsruns13,080 bytes
  • tests/genui-partial.spec.tsxruns9,442 bytes
  • tests/genui-plot-lock.spec.tsxruns1,601 bytes
  • tests/genui-plot-pan.spec.tsxruns4,993 bytes
  • tests/genui-plot-redraw.spec.tsxruns2,369 bytes
  • tests/genui-plot-view.spec.tsxruns1,710 bytes
  • tests/genui-plot-wheel-lock.spec.tsxruns4,494 bytes
  • tests/genui-quiz-guard.spec.tsruns3,246 bytes
  • tests/genui-root-shape.spec.tsruns11,250 bytes
  • tests/genui-schema.spec.tsruns28,336 bytes
  • tests/genui-segmented-control.spec.tsxruns8,362 bytes
  • tests/genui-skill-examples.spec.tsruns2,598 bytes
  • tests/genui-slider-precision.spec.tsxruns4,097 bytes
  • tests/genui-standalone-runtime.spec.tsxruns3,501 bytes
  • tests/genui-standalone-theme.spec.tsruns4,603 bytes
  • tests/genui-stat-decimal-comma.spec.tsxruns2,915 bytes
  • tests/genui-state-key.spec.tsxruns3,707 bytes
  • tests/genui-submit-members.spec.tsxruns26,195 bytes
  • tests/genui-svg.spec.tsxruns5,757 bytes
  • tests/genui-table-column-name.spec.tsxruns4,088 bytes
  • tests/genui-table-external-links.spec.tsxruns8,488 bytes
  • tests/genui-table-filter-details.spec.tsxruns7,741 bytes
  • tests/genui-table-multiline-cell.spec.tsxruns5,893 bytes
  • tests/genui-table-scroll.spec.tsxruns5,572 bytes
  • tests/genui-table-smart-sort.spec.tsxruns9,281 bytes
  • tests/genui-table-wrap.spec.tsxruns5,599 bytes
  • tests/genui-tabs-active-index.spec.tsxruns1,455 bytes
  • tests/genui-teach.spec.tsxruns4,906 bytes
  • tests/genui-tetris-table.spec.tsruns4,835 bytes
  • tests/genui-toolview.spec.tsxruns3,407 bytes
  • tests/genui-v11.spec.tsxruns4,863 bytes
  • tests/genui-v12.spec.tsxruns10,986 bytes
  • tests/genui-v25.spec.tsxruns11,168 bytes
  • tests/genui-v26.spec.tsxruns10,886 bytes
  • tests/genui-v27.spec.tsxruns9,937 bytes
  • tests/genui-v28.spec.tsxruns9,052 bytes
  • tests/genui-v29.spec.tsxruns29,595 bytes
  • tests/genui.spec.tsxruns8,743 bytes
  • tests/helpers/standalone.tsruns4,227 bytes
  • tests/host-dependency-policy.spec.tsruns902 bytes
  • tests/i18n.spec.tsxruns7,640 bytes
  • tests/input-color.spec.tsxruns4,139 bytes
  • tests/input-durable-value-priority.spec.tsxruns1,875 bytes
  • tests/install-script.spec.tsruns7,575 bytes
  • tests/markdown-labels.tsxruns626 bytes
  • tests/panel-append.spec.tsxruns8,787 bytes
  • tests/panel-command.spec.tsruns6,109 bytes
  • tests/panel-computed-state.spec.tsxruns10,085 bytes
  • tests/peer-range.spec.tsruns1,610 bytes
  • tests/plot-loop.spec.tsxruns2,562 bytes
  • tests/plugin-genui.spec.tsruns21,804 bytes
  • tests/plugin-tool.spec.tsruns30,775 bytes
  • tests/quiz-id-reset.spec.tsxruns2,390 bytes
  • tests/safe-math-tokenizer.spec.tsruns3,160 bytes
  • tests/scene3d-events.spec.tsxruns5,801 bytes
  • tests/session-resolver.spec.tsruns887 bytes
  • tests/setup.tsruns1,770 bytes
  • tests/sidechat-surface.spec.tsxruns14,672 bytes
  • tests/skill-md.spec.tsruns2,368 bytes
  • tests/source-fence.spec.tsruns6,318 bytes
  • tests/streaming-shape.spec.tsruns3,625 bytes
  • tests/submission-registry.spec.tsruns14,413 bytes
  • tests/svg-fence.spec.tsxruns1,908 bytes
  • tests/template-drawer.spec.tsxruns3,432 bytes
  • tests/templates.spec.tsruns2,060 bytes
  • tests/textarea-durable-value-priority.spec.tsxruns3,456 bytes
  • tsconfig.jsonasset778 bytes
  • tsdown.config.tsruns16,647 bytes
  • vitest.config.tsruns1,278 bytes
Read SKILL.md

# GenUI — 生成式 UI 输出规范

**Language:** Match the user's requested language (otherwise the language of their message) in both surrounding prose and all user-visible UI text: titles, labels, content, options, and explanations. Chinese examples below illustrate the schema only; do not switch the conversation to Chinese after loading this skill. Keep JSON keys, component types, IDs, and actions unchanged. An English request gets English prose and UI text; a Chinese request gets Chinese prose and UI text. `<user-language ...>` tokens are meta-placeholders only. Replace every one with actual content in the conversation language; never emit these placeholders literally.

你可以**在回答正文中间**输出可交互 UI 组件:写一个 `dsh-ui` 围栏(fenced block with language tag `dsh-ui`),内含 JSON 规格,渲染器会把这一整块画成真实组件,文字照常穿插在前后。组件**就是回答的一部分**,不是工具调用。

```dsh-ui
{"title":"<user-language text>","gap":14,"items":[...]}
```

## 围栏书写铁律(先读这一节)

围栏开头那一行的语言标记**统一写 `dsh-ui`**,不要添加标点、引号或注释。渲染器会容错大小写、首尾空格和部分尾部标点;其他语言标记不会作为 GenUI 接管,用户会看到普通代码块。
View the complete source on GitHub

Skills included

  • genui

Repository facts

License
MIT
Created
Aug 13, 2026
Last pushed
Nov 6, 2026
Forks
87
Open issues
14
Project activity
Active

Rank over the last 12 weeks

Now #994 · best #835 · down 52 in 30 days

  1. #882 on Oct 22
  2. #896 on Oct 23
  3. #835 on Oct 24
  4. #1,000 on Nov 5
  5. #997 on Nov 6
  6. #994 since Nov 7
71 earlier periods
  1. #903 on Aug 9
  2. #929 on Aug 13
  3. #902 on Aug 14
  4. #867 on Aug 15
  5. #889 on Aug 16
  6. #892 on Aug 17
  7. #908 on Aug 18
  8. #901 on Aug 19
  9. #885 on Aug 20
  10. #892 on Aug 21
  11. #837 on Aug 22
  12. #892 on Aug 23
  13. #906 on Aug 24
  14. #916 on Aug 25
  15. #898 on Aug 26
  16. #904 on Aug 27
  17. #940 on Aug 28
  18. #856 on Aug 29
  19. #858 on Aug 30
  20. #904 on Aug 31
  21. #942 on Sep 1
  22. #907 on Sep 2
  23. #912 on Sep 3
  24. #876 on Sep 4
  25. #850 on Sep 5
  26. #884 on Sep 6
  27. #910 on Sep 7
  28. #930 on Sep 8
  29. #915 on Sep 9
  30. #914 on Sep 10
  31. #879 on Sep 11
  32. #875 on Sep 12
  33. #876 on Sep 13
  34. #911 on Sep 14
  35. #899 on Sep 15
  36. #912 on Sep 16
  37. #909 on Sep 17
  38. #894 on Sep 18
  39. #869 on Sep 19
  40. #889 on Sep 20
  41. #909 on Sep 21
  42. #930 on Sep 22
  43. #921 on Sep 23
  44. #885 on Sep 24
  45. #837 on Sep 25
  46. #861 on Sep 26
  47. #881 on Sep 27
  48. #930 on Sep 28
  49. #957 on Sep 29
  50. #924 on Sep 30
  51. #858 on Oct 1
  52. #874 on Oct 2
  53. #846 on Oct 3
  54. #888 on Oct 4
  55. #910 on Oct 5
  56. #899 on Oct 6
  57. #935 on Oct 7
  58. #976 on Oct 8
  59. #942 on Oct 9
  60. #917 on Oct 10
  61. #928 on Oct 11
  62. #948 on Oct 12
  63. #952 on Oct 13
  64. #968 on Oct 14
  65. #952 on Oct 15
  66. #960 on Oct 16
  67. #935 on Oct 17
  68. #908 on Oct 18
  69. #927 on Oct 19
  70. #911 on Oct 20
  71. #920 on Oct 21

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 100 notes
  • ICON-NAMES.md:29 Analysis incomplete: physical or joined line exceeds character limit
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • site/assets/index-BtlSWbij.css:1 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:9 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:7 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:21 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:19 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:20 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:40 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:41 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:42 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:54 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:52 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:53 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:62 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:60 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:61 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:78 Analysis incomplete: physical or joined line exceeds character limit
  • site/assets/index-CbA0uR5g.js:76 Analysis incomplete: physical or joined line exceeds character limit
Show all 1,019 signals by file

.github/workflows/ci.yml

  • Network accessline 45
    DSH_ROOT="$GITHUB_WORKSPACE/../../.dsh/source/current"           mkdir -p "$(dirname "$DSH_ROOT")"           git clone --depth 1 --branch "${{ matrix.host-ref }}" "https://github.com/deepseek-ai/deepseek-harness.git" "$DSH_ROOT"
  • Network accessline 46
    mkdir -p "$(dirname "$DSH_ROOT")"           git clone --depth 1 --branch "${{ matrix.host-ref }}" "https://github.com/deepseek-ai/deepseek-harness.git" "$DSH_ROOT"           test -f "$DSH_ROOT/packages/client/ui-primitives/src/index.ts" || 
  • Network accessline 47
    git clone --depth 1 --branch "${{ matrix.host-ref }}" "https://github.com/deepseek-ai/deepseek-harness.git" "$DSH_ROOT"

.github/workflows/release.yml

  • Network accessline 33
    with:           node-version: 24           registry-url: https://registry.npmjs.org
  • Network accessline 35
    registry-url: https://registry.npmjs.org
  • Network accessline 95
    DSH_ROOT="$GITHUB_WORKSPACE/../../.dsh/source/current"           mkdir -p "$(dirname "$DSH_ROOT")"           git clone --depth 1 --branch "$HOST_REF" https://github.com/deepseek-ai/deepseek-harness.git "$DSH_ROOT"
  • Network accessline 96
    mkdir -p "$(dirname "$DSH_ROOT")"           git clone --depth 1 --branch "$HOST_REF" https://github.com/deepseek-ai/deepseek-harness.git "$DSH_ROOT"           test -f "$DSH_ROOT/packages/client/ui-primitives/src/index.ts" || {
  • Network accessline 97
    git clone --depth 1 --branch "$HOST_REF" https://github.com/deepseek-ai/deepseek-harness.git "$DSH_ROOT"

CHANGELOG.md

  • Network accessline 86
    - 感谢 [@tinysunspot](https://github.com/tinysunspot) 对全角标点问题的定位与修复建议([#369](https://github.com/omdsh-dev/dsh-genui/issues/369)),以及 [@Ananpng123](https://github.com/Ananpng123) 对 Mermaid 边标签问题的报告和 [@sunxiuguo](https://github.com/sunxiuguo) 补充
  • Network accessline 87
    - 感谢 [@Taza67](https://github.com/Taza67) 在 [#368](https://github.com/omdsh-dev/dsh-genui/pull/368) 中提交宿主字号跟随的早期实现与问题分析;该改进最终通过 [#372](https://github.com/omdsh-dev/dsh-genui/pull/372) 合入。
  • Network accessline 88
    - 感谢 [@wang-kaopu](https://github.com/wang-kaopu) 对字号适配([#372](https://github.com/omdsh-dev/dsh-genui/pull/372))与截断诊断([#373](https://github.com/omdsh-dev/dsh-genui/pull/373))的贡献。
  • Network accessline 89
    - 感谢 [@TomXPRIME](https://github.com/TomXPRIME) 对 SVG 超限截断问题的报告([#378](https://github.com/omdsh-dev/dsh-genui/issues/378))。
  • Network accessline 90
    - 感谢 [@sunxiuguo](https://github.com/sunxiuguo) 的地图实现([#362](https://github.com/omdsh-dev/dsh-genui/pull/362));原始提交与作者署名保留在集成历史中。响应式计算(#361)与通用侧边对话接入(#367)由 [@wang-kaopu](https://github.com/wang-kaopu) 贡献。
  • Access to secretsline 448
    [Credential-related source omitted]

README.md

  • Network accessline 10
    [![npm version](https://img.shields.io/npm/v/@changfenhuang/dsh-genui.svg?style=flat-square&color=3B82F6)](https://www.npmjs.com/package/@changfenhuang/dsh-genui)
  • Network accessline 11
    [![DSH Compatibility](https://img.shields.io/badge/DSH-^0.2.0--rc.1%20||%20^0.2.1--rc.1%20||%20^0.2.2--alpha.2-10B981?style=flat-square)](https://github.com/omdsh-dev/dsh-genui)
  • Network accessline 12
    [![License: MIT](https://img.shields.io/badge/License-MIT-amber.svg?style=flat-square)](LICENSE)
  • Network accessline 13
    [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/)
  • Network accessline 14
    [![Topic: dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-purple?style=flat-square)](https://github.com/topics/dsh-plugin)
  • Network accessline 20
    <p align="center">   <a href="https://omdsh-dev.github.io/dsh-genui/"><strong>🌐 Live Product Site</strong></a> ·
  • Network accessline 21
    <a href="https://omdsh-dev.github.io/dsh-genui/"><strong>🌐 Live Product Site</strong></a> ·
  • Network accessline 47
    https://github.com/user-attachments/assets/f5db33ec-7471-4d4a-a85b-79c9962ab4ef
  • Network accessline 276
    git clone https://github.com/omdsh-dev/dsh-genui.git
  • Access to secretsline 308
    [Credential-related source omitted]
  • Network accessline 358
    See [the sidechat surface adapter contract](docs/sidechat-surfaces.md). BetterSidebar support requires a release containing [its provider implementation](https://github.com/omdsh-dev/DSH-better-sidebar/pull/1033); the released 0.28.0 does n
  • Network accessline 414
    - [Linux.do Community Discussion](https://linux.do)
  • Network accessline 415
    - Visit the [Live Product Site](https://omdsh-dev.github.io/dsh-genui/) to explore more demos.

README.zh-CN.md

  • Network accessline 10
    [![npm version](https://img.shields.io/npm/v/@changfenhuang/dsh-genui.svg?style=flat-square&color=3B82F6)](https://www.npmjs.com/package/@changfenhuang/dsh-genui)
  • Network accessline 11
    [![DSH Compatibility](https://img.shields.io/badge/DSH-^0.2.0--rc.1%20||%20^0.2.1--rc.1%20||%20^0.2.2--alpha.2-10B981?style=flat-square)](https://github.com/omdsh-dev/dsh-genui)
  • Network accessline 12
    [![License: MIT](https://img.shields.io/badge/License-MIT-amber.svg?style=flat-square)](LICENSE)
  • Network accessline 13
    [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/)
  • Network accessline 14
    [![Topic: dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-purple?style=flat-square)](https://github.com/topics/dsh-plugin)
  • Network accessline 20
    <p align="center">   <a href="https://omdsh-dev.github.io/dsh-genui/"><strong>🌐 在线产品站</strong></a> ·
  • Network accessline 21
    <a href="https://omdsh-dev.github.io/dsh-genui/"><strong>🌐 在线产品站</strong></a> ·
  • Network accessline 47
    https://github.com/user-attachments/assets/f5db33ec-7471-4d4a-a85b-79c9962ab4ef
  • Network accessline 275
    git clone https://github.com/omdsh-dev/dsh-genui.git
  • Access to secretsline 307
    [Credential-related source omitted]
  • Network accessline 332
    请参阅 [sidechat surface adapter 接口说明](docs/sidechat-surfaces.md)。BetterSidebar 侧边对话渲染需要包含[配套 provider 实现](https://github.com/omdsh-dev/DSH-better-sidebar/pull/1033)的发布版本;已发布的 0.28.0 尚未提供 `registerSidechatSurfaceAdapter`。启用 DSH 原生 Side Chat 接入
  • Network accessline 388
    - [Linux.do 社区讨论](https://linux.do)
  • Network accessline 389
    - 欢迎访问 [在线产品站](https://omdsh-dev.github.io/dsh-genui/) 体验更多特性

SKILL.md

  • Network accessline 106
    - radio(**legacy,仅用于兼容老围栏**:试卷与决策都改用 `choices`。`choices` 的 `group` + `answer` + `explanation` + 兄弟 `submit` 已覆盖本地判分,且每个选项还能带代价与证据。新回答不要再用 radio): `{"type":"radio","label":"<user-language label>","options":["<user-language option>","<user-la
  • Network accessline 107
    - choices: `{"type":"choices","title":"<user-language title>","prompt":"<user-language question>","mode":"single|multi","max":2,"submit":"<button label>","action":"<action>","items":[{"label":"<option>","hint":"<one-line cost>","meta":"P0",
  • Network accessline 108
    - link: `{"type":"link","label":"...","href":"https://..."?}` — 仅 http(s)/mailto 协议被接受;无 `href` 时渲染为纯文本样式(不会假装可点)
  • Network accessline 116
    - textarea: `{"type":"textarea","label":"...","placeholder":"...","rows":n?,"value":"...","action":"save"?,"id":"field-id"?}` — action 在失焦和 **Ctrl/Cmd+Enter** 时触发;blur 仅值有变化才发送;带 `id` 的值刷新后保留 - editor: `{"type":"editor","id":"draft","label"
  • Network accessline 117
    - editor: `{"type":"editor","id":"draft","label":"正文","value":"初始文本","placeholder":"继续编辑","rows":8}` — 纯文本编辑;编辑内容实时同步到当前区块;启用状态持久化且存储成功时,刷新可以恢复;可复制当前文字;带 `id` 的值也可由 sibling `submit` 统一提交 - entity-card: `{"type":"entity-card","name":"Ada Lov
  • Network accessline 118
    - entity-card: `{"type":"entity-card","name":"Ada Lovelace","image":"https://example.com/ada.png","description":"数学家","metadata":[{"label":"领域","value":"计算机科学"}],"href":"https://example.com/source","sourceLabel":"来源","actions":[{"label":"查看
  • Network accessline 131
    {"items":[{"type":"editor","id":"reply","label":"回复草稿","value":"你好,","rows":6},{"type":"entity-card","name":"Ada Lovelace","description":"数学家","metadata":[{"label":"领域","value":"计算机科学"}],"href":"https://example.com/ada","actions":[{"label":
  • Network accessline 136
    ### 高级 - svg: `{"type":"svg","title":"<user-language title>","height":300,"code":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 100\"><rect width=\"200\" height=\"100\" fill=\"#534ab7\"/></svg>"}` — 独立 SVG 图片预览;`title`/`height
  • Network accessline 137
    - svg: `{"type":"svg","title":"<user-language title>","height":300,"code":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 100\"><rect width=\"200\" height=\"100\" fill=\"#534ab7\"/></svg>"}` — 独立 SVG 图片预览;`title`/`height` 可省略,h
  • Network accessline 190
    | `**加粗**` | 强调(不换行、不成块) | | `==高亮==` | 极淡底色标记 | | `[文字](https://…)` | 行内链接(http/https/mailto;围栏会话中的本地文件链接支持右侧栏打开与行号定位;无效目标及独立 HTML artifact 中的本地文件链接显示为普通文字) |
  • Network accessline 191
    | `==高亮==` | 极淡底色标记 | | `[文字](https://…)` | 行内链接(http/https/mailto;围栏会话中的本地文件链接支持右侧栏打开与行号定位;无效目标及独立 HTML artifact 中的本地文件链接显示为普通文字) | | JSON `"\n"`(真实换行符) | 换行——**多段文字写同一个字段**,不要为换行拆成多个节点 |
  • Network accessline 192
    | `[文字](https://…)` | 行内链接(http/https/mailto;围栏会话中的本地文件链接支持右侧栏打开与行号定位;无效目标及独立 HTML artifact 中的本地文件链接显示为普通文字) |

THIRD_PARTY_NOTICES.md

  • Network accessline 8
    - Source: <https://github.com/openai/apps-sdk-ui>
  • Network accessline 46
    The lazy maplibre asset bundles the pinned official npm distribution, including its ESM main, worker, and CSS. Source: https://github.com/maplibre/maplibre-gl-js/tree/v6.16.0
  • Network accessline 47
    its ESM main, worker, and CSS. Source: https://github.com/maplibre/maplibre-gl-js/tree/v6.16.0
  • Network accessline 143
    Contains a portion of d3-color https://github.com/d3/d3-color

assets/genui-icon.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36" fill="none">

assets/genui-logo.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="284" height="64" viewBox="0 0 284 64" fill="none">

docs/diagram-component-design.md

  • Network accessline 3
    > 目标:把 [cathrynlavery/diagram-design](https://github.com/cathrynlavery/diagram-design)
  • Network accessline 243
    - diagram-design:[README](https://github.com/cathrynlavery/diagram-design)、

docs/gallery.md

  • Network accessline 3
    These native GenUI nodes support the first slice of [#358](https://github.com/omdsh-dev/dsh-genui/issues/358): browse alternatives, inspect images, and make an explicit choice without turning every navigation gesture into a model request. T
  • Network accessline 10
    {"title":"Compare two layouts","items":[{"type":"carousel","title":"Layout choices","itemWidth":280,"items":[{"type":"card","title":"Compact","items":[{"type":"text","content":"Keep the summary visible."},{"type":"button","label":"Choose co
  • Network accessline 17
    For authored responses, prefer a small set of 3–8 visually consistent cards, short metadata, and one clear primary action per item, as recommended by the [OpenAI UI guidelines](https://developers.openai.com/plugins/concepts/ui-guidelines#in

docs/hub-registration.md

  • Network accessline 15
    | [dsh-genui](https://github.com/omdsh-dev/dsh-genui) | bundle · cordis | 对话内生成式 UI:模型用 `dsh-ui` 围栏把可交互组件直接画进回答流(布局/图表/函数图/测验/3D/事件循环) — DSH 对话内生成式 UI 插件:dsh-ui 围栏渲染为可交互组件,渲染器经主仓 fence-registry 扩展点注册,插件 + 配套 skill 独立分发 | TS | 2026-08-09 |

docs/map.md

  • Network accessline 84
    worker path; offline `file://` uses a classic worker as described below. The final unmount calls `Map.remove()` and revokes the owned URL. The upstream 6.16.0 release includes [the shared worker lifecycle fix](https://github.com/maplibre/ma
  • Network accessline 85
    `Map.remove()` and revokes the owned URL. The upstream 6.16.0 release includes [the shared worker lifecycle fix](https://github.com/maplibre/maplibre-gl-js/pull/8491). The real browser cleanup check still requires worker termination and has
  • Network accessline 86
    [the shared worker lifecycle fix](https://github.com/maplibre/maplibre-gl-js/pull/8491).

docs/plans/2026-09-08-genui-upgrade-research.md

  • Network accessline 27
    普通测试沿用锁定的旧版宿主依赖 `0.1.0-rc.8`,不是实际运行中的 `0.1.3-alpha.1`。当前自动检查虽然克隆并构建指定宿主,但类型配置与测试配置没有据此切换基础组件依赖;浏览器冒烟在“插件激活”之后就退出,没有渲染差异对比等组件。105 项跳过也不能计为通过。参见[依赖与命令定义](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/pac
  • Network accessline 33
    主分支已经合入统一组件校验(#106)、基础模块提取(#107)、校验职责拆分(#108)、单行输入持久值优先级修复(#110)、原生颜色输入与复选分组(#111、#112)。不能把这些再列成“从零建设”的升级内容。[当前主分支](https://github.com/omdsh-dev/dsh-genui/commit/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825)
  • Network accessline 35
    对 #102 原始卡片别名样本,当前处理结果保留了标题和正文,并返回别名告警;缺少必需内容的卡片也会返回字段错误。因此“校验完全没接线”已不是主分支现状。现有本地交互、输入法保护、资源上限、错误隔离和面板操作去重也应继续利用,逐项验证实际边界。[当前处理管线](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/guard.ts#L138
  • Network accessline 41
    插件调用宿主差异对比组件时只传数据;当前宿主还要求复制、展开等按钮文案。隔离浏览器点击最小差异对比样本后,真实报错为 `Cannot read properties of undefined (reading 'copy')`,与公开 #113 报告一致。该报告的 Windows / `0.1.2-rc.1` 组合尚未在本机复测,本次确认的是相同原因在 `0.1.3-alpha.1` 上成立。[插件调用](https://github.com/omdsh-dev/dsh-ge
  • Network accessline 51
    原因是围栏入口在有会话 ID 时,即使还没有最终来源身份,也把当前整份内容的指纹写进状态键。新增节点改变指纹,内部组件按新键重新挂载,用户刚输入的状态随旧实例丢失。组件自身已有“无持久键时保留流式实例”的测试,但它没有覆盖真正的围栏入口。[围栏入口](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/fence-render.tsx#L
  • Network accessline 59
    原因是共享字段仓库删除了空字符串;重新挂载时找不到保存值,就重新采用模型默认值。这说明显示状态与提交收集不能共用“只保留非空字段”的语义:保存时应区分“未设置”和“明确清空”,提交时仍可按现有规则过滤空白。[字段删除逻辑](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/GenuiBlock.tsx#L111) · [默认值恢复逻辑]
  • Network accessline 65
    项目声明最多 8 层嵌套,但新的字段规范化先递归走完整树,之后才做有上限的修复和验证。直接调用主分支处理函数:10 层输入正常返回深度错误;**2,000 层输入抛出调用栈溢出异常**。这不是正常样本的性能测量,而是异常输入边界验证。[规范化递归](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/genui-runtime/norma
  • Network accessline 71
    动作回调只返回 `void`,按钮显示 1.4 秒的“已触发”;内联动作发送失败后被空处理,面板动作只写控制台。**现有“已触发”文案没有声称业务成功,但用户也看不到这个动作的发送失败和后续结果。**[回调类型](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/action-context.ts#L22) · [发送路径](https
  • Network accessline 73
    当前宿主发送接口能返回接收失败,但内部是把提示词排入队列,返回成功不能当成业务完成。第一步可直接把这个真实结果传回按钮,显示发送中、已发送或发送失败;进一步显示执行成功,需要把动作与相应回合、工具结果关联。不能凭计时器或“出现了一条新回答”猜成功。[宿主发送实现](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/client/ui-conversation/src
  • Network accessline 77
    主分支已建立 45 类组件的运行时字段表;类型定义、修复分支、验证分支、模型说明仍有各自的声明。守卫文件由本机基线的 1,562 行变成主分支 1,707 行,同时新建了基础模块。行数本身不代表质量,但证明不能把“已经拆文件”当成“重复规则已经消除”。[组件目录](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/genui-runti
  • Network accessline 79
    另一个边界样本是未注册类型 `not-a-real-widget`:处理函数返回零错误、零告警并计为 1 个组件;当前宿主又没有插件所探测的自定义组件注册入口,渲染分发会返回空。这个行为应在能力确认边界解决,不能只看修复后的节点计数就宣称可显示。[未知类型处理](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/guard.ts#L13
  • Network accessline 91
    启动代码还会为 Mermaid 和 Three 添加预取提示,因此“按需执行”不等于“所有浏览器都只在需要时下载”。是否去掉预取应以真实冷启动网络结果决定。[预取逻辑](https://github.com/omdsh-dev/dsh-genui/blob/a1d7b9d8019efc4d6bec8cadd92d5b76ee504825/src/client/index.tsx#L48) · [全页监听与定时扫描](https://github.com/omdsh-dev/d
  • Network accessline 158
    | 方案 | 流式传输实际内容 | 状态与动作生命周期 | 校验与安全边界 | 宿主耦合 | 对 `dsh-genui` 的判断 | |---|---|---|---|---|---| | Vercel AI SDK UI | 默认 UI 消息流通过 SSE 发送带类型的消息片段;工具调用依次出现 `tool-input-start`、参数文本增量、完整输入、完整输出。它流式传的是**消息/工具参数片段**,不是通用 UI 树补丁。自定义 `data-*` 片段可用相同 `i
  • Network accessline 159
    |---|---|---|---|---|---| | Vercel AI SDK UI | 默认 UI 消息流通过 SSE 发送带类型的消息片段;工具调用依次出现 `tool-input-start`、参数文本增量、完整输入、完整输出。它流式传的是**消息/工具参数片段**,不是通用 UI 树补丁。自定义 `data-*` 片段可用相同 `id` 覆盖更新。[流协议](https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol) · 
  • Network accessline 160
    | Vercel AI SDK UI | 默认 UI 消息流通过 SSE 发送带类型的消息片段;工具调用依次出现 `tool-input-start`、参数文本增量、完整输入、完整输出。它流式传的是**消息/工具参数片段**,不是通用 UI 树补丁。自定义 `data-*` 片段可用相同 `id` 覆盖更新。[流协议](https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol) · [自定义数据](https://ai-sdk.dev
  • Network accessline 161
    | Vercel json-render | SpecStream 是逐行 JSONL,每行一条 RFC 6902 JSON Patch;编译器把补丁顺序应用为当前 spec,渲染器随 spec 更新。[流式规范](https://json-render.dev/docs/streaming) | spec 可带状态路径、双向绑定、条件显示、事件和 watcher;内置 `setState` 可本地更新,注册 action 执行业务动作。[数据绑定](https://json
  • Network accessline 162
    | Google A2UI | 当前站点标注 v0.9.1 为 Current、v1.0 为 Candidate。服务端按 JSONL 发送独立消息,v0.9 系列用 `createSurface`、`updateComponents`、`updateDataModel`、`deleteSurface`;结构与数据可分批更新。[数据流](https://a2ui.org/concepts/data-flow/) · [v0.9 规范](https://a2ui.org/spe
  • Network accessline 163
    | CopilotKit / AG-UI | CopilotKit 的生成式 UI 主要把指定工具调用映射到 React 组件;参数流式到达时可用部分 JSON 先渲染。底层 AG-UI 用开始/内容/结束事件传文本与工具参数,工具结果是完整事件。[CopilotKit 工具渲染](https://docs.copilotkit.ai/generative-ui/tool-rendering) · [AG-UI 事件](https://docs.ag-ui.com/conce

docs/plans/2026-10-13-dsh-genui-anthological-aesthetics.md

  • Network accessline 152
    - **机制**:C1 重排后的 `gallerySpec` 由构建脚本经 `createStandaloneHtmlDocument`(`src/client/artifact/html.ts`)生成独立 HTML,提交到 `site/`——现有 `deploy-product-site.yml` 对 `site/**` 自动部署 Pages,零新增基建。人在 `https://omdsh-dev.github.io/dsh-genui/` 直接看选集,不依赖 DSH 宿主

package.json

  • Executable scriptline 1
    Executable file
  • Network accessline 62
    "repository": {     "type": "git",     "url": "https://github.com/omdsh-dev/dsh-genui.git"
  • Network accessline 63
    "type": "git",     "url": "https://github.com/omdsh-dev/dsh-genui.git"   },
  • Network accessline 64
    "url": "https://github.com/omdsh-dev/dsh-genui.git"
  • Network accessline 65
    },   "homepage": "https://github.com/omdsh-dev/dsh-genui",   "bugs": {
  • Network accessline 66
    "homepage": "https://github.com/omdsh-dev/dsh-genui",
  • Network accessline 67
    "bugs": {     "url": "https://github.com/omdsh-dev/dsh-genui/issues"   },
  • Network accessline 68
    "url": "https://github.com/omdsh-dev/dsh-genui/issues"

scripts/build-anthology-page.mts

  • Executable scriptline 1
    #!/usr/bin/env -S npx tsx
  • Network accessline 22
    const REPO = resolve(dirname(fileURLToPath(import.meta.url)), '..') const PAGES_BASE = 'https://omdsh-dev.github.io/dsh-genui/'
  • Network accessline 23
    const PAGES_BASE = 'https://omdsh-dev.github.io/dsh-genui/'

scripts/check-blocks-theme-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 40
    }     assert.ok(port, `Chromium CDP did not start: ${stderr}`)     const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 41
    assert.ok(port, `Chromium CDP did not start: ${stderr}`)     const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()     socket = new WebSocket(targets.find(target => target.type === 'page').webSocketDebuggerUrl)
  • Network accessline 42
    const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 117
    const name = `${palette}-${theme}`       const { stdout, stderr } = await render(         `http://127.0.0.1:${address.port}/tests/browser/blocks-theme.html?theme=${theme}&palette=${palette}`,
  • Network accessline 118
    const { stdout, stderr } = await render(         `http://127.0.0.1:${address.port}/tests/browser/blocks-theme.html?theme=${theme}&palette=${palette}`,         join(out, `${name}.png`),
  • Network accessline 119
    `http://127.0.0.1:${address.port}/tests/browser/blocks-theme.html?theme=${theme}&palette=${palette}`,

scripts/check-content-font-size-browser.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 18
    [Credential-related source omitted]

scripts/check-host-api.mjs

  • Executable scriptline 1
    Executable file

scripts/check-interaction-state-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 38
    }   assert.ok(port, 'Chromium CDP did not start')   const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 39
    assert.ok(port, 'Chromium CDP did not start')   const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()   socket = new WebSocket(targets.find(target => target.type === 'page').webSocketDebuggerUrl)
  • Network accessline 40
    const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 83
    await command('Runtime.enable')   await command('Emulation.setDeviceMetricsOverride', { width: 900, height: 800, deviceScaleFactor: 1, mobile: false })   await command('Page.navigate', { url: `http://127.0.0.1:${address.port}/tests/browser/
  • Network accessline 84
    await command('Emulation.setDeviceMetricsOverride', { width: 900, height: 800, deviceScaleFactor: 1, mobile: false })   await command('Page.navigate', { url: `http://127.0.0.1:${address.port}/tests/browser/interaction-state.html` })   await
  • Network accessline 85
    await command('Page.navigate', { url: `http://127.0.0.1:${address.port}/tests/browser/interaction-state.html` })
  • Network accessline 110
    const gated = { type: 'popover', label: 'Gated info', content: '[Link](https://example.com)', enableWhen: { field: 'allow', op: 'eq', value: 'yes' } }

scripts/check-map-assets.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 20
    runInNewContext(engine, sandbox, { timeout: 5000 })

scripts/check-mermaid-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Dangerous shell operationline 7
    import { mkdtemp, mkdir, writeFile, rm } from 'node:fs/promises'
  • Access to secretsline 470
    [Credential-related source omitted]
  • Network accessline 547
    await send(       'Page.navigate',       { url: `http://127.0.0.1:${port}/mermaid-check` },
  • Network accessline 548
    'Page.navigate',       { url: `http://127.0.0.1:${port}/mermaid-check` },       sessionId,
  • Network accessline 549
    { url: `http://127.0.0.1:${port}/mermaid-check` },

scripts/check-standalone.mjs

  • Executable scriptline 1
    Executable file

scripts/check-steps-marker-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 39
    }     assert.ok(port, `Chromium CDP did not start: ${stderr}`)     const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 40
    assert.ok(port, `Chromium CDP did not start: ${stderr}`)     const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()     socket = new WebSocket(targets.find(target => target.type === 'page').webSocketDebuggerUrl)
  • Network accessline 41
    const targets = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json()
  • Network accessline 128
    const name = `${palette}-${theme}-${width}`         const { stdout, stderr } = await render(           `http://127.0.0.1:${address.port}/tests/browser/steps-marker.html?theme=${theme}&palette=${palette}`,
  • Network accessline 129
    const { stdout, stderr } = await render(           `http://127.0.0.1:${address.port}/tests/browser/steps-marker.html?theme=${theme}&palette=${palette}`,           join(out, `${name}.png`), width,
  • Network accessline 130
    `http://127.0.0.1:${address.port}/tests/browser/steps-marker.html?theme=${theme}&palette=${palette}`,

scripts/check-table-wrap-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Dangerous shell operationline 47
    try { await exec(candidate, ['--version']); browser = candidate; break } catch { /* try another installed browser */ }
  • Dangerous shell operationline 67
    const { stdout, stderr } = await exec(browser, [
  • Network accessline 71
    '--virtual-time-budget=5000', '--window-size=1200,1800',     `--screenshot=${join(out, 'layout.png')}`, '--dump-dom',     `http://127.0.0.1:${address.port}/tests/browser/table-wrap.html`,
  • Network accessline 72
    `--screenshot=${join(out, 'layout.png')}`, '--dump-dom',     `http://127.0.0.1:${address.port}/tests/browser/table-wrap.html`,   ], { timeout: 30000, maxBuffer: 4 * 1024 * 1024 })
  • Network accessline 73
    `http://127.0.0.1:${address.port}/tests/browser/table-wrap.html`,

scripts/check-text-newlines-browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Dangerous shell operationline 25
    try { await exec(candidate, ['--version']); browser = candidate; break } catch { /* try another installed browser */ }
  • Dangerous shell operationline 45
    const { stdout, stderr } = await exec(browser, [
  • Network accessline 49
    '--virtual-time-budget=5000', '--window-size=1500,1800',     `--screenshot=${join(out, 'layout.png')}`, '--dump-dom',     `http://127.0.0.1:${address.port}/tests/browser/text-newlines.html`,
  • Network accessline 50
    `--screenshot=${join(out, 'layout.png')}`, '--dump-dom',     `http://127.0.0.1:${address.port}/tests/browser/text-newlines.html`,   ], { timeout: 30000, maxBuffer: 4 * 1024 * 1024 })
  • Network accessline 51
    `http://127.0.0.1:${address.port}/tests/browser/text-newlines.html`,

scripts/clean.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Dangerous shell operationline 5
    * The scripts used to spell this `rm -rf lib`. npm and pnpm run package

scripts/computed-browser-checks.mjs

  • Executable scriptline 1
    Executable file

scripts/e2e-gallery-host.mjs

  • Executable scriptline 1
    Executable file

scripts/e2e-map-host.mjs

  • Executable scriptline 1
    Executable file

scripts/e2e-visual.mts

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 6
    [Credential-related source omitted]
  • Dangerous shell operationline 20
    import { mkdtemp, mkdir, rm } from 'node:fs/promises'
  • Network accessline 188
    env, detached: true, stdio: ['ignore', 'pipe', 'pipe'],   })   const BASE = `http://127.0.0.1:${PORT}`
  • Network accessline 190
    const BASE = `http://127.0.0.1:${PORT}`
  • Network accessline 205
    launchUrl = found       try {         const res = await fetch(found, { redirect: 'manual' })
  • Network accessline 206
    try {         const res = await fetch(found, { redirect: 'manual' })         if (res.status === 303 || res.ok) {
  • Network accessline 207
    const res = await fetch(found, { redirect: 'manual' })
  • Network accessline 227
    const indexRes = await fetch(`${BASE}/`, { headers: sessionCookie === undefined ? {} : { cookie: sessionCookie } })

scripts/e2e.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 255
    [Credential-related source omitted]
  • Network accessline 274
    }   const clientUrl = boot?.clientUrl ?? '/plugins/@changfenhuang/dsh-genui/client.js'   const clientRes = await fetch(new URL(clientUrl, readyUrl))
  • Network accessline 275
    const clientUrl = boot?.clientUrl ?? '/plugins/@changfenhuang/dsh-genui/client.js'   const clientRes = await fetch(new URL(clientUrl, readyUrl))   if (!clientRes.ok) {
  • Network accessline 276
    const clientRes = await fetch(new URL(clientUrl, readyUrl))

scripts/fixtures/gallery-host.mjs

  • Executable scriptline 1
    Executable file

scripts/fixtures/map-host.mjs

  • Executable scriptline 1
    Executable file

scripts/gallery-browser-checks.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    const IMAGES = {   '/wide.svg': '<svg xmlns="http://www.w3.org/2000/svg" width="480" height="240" viewBox="0 0 480 240"><rect width="480" height="240" fill="#2563eb"/><circle cx="120" cy="120" r="72" fill="#fbbf24"/><path d="M250 60h170v120
  • Network accessline 22
    '/wide.svg': '<svg xmlns="http://www.w3.org/2000/svg" width="480" height="240" viewBox="0 0 480 240"><rect width="480" height="240" fill="#2563eb"/><circle cx="120" cy="120" r="72" fill="#fbbf24"/><path d="M250 60h170v120H250z" fill="#fff"/
  • Network accessline 23
    '/tall.svg': '<svg xmlns="http://www.w3.org/2000/svg" width="180" height="300" viewBox="0 0 180 300"><rect width="180" height="300" fill="#047857"/><path d="M90 30 160 220H20z" fill="#fda4af"/><circle cx="90" cy="260" r="20" fill="#fff"/></
  • Network accessline 486
    const server = createServer((req, res) => {     const response = galleryImageResponse(req.url)     requests.push({ path: req.url, status: response.status })
  • Network accessline 487
    const response = galleryImageResponse(req.url)     requests.push({ path: req.url, status: response.status })     res.writeHead(response.status, response.headers)
  • Network accessline 488
    requests.push({ path: req.url, status: response.status })
  • Network accessline 499
    server.listen(0, '127.0.0.1', resolve)     }), STEP_MS, 'start synthetic gallery image server')     return { origin: `http://127.0.0.1:${server.address().port}`, requests, close }
  • Network accessline 500
    }), STEP_MS, 'start synthetic gallery image server')     return { origin: `http://127.0.0.1:${server.address().port}`, requests, close }   } catch (error) { await close(); throw error }
  • Network accessline 501
    return { origin: `http://127.0.0.1:${server.address().port}`, requests, close }
  • Network accessline 532
    await checkGalleryBrowser({ page, renderedRoot, artifactsDir, dismissCredentialsOverlay, inputProfile, report })     for (const path of ['/wide.svg', '/tall.svg', '/missing.svg']) {       assert.ok(assets.requests.some(request => request.pa
  • Network accessline 533
    for (const path of ['/wide.svg', '/tall.svg', '/missing.svg']) {       assert.ok(assets.requests.some(request => request.path === path), `Browser must request ${path} from the real local server`)     }
  • Network accessline 534
    assert.ok(assets.requests.some(request => request.path === path), `Browser must request ${path} from the real local server`)

scripts/gallery-fixed-contexts.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 111
    report.panelAppendPassed = true       for (const path of ['/wide.svg', '/tall.svg', '/missing.svg']) {         assert.ok(galleryAssets.requests.some(request => request.path === path), `Browser must request ${path}`)
  • Network accessline 112
    for (const path of ['/wide.svg', '/tall.svg', '/missing.svg']) {         assert.ok(galleryAssets.requests.some(request => request.path === path), `Browser must request ${path}`)       }
  • Network accessline 113
    assert.ok(galleryAssets.requests.some(request => request.path === path), `Browser must request ${path}`)

scripts/gallery-input-mode.mjs

  • Executable scriptline 1
    Executable file

scripts/gallery-touch-checks.mjs

  • Executable scriptline 1
    Executable file

scripts/generate-icon-data.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 19
    *   ICON-NAMES.md                        完整名单(给人 / SKILL grep 用)  *  * Upstream: https://github.com/openai/apps-sdk-ui @ 0f00143c7a639906f1621fe58e1b6be7b5bea46d (MIT).
  • Network accessline 20
    *  * Upstream: https://github.com/openai/apps-sdk-ui @ 0f00143c7a639906f1621fe58e1b6be7b5bea46d (MIT).  */
  • Network accessline 21
    * Upstream: https://github.com/openai/apps-sdk-ui @ 0f00143c7a639906f1621fe58e1b6be7b5bea46d (MIT).
  • Network accessline 53
    const HEADER = `/**  * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui
  • Network accessline 54
    * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui

scripts/genui-usage-audit.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

scripts/host-dependency-policy.mjs

  • Executable scriptline 1
    Executable file

scripts/install.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 79
    trap 'rm -f "$TMP_FILE"' EXIT HUP INT TERM

scripts/map-acceptance/README.md

  • Network accessline 23
    References: - https://chromium.googlesource.com/chromium/src/+/HEAD/docs/gpu/swiftshader.md
  • Network accessline 24
    - https://chromium.googlesource.com/chromium/src/+/HEAD/docs/gpu/swiftshader.md
  • Network accessline 25
    - https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-chromium-sandbox

scripts/map-acceptance/browser-checks.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    if (['blob:', 'data:'].includes(url.protocol) || (allowFile && url.protocol === 'file:')) return     const safe = `${url.origin}${url.pathname}` // Never persist the host bootstrap token/query.     evidence.requests.push(safe)
  • Network accessline 42
    const safe = `${url.origin}${url.pathname}` // Never persist the host bootstrap token/query.     evidence.requests.push(safe)     if (!allowedOrigins.includes(url.origin)) evidence.externalRequests.push(safe)
  • Network accessline 43
    evidence.requests.push(safe)

scripts/map-acceptance/contract.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    // Remove only that exact default; retain all other defaults and the live     // forbidden-flag audit. Never use ignoreDefaultArgs: true.     // https://github.com/microsoft/playwright/blob/v1.61.1/packages/playwright-core/src/server/chromi
  • Network accessline 24
    // https://github.com/microsoft/playwright/blob/v1.61.1/packages/playwright-core/src/server/chromium/chromium.ts
  • Network accessline 26
    // Chromium's supported OpenGL ES driver on GPU-less bots, NOT the unsafe     // WebGL fallback. Keep both renderer/GPU sandboxes and WebGL enabled.     // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/gpu/swiftshader.md
  • Network accessline 27
    // WebGL fallback. Keep both renderer/GPU sandboxes and WebGL enabled.     // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/gpu/swiftshader.md     // CDP Browser.getBrowserCommandLine requires this ordinary automation
  • Network accessline 28
    // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/gpu/swiftshader.md
  • Network accessline 29
    // CDP Browser.getBrowserCommandLine requires this ordinary automation     // marker explicitly; do not rely on the host Playwright's default flags.     // https://chromedevtools.github.io/devtools-protocol/tot/Browser/#method-getBrowserCom
  • Network accessline 31
    // https://chromedevtools.github.io/devtools-protocol/tot/Browser/#method-getBrowserCommandLine

scripts/map-acceptance/run.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 96
    plugins: [{ name: 'synthetic-packed-map-assets', configureServer(vite) {         vite.middlewares.use((req, res, next) => {           const url = new URL(req.url, 'http://127.0.0.1')
  • Network accessline 97
    vite.middlewares.use((req, res, next) => {           const url = new URL(req.url, 'http://127.0.0.1')           if (url.pathname === '/tests/browser/map.html' && url.searchParams.has('block-worker')) res.setHeader('Content-Security-Policy',
  • Network accessline 98
    const url = new URL(req.url, 'http://127.0.0.1')
  • Network accessline 115
    const address = server.httpServer.address()     assert.ok(address && typeof address !== 'string')     const origin = `http://127.0.0.1:${address.port}`
  • Network accessline 116
    assert.ok(address && typeof address !== 'string')     const origin = `http://127.0.0.1:${address.port}`     const embedContext = await browser.newContext({ viewport: { width: 1000, height: 1100 }, locale: 'en' })
  • Network accessline 117
    const origin = `http://127.0.0.1:${address.port}`
  • Network accessline 123
    await embed.goto(`${origin}/tests/browser/map.html`, { waitUntil: 'networkidle' })     assert.equal(embedEvidence.workerUrls.length, 0, 'No eager Map worker')     assert.ok(!embedEvidence.requests.some(url => url.endsWith('/maplibre.js')), 
  • Network accessline 124
    assert.equal(embedEvidence.workerUrls.length, 0, 'No eager Map worker')     assert.ok(!embedEvidence.requests.some(url => url.endsWith('/maplibre.js')), 'No eager Map engine request')     assert.equal(await embed.locator('[data-genui-maplib
  • Network accessline 125
    assert.ok(!embedEvidence.requests.some(url => url.endsWith('/maplibre.js')), 'No eager Map engine request')
  • Network accessline 131
    }     embedEvidence.checks = await checkMapUi({ page: embed, root: embed, out, prefix: 'map-embed', assertNoActions: assertNoEmbedActions })     assert.equal(embedEvidence.requests.filter(url => url.endsWith('/maplibre.js')).length, 1, 'Eng
  • Network accessline 132
    embedEvidence.checks = await checkMapUi({ page: embed, root: embed, out, prefix: 'map-embed', assertNoActions: assertNoEmbedActions })     assert.equal(embedEvidence.requests.filter(url => url.endsWith('/maplibre.js')).length, 1, 'Engine lo
  • Network accessline 133
    assert.equal(embedEvidence.requests.filter(url => url.endsWith('/maplibre.js')).length, 1, 'Engine loaded exactly once')
  • Network accessline 179
    assert.ok(embedEvidence.workerCloses >= 1)         embedEvidence.workerUrlsRevoked = await embed.evaluate(async urls => Promise.all(urls.map(async url => {           try { await fetch(url); return false } catch { return true }
  • Network accessline 180
    embedEvidence.workerUrlsRevoked = await embed.evaluate(async urls => Promise.all(urls.map(async url => {           try { await fetch(url); return false } catch { return true }         })), workerUrls)
  • Network accessline 181
    try { await fetch(url); return false } catch { return true }

scripts/prepack.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

scripts/prepare-published-host.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/README.md

  • Network accessline 24
    The GenUI tarball and digest come from the existing normal verification/pack step. The companion is fetched from the public [`sunxiuguo/DSH-better-sidebar` fork](https://github.com/sunxiuguo/DSH-better-sidebar)
  • Network accessline 25
    step. The companion is fetched from the public [`sunxiuguo/DSH-better-sidebar` fork](https://github.com/sunxiuguo/DSH-better-sidebar) at immutable commit `cd1251be2d61a75aac0fa2054fc09cdee8f62f08`
  • Network accessline 26
    [`sunxiuguo/DSH-better-sidebar` fork](https://github.com/sunxiuguo/DSH-better-sidebar)
  • Network accessline 27
    at immutable commit `cd1251be2d61a75aac0fa2054fc09cdee8f62f08` ([draft companion PR](https://github.com/omdsh-dev/DSH-better-sidebar/pull/1033)). A fresh owned checkout verifies that exact detached object, honors the pinned
  • Network accessline 28
    ([draft companion PR](https://github.com/omdsh-dev/DSH-better-sidebar/pull/1033)).

scripts/sidechat-acceptance/ci.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 4
    import { readFile, writeFile, mkdir, mkdtemp, readdir, realpath, rm } from 'node:fs/promises'
  • Network accessline 15
    export const SIDEBAR_REPOSITORY = 'https://github.com/omdsh-dev/DSH-better-sidebar.git'
  • Dangerous shell operationline 80
    export async function runSidechatCI(options, { executeCommand = execute, acceptance = runSidechatAcceptance, remove = rm } = {}) {

scripts/sidechat-acceptance/fixture/lib/index.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 55
    }   ctx.on('agent/request', async ({ agent, turn, step }, next) => {     const number = (requests.get(agent.id) ?? 0) + 1
  • Network accessline 56
    ctx.on('agent/request', async ({ agent, turn, step }, next) => {     const number = (requests.get(agent.id) ?? 0) + 1     if (phase !== 'resume' || !CHILD_IDS.includes(agent.id) || turn !== number + 1 || number > 2 || step !== 1) {
  • Network accessline 57
    const number = (requests.get(agent.id) ?? 0) + 1
  • Network accessline 64
    provider: selection.provider, model: selection.model, allowed })     if (!allowed) return deny('rejected-event', agent.id, 'Non-replay selection before preparation')     requests.set(agent.id, number)
  • Network accessline 65
    if (!allowed) return deny('rejected-event', agent.id, 'Non-replay selection before preparation')     requests.set(agent.id, number)     return selection
  • Network accessline 66
    requests.set(agent.id, number)
  • Network accessline 71
    const allowed = phase === 'resume' && CHILD_IDS.includes(options.sessionId)       && options.provider === PROVIDER && options.model === MODEL && call <= 2       && requests.get(options.sessionId) === call
  • Network accessline 72
    && options.provider === PROVIDER && options.model === MODEL && call <= 2       && requests.get(options.sessionId) === call     save({ type: 'llm-route', phase, sessionId: options.sessionId, turn: call + 1, step: 1,
  • Network accessline 73
    && requests.get(options.sessionId) === call

scripts/sidechat-acceptance/fixture/lib/snapshot-diagnostics.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/fixture/lib/spec.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/fixture/lib/ui-away.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/exact-pack.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/owned-process.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/run-sidechat-acceptance.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    } async function http(url, init = {}) {   try { return await fetch(url, { ...init, signal: AbortSignal.timeout(15000), redirect: 'manual' }) }
  • Network accessline 36
    async function http(url, init = {}) {   try { return await fetch(url, { ...init, signal: AbortSignal.timeout(15000), redirect: 'manual' }) }   catch { throw new Error('Synthetic loopback HTTP request failed; auth-bearing URL withheld') }
  • Network accessline 37
    try { return await fetch(url, { ...init, signal: AbortSignal.timeout(15000), redirect: 'manual' }) }

scripts/sidechat-acceptance/scripts/sidechat-away-navigation.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-backend-oracle.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-browser-checks.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 169
    if (observedActionRequests > 4) return // Count excess traffic without retaining unbounded handles/bodies.     requestHandles.push(request)     try { requests.push(request.postDataJSON()) } catch { requests.push(null) }
  • Network accessline 170
    requestHandles.push(request)     try { requests.push(request.postDataJSON()) } catch { requests.push(null) }   }
  • Network accessline 171
    try { requests.push(request.postDataJSON()) } catch { requests.push(null) }

scripts/sidechat-acceptance/scripts/sidechat-browser-contracts.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-browser-locators.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-browser-transport.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-host-contract.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/scripts/sidechat-onboarding.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/ci.test.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 131
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]

scripts/sidechat-acceptance/tests/exact-pack.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/host-resolution.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/independent-review.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/owned-process.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    }) test('owned SIGINT await and documented 130 are distinct from live host work', async () => {   const child = spawnOwned(process.execPath, ['-e', `process.on('SIGINT',()=>process.exit(130));console.log('dsh web: http://127.0.0.1:1234/?tok
  • Network accessline 14
    [Credential-related source omitted]
  • Network accessline 15
    [Credential-related source omitted]

scripts/sidechat-acceptance/tests/owned-root.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/sidechat-away-navigation.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    const sessionId = 'session-away' const originalIds = ['session-parent', 'session-a', 'session-b', 'session-away'] const binding = { sessionId, workspaceId }, origin = 'http://127.0.0.1:12345'
  • Network accessline 11
    const originalIds = ['session-parent', 'session-a', 'session-b', 'session-away'] const binding = { sessionId, workspaceId }, origin = 'http://127.0.0.1:12345' const requestBody = () => ({ type: 'client-request', rpcId: 'synthetic-rpc-1', me
  • Network accessline 12
    const binding = { sessionId, workspaceId }, origin = 'http://127.0.0.1:12345'
  • Network accessline 120
    test('matching is exact origin/route, while any method on that route is counted for rejection', () => {   assert.equal(isSessionCreate(exchange(), origin), true)   assert.equal(isSessionCreate(exchange({ request: { url: () => 'http://foreig
  • Network accessline 121
    assert.equal(isSessionCreate(exchange(), origin), true)   assert.equal(isSessionCreate(exchange({ request: { url: () => 'http://foreign/api/session/create' } }), origin), false)   assert.equal(isSessionCreate(exchange({ request: { url: () =
  • Network accessline 122
    assert.equal(isSessionCreate(exchange({ request: { url: () => 'http://foreign/api/session/create' } }), origin), false)

scripts/sidechat-acceptance/tests/sidechat-backend-oracle.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/sidechat-browser-contracts.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 3
    import { mkdtemp, writeFile, rm } from 'node:fs/promises'
  • Network accessline 32
    [Credential-related source omitted]
  • Network accessline 33
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Network accessline 34
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Network accessline 82
    [Credential-related source omitted]
  • Network accessline 83
    [Credential-related source omitted]
  • Network accessline 84
    [Credential-related source omitted]
  • Network accessline 85
    [Credential-related source omitted]
  • Network accessline 86
    [Credential-related source omitted]
  • Network accessline 87
    [Credential-related source omitted]
  • Network accessline 88
    await assert.rejects(openAuthenticatedPage({ async goto() {}, url() { return url } }, url, 'http://127.0.0.1:1'), error => !error.message.includes(secret) && error.actual === false)

scripts/sidechat-acceptance/tests/sidechat-onboarding.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/sidechat-system-head.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/snapshot-diagnostics.test.mjs

  • Executable scriptline 1
    Executable file

scripts/sidechat-acceptance/tests/transport-review.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 4
    import { isSidechatActionRequest, validateActionTransport, verifyActionResponse } from '../scripts/sidechat-browser-transport.mjs' import { initialExpected, actionPlan, appendExpected, executeOwnedAction } from '../scripts/sidechat-browser-
  • Network accessline 5
    import { initialExpected, actionPlan, appendExpected, executeOwnedAction } from '../scripts/sidechat-browser-contracts.mjs' const origin = 'http://127.0.0.1:12345' const good = () => ({ httpStatus: 200, responseOk: true, finished: true, par
  • Network accessline 6
    const origin = 'http://127.0.0.1:12345'
  • Network accessline 10
    assert.equal(isSidechatActionRequest(request(`${origin}/sidebar/api/sidechat.prompt`), origin), true)   for (const url of [`${origin}/sidebar/api/sidechat.events`, `${origin}/other/sidebar/api/sidechat.prompt`,     'http://127.0.0.1:12346/s
  • Network accessline 11
    for (const url of [`${origin}/sidebar/api/sidechat.events`, `${origin}/other/sidebar/api/sidechat.prompt`,     'http://127.0.0.1:12346/sidebar/api/sidechat.prompt', 'https://example.com/sidebar/api/sidechat.prompt', 'invalid']) {     assert
  • Network accessline 12
    'http://127.0.0.1:12346/sidebar/api/sidechat.prompt', 'https://example.com/sidebar/api/sidechat.prompt', 'invalid']) {

scripts/verify-pack.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

site/assets/index-CbA0uR5g.js

  • Network accessline 1
    function MT(i,c){for(var u=0;u<c.length;u++){const d=c[u];if(typeof d!="string"&&!Array.isArray(d)){for(const m in d)if(m!=="default"&&!(m in i)){const y=Object.getOwnPropertyDescriptor(d,m);y&&Object.defineProperty(i,m,y.get?y:{enumerable:
  • Possible obfuscationline 1
    function MT(i,c){for(var u=0;u<c.length;u++){const d=c[u];if(typeof d!="string"&&!Array.isArray(d)){for(const m in d)if(m!=="default"&&!(m in i)){const y=Object.getOwnPropertyDescriptor(d,m);y&&Object.defineProperty(i,m,y.get?y:{enumerable:
  • Executable scriptline 1
    Executable file
  • Network accessline 7
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */(function(){function u(b,_){Object.defineProperty(y.prototype,b,{get:function(){console.warn("%s(...) is depreca
  • Network accessline 9
    */(function(){function u(b,_){Object.defineProperty(y.prototype,b,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",_[0],_[1])}})}function d(b){return b===null||typeof b!="object"?null:(b=Ct&&b[Ct]||
  • Possible obfuscationline 9
    */(function(){function u(b,_){Object.defineProperty(y.prototype,b,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",_[0],_[1])}})}function d(b){return b===null||typeof b!="object"?null:(b=Ct&&b[Ct]||
  • Network accessline 19
    2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),b}function ce(){pe.asyncTransitions--
  • Network accessline 20
    3. You might have more than one copy of React in the same app See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),b}function ce(){pe.asyncTransitions--}function Ae(b){if(yn===null)try{var _=("req
  • Network accessline 21
    See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),b}function ce(){pe.asyncTransitions--}function Ae(b){if(yn===null)try{var _=("require"+Math.random()).slice(0,7);yn=(i&&i[_]).call(i,"timers").
  • Possible obfuscationline 21
    See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),b}function ce(){pe.asyncTransitions--}function Ae(b){if(yn===null)try{var _=("require"+Math.random()).slice(0,7);yn=(i&&i[_]).call(i,"timers").
  • Network accessline 27
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.dis
  • Network accessline 28
    * LICENSE file in the root directory of this source tree.  */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){cas
  • Network accessline 29
    */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){case q:return"Fragment";case le:return"Profiler";case L:return
  • Possible obfuscationline 29
    */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){case q:return"Fragment";case le:return"Profiler";case L:return
  • Possible obfuscationline 34
    <%s key={someKey} {...props} />`,K,re,Ce,re),we[re+K]=!0)}if(re=null,X!==void 0&&(u(X),re=""+X),v(F)&&(u(F.key),re=""+F.key),"key"in F){X={};for(var tt in F)tt!=="key"&&(X[tt]=F[tt])}else X=F;return re&&x(X,typeof U=="function"?U.displayNam
  • Possible obfuscationline 42
    */(function(){function c(){if(me=!1,be){var H=i.unstable_now();oe=H;var Q=!0;try{e:{de=!1,fe&&(fe=!1,se(W),W=-1),le=!0;var V=L;try{t:{for(v(H),q=d(R);q!==null&&!(q.expirationTime>H&&S());){var ve=q.callback;if(typeof ve=="function"){q.callb
  • Network accessline 52
    2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),g}typeof __REACT_DEVTOOLS_GLOBAL_HOOK
  • Network accessline 53
    3. You might have more than one copy of React in the same app See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),g}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK_
  • Network accessline 54
    See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),g}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GL
  • Possible obfuscationline 54
    See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),g}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GL
  • Network accessline 60
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */return(function(){function i(e,t){for(e=e.memoizedState;e!==null&&0<t;)e=e.next,t--;return e}function c(e,t,n,o)
  • Network accessline 61
    * LICENSE file in the root directory of this source tree.  */return(function(){function i(e,t){for(e=e.memoizedState;e!==null&&0<t;)e=e.next,t--;return e}function c(e,t,n,o){if(n>=t.length)return o;var a=t[n],l=Bt(e)?e.slice():Ye({},e);retu
  • Network accessline 62
    */return(function(){function i(e,t){for(e=e.memoizedState;e!==null&&0<t;)e=e.next,t--;return e}function c(e,t,n,o){if(n>=t.length)return o;var a=t[n],l=Bt(e)?e.slice():Ye({},e);return l[a]=c(e[a],t,n+1,o),l}function u(e,t,n){if(t.length!==n
  • Possible obfuscationline 62
    */return(function(){function i(e,t){for(e=e.memoizedState;e!==null&&0<t;)e=e.next,t--;return e}function c(e,t,n,o){if(n>=t.length)return o;var a=t[n],l=Bt(e)?e.slice():Ye({},e);return l[a]=c(e[a],t,n+1,o),l}function u(e,t,n){if(t.length!==n
  • Possible obfuscationline 63
    `)&&(e=e.slice(29)),t=e.indexOf( `),t!==-1&&(e=e.slice(t+1)),t=e.indexOf("react_stack_bottom_frame"),t!==-1&&(t=e.lastIndexOf( `,t)),t!==-1)e=e.slice(0,t);else return"";return e}function K(e){if(mp===void 0)try{throw Error()}catch(n){var t=
  • Network accessline 76
    `+X(l))}else break;var s=t}catch(r){s=` Error generating stack: `+r.message+` `+r.stack}return s}function ae(e,t,n,o,a,l,s){var r=jn;Ct(e);try{return e!==null&&e._debugTask?e._debugTask.run(t.bind(null,n,o,a,l,s)):t(n,o,a,l,s)}finally{Ct(r)
  • Network accessline 78
    `+r.stack}return s}function ae(e,t,n,o,a,l,s){var r=jn;Ct(e);try{return e!==null&&e._debugTask?e._debugTask.run(t.bind(null,n,o,a,l,s)):t(n,o,a,l,s)}finally{Ct(r)}throw Error("runWithFiberInDEV should never be called in production. This is 
  • Possible obfuscationline 78
    `+r.stack}return s}function ae(e,t,n,o,a,l,s){var r=jn;Ct(e);try{return e!==null&&e._debugTask?e._debugTask.run(t.bind(null,n,o,a,l,s)):t(n,o,a,l,s)}finally{Ct(r)}throw Error("runWithFiberInDEV should never be called in production. This is 
  • Network accessline 80
    Check the render method of \``+e+"`.":""}function Ni(e,t,n,o){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&o&&(e[n].defaul
  • Possible obfuscationline 80
    Check the render method of \``+e+"`.":""}function Ni(e,t,n,o){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&o&&(e[n].defaul
  • Possible obfuscationline 111
    `+of(e,0)}catch{return""}}function Ob(e,t,n){for(var o=t,a=null,l=0;o;)o===e&&(l=0),a={fiber:o,children:a!==null?[a]:[],serverProps:o===t?n:o===e?null:void 0,serverTail:[],distanceFromLeaf:l},l++,o=o.return;return a!==null?af(a).replaceAll(
  • Network accessline 114
    See this log for the ancestor stack trace.`,o,s)})),!1}function wc(e,t,n){if(n||Gb("#text",t,!1))return!0;if(n="#text|"+t,zu[n])return!1;zu[n]=!0;var o=(n=jn)?_b(n,t):null;return n=n!==null&&o!==null?Ob(o,n,n.tag!==6?{children:null}:null):"
  • Network accessline 116
    This will cause a hydration error.%s`,t,n),!1}function Vs(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}function nN(e){return e.replace(uD,function(t,n){return n.toUpperCase()})}f
  • Possible obfuscationline 116
    This will cause a hydration error.%s`,t,n),!1}function Vs(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}function nN(e){return e.replace(uD,function(t,n){return n.toUpperCase()})}f
  • Possible obfuscationline 118
    Check the render method of \``+s+"`."),s=29,n=Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(n+"."+r)),r=null}return t=E(s,n,t,a),t.elementType=e,t.type
  • Network accessline 128
    https://react.dev/link/hydration-mismatch`+n),e)),Bp}function mg(e){var t=e.stateNode,n=e.type,o=e.memoizedProps;switch(t[Wt]=e,t[cn]=o,Bm(n,o),n){case"dialog":Xe("cancel",t),Xe("close",t);break;case"iframe":case"object":case"embed":Xe("loa
  • Possible obfuscationline 128
    https://react.dev/link/hydration-mismatch`+n),e)),Bp}function mg(e){var t=e.stateNode,n=e.type,o=e.memoizedProps;switch(t[Wt]=e,t[cn]=o,Bm(n,o),n){case"dialog":Xe("cancel",t),Xe("close",t);break;case"iframe":case"object":case"embed":Xe("loa
  • Network accessline 138
    %s%s`,"https://react.dev/link/hydration-mismatch",t)})}}function zc(){os=$u=null,as=!1}function Xa(e,t,n){ce(Lp,t._currentValue,e),t._currentValue=n,ce(Yp,t._currentRenderer,e),t._currentRenderer!==void 0&&t._currentRenderer!==null&&t._curr
  • Possible obfuscationline 138
    %s%s`,"https://react.dev/link/hydration-mismatch",t)})}}function zc(){os=$u=null,as=!1}function Xa(e,t,n){ce(Lp,t._currentValue,e),t._currentValue=n,ce(Yp,t._currentRenderer,e),t._currentRenderer!==void 0&&t._currentRenderer!==null&&t._curr
  • Possible obfuscationline 145
    <%s>%s</%s>`,n,t,n))}function $c(e,t){var n=Of();n!==null?n.run(Ug.bind(null,e,t)):Ug(e,t)}function Rg(e){function t(N,D){if(e){var A=N.deletions;A===null?(N.deletions=[D],N.flags|=16):A.push(D)}}function n(N,D){if(!e)return null;for(;D!==n
  • Possible obfuscationline 147
    Please update the following component: %s`,a),Bx=!0}return(Pe&Yt)!==Jt?(a=o.pending,a===null?t.next=t:(t.next=a.next,a.next=t),o.pending=t,t=Gc(e),og(e,null,n),t):(Cc(e,o,t,n),Gc(e))}function Zs(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shar
  • Network accessline 148
    `,n+=a}console.error(`React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://react.dev/link/rules-of-hooks
  • Network accessline 155
    2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`)}function jf(e,t){if(Xr)return!1;if(t=
  • Network accessline 157
    See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`)}function jf(e,t){if(Xr)return!1;if(t===null)return console.error("%s received a final argument during this render, but not during the previous 
  • Possible obfuscationline 160
    Incoming: %s`,I,"["+t.join(", ")+"]","["+e.join(", ")+"]");for(var n=0;n<t.length&&n<e.length;n++)if(!dn(e[n],t[n]))return!1;return!0}function If(e,t,n,o,a,l){Aa=l,Ge=t,oo=e!==null?e._debugHookTypes:null,Ca=-1,Xr=e!==null&&e.type!==t.type,(
  • Network accessline 162
    %s `,ms?"An error occurred in the <"+ms+"> component.":"An error occurred in one of your React components.",`Consider adding an error boundary to your tree to customize error handling behavior. Visit https://react.dev/link/error-boundaries 
  • Network accessline 164
    Visit https://react.dev/link/error-boundaries to learn more about error boundaries.`)}function uy(e){var t=ms?"The above error occurred in the <"+ms+"> component.":"The above error occurred in one of your React components.",n="React will tr
  • Possible obfuscationline 174
    `,e,t,n)}function dy(e){zp(e)}function iu(e,t){try{ms=t.source?W(t.source):null,lh=null;var n=t.value;if(k.actQueue!==null)k.thrownErrors.push(n);else{var o=e.onUncaughtError;o(n,{componentStack:t.stack})}}catch(a){setTimeout(function(){thr
  • Network accessline 176
    + <Activity %s>`,n===!0?"hidden":n===!1?"hidden={false}":"hidden={...}",n?'mode="hidden"':'mode="visible"'),t=cu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function yy(e,t,n){return li(t,e.child,null,n),e=s
  • Possible obfuscationline 176
    + <Activity %s>`,n===!0?"hidden":n===!1?"hidden={false}":"hidden={...}",n?'mode="hidden"':'mode="visible"'),t=cu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function yy(e,t,n){return li(t,e.child,null,n),e=s
  • Network accessline 180
    The above lifecycles should be removed. Learn more about this warning here: https://react.dev/link/unsafe-component-lifecycles`,l,p,s!==null?`
  • Network accessline 181
    https://react.dev/link/unsafe-component-lifecycles`,l,p,s!==null?   `+s:"",r!==null?   `+r:"",f!==null?   `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` m
  • Possible obfuscationline 181
    https://react.dev/link/unsafe-component-lifecycles`,l,p,s!==null?   `+s:"",r!==null?   `+r:"",f!==null?   `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` m
  • Network accessline 182
    `+s:"",r!==null?`   `+r:"",f!==null?`   `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` method found on the %s instance: did you accidentally return an obj
  • Network accessline 183
    `+r:"",f!==null?`   `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` method found on the %s instance: did you accidentally return an object from the constru
  • Network accessline 184
    `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` method found on the %s instance: did you accidentally return an object from the constructor?",s):console.er
  • Possible obfuscationline 184
    `+f:""))}}l=t.stateNode,s=B(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` method found on the %s instance: did you accidentally return an object from the constructor?",s):console.er
  • Possible obfuscationline 185
    %s.childContextTypes = ...`,t.displayName||t.name||"Component"),typeof t.getDerivedStateFromProps=="function"&&(e=B(t)||"Unknown",s1[e]||(console.error("%s: Function components do not support getDerivedStateFromProps.",e),s1[e]=!0)),typeof 
  • Network accessline 198
    Learn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching`:" You returned: "+o,ae(t,function(r,f){console.error("%s must not return anything besides a function, which is used for clean-up.%s",r,f)},l,s)}n=n.next}
  • Possible obfuscationline 198
    Learn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching`:" You returned: "+o,ae(t,function(r,f){console.error("%s must not return anything besides a function, which is used for clean-up.%s",r,f)},l,s)}n=n.next}
  • Network accessline 211
    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`),ct===e&&(ke&n)===n&&(xt===bl||xt===rd&&(ke&62914560)===ke&&Xt()-md<h1?(Pe&Yt)===Jt&&ji(e,0):fh|=n,ui
  • Possible obfuscationline 211
    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`),ct===e&&(ke&n)===n&&(xt===bl||xt===rd&&(ke&62914560)===ke&&Xt()-md<h1?(Pe&Yt)===Jt&&ji(e,0):fh|=n,ui
  • Network accessline 220
    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`,W(e))})}function Bo(e){e!==xs&&e.next===null&&(xs===null?vd=xs=e:xs=xs.next=e),xd=!0,k.actQueue!==nul
  • Possible obfuscationline 220
    This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`,W(e))})}function Bo(e){e!==xs&&e.next===null&&(xs===null?vd=xs=e:xs=xs.next=e),xd=!0,k.actQueue!==nul
  • Possible obfuscationline 221
    `).replace(vT,"")}function O0(e,t){return t=el(t),el(e)===t}function st(e,t,n,o,a,l){switch(n){case"children":typeof o=="string"?(wc(o,t,!1),t==="body"||t==="textarea"&&o===""||Vs(e,o)):(typeof o=="number"||typeof o=="bigint")&&(wc(""+o,t,!
  • Possible obfuscationline 226
    - `+Eu(t)+   + `+Eu(n),Error("Expected stylesheet with precedence to not be updated to a different kind of <link>. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> componen
  • Possible obfuscationline 227
    + `+Eu(n),Error("Expected stylesheet with precedence to not be updated to a different kind of <link>. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> components render in 
  • Possible obfuscationline 229
    [Credential-related source omitted]
  • Network accessline 233
    Please update the following components: %s`,s)}0<o.size&&(s=g(o),console.error(`Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecyc
  • Network accessline 235
    * Move data fetching code or side effects to componentDidUpdate. * If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.
  • Network accessline 236
    * If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state
  • Network accessline 238
    Please update the following components: %s`,s)),0<l.size&&(s=g(l),console.error(`Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles f
  • Network accessline 242
    Please update the following components: %s`,s)),0<e.size&&(s=g(e),console.warn(`componentWillMount has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
  • Network accessline 247
    Please update the following components: %s`,s)),0<n.size&&(s=g(n),console.warn(`componentWillReceiveProps has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
  • Network accessline 249
    * Move data fetching code or side effects to componentDidUpdate. * If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.
  • Network accessline 250
    * If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state
  • Network accessline 253
    Please update the following components: %s`,s)),0<a.size&&(s=g(a),console.warn(`componentWillUpdate has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
  • Network accessline 264
    Learn more about this warning here: https://react.dev/link/legacy-context`,o)})}})},ho.discardPendingWarnings=function(){jr=[],Ir=[],Vr=[],Hr=[],kr=[],Br=[],Wu=new Map};var Ex={react_stack_bottom_frame:function(e,t,n){var o=$o;$o=!0;try{ret
  • Possible obfuscationline 264
    Learn more about this warning here: https://react.dev/link/legacy-context`,o)})}})},ho.discardPendingWarnings=function(){jr=[],Ir=[],Vr=[],Hr=[],kr=[],Br=[],Wu=new Map};var Ex={react_stack_bottom_frame:function(e,t,n){var o=$o;$o=!0;try{ret
  • Network accessline 268
    Check the top-level render call using <`+o+">.");var s="";n!=null&&e!==n&&(o=null,typeof n.tag=="number"?o=W(n):typeof n.name=="string"&&(o=n.name),o&&(s=" It was passed a child from "+o+".")),ae(t,function(){console.error('Each child in a 
  • Possible obfuscationline 268
    Check the top-level render call using <`+o+">.");var s="";n!=null&&e!==n&&(o=null,typeof n.tag=="number"?o=W(n):typeof n.name=="string"&&(o=n.name),o&&(s=" It was passed a child from "+o+".")),ae(t,function(){console.error('Each child in a 
  • Network accessline 269
    - react:      `+(e+`   - react-dom:  19.2.1 Learn more: https://react.dev/warnings/version-mismatch`))})(),typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&t
  • Network accessline 270
    - react-dom:  19.2.1 Learn more: https://react.dev/warnings/version-mismatch`))})(),typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.cle
  • Network accessline 271
    Learn more: https://react.dev/warnings/version-mismatch`))})(),typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.clear=="function"&&typeo
  • Possible obfuscationline 271
    Learn more: https://react.dev/warnings/version-mismatch`))})(),typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.clear=="function"&&typeo
  • Network accessline 272
    You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq`:""),"font-weight:bold")}dc.createRoot=function(e,t){if(!q(e))throw Error("Target container is not a DOM element.");fv(e);var n=!1,o="
  • Network accessline 274
    let root = createRoot(domContainer);   root.render(<App />);`),t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onUncaughtError!==void 0&&(a=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtE
  • Network accessline 275
    root.render(<App />);`),t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onUncaughtError!==void 0&&(a=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtError),t.onRecoverableError!==void 0&&(s
  • Possible obfuscationline 275
    root.render(<App />);`),t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onUncaughtError!==void 0&&(a=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtError),t.onRecoverableError!==void 0&&(s
  • Network accessline 281
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.dis
  • Network accessline 282
    * LICENSE file in the root directory of this source tree.  */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){cas
  • Network accessline 283
    */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){case q:return"Fragment";case le:return"Profiler";case L:return
  • Possible obfuscationline 283
    */return(function(){function i(U){if(U==null)return null;if(typeof U=="function")return U.$$typeof===je?null:U.displayName||U.name||null;if(typeof U=="string")return U;switch(U){case q:return"Fragment";case le:return"Profiler";case L:return
  • Possible obfuscationline 288
    <%s key={someKey} {...props} />`,K,re,Ce,re),we[re+K]=!0)}if(re=null,X!==void 0&&(u(X),re=""+X),v(F)&&(u(F.key),re=""+F.key),"key"in F){X={};for(var tt in F)tt!=="key"&&(X[tt]=F[tt])}else X=F;return re&&x(X,typeof U=="function"?U.displayNam
  • Network accessline 296
    * This source code is licensed under the ISC license.  * See the LICENSE file in the root directory of this source tree.  */var y3={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",
  • Network accessline 297
    * See the LICENSE file in the root directory of this source tree.  */var y3={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"rou
  • Network accessline 298
    */var y3={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
  • Network accessline 456
    * This source code is licensed under the ISC license.  * See the LICENSE file in the root directory of this source tree.  */const M3=lt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),z3=300*1e3,j3="/dsh
  • Network accessline 457
    * See the LICENSE file in the root directory of this source tree.  */const M3=lt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),z3=300*1e3,j3="/dsh-genui/assets/github-octocat-original_b664c28d.png",JS=
  • Network accessline 458
    */const M3=lt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),z3=300*1e3,j3="/dsh-genui/assets/github-octocat-original_b664c28d.png",JS=i=>`dsh-github-metrics:${i}`;function VE(i){return new Intl.NumberF
  • Possible obfuscationline 458
    */const M3=lt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),z3=300*1e3,j3="/dsh-genui/assets/github-octocat-original_b664c28d.png",JS=i=>`dsh-github-metrics:${i}`;function VE(i){return new Intl.NumberF
  • Possible obfuscationline 466
    */return(function(){function i(R,M){return R===M&&(R!==0||1/R===1/M)||R!==R&&M!==M}function c(R,M){G||m.startTransition===void 0||(G=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExt

site/index.html

  • Network accessline 7
    <meta name="description" content="DSH 开源扩展:让模型回复成为界面,让上下文成为可对照的批注。" />     <link rel="icon" href="/dsh-genui/assets/dsh-genui-mark_50e06d2b.png" />     <link rel="preconnect" href="https://fonts.googleapis.com" />
  • Network accessline 8
    <link rel="icon" href="/dsh-genui/assets/dsh-genui-mark_50e06d2b.png" />     <link rel="preconnect" href="https://fonts.googleapis.com" />     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
  • Network accessline 9
    <link rel="preconnect" href="https://fonts.googleapis.com" />
  • Network accessline 10
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
  • Network accessline 11
    <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+SC:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet" />
  • Network accessline 49
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */var au;function gm(){if(au)return he;au=1;var r=_r();function i(C){var v="https://react.dev/errors/"+C;if(1<argu
  • Network accessline 50
    * LICENSE file in the root directory of this source tree.  */var au;function gm(){if(au)return he;au=1;var r=_r();function i(C){var v="https://react.dev/errors/"+C;if(1<arguments.length){v+="?args[]="+encodeURIComponent(arguments[1]);for(va
  • Network accessline 51
    */var au;function gm(){if(au)return he;au=1;var r=_r();function i(C){var v="https://react.dev/errors/"+C;if(1<arguments.length){v+="?args[]="+encodeURIComponent(arguments[1]);for(var D=2;D<arguments.length;D++)v+="&args[]="+encodeURICompone
  • Network accessline 57
    * This source code is licensed under the MIT license found in the  * LICENSE file in the root directory of this source tree.  */var ou;function ym(){if(ou)return Pn;ou=1;var r=hm(),i=_r(),c=pm();function s(t){var e="https://react.dev/errors
  • Network accessline 58
    * LICENSE file in the root directory of this source tree.  */var ou;function ym(){if(ou)return Pn;ou=1;var r=hm(),i=_r(),c=pm();function s(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(argume
  • Network accessline 59
    */var ou;function ym(){if(ou)return Pn;ou=1;var r=hm(),i=_r(),c=pm();function s(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+en
  • Network accessline 67
    `).replace(K1,"")}function Lh(t,e){return e=Bh(e),Bh(t)===e}function hr(){}function zt(t,e,l,a,n,o){switch(l){case"children":typeof a=="string"?e==="body"||e==="textarea"&&a===""||Fe(t,a):(typeof a=="number"||typeof a=="bigint")&&e!=="body"
  • Network accessline 78
    <div id="root"></div>     <script defer src="https://manus-analytics.com/umami" data-website-id="27289f56-a7c1-475e-bb0d-027f3e300317"></script>
  • Network accessline 79
    <script defer src="https://manus-analytics.com/umami" data-website-id="27289f56-a7c1-475e-bb0d-027f3e300317"></script>

src/client/EChartNode.tsx

  • Executable scriptline 1
    Executable file

src/client/ErrorBoundary.tsx

  • Executable scriptline 1
    Executable file

src/client/GenuiBlock.module.css

  • Network accessline 464
    -webkit-appearance: none;   padding-right: 30px;   background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23
  • Network accessline 465
    padding-right: 30px;   background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238a8f9a' stroke-width='1.4' s
  • Network accessline 466
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238a8f9a' stroke-width='1.4' stroke-linecap='round' s

src/client/GenuiBlock.tsx

  • Executable scriptline 1
    Executable file

src/client/PlotBlock.tsx

  • Executable scriptline 1
    Executable file

src/client/TemplateDrawer.tsx

  • Executable scriptline 1
    Executable file

src/client/achievement-store.ts

  • Executable scriptline 1
    Executable file

src/client/achievement-toast.tsx

  • Executable scriptline 1
    Executable file

src/client/achievements.ts

  • Executable scriptline 1
    Executable file

src/client/action-context.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/ExportableGenuiBlock.tsx

  • Executable scriptline 1
    Executable file

src/client/artifact/create.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/download.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/html.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    const existing = bundleCache.get(name)   if (existing !== undefined) return existing   const task = fetch(assetUrl(name)).then(async response => {
  • Network accessline 29
    if (existing !== undefined) return existing   const task = fetch(assetUrl(name)).then(async response => {     if (!response.ok) throw new GenuiExportError(code === 'runtime' ? 'runtime-fetch-failed' : 'asset-fetch-failed', `${name}: HTTP ${
  • Network accessline 30
    const task = fetch(assetUrl(name)).then(async response => {
  • Possible obfuscationline 88
    const binary = atob(element.textContent.trim());
  • Possible obfuscationline 107
    const artifact = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encoded), character => character.charCodeAt(0))));

src/client/artifact/index.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/json.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/parse.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/portability.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/standalone-theme.ts

  • Executable scriptline 1
    Executable file

src/client/artifact/types.ts

  • Executable scriptline 1
    Executable file

src/client/asset-echarts-core.ts

  • Executable scriptline 1
    Executable file

src/client/asset-echarts.ts

  • Executable scriptline 1
    Executable file

src/client/asset-loader.ts

  • Executable scriptline 1
    Executable file

src/client/asset-maplibre.ts

  • Executable scriptline 1
    Executable file

src/client/asset-mermaid.ts

  • Executable scriptline 1
    Executable file

src/client/asset-three.ts

  • Executable scriptline 1
    Executable file

src/client/blocks/advanced.tsx

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 247
    return exec('copy')

src/client/blocks/basic.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/blocks.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/carousel.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/charts.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/checkbox.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/choices.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/compare.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/date-picker.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/diagram/geometry.ts

  • Executable scriptline 1
    Executable file

src/client/blocks/diagram/index.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/diagram/layout.ts

  • Executable scriptline 1
    Executable file

src/client/blocks/diagram/theme.ts

  • Executable scriptline 1
    Executable file

src/client/blocks/editor.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/entity-card.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/forms.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/icon.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/image-group.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/image.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/map.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/popover.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/render-node.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/segmented-control.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/skeleton.tsx

  • Executable scriptline 1
    Executable file

src/client/blocks/state.ts

  • Executable scriptline 1
    Executable file

src/client/blocks/svg.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 8
    const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'

src/client/computed.ts

  • Executable scriptline 1
    Executable file

src/client/conditions.ts

  • Executable scriptline 1
    Executable file

src/client/copy-preview-state.ts

  • Executable scriptline 1
    Executable file

src/client/date-picker.ts

  • Executable scriptline 1
    Executable file

src/client/dom-fence.tsx

  • Executable scriptline 1
    Executable file

src/client/echarts-engine.ts

  • Executable scriptline 1
    Executable file

src/client/echarts-lazy.ts

  • Executable scriptline 1
    Executable file

src/client/embed.ts

  • Executable scriptline 1
    Executable file

src/client/fence-render.tsx

  • Executable scriptline 1
    Executable file

src/client/file-address.ts

  • Executable scriptline 1
    Executable file

src/client/file-link-context.tsx

  • Executable scriptline 1
    Executable file

src/client/file-link.ts

  • Executable scriptline 1
    Executable file

src/client/gallery.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 234
    ] },     { type: 'image-group', title: '项目图片 · 点击放大,Esc 返回', items: [       { src: 'https://raw.githubusercontent.com/omdsh-dev/dsh-genui/7301d8a8ec6d5a164beff75e5a8afd20e45f9518/assets/genui-icon.svg', alt: 'GenUI 图标', caption: '本仓库 MIT 图标
  • Network accessline 235
    { type: 'image-group', title: '项目图片 · 点击放大,Esc 返回', items: [       { src: 'https://raw.githubusercontent.com/omdsh-dev/dsh-genui/7301d8a8ec6d5a164beff75e5a8afd20e45f9518/assets/genui-icon.svg', alt: 'GenUI 图标', caption: '本仓库 MIT 图标;外部图片仍需要网
  • Network accessline 236
    { src: 'https://raw.githubusercontent.com/omdsh-dev/dsh-genui/7301d8a8ec6d5a164beff75e5a8afd20e45f9518/assets/genui-icon.svg', alt: 'GenUI 图标', caption: '本仓库 MIT 图标;外部图片仍需要网络访问。' },
  • Network accessline 237
    { src: 'https://raw.githubusercontent.com/omdsh-dev/dsh-genui/7301d8a8ec6d5a164beff75e5a8afd20e45f9518/assets/genui-logo.svg', alt: 'GenUI 标志', caption: '本仓库 MIT 标志;放大与切图不触发模型 action。' },
  • Network accessline 247
    { name: 'README.md', type: 'file' },     ] },     { type: 'svg', title: 'svg · 独立图片预览(隔离渲染)', height: 160, code: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 120"><rect width="220" height="120" rx="10" fill="#534ab7"/><rect x="
  • Network accessline 248
    ] },     { type: 'svg', title: 'svg · 独立图片预览(隔离渲染)', height: 160, code: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 120"><rect width="220" height="120" rx="10" fill="#534ab7"/><rect x="16" y="16" width="88" height="40" rx="6" 
  • Network accessline 249
    { type: 'svg', title: 'svg · 独立图片预览(隔离渲染)', height: 160, code: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 120"><rect width="220" height="120" rx="10" fill="#534ab7"/><rect x="16" y="16" width="88" height="40" rx="6" fill="#7f

src/client/genui-runtime/diagnostics.ts

  • Executable scriptline 1
    Executable file

src/client/genui-runtime/index.ts

  • Executable scriptline 1
    Executable file

src/client/genui-runtime/limits.ts

  • Executable scriptline 1
    Executable file

src/client/genui-runtime/normalize.ts

  • Executable scriptline 1
    Executable file

src/client/genui-runtime/schema.ts

  • Executable scriptline 1
    Executable file

src/client/genui-runtime/value-utils.ts

  • Executable scriptline 1
    Executable file

src/client/guard.ts

  • Executable scriptline 1
    Executable file

src/client/i18n/en.ts

  • Executable scriptline 1
    Executable file

src/client/i18n/index.ts

  • Executable scriptline 1
    Executable file

src/client/i18n/runtime.ts

  • Executable scriptline 1
    Executable file

src/client/i18n/zh.ts

  • Executable scriptline 1
    Executable file

src/client/icons/asset-icons.ts

  • Executable scriptline 1
    Executable file

src/client/icons/icon-data-full.ts

  • Network accessline 1
    /**  * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui

src/client/icons/icon-data.ts

  • Network accessline 1
    /**  * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui

src/client/icons/icon-lazy.ts

  • Executable scriptline 1
    Executable file

src/client/icons/icon-names-full.ts

  • Network accessline 1
    /**  * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    * OpenAI Apps SDK UI icons — https://github.com/openai/apps-sdk-ui

src/client/index.tsx

  • Executable scriptline 1
    Executable file

src/client/inline.ts

  • Executable scriptline 1
    Executable file

src/client/interaction-store.ts

  • Executable scriptline 1
    Executable file

src/client/map-config.ts

  • Executable scriptline 1
    Executable file

src/client/map-core.ts

  • Executable scriptline 1
    Executable file

src/client/map-data.ts

  • Executable scriptline 1
    Executable file

src/client/map-lazy.ts

  • Executable scriptline 1
    Executable file

src/client/map-worker-ownership.ts

  • Executable scriptline 1
    Executable file

src/client/maplibre-resources.ts

  • Executable scriptline 1
    Executable file

src/client/mermaid-colors.ts

  • Executable scriptline 1
    Executable file

src/client/mermaid-core.ts

  • Executable scriptline 1
    Executable file

src/client/mermaid-lazy.ts

  • Executable scriptline 1
    Executable file

src/client/mermaid-safe.ts

  • Executable scriptline 1
    Executable file

src/client/panel-command.ts

  • Executable scriptline 1
    Executable file

src/client/panel-store.ts

  • Executable scriptline 1
    Executable file

src/client/panel.tsx

  • Executable scriptline 1
    Executable file

src/client/parse-partial.ts

  • Executable scriptline 1
    Executable file

src/client/primitive-adapter.ts

  • Executable scriptline 1
    Executable file

src/client/primitive-labels.ts

  • Executable scriptline 1
    Executable file

src/client/safe-math.ts

  • Executable scriptline 1
    Executable file

src/client/scene3d-core.ts

  • Executable scriptline 1
    Executable file

src/client/scene3d-lazy.ts

  • Executable scriptline 1
    Executable file

src/client/session-resolver.ts

  • Executable scriptline 1
    Executable file

src/client/sidechat-surface.tsx

  • Executable scriptline 1
    Executable file

src/client/source-fence.ts

  • Executable scriptline 1
    Executable file

src/client/spec.ts

  • Executable scriptline 1
    Executable file

src/client/standalone/asset-loader.ts

  • Executable scriptline 1
    Executable file

src/client/standalone/bootstrap-types.ts

  • Executable scriptline 1
    Executable file

src/client/standalone/katex-style.ts

  • Executable scriptline 1
    Executable file

src/client/standalone/primitive-adapter.tsx

  • Executable scriptline 1
    Executable file

src/client/standalone/runtime.tsx

  • Executable scriptline 1
    Executable file

src/client/streaming-shape.ts

  • Executable scriptline 1
    Executable file

src/client/submission-registry.ts

  • Executable scriptline 1
    Executable file

src/client/svg-fence.tsx

  • Executable scriptline 1
    Executable file

src/client/table-details.ts

  • Executable scriptline 1
    Executable file

src/client/table-export.ts

  • Executable scriptline 1
    Executable file

src/client/templates.ts

  • Executable scriptline 1
    Executable file

src/client/toolview.tsx

  • Executable scriptline 1
    Executable file

src/client/walk-spec.ts

  • Executable scriptline 1
    Executable file

src/css-modules.d.ts

  • Executable scriptline 1
    Executable file

src/index.ts

  • Executable scriptline 1
    Executable file

src/plugin/chart-contract.ts

  • Executable scriptline 1
    Executable file

src/plugin/dsh-go-compiler.ts

  • Executable scriptline 1
    Executable file

src/plugin/dsh-go-native.ts

  • Executable scriptline 1
    Executable file

src/plugin/dsh-go-submission.ts

  • Executable scriptline 1
    Executable file

src/plugin/dsh-go-types.ts

  • Executable scriptline 1
    Executable file

src/plugin/dsh-go-view.ts

  • Executable scriptline 1
    Executable file

src/plugin/fence-feedback.ts

  • Executable scriptline 1
    Executable file

src/plugin/genui-diagnostic.ts

  • Executable scriptline 1
    Executable file

src/plugin/index.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 51
    let pathname: string   try {     pathname = decodeURIComponent(new URL(req.url ?? '/', 'http://x').pathname)
  • Network accessline 52
    try {     pathname = decodeURIComponent(new URL(req.url ?? '/', 'http://x').pathname)   } catch {
  • Network accessline 53
    pathname = decodeURIComponent(new URL(req.url ?? '/', 'http://x').pathname)

src/plugin/inline-content-diagnostic.ts

  • Executable scriptline 1
    Executable file

src/plugin/node-shims.d.ts

  • Executable scriptline 1
    Executable file

src/plugin/tool.ts

  • Executable scriptline 1
    Executable file

src/shared/fence-language.ts

  • Executable scriptline 1
    Executable file

src/shared/fence-repair.ts

  • Executable scriptline 1
    Executable file

src/shared/fence-resolve.ts

  • Executable scriptline 1
    Executable file

src/shared/panel-merge.ts

  • Executable scriptline 1
    Executable file

tests/achievements.spec.ts

  • Executable scriptline 1
    Executable file

tests/browser/blocks-theme.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    document.head.appendChild(theme) if (params.get('palette') === 'host') {   const response = await fetch('/__host-theme.css')
  • Network accessline 15
    if (params.get('palette') === 'host') {   const response = await fetch('/__host-theme.css')   if (!response.ok) throw new Error('Host theme stylesheet unavailable')
  • Network accessline 16
    const response = await fetch('/__host-theme.css')

tests/browser/interaction-state.tsx

  • Executable scriptline 1
    Executable file

tests/browser/map.tsx

  • Executable scriptline 1
    Executable file

tests/browser/steps-marker.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 12
    document.head.appendChild(theme) if (params.get('palette') === 'host') {   const response = await fetch('/__host-theme.css')
  • Network accessline 13
    if (params.get('palette') === 'host') {   const response = await fetch('/__host-theme.css')   if (!response.ok) throw new Error('Host theme stylesheet unavailable')
  • Network accessline 14
    const response = await fetch('/__host-theme.css')

tests/browser/table-wrap.tsx

  • Executable scriptline 1
    Executable file

tests/browser/text-newlines.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence-container-stream.spec.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence-maintenance.spec.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence-ordinals.spec.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence-raf-cleanup.spec.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence-skeleton.spec.tsx

  • Executable scriptline 1
    Executable file

tests/dom-fence.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 806
    it('previews only explicitly labelled settled SVG and restores it on dispose', async () => {     const raw = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50"><rect width="50" height="20"/></svg>'
  • Network accessline 807
    const raw = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50"><rect width="50" height="20"/></svg>'

tests/dsh-go-native.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 157
    nativeIt('keeps copy, links, tabs and local quiz grading on their native paths',async () => {     const s = makeSession('local',{items:[{type:'copy',text:'Copied'},{type:'link',label:'Docs',href:'https://example.com/docs'},{type:'tabs',tabs
  • Network accessline 158
    const s = makeSession('local',{items:[{type:'copy',text:'Copied'},{type:'link',label:'Docs',href:'https://example.com/docs'},{type:'tabs',tabs:[{label:'One',items:[{type:'text',content:'First'}]},{label:'Two',items:[{type:'text',content:'Se
  • Network accessline 159
    const h = await host([s]), ids = nodeIds(h.view(s.id))     expect(await h.tap(s.id,ids[0]!)).toEqual([{type:'copy',text:'Copied'}])     expect(await h.tap(s.id,ids[1]!)).toEqual([{type:'link',url:'https://example.com/docs'}])
  • Network accessline 160
    expect(await h.tap(s.id,ids[0]!)).toEqual([{type:'copy',text:'Copied'}])     expect(await h.tap(s.id,ids[1]!)).toEqual([{type:'link',url:'https://example.com/docs'}])     await h.tap(s.id,ids[2]!,{value:'1'})
  • Network accessline 161
    expect(await h.tap(s.id,ids[1]!)).toEqual([{type:'link',url:'https://example.com/docs'}])

tests/dsh-go-view.spec.ts

  • Executable scriptline 1
    Executable file

tests/e2e-auth.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    [Credential-related source omitted]
  • Network accessline 11
    [Credential-related source omitted]
  • Network accessline 12
    [Credential-related source omitted]
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    expect(findDshWebUrl('dsh web: http://127.0.0.1:3190'))
  • Network accessline 15
    .toBe('http://127.0.0.1:3190')

tests/fence-feedback-agentloop.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 26
    stream(options: GenerateOptions): AsyncIterable<StreamChunk> {     this.requests.push(options)
  • Network accessline 27
    this.requests.push(options)

tests/fence-feedback.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-cjk-punctuation.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-json-quotes.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-trailing-junk.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-trim-root.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-valueless-keys.spec.ts

  • Executable scriptline 1
    Executable file

tests/fence-repair-wrapped-key.spec.ts

  • Executable scriptline 1
    Executable file

tests/gallery-carousel-settle.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 109
    [Credential-related source omitted]
  • Network accessline 110
    [Credential-related source omitted]
  • Network accessline 111
    [Credential-related source omitted]
  • Network accessline 112
    [Credential-related source omitted]

tests/gallery-dialog-controls.spec.ts

  • Executable scriptline 1
    Executable file

tests/gallery-input-mode.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 5
    const touch = { points: 1, hover: false, hoverNone: true, coarsePointer: true, finePointer: false } function fixture(actual = desktop) {   return { url: () => 'http://127.0.0.1:3190/', evaluate: vi.fn(async () => ({ ...actual })) }
  • Network accessline 6
    function fixture(actual = desktop) {   return { url: () => 'http://127.0.0.1:3190/', evaluate: vi.fn(async () => ({ ...actual })) } }
  • Network accessline 7
    return { url: () => 'http://127.0.0.1:3190/', evaluate: vi.fn(async () => ({ ...actual })) }
  • Network accessline 27
    })   it('rejects non-loopback and invalid profiles before evaluating', async () => {     for (const url of ['https://example.com/', 'http://localhost/', 'file:///tmp/test.html']) {
  • Network accessline 28
    it('rejects non-loopback and invalid profiles before evaluating', async () => {     for (const url of ['https://example.com/', 'http://localhost/', 'file:///tmp/test.html']) {       const page = fixture(); page.url = () => url
  • Network accessline 29
    for (const url of ['https://example.com/', 'http://localhost/', 'file:///tmp/test.html']) {
  • Network accessline 45
    [Credential-related source omitted]
  • Network accessline 46
    [Credential-related source omitted]
  • Network accessline 47
    [Credential-related source omitted]

tests/genui-artifact-assets.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    { type: 'tabs', tabs: [{ label: 'Graph', items: [{ type: 'accordion', items: [{ title: 'More', items: [nestedTable] }] }] }] },       { type: 'list', items: [{ type: 'echart', preset: 'bar' }] },       { type: 'weather', temp: 20 }, { type:
  • Network accessline 21
    { type: 'list', items: [{ type: 'echart', preset: 'bar' }] },       { type: 'weather', temp: 20 }, { type: 'button', label: 'Run', action: 'run' }, { type: 'image', src: 'https://example.com/image.png' },     ] }] }
  • Network accessline 22
    { type: 'weather', temp: 20 }, { type: 'button', label: 'Run', action: 'run' }, { type: 'image', src: 'https://example.com/image.png' },
  • Network accessline 25
    expect(result.requiredAssets).toEqual(['echarts-core', 'echarts-full'])     expect(result.customTypes).toEqual(['weather'])     expect(result.externalMedia).toEqual(['https://example.com/image.png'])
  • Network accessline 26
    expect(result.customTypes).toEqual(['weather'])     expect(result.externalMedia).toEqual(['https://example.com/image.png'])     expect(result.hasModelActions).toBe(true)
  • Network accessline 27
    expect(result.externalMedia).toEqual(['https://example.com/image.png'])

tests/genui-artifact-html.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 81
    { type: 'video', src: 'media/demo.mp4', poster: 'media/poster.png' },     ] } as GenuiSpec)     const html = createStandaloneHtmlDocument(artifact, new Map([['standalone-runtime.js', new TextEncoder().encode('runtime')]]), 'https://example.
  • Network accessline 82
    ] } as GenuiSpec)     const html = createStandaloneHtmlDocument(artifact, new Map([['standalone-runtime.js', new TextEncoder().encode('runtime')]]), 'https://example.com/reports/page')     const doc = parseHtml(html)
  • Network accessline 83
    const html = createStandaloneHtmlDocument(artifact, new Map([['standalone-runtime.js', new TextEncoder().encode('runtime')]]), 'https://example.com/reports/page')
  • Network accessline 84
    const doc = parseHtml(html)     const exported = artifactFromDocument(doc) as { spec: { items: Array<{ src: string; poster?: string }> } }     expect(exported.spec.items.map((item: { src: string }) => item.src)).toEqual(['https://example.co
  • Network accessline 85
    const exported = artifactFromDocument(doc) as { spec: { items: Array<{ src: string; poster?: string }> } }     expect(exported.spec.items.map((item: { src: string }) => item.src)).toEqual(['https://example.com/attachments/foo.png', 'https:/
  • Network accessline 86
    expect(exported.spec.items.map((item: { src: string }) => item.src)).toEqual(['https://example.com/attachments/foo.png', 'https://example.com/reports/media/demo.mp4'])
  • Network accessline 87
    expect(exported.spec.items[1].poster).toBe('https://example.com/reports/media/poster.png')
  • Network accessline 109
    const address = server.address()     if (address === null || typeof address === 'string') throw new Error('local test server did not bind to a TCP port')     setGenuiAssetBase(`http://127.0.0.1:${address.port}/`)
  • Network accessline 111
    setGenuiAssetBase(`http://127.0.0.1:${address.port}/`)

tests/genui-artifact.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-asset-loader.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-boundaries.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-chart-contract.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-checkbox-group.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-choices.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-combined-fields.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-compare.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    type: 'compare',   title: '数据卡修复前后',   before: { src: 'https://example.com/before.png', label: '改动前', caption: '清单卡被拉到等高' },
  • Network accessline 17
    title: '数据卡修复前后',   before: { src: 'https://example.com/before.png', label: '改动前', caption: '清单卡被拉到等高' },   after: { src: 'https://example.com/after.png', label: '改动后' },
  • Network accessline 18
    before: { src: 'https://example.com/before.png', label: '改动前', caption: '清单卡被拉到等高' },
  • Network accessline 19
    after: { src: 'https://example.com/after.png', label: '改动后' },
  • Network accessline 35
    const { container } = render(<CompareNode node={{       type: 'compare',       before: { src: 'https://example.com/a.png' },
  • Network accessline 36
    type: 'compare',       before: { src: 'https://example.com/a.png' },       after: { src: 'https://example.com/b.png' },
  • Network accessline 37
    before: { src: 'https://example.com/a.png' },
  • Network accessline 38
    after: { src: 'https://example.com/b.png' },
  • Network accessline 66
    type: 'compare',       before: { src: 'javascript:alert(1)' },       after: { src: 'https://example.com/b.png' },
  • Network accessline 67
    before: { src: 'javascript:alert(1)' },       after: { src: 'https://example.com/b.png' },     }} />)
  • Network accessline 68
    after: { src: 'https://example.com/b.png' },
  • Network accessline 78
    const result = processGenuiSpec(wrap({       type: 'compare',       before: { src: 'https://example.com/a.png', label: 'A' },
  • Network accessline 79
    type: 'compare',       before: { src: 'https://example.com/a.png', label: 'A' },       after: { src: 'https://example.com/b.png', label: 'B', caption: 'c' },
  • Network accessline 80
    before: { src: 'https://example.com/a.png', label: 'A' },
  • Network accessline 81
    after: { src: 'https://example.com/b.png', label: 'B', caption: 'c' },
  • Network accessline 90
    const result = processGenuiSpec(wrap({       type: 'compare',       before: { src: 'https://example.com/a.png' },
  • Network accessline 91
    type: 'compare',       before: { src: 'https://example.com/a.png' },     }))
  • Network accessline 92
    before: { src: 'https://example.com/a.png' },
  • Network accessline 99
    const result = processGenuiSpec(wrap({       type: 'compare',       before: { src: 'https://example.com/a.png' },
  • Network accessline 100
    type: 'compare',       before: { src: 'https://example.com/a.png' },       after: { src: 'https://example.com/b.png' },
  • Network accessline 101
    before: { src: 'https://example.com/a.png' },
  • Network accessline 102
    after: { src: 'https://example.com/b.png' },

tests/genui-computed-checkbox.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-computed-echart.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-computed.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-conditions.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-copy-occurrence.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-copy-preview.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 102
    it('renders markup and markdown literally, not as active elements', () => {     const text = '<img src=x onerror=alert(1)>\n<script>alert(1)</script>\n**literal** [link](https://example.com)'
  • Network accessline 103
    const text = '<img src=x onerror=alert(1)>\n<script>alert(1)</script>\n**literal** [link](https://example.com)'

tests/genui-date-picker.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-debounce-handler.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-debounce.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-diagnostic.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-diagram-guard.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 65
    it('drops non-hex / non-token theme colors', () => {     const spec = repairGenuiSpec({ items: [diagram({ theme: { accent: 'url(https://evil/x)', paper: '#123456' } })] })
  • Network accessline 66
    const spec = repairGenuiSpec({ items: [diagram({ theme: { accent: 'url(https://evil/x)', paper: '#123456' } })] })

tests/genui-diagram.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-diff-labels.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-echart-font-size.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-echart-guard.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 136
    it('filters url() CSS exfiltration from string values', () => {     const spec = repairGenuiSpec({ items: [echart({       option: { backgroundColor: 'url(https://evil.example/track?u=1)' },
  • Network accessline 137
    const spec = repairGenuiSpec({ items: [echart({       option: { backgroundColor: 'url(https://evil.example/track?u=1)' },     })] })
  • Network accessline 138
    option: { backgroundColor: 'url(https://evil.example/track?u=1)' },

tests/genui-echart.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-editor-entity-card-popover.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 67
    description: 'Mathematician',       metadata: [{ label: 'Field', value: 'Computing' }],       href: 'https://example.com/ada',
  • Network accessline 68
    metadata: [{ label: 'Field', value: 'Computing' }],       href: 'https://example.com/ada',       sourceLabel: 'Source',
  • Network accessline 69
    href: 'https://example.com/ada',

tests/genui-embed.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-empty-containers.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-enable-when.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-error-boundary.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-export-state.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-export-ui.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-fence-fallback.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-field-identity.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-field-name-regression.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 30
    ['table 只给 headers+data', '{"items":[{"type":"table","headers":["检查项","结果"],"data":[["/health","200 OK"],["首页未登录","302 → CAS"]]}]}'],     ['diff 用 items', '{"items":[{"type":"diff","items":[{"path":"app/api.py","oldText":null,"newText":"def
  • Network accessline 31
    ['diff 用 items', '{"items":[{"type":"diff","items":[{"path":"app/api.py","oldText":null,"newText":"def export_csv(): ..."}]}]}'],     ['image 用 url', '{"items":[{"type":"image","url":"https://example.com/a.png","alt":"封面"}]}'],     ['code 用
  • Network accessline 32
    ['image 用 url', '{"items":[{"type":"image","url":"https://example.com/a.png","alt":"封面"}]}'],

tests/genui-figure-primitives.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 239
    it('drops a non-literal colour instead of passing it to inline style', () => {     const spec = repairGenuiSpec({       items: [{ type: 'blocks', rows: [{ color: 'url(https://evil.example/x)', cells: ['A', 'B'] }] }],
  • Network accessline 240
    const spec = repairGenuiSpec({       items: [{ type: 'blocks', rows: [{ color: 'url(https://evil.example/x)', cells: ['A', 'B'] }] }],     })!
  • Network accessline 241
    items: [{ type: 'blocks', rows: [{ color: 'url(https://evil.example/x)', cells: ['A', 'B'] }] }],

tests/genui-file-link.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 101
    it.each([     'javascript:alert(1)', 'file:///tmp/a', 'dsh-resource://file/session/s/a', 'https://example.com',
  • Network accessline 102
    'javascript:alert(1)', 'file:///tmp/a', 'dsh-resource://file/session/s/a', 'https://example.com',
  • Network accessline 110
    it('classifies external links, file links, and invalid targets', () => {     expect(classifyLinkTarget('https://example.com')).toEqual({ type: 'external', href: 'https://example.com' })
  • Network accessline 111
    expect(classifyLinkTarget('https://example.com')).toEqual({ type: 'external', href: 'https://example.com' })
  • Network accessline 198
    it('keeps HTTP(S) and mailto anchors, disables links by mode, and shows invalid or unavailable files as text', () => {     const disabled = render(createElement(Fragment, null,       renderInline('[External](https://example.com) [File](src/
  • Network accessline 199
    const disabled = render(createElement(Fragment, null,       renderInline('[External](https://example.com) [File](src/file.ts)', false),       renderInline('[External](https://example.com) [File](src/file.ts)', 'file'),
  • Network accessline 200
    renderInline('[External](https://example.com) [File](src/file.ts)', false),
  • Network accessline 201
    renderInline('[External](https://example.com) [File](src/file.ts)', 'file'),

tests/genui-file-tree-collapse-key.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-file-tree.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-gallery-contract.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 30
    const raw = { items: [       { type: 'carousel', children: [{ type: 'card', content: [{ type: 'text', text: 'Keep me' }] }] },       { type: 'image-group', items: [{ url: '/first.png', alt: 'First' }, { link: 'https://example.test/second.pn
  • Network accessline 31
    { type: 'carousel', children: [{ type: 'card', content: [{ type: 'text', text: 'Keep me' }] }] },       { type: 'image-group', items: [{ url: '/first.png', alt: 'First' }, { link: 'https://example.test/second.png' }] },     ] }
  • Network accessline 32
    { type: 'image-group', items: [{ url: '/first.png', alt: 'First' }, { link: 'https://example.test/second.png' }] },
  • Network accessline 37
    expect(result.repaired).toEqual({ items: [       { type: 'carousel', items: [{ type: 'card', items: [{ type: 'text', content: 'Keep me' }] }] },       { type: 'image-group', items: [{ src: '/first.png', alt: 'First' }, { src: 'https://examp
  • Network accessline 38
    { type: 'carousel', items: [{ type: 'card', items: [{ type: 'text', content: 'Keep me' }] }] },       { type: 'image-group', items: [{ src: '/first.png', alt: 'First' }, { src: 'https://example.test/second.png' }] },     ] })
  • Network accessline 39
    { type: 'image-group', items: [{ src: '/first.png', alt: 'First' }, { src: 'https://example.test/second.png' }] },
  • Network accessline 74
    it.each(['/images/a.png', './a.png', '../a.png', 'a.png', 'http://example.test/a.png', 'https://example.test/a.png'])('keeps an existing safe media source %s', src => {
  • Network accessline 197
    const { analyzeGenuiPortability } = await import('../src/client/artifact/portability.ts')     const report = analyzeGenuiPortability({ items: [       { type: 'carousel', items: [{ type: 'button', label: 'Choose', action: 'choose' }, { type:
  • Network accessline 198
    const report = analyzeGenuiPortability({ items: [       { type: 'carousel', items: [{ type: 'button', label: 'Choose', action: 'choose' }, { type: 'image-group', items: [{ src: '/one.png' }, { src: 'https://example.test/two.png' }] }] },   
  • Network accessline 199
    { type: 'carousel', items: [{ type: 'button', label: 'Choose', action: 'choose' }, { type: 'image-group', items: [{ src: '/one.png' }, { src: 'https://example.test/two.png' }] }] },
  • Network accessline 200
    ] })     expect(report).toMatchObject({ hasModelActions: true, customTypes: [], requiredAssets: [], externalMedia: ['/one.png', 'https://example.test/two.png'] })   })
  • Network accessline 201
    expect(report).toMatchObject({ hasModelActions: true, customTypes: [], requiredAssets: [], externalMedia: ['/one.png', 'https://example.test/two.png'] })

tests/genui-gallery-control-scope.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-gallery-feedback.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    describe('gallery standalone media URLs', () => {   it.each([     ['/mmx-files/a.png', 'https://example.test/mmx-files/a.png'],
  • Network accessline 12
    it.each([     ['/mmx-files/a.png', 'https://example.test/mmx-files/a.png'],     ['./a.png', 'https://example.test/reports/a.png'],
  • Network accessline 13
    ['/mmx-files/a.png', 'https://example.test/mmx-files/a.png'],
  • Network accessline 14
    ['./a.png', 'https://example.test/reports/a.png'],
  • Network accessline 15
    ['../a.png', 'https://example.test/a.png'],
  • Network accessline 16
    ['a.png?size=2#image', 'https://example.test/reports/a.png?size=2#image'],
  • Network accessline 17
    ['http://cdn.example.test/a.png', 'http://cdn.example.test/a.png'],
  • Network accessline 18
    ['https://cdn.example.test/a.png', 'https://cdn.example.test/a.png'],
  • Network accessline 24
    ] })     const original = JSON.stringify(artifact)     const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/reports/page')))
  • Network accessline 25
    const original = JSON.stringify(artifact)     const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/reports/page')))     expect(exported).toMatchObject({ spec: { items: [
  • Network accessline 26
    const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/reports/page')))
  • Network accessline 28
    { type: 'carousel', items: [{ type: 'card', items: [{ type: 'image-group', items: [{ src: expected, alt: 'A', caption: 'Caption' }] }] }] },       { type: 'json', value: { src: '/keep-data.png' } },       { type: 'image', src: 'https://exam
  • Network accessline 29
    { type: 'json', value: { src: '/keep-data.png' } },       { type: 'image', src: 'https://example.test/existing.png' },     ] } })
  • Network accessline 30
    { type: 'image', src: 'https://example.test/existing.png' },
  • Network accessline 40
    ] })     const original = JSON.stringify(artifact)     const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/page')))
  • Network accessline 41
    const original = JSON.stringify(artifact)     const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/page')))     expect(exported).toMatchObject({ spec: { items: [
  • Network accessline 42
    const exported = artifactFromDocument(parseHtml(createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/page')))
  • Network accessline 43
    expect(exported).toMatchObject({ spec: { items: [       { type: 'json', value },       { type: 'image-group', items: [{ src: 'https://example.test/actual.png' }] },
  • Network accessline 44
    { type: 'json', value },       { type: 'image-group', items: [{ src: 'https://example.test/actual.png' }] },     ] } })
  • Network accessline 45
    { type: 'image-group', items: [{ src: 'https://example.test/actual.png' }] },
  • Network accessline 55
    group.items[0]!.src = src     expect(() => createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/page')).toThrow('media URL cannot be exported')
  • Network accessline 56
    expect(() => createStandaloneHtmlDocument(artifact, bundles, 'https://example.test/page')).toThrow('media URL cannot be exported')

tests/genui-gallery-render.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 215
    it('keeps links outside thumbnail buttons and rejects unsafe caption destinations', () => {     const spec = repairGenuiSpec({ items: [{ ...group, items: [{ src: '/a.png', caption: '[Source](https://example.test/source) [unsafe](javascript:
  • Network accessline 216
    const spec = repairGenuiSpec({ items: [{ ...group, items: [{ src: '/a.png', caption: '[Source](https://example.test/source) [unsafe](javascript:alert(1))' }] }] })!
  • Network accessline 219
    expect(opener.querySelector('a')).toBeNull()     expect(result.container.querySelector('a[href^="javascript:"]')).toBeNull()     expect(result.getByRole('link', { name: 'Source' }).getAttribute('href')).toBe('https://example.test/source')
  • Network accessline 220
    expect(result.container.querySelector('a[href^="javascript:"]')).toBeNull()     expect(result.getByRole('link', { name: 'Source' }).getAttribute('href')).toBe('https://example.test/source')   })
  • Network accessline 221
    expect(result.getByRole('link', { name: 'Source' }).getAttribute('href')).toBe('https://example.test/source')

tests/genui-gallery-resolve.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-gallery.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-grade-layout.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-guard.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 158
    const spec = repairGenuiSpec({ items: [       { type: 'audio', src: '/mmx-files/a.mp3', alt: 'A', loop: true },       { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', aspectRatio: '4:3', muted: true },
  • Network accessline 159
    { type: 'audio', src: '/mmx-files/a.mp3', alt: 'A', loop: true },       { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', aspectRatio: '4:3', muted: true },       { type: 'audio', src: 'javascript:alert(1)' },
  • Network accessline 160
    { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', aspectRatio: '4:3', muted: true },
  • Network accessline 165
    expect(spec?.items).toEqual([       { type: 'audio', src: '/mmx-files/a.mp3', alt: 'A', loop: true },       { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', muted: true, aspectRatio: '4:3' },
  • Network accessline 166
    { type: 'audio', src: '/mmx-files/a.mp3', alt: 'A', loop: true },       { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', muted: true, aspectRatio: '4:3' },     ])
  • Network accessline 167
    { type: 'video', src: 'https://cdn.example.com/b.mp4', poster: '/b.jpg', muted: true, aspectRatio: '4:3' },
  • Network accessline 567
    const spec = repairGenuiSpec({       items: [         { type: 'avatar', name: 'A', color: 'url(https://evil.example/track?u=1)' },
  • Network accessline 568
    items: [         { type: 'avatar', name: 'A', color: 'url(https://evil.example/track?u=1)' },         { type: 'chart', data: [{ label: 'x', value: 1, color: 'javascript:alert(1)' }] },
  • Network accessline 569
    { type: 'avatar', name: 'A', color: 'url(https://evil.example/track?u=1)' },

tests/genui-hardening.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-icon-fidelity.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-icon-generator.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-image.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    it('accepts http(s) sources and rejects local or active schemes', () => {     const safe = repairGenuiSpec({       items: [{ type: 'image', src: 'https://cdn.example.com/result.png' }],
  • Network accessline 29
    const safe = repairGenuiSpec({       items: [{ type: 'image', src: 'https://cdn.example.com/result.png' }],     })!
  • Network accessline 30
    items: [{ type: 'image', src: 'https://cdn.example.com/result.png' }],
  • Network accessline 44
    const { container: safeContainer, unmount } = render(<GenuiBlock spec={safe} />)     const safeImage = safeContainer.querySelector('img')     expect(safeImage?.getAttribute('src')).toBe('https://cdn.example.com/result.png')
  • Network accessline 45
    const safeImage = safeContainer.querySelector('img')     expect(safeImage?.getAttribute('src')).toBe('https://cdn.example.com/result.png')     expect(safeImage?.getAttribute('referrerpolicy')).toBe('no-referrer')
  • Network accessline 46
    expect(safeImage?.getAttribute('src')).toBe('https://cdn.example.com/result.png')

tests/genui-inline.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 217
    it('renders formula labels without nesting interactive links', () => {     const { container } = render(<button>{renderInline('[$x$](https://example.com)', false)}</button>)
  • Network accessline 218
    const { container } = render(<button>{renderInline('[$x$](https://example.com)', false)}</button>)
  • Network accessline 223
    it('renders code, bold, mark and an https link as elements', () => {     const out = html('跑 `npm run build`,**一定要**看 ==退出码==,见 [文档](https://example.com/a)')
  • Network accessline 224
    const out = html('跑 `npm run build`,**一定要**看 ==退出码==,见 [文档](https://example.com/a)')
  • Network accessline 226
    expect(out).toContain('<strong')     expect(out).toContain('<mark')     expect(out).toContain('href="https://example.com/a"')
  • Network accessline 227
    expect(out).toContain('<mark')     expect(out).toContain('href="https://example.com/a"')     expect(out).toContain('rel="noreferrer noopener"')
  • Network accessline 228
    expect(out).toContain('href="https://example.com/a"')

tests/genui-invalid-input.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-list-item-fields.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-map-assets.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 12
    vi.resetModules()     const loader = await import('../src/client/asset-loader.ts')     loader.setGenuiAssetBase('https://example.test/genui-assets/')
  • Network accessline 13
    const loader = await import('../src/client/asset-loader.ts')     loader.setGenuiAssetBase('https://example.test/genui-assets/')     const first = loader.loadGenuiAsset('maplibre')
  • Network accessline 14
    loader.setGenuiAssetBase('https://example.test/genui-assets/')
  • Network accessline 17
    expect(first).toBe(second)     const script = document.head.querySelector('script')!     expect(script.src).toBe('https://example.test/genui-assets/maplibre.js')
  • Network accessline 18
    const script = document.head.querySelector('script')!     expect(script.src).toBe('https://example.test/genui-assets/maplibre.js')     expect(document.head.querySelectorAll('script')).toHaveLength(1)
  • Network accessline 19
    expect(script.src).toBe('https://example.test/genui-assets/maplibre.js')
  • Network accessline 36
    expect(cspFromDocument(doc)['script-src']).toEqual(["'unsafe-inline'", 'blob:'])     expect(artifactFromDocument(doc).state?.fields).toEqual({ place: 'a' })     expect(html).not.toContain('https://example.test')
  • Network accessline 37
    expect(artifactFromDocument(doc).state?.fields).toEqual({ place: 'a' })     expect(html).not.toContain('https://example.test')     expect(artifactFromDocument(doc).spec.items[0]).not.toHaveProperty('style')
  • Network accessline 38
    expect(html).not.toContain('https://example.test')

tests/genui-map-browser-contract.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 45
    let workers = 1     expect(await recordMapCheckFailure(failures, 'embed-worker-cleanup', async () => assert.equal(workers, 0))).toBe(false)     expect(await recordMapCheckFailure(failures, 'offline-file', async () => { throw new Error('http
  • Network accessline 46
    expect(await recordMapCheckFailure(failures, 'embed-worker-cleanup', async () => assert.equal(workers, 0))).toBe(false)     expect(await recordMapCheckFailure(failures, 'offline-file', async () => { throw new Error('https://synthetic.invali
  • Network accessline 47
    [Credential-related source omitted]
  • Network accessline 168
    [Credential-related source omitted]
  • Network accessline 169
    [Credential-related source omitted]
  • Network accessline 170
    [Credential-related source omitted]

tests/genui-map-engine.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 153
    const opts = options(); mount(opts)     const unrelated: Partial<SecurityPolicyViolationEvent>[] = [{ disposition: 'report' }, { effectiveDirective: 'script-src' },       { effectiveDirective: 'img-src' }, { blockedURI: 'https://synthetic.i
  • Network accessline 154
    const unrelated: Partial<SecurityPolicyViolationEvent>[] = [{ disposition: 'report' }, { effectiveDirective: 'script-src' },       { effectiveDirective: 'img-src' }, { blockedURI: 'https://synthetic.invalid/worker.js' },       { blockedURI:
  • Network accessline 155
    { effectiveDirective: 'img-src' }, { blockedURI: 'https://synthetic.invalid/worker.js' },

tests/genui-map-guard.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    })   it('clamps bounded view settings and removes stale selection, model URLs and actions', () => {     const result = repairMap(node({ zoom: 99, height: 9999, selected: 'missing', style: 'https://evil/style', source: 'https://evil/tiles', 
  • Network accessline 42
    it('clamps bounded view settings and removes stale selection, model URLs and actions', () => {     const result = repairMap(node({ zoom: 99, height: 9999, selected: 'missing', style: 'https://evil/style', source: 'https://evil/tiles', worke
  • Network accessline 43
    const result = repairMap(node({ zoom: 99, height: 9999, selected: 'missing', style: 'https://evil/style', source: 'https://evil/tiles', workerUrl: 'https://evil/worker', action: 'send', accessToken: 'secret' }))!
  • Network accessline 44
    expect(result).toEqual({ type: 'map', locations: [location], zoom: 20, height: 640 })     expect(validateGenuiSpec({ items: [node({ zoom: -1, height: 0, selected: 'missing' })] }).ok).toBe(false)     expect(processGenuiSpec({ items: [node({
  • Network accessline 45
    expect(validateGenuiSpec({ items: [node({ zoom: -1, height: 0, selected: 'missing' })] }).ok).toBe(false)     expect(processGenuiSpec({ items: [node({ style: 'https://evil/style' })] }).warnings.some(w => w.message.includes('style'))).toBe(
  • Network accessline 46
    expect(processGenuiSpec({ items: [node({ style: 'https://evil/style' })] }).warnings.some(w => w.message.includes('style'))).toBe(true)

tests/genui-map-types.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    try {     const file = join(dir, 'consumer.ts')     writeFileSync(file, `import type { GenuiMapConfig } from ${JSON.stringify(resolve('src/client/map-config.ts'))};\nconst config: GenuiMapConfig = { style: { version: 8, sources: {}, layers:
  • Network accessline 15
    const file = join(dir, 'consumer.ts')     writeFileSync(file, `import type { GenuiMapConfig } from ${JSON.stringify(resolve('src/client/map-config.ts'))};\nconst config: GenuiMapConfig = { style: { version: 8, sources: {}, layers: [], glyph
  • Network accessline 16
    writeFileSync(file, `import type { GenuiMapConfig } from ${JSON.stringify(resolve('src/client/map-config.ts'))};\nconst config: GenuiMapConfig = { style: { version: 8, sources: {}, layers: [], glyphs: 'https://host.example/fonts/{fontstack}

tests/genui-map-worker-build.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    const workerFile = resolve('node_modules/maplibre-gl/dist/maplibre-gl-worker.mjs') const fileLocation = { href: 'file:///synthetic/map.html', protocol: 'file:', origin: 'file://' } const httpLocation = { href: 'https://synthetic.example/map
  • Network accessline 12
    const fileLocation = { href: 'file:///synthetic/map.html', protocol: 'file:', origin: 'file://' } const httpLocation = { href: 'https://synthetic.example/map.html', protocol: 'https:', origin: 'https://synthetic.example' } afterEach(() => s
  • Network accessline 13
    const httpLocation = { href: 'https://synthetic.example/map.html', protocol: 'https:', origin: 'https://synthetic.example' }
  • Network accessline 20
    const functions = code.slice(code.indexOf('function $c('), code.indexOf('const ol='))     .replaceAll('import.meta.url', JSON.stringify('https://vendor.example/maplibre-gl.mjs'))
  • Network accessline 21
    .replaceAll('import.meta.url', JSON.stringify('https://vendor.example/maplibre-gl.mjs'))
  • Network accessline 29
    static override revokeObjectURL(url: string) { calls.revoked.push(url) }     },     fetch(url: string) { calls.fetches.push(url); throw new Error('synthetic connect-src none') },
  • Network accessline 30
    },     fetch(url: string) { calls.fetches.push(url); throw new Error('synthetic connect-src none') },   }
  • Network accessline 31
    fetch(url: string) { calls.fetches.push(url); throw new Error('synthetic connect-src none') },
  • Dangerous shell operationline 33
    runInNewContext(`${functions}; result=al()`, sandbox)
  • Network accessline 45
    it('retains the original module worker path for an owned HTTP Blob', async () => {   const url = 'blob:https://synthetic.example/owned-worker'
  • Network accessline 46
    const url = 'blob:https://synthetic.example/owned-worker'
  • Network accessline 52
    it.each(['blob:null/another-worker', 'blob:null/worker#maplibre-gl-worker.cjs', 'https://vendor.example/worker.mjs'])('leaves unowned URL behavior unchanged: %s', async url => {
  • Network accessline 59
    setOwnedMapWorkerUrl(retired); setOwnedMapWorkerUrl(undefined)   expect(await factory(retired)).toEqual(await factory(retired, fileLocation, false))   const external = 'https://vendor.example/worker.mjs'
  • Network accessline 60
    expect(await factory(retired)).toEqual(await factory(retired, fileLocation, false))   const external = 'https://vendor.example/worker.mjs'   setOwnedMapWorkerUrl(external)
  • Network accessline 61
    const external = 'https://vendor.example/worker.mjs'
  • Dangerous shell operationline 94
    runInNewContext(worker, {

tests/genui-map.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-markdown.tsx

  • Executable scriptline 1
    Executable file

tests/genui-math-fields.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-media.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 34
    items: [{         type: 'video',         src: 'https://cdn.example.com/result.mp4',
  • Network accessline 35
    type: 'video',         src: 'https://cdn.example.com/result.mp4',         alt: 'AI 生成视频',
  • Network accessline 36
    src: 'https://cdn.example.com/result.mp4',
  • Network accessline 49
    expect(video).not.toBeNull()     expect(video?.getAttribute('src')).toBe('https://cdn.example.com/result.mp4')
  • Network accessline 50
    expect(video?.getAttribute('src')).toBe('https://cdn.example.com/result.mp4')

tests/genui-mermaid-colors.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-mermaid-render-state.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 97
    view.rerender(<MermaidNode node={node('graph TD\nC --> D')} />)

tests/genui-mermaid-safe.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    const LEGIT = `<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><style>#a{fill:red}</style><path d="M0 0L1 1" fill="none" stroke="#333"/><text>graph TD</text></svg>`
  • Network accessline 188
    it('handles a multi-line body with thick and dotted edges', () => {     const src = 'A ==> B\nB -.-> C\nC --> D'
  • Network accessline 189
    const src = 'A ==> B\nB -.-> C\nC --> D'

tests/genui-panel.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-partial-render.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-partial.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-plot-lock.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-plot-pan.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-plot-redraw.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-plot-view.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-plot-wheel-lock.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-quiz-guard.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-root-shape.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-schema.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 238
    expect(repairGenuiSpec({ items: [{ type: 'image', src: 'https://example.com/a.png', alt: 'A', caption: '来源:X' }] })?.items[0])
  • Network accessline 239
    .toEqual({ type: 'image', src: 'https://example.com/a.png', alt: 'A', caption: '来源:X' })
  • Network accessline 241
    expect(diagnoseUnknownGenuiFields({ items: [       { type: 'card', items: [], caption: 'x' },       { type: 'image', src: 'https://example.com/a.png', eyebrow: 'x' },
  • Network accessline 242
    { type: 'card', items: [], caption: 'x' },       { type: 'image', src: 'https://example.com/a.png', eyebrow: 'x' },     ] }).map(d => d.path)).toEqual(['items[0].caption', 'items[1].eyebrow'])
  • Network accessline 243
    { type: 'image', src: 'https://example.com/a.png', eyebrow: 'x' },

tests/genui-segmented-control.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-skill-examples.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-slider-precision.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-standalone-runtime.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-standalone-theme.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-stat-decimal-comma.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-state-key.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-submit-members.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-svg.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    const code = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100"><rect width="200" height="100" fill="#346"/><text x="10" y="50">模块图</text></svg>'
  • Network accessline 70
    it('rejects non-SVG documents and doctypes before image loading', () => {     for (const source of ['<html xmlns="http://www.w3.org/1999/xhtml"/>', '<!DOCTYPE svg><svg xmlns="http://www.w3.org/2000/svg"/>']) {
  • Network accessline 71
    for (const source of ['<html xmlns="http://www.w3.org/1999/xhtml"/>', '<!DOCTYPE svg><svg xmlns="http://www.w3.org/2000/svg"/>']) {
  • Network accessline 98
    const src = getByRole('img', { name: '模块图' }).getAttribute('src') ?? ''     expect(src.startsWith('data:image/svg+xml;charset=utf-8,')).toBe(true)     expect(decodeURIComponent(src)).toContain('xmlns="http://www.w3.org/2000/svg"')
  • Network accessline 99
    expect(src.startsWith('data:image/svg+xml;charset=utf-8,')).toBe(true)     expect(decodeURIComponent(src)).toContain('xmlns="http://www.w3.org/2000/svg"')     expect(container.querySelector('svg text')).toBeNull()
  • Network accessline 100
    expect(decodeURIComponent(src)).toContain('xmlns="http://www.w3.org/2000/svg"')
  • Network accessline 104
    it('still rejects a root with an explicitly foreign namespace', () => {     const { queryByRole, getByRole } = renderSvg('<svg xmlns="http://www.w3.org/1999/xhtml"><text>hi</text></svg>')
  • Network accessline 105
    const { queryByRole, getByRole } = renderSvg('<svg xmlns="http://www.w3.org/1999/xhtml"><text>hi</text></svg>')

tests/genui-table-column-name.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-table-external-links.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 29
    describe('table external source links', () => {   it.each(['http://example.com/source', 'https://example.com/source?q=1#section', 'mailto:editor@example.com'])
  • Network accessline 30
    it.each(['http://example.com/source', 'https://example.com/source?q=1#section', 'mailto:editor@example.com'])
  • Network accessline 44
    it('renders implicit text and automatically styled delta links', () => {     const view = mount({ columns: ['Source', 'Change'], rows: [       ['[Article](https://example.com/article)', '-2 [Evidence](https://example.com/evidence)'],
  • Network accessline 45
    const view = mount({ columns: ['Source', 'Change'], rows: [       ['[Article](https://example.com/article)', '-2 [Evidence](https://example.com/evidence)'],     ] })
  • Network accessline 46
    ['[Article](https://example.com/article)', '-2 [Evidence](https://example.com/evidence)'],
  • Network accessline 47
    ] })     expect(view.getByRole('link', { name: 'Article' }).getAttribute('href')).toBe('https://example.com/article')     expect(view.getByRole('link', { name: 'Evidence' }).closest('[class*="tdDeltaDown"]')).not.toBeNull()
  • Network accessline 48
    expect(view.getByRole('link', { name: 'Article' }).getAttribute('href')).toBe('https://example.com/article')
  • Network accessline 63
    it.each(['anchor', 'descendant'])('does not collapse a group when its %s is clicked', target => {     const view = mount({ columns: ['Source', 'Count'], types: ['group', 'num'], rows: [       ['[**Group**](https://example.com/group)', ''], 
  • Network accessline 64
    const view = mount({ columns: ['Source', 'Count'], types: ['group', 'num'], rows: [       ['[**Group**](https://example.com/group)', ''], ['Article', 2],     ] })
  • Network accessline 65
    ['[**Group**](https://example.com/group)', ''], ['Article', 2],
  • Network accessline 83
    it.each(['anchor', 'descendant'])('does not toggle details when their first-cell %s is clicked', target => {     const view = mount({ columns: ['Source', 'Count'], rows: [       ['[**Article**](https://example.com/article)', 2],
  • Network accessline 84
    const view = mount({ columns: ['Source', 'Count'], rows: [       ['[**Article**](https://example.com/article)', 2],     ], details: [[{ type: 'text', content: 'Actual detail' }]] })
  • Network accessline 85
    ['[**Article**](https://example.com/article)', 2],
  • Network accessline 107
    it('leaves headers and specialized numeric cells link-free', () => {     const value = '[Source](https://example.com/source)'
  • Network accessline 108
    const value = '[Source](https://example.com/source)'
  • Network accessline 117
    it('does not expand the global false or file-only inline modes', () => {     const value = '[External](https://example.com/source) [File](src/main.ts)'
  • Network accessline 118
    const value = '[External](https://example.com/source) [File](src/main.ts)'
  • Network accessline 125
    const columns = ['Story', 'Count', 'Source']     const rows = [       ['Alpha', 30, '[Alpha source](https://example.com/alpha)'],
  • Network accessline 126
    const rows = [       ['Alpha', 30, '[Alpha source](https://example.com/alpha)'],       ['Beta', 10, '[Beta source](https://example.com/beta)'],
  • Network accessline 127
    ['Alpha', 30, '[Alpha source](https://example.com/alpha)'],
  • Network accessline 128
    ['Beta', 10, '[Beta source](https://example.com/beta)'],
  • Network accessline 129
    ['Gamma', 20, '[Gamma source](https://example.com/gamma)'],
  • Network accessline 142
    fireEvent.change(view.getByRole('textbox'), { target: { value: 'example.com/beta' } })     expect(names()).toEqual(['Beta'])     expect(view.getByRole('link', { name: 'Beta source' }).getAttribute('href')).toBe('https://example.com/beta')
  • Network accessline 143
    expect(names()).toEqual(['Beta'])     expect(view.getByRole('link', { name: 'Beta source' }).getAttribute('href')).toBe('https://example.com/beta')     expect([...view.container.querySelectorAll('tfoot')].at(-1)?.textContent).toContain('10'
  • Network accessline 144
    expect(view.getByRole('link', { name: 'Beta source' }).getAttribute('href')).toBe('https://example.com/beta')

tests/genui-table-filter-details.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-table-multiline-cell.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-table-scroll.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-table-smart-sort.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-table-wrap.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-tabs-active-index.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-teach.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-tetris-table.spec.ts

  • Executable scriptline 1
    Executable file

tests/genui-toolview.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v11.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v12.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v25.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v26.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v27.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui-v28.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 75
    it('renders a real anchor for a whitelisted href (target + rel)', () => {     const { container } = renderBlock({       items: [{ type: 'link', label: '文档', href: 'https://example.com/docs' }],
  • Network accessline 76
    const { container } = renderBlock({       items: [{ type: 'link', label: '文档', href: 'https://example.com/docs' }],     })
  • Network accessline 77
    items: [{ type: 'link', label: '文档', href: 'https://example.com/docs' }],
  • Network accessline 79
    const a = container.querySelector('a[class*="link"]')     expect(a).not.toBeNull()     expect(a!.getAttribute('href')).toBe('https://example.com/docs')
  • Network accessline 80
    expect(a).not.toBeNull()     expect(a!.getAttribute('href')).toBe('https://example.com/docs')     expect(a!.getAttribute('target')).toBe('_blank')
  • Network accessline 81
    expect(a!.getAttribute('href')).toBe('https://example.com/docs')

tests/genui-v29.spec.tsx

  • Executable scriptline 1
    Executable file

tests/genui.spec.tsx

  • Executable scriptline 1
    Executable file

tests/helpers/standalone.ts

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 19
    atob(encoded),

tests/host-dependency-policy.spec.ts

  • Executable scriptline 1
    Executable file

tests/i18n.spec.tsx

  • Executable scriptline 1
    Executable file

tests/input-color.spec.tsx

  • Executable scriptline 1
    Executable file

tests/input-durable-value-priority.spec.tsx

  • Executable scriptline 1
    Executable file

tests/install-script.spec.ts

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 176
    const { status, stdout } = e.run('web; rm -rf /tmp/x')

tests/markdown-labels.tsx

  • Executable scriptline 1
    Executable file

tests/panel-append.spec.tsx

  • Executable scriptline 1
    Executable file

tests/panel-command.spec.ts

  • Executable scriptline 1
    Executable file

tests/panel-computed-state.spec.tsx

  • Executable scriptline 1
    Executable file

tests/peer-range.spec.ts

  • Executable scriptline 1
    Executable file

tests/plot-loop.spec.tsx

  • Executable scriptline 1
    Executable file

tests/plugin-genui.spec.ts

  • Executable scriptline 1
    Executable file

tests/plugin-tool.spec.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 380
    [{ type: 'code', content: 'x = 1' }, { type: 'code', code: 'x = 1' }],     [{ type: 'copy', content: 'x = 1' }, { type: 'copy', text: 'x = 1' }],     [{ type: 'image', url: 'https://example.com/a.png' }, { type: 'image', src: 'https://examp
  • Network accessline 381
    [{ type: 'copy', content: 'x = 1' }, { type: 'copy', text: 'x = 1' }],     [{ type: 'image', url: 'https://example.com/a.png' }, { type: 'image', src: 'https://example.com/a.png' }],   ])('adopts the model field name for %j instead of dropp
  • Network accessline 382
    [{ type: 'image', url: 'https://example.com/a.png' }, { type: 'image', src: 'https://example.com/a.png' }],

tests/quiz-id-reset.spec.tsx

  • Executable scriptline 1
    Executable file

tests/safe-math-tokenizer.spec.ts

  • Executable scriptline 1
    Executable file

tests/scene3d-events.spec.tsx

  • Executable scriptline 1
    Executable file

tests/session-resolver.spec.ts

  • Executable scriptline 1
    Executable file

tests/setup.ts

  • Executable scriptline 1
    Executable file

tests/sidechat-surface.spec.tsx

  • Executable scriptline 1
    Executable file

tests/skill-md.spec.ts

  • Executable scriptline 1
    Executable file

tests/source-fence.spec.ts

  • Executable scriptline 1
    Executable file

tests/streaming-shape.spec.ts

  • Executable scriptline 1
    Executable file

tests/submission-registry.spec.ts

  • Executable scriptline 1
    Executable file

tests/svg-fence.spec.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 5
    const raw = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50"><text x="2" y="20">模块图</text></svg>'

tests/template-drawer.spec.tsx

  • Executable scriptline 1
    Executable file

tests/templates.spec.ts

  • Executable scriptline 1
    Executable file

tests/textarea-durable-value-priority.spec.tsx

  • Executable scriptline 1
    Executable file

tsdown.config.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 87
    * Local, version-locked packaging adaptation, not a public MapLibre API.  * Chromium cannot start the module worker from file://. Its file origin also  * sends a .cjs Blob through vendor fetch(), forbidden by our offline CSP.
  • Network accessline 88
    * Chromium cannot start the module worker from file://. Its file origin also  * sends a .cjs Blob through vendor fetch(), forbidden by our offline CSP.  * Only our exact live Blob takes the direct classic Worker path on file://;
  • Network accessline 89
    * sends a .cjs Blob through vendor fetch(), forbidden by our offline CSP.
  • Network accessline 216
    if (dependency.type !== 'url' || dependency.url.startsWith('data:') || dependency.url.startsWith('#')) continue         const fontPath = resolvePath(dirname(cssPath), dependency.url)         const extension = extname(new URL(dependency.url,
  • Network accessline 217
    const fontPath = resolvePath(dirname(cssPath), dependency.url)         const extension = extname(new URL(dependency.url, 'https://genui.invalid/').pathname)         if (extension !== '.woff2') throw new Error(`unsupported KaTeX asset: ${dep
  • Network accessline 218
    const extension = extname(new URL(dependency.url, 'https://genui.invalid/').pathname)
  • Dangerous shell operationline 335
    // Cleanup happens in the build script (`rm -rf lib` before tsc): tsdown

vitest.config.ts

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 2 facts
Signal confidence: 498 facts

and 448 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Add this badge to your README

It updates every night and links to this page.

omdsh-dev/dsh-genui: #994 on hotskills, 881 stars

[![omdsh-dev/dsh-genui on hotskills](https://hotskills.dev/badge/omdsh-dev-dsh-genui.svg)](https://hotskills.dev/skill/omdsh-dev-dsh-genui/)