#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.
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.
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>/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
Individual skills in this repository
- genui
/
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 tokensAlways available to the agent
SKILL.md
18,385 tokensWhen the skill is activated
Reference documents
104,571 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 围栏书写铁律(先读这一节)
- 组件词汇(只允许这些 type)
- 什么时候用:内容类型 → 组件映射
- 行内富文本(文字类回答的底座)
- 回答级版式:默认无卡,焦点唯一
- 范例:示范「判断」,不要照抄组件序列
- 版式参考:几个见过的好形状(不是起点,也不是菜单)
- 使用规则
Scripts executed separately
package.jsonscripts/build-anthology-page.mtsscripts/check-blocks-theme-browser.mjsscripts/check-content-font-size-browser.mjsscripts/check-host-api.mjsscripts/check-interaction-state-browser.mjsscripts/check-map-assets.mjsscripts/check-mermaid-browser.mjsscripts/check-standalone.mjsscripts/check-steps-marker-browser.mjsscripts/check-table-wrap-browser.mjsscripts/check-text-newlines-browser.mjsscripts/clean.mjsscripts/computed-browser-checks.mjsscripts/e2e-gallery-host.mjsscripts/e2e-map-host.mjsscripts/e2e-visual.mtsscripts/e2e.mjsscripts/fixtures/gallery-host.mjsscripts/fixtures/map-host.mjsscripts/gallery-browser-checks.mjsscripts/gallery-fixed-contexts.mjsscripts/gallery-input-mode.mjsscripts/gallery-touch-checks.mjsscripts/generate-icon-data.mjsscripts/genui-usage-audit.mjsscripts/host-dependency-policy.mjsscripts/install.shscripts/map-acceptance/browser-checks.mjsscripts/map-acceptance/contract.mjsscripts/map-acceptance/run.mjsscripts/prepack.mjsscripts/prepare-published-host.mjsscripts/sidechat-acceptance/ci.mjsscripts/sidechat-acceptance/fixture/lib/index.mjsscripts/sidechat-acceptance/fixture/lib/snapshot-diagnostics.mjsscripts/sidechat-acceptance/fixture/lib/spec.mjsscripts/sidechat-acceptance/fixture/lib/ui-away.mjsscripts/sidechat-acceptance/scripts/exact-pack.mjsscripts/sidechat-acceptance/scripts/owned-process.mjsscripts/sidechat-acceptance/scripts/run-sidechat-acceptance.mjsscripts/sidechat-acceptance/scripts/sidechat-away-navigation.mjsscripts/sidechat-acceptance/scripts/sidechat-backend-oracle.mjsscripts/sidechat-acceptance/scripts/sidechat-browser-checks.mjsscripts/sidechat-acceptance/scripts/sidechat-browser-contracts.mjsscripts/sidechat-acceptance/scripts/sidechat-browser-locators.mjsscripts/sidechat-acceptance/scripts/sidechat-browser-transport.mjsscripts/sidechat-acceptance/scripts/sidechat-host-contract.mjsscripts/sidechat-acceptance/scripts/sidechat-onboarding.mjsscripts/sidechat-acceptance/tests/ci.test.mjsscripts/sidechat-acceptance/tests/exact-pack.test.mjsscripts/sidechat-acceptance/tests/host-resolution.test.mjsscripts/sidechat-acceptance/tests/independent-review.test.mjsscripts/sidechat-acceptance/tests/owned-process.test.mjsscripts/sidechat-acceptance/tests/owned-root.test.mjsscripts/sidechat-acceptance/tests/sidechat-away-navigation.test.mjsscripts/sidechat-acceptance/tests/sidechat-backend-oracle.test.mjsscripts/sidechat-acceptance/tests/sidechat-browser-contracts.test.mjsscripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjsscripts/sidechat-acceptance/tests/sidechat-onboarding.test.mjsscripts/sidechat-acceptance/tests/sidechat-system-head.test.mjsscripts/sidechat-acceptance/tests/snapshot-diagnostics.test.mjsscripts/sidechat-acceptance/tests/transport-review.test.mjsscripts/verify-pack.mjssite/assets/index-CbA0uR5g.jssrc/client/EChartNode.tsxsrc/client/ErrorBoundary.tsxsrc/client/GenuiBlock.tsxsrc/client/PlotBlock.tsxsrc/client/TemplateDrawer.tsxsrc/client/achievement-store.tssrc/client/achievement-toast.tsxsrc/client/achievements.tssrc/client/action-context.tssrc/client/artifact/ExportableGenuiBlock.tsxsrc/client/artifact/create.tssrc/client/artifact/download.tssrc/client/artifact/html.tssrc/client/artifact/index.tssrc/client/artifact/json.tssrc/client/artifact/parse.tssrc/client/artifact/portability.tssrc/client/artifact/standalone-theme.tssrc/client/artifact/types.tssrc/client/asset-echarts-core.tssrc/client/asset-echarts.tssrc/client/asset-loader.tssrc/client/asset-maplibre.tssrc/client/asset-mermaid.tssrc/client/asset-three.tssrc/client/blocks/advanced.tsxsrc/client/blocks/basic.tsxsrc/client/blocks/blocks.tsxsrc/client/blocks/carousel.tsxsrc/client/blocks/charts.tsxsrc/client/blocks/checkbox.tsxsrc/client/blocks/choices.tsxsrc/client/blocks/compare.tsxsrc/client/blocks/date-picker.tsxsrc/client/blocks/diagram/geometry.tssrc/client/blocks/diagram/index.tsxsrc/client/blocks/diagram/layout.tssrc/client/blocks/diagram/theme.tssrc/client/blocks/editor.tsxsrc/client/blocks/entity-card.tsxsrc/client/blocks/forms.tsxsrc/client/blocks/icon.tsxsrc/client/blocks/image-group.tsxsrc/client/blocks/image.tsxsrc/client/blocks/map.tsxsrc/client/blocks/popover.tsxsrc/client/blocks/render-node.tsxsrc/client/blocks/segmented-control.tsxsrc/client/blocks/skeleton.tsxsrc/client/blocks/state.tssrc/client/blocks/svg.tsxsrc/client/computed.tssrc/client/conditions.tssrc/client/copy-preview-state.tssrc/client/date-picker.tssrc/client/dom-fence.tsxsrc/client/echarts-engine.tssrc/client/echarts-lazy.tssrc/client/embed.tssrc/client/fence-render.tsxsrc/client/file-address.tssrc/client/file-link-context.tsxsrc/client/file-link.tssrc/client/gallery.tssrc/client/genui-runtime/diagnostics.tssrc/client/genui-runtime/index.tssrc/client/genui-runtime/limits.tssrc/client/genui-runtime/normalize.tssrc/client/genui-runtime/schema.tssrc/client/genui-runtime/value-utils.tssrc/client/guard.tssrc/client/i18n/en.tssrc/client/i18n/index.tssrc/client/i18n/runtime.tssrc/client/i18n/zh.tssrc/client/icons/asset-icons.tssrc/client/icons/icon-data-full.tssrc/client/icons/icon-data.tssrc/client/icons/icon-lazy.tssrc/client/icons/icon-names-full.tssrc/client/index.tsxsrc/client/inline.tssrc/client/interaction-store.tssrc/client/map-config.tssrc/client/map-core.tssrc/client/map-data.tssrc/client/map-lazy.tssrc/client/map-worker-ownership.tssrc/client/maplibre-resources.tssrc/client/mermaid-colors.tssrc/client/mermaid-core.tssrc/client/mermaid-lazy.tssrc/client/mermaid-safe.tssrc/client/panel-command.tssrc/client/panel-store.tssrc/client/panel.tsxsrc/client/parse-partial.tssrc/client/primitive-adapter.tssrc/client/primitive-labels.tssrc/client/safe-math.tssrc/client/scene3d-core.tssrc/client/scene3d-lazy.tssrc/client/session-resolver.tssrc/client/sidechat-surface.tsxsrc/client/source-fence.tssrc/client/spec.tssrc/client/standalone/asset-loader.tssrc/client/standalone/bootstrap-types.tssrc/client/standalone/katex-style.tssrc/client/standalone/primitive-adapter.tsxsrc/client/standalone/runtime.tsxsrc/client/streaming-shape.tssrc/client/submission-registry.tssrc/client/svg-fence.tsxsrc/client/table-details.tssrc/client/table-export.tssrc/client/templates.tssrc/client/toolview.tsxsrc/client/walk-spec.tssrc/css-modules.d.tssrc/index.tssrc/plugin/chart-contract.tssrc/plugin/dsh-go-compiler.tssrc/plugin/dsh-go-native.tssrc/plugin/dsh-go-submission.tssrc/plugin/dsh-go-types.tssrc/plugin/dsh-go-view.tssrc/plugin/fence-feedback.tssrc/plugin/genui-diagnostic.tssrc/plugin/index.tssrc/plugin/inline-content-diagnostic.tssrc/plugin/node-shims.d.tssrc/plugin/tool.tssrc/shared/fence-language.tssrc/shared/fence-repair.tssrc/shared/fence-resolve.tssrc/shared/panel-merge.tstests/achievements.spec.tstests/browser/blocks-theme.tsxtests/browser/interaction-state.tsxtests/browser/map.tsxtests/browser/steps-marker.tsxtests/browser/table-wrap.tsxtests/browser/text-newlines.tsxtests/dom-fence-container-stream.spec.tsxtests/dom-fence-maintenance.spec.tsxtests/dom-fence-ordinals.spec.tsxtests/dom-fence-raf-cleanup.spec.tsxtests/dom-fence-skeleton.spec.tsxtests/dom-fence.spec.tsxtests/dsh-go-native.spec.tstests/dsh-go-view.spec.tstests/e2e-auth.spec.tstests/fence-feedback-agentloop.spec.tstests/fence-feedback.spec.tstests/fence-repair-cjk-punctuation.spec.tstests/fence-repair-json-quotes.spec.tstests/fence-repair-trailing-junk.spec.tstests/fence-repair-trim-root.spec.tstests/fence-repair-valueless-keys.spec.tstests/fence-repair-wrapped-key.spec.tstests/gallery-carousel-settle.spec.tstests/gallery-dialog-controls.spec.tstests/gallery-input-mode.spec.tstests/genui-artifact-assets.spec.tstests/genui-artifact-html.spec.tstests/genui-artifact.spec.tstests/genui-asset-loader.spec.tstests/genui-boundaries.spec.tsxtests/genui-chart-contract.spec.tsxtests/genui-checkbox-group.spec.tsxtests/genui-choices.spec.tsxtests/genui-combined-fields.spec.tsxtests/genui-compare.spec.tsxtests/genui-computed-checkbox.spec.tsxtests/genui-computed-echart.spec.tsxtests/genui-computed.spec.tsxtests/genui-conditions.spec.tsxtests/genui-copy-occurrence.spec.tsxtests/genui-copy-preview.spec.tsxtests/genui-date-picker.spec.tsxtests/genui-debounce-handler.spec.tsxtests/genui-debounce.spec.tsxtests/genui-diagnostic.spec.tstests/genui-diagram-guard.spec.tstests/genui-diagram.spec.tsxtests/genui-diff-labels.spec.tsxtests/genui-echart-font-size.spec.tsxtests/genui-echart-guard.spec.tstests/genui-echart.spec.tsxtests/genui-editor-entity-card-popover.spec.tsxtests/genui-embed.spec.tsxtests/genui-empty-containers.spec.tsxtests/genui-enable-when.spec.tsxtests/genui-error-boundary.spec.tsxtests/genui-export-state.spec.tsxtests/genui-export-ui.spec.tsxtests/genui-fence-fallback.spec.tsxtests/genui-field-identity.spec.tsxtests/genui-field-name-regression.spec.tstests/genui-figure-primitives.spec.tsxtests/genui-file-link.spec.tsxtests/genui-file-tree-collapse-key.spec.tsxtests/genui-file-tree.spec.tsxtests/genui-gallery-contract.spec.tstests/genui-gallery-control-scope.spec.tsxtests/genui-gallery-feedback.spec.tstests/genui-gallery-render.spec.tsxtests/genui-gallery-resolve.spec.tsxtests/genui-gallery.spec.tsxtests/genui-grade-layout.spec.tstests/genui-guard.spec.tstests/genui-hardening.spec.tsxtests/genui-icon-fidelity.spec.tsxtests/genui-icon-generator.spec.tstests/genui-image.spec.tsxtests/genui-inline.spec.tsxtests/genui-invalid-input.spec.tsxtests/genui-list-item-fields.spec.tstests/genui-map-assets.spec.tstests/genui-map-browser-contract.spec.tstests/genui-map-engine.spec.tstests/genui-map-guard.spec.tstests/genui-map-types.spec.tstests/genui-map-worker-build.spec.tstests/genui-map.spec.tsxtests/genui-markdown.tsxtests/genui-math-fields.spec.tsxtests/genui-media.spec.tsxtests/genui-mermaid-colors.spec.tstests/genui-mermaid-render-state.spec.tsxtests/genui-mermaid-safe.spec.tstests/genui-panel.spec.tsxtests/genui-partial-render.spec.tstests/genui-partial.spec.tsxtests/genui-plot-lock.spec.tsxtests/genui-plot-pan.spec.tsxtests/genui-plot-redraw.spec.tsxtests/genui-plot-view.spec.tsxtests/genui-plot-wheel-lock.spec.tsxtests/genui-quiz-guard.spec.tstests/genui-root-shape.spec.tstests/genui-schema.spec.tstests/genui-segmented-control.spec.tsxtests/genui-skill-examples.spec.tstests/genui-slider-precision.spec.tsxtests/genui-standalone-runtime.spec.tsxtests/genui-standalone-theme.spec.tstests/genui-stat-decimal-comma.spec.tsxtests/genui-state-key.spec.tsxtests/genui-submit-members.spec.tsxtests/genui-svg.spec.tsxtests/genui-table-column-name.spec.tsxtests/genui-table-external-links.spec.tsxtests/genui-table-filter-details.spec.tsxtests/genui-table-multiline-cell.spec.tsxtests/genui-table-scroll.spec.tsxtests/genui-table-smart-sort.spec.tsxtests/genui-table-wrap.spec.tsxtests/genui-tabs-active-index.spec.tsxtests/genui-teach.spec.tsxtests/genui-tetris-table.spec.tstests/genui-toolview.spec.tsxtests/genui-v11.spec.tsxtests/genui-v12.spec.tsxtests/genui-v25.spec.tsxtests/genui-v26.spec.tsxtests/genui-v27.spec.tsxtests/genui-v28.spec.tsxtests/genui-v29.spec.tsxtests/genui.spec.tsxtests/helpers/standalone.tstests/host-dependency-policy.spec.tstests/i18n.spec.tsxtests/input-color.spec.tsxtests/input-durable-value-priority.spec.tsxtests/install-script.spec.tstests/markdown-labels.tsxtests/panel-append.spec.tsxtests/panel-command.spec.tstests/panel-computed-state.spec.tsxtests/peer-range.spec.tstests/plot-loop.spec.tsxtests/plugin-genui.spec.tstests/plugin-tool.spec.tstests/quiz-id-reset.spec.tsxtests/safe-math-tokenizer.spec.tstests/scene3d-events.spec.tsxtests/session-resolver.spec.tstests/setup.tstests/sidechat-surface.spec.tsxtests/skill-md.spec.tstests/source-fence.spec.tstests/streaming-shape.spec.tstests/submission-registry.spec.tstests/svg-fence.spec.tsxtests/template-drawer.spec.tsxtests/templates.spec.tstests/textarea-durable-value-priority.spec.tsxtsdown.config.tsvitest.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 bytesAGENTS.mddoc2,520 bytesCHANGELOG.mddoc99,728 bytesICON-NAMES.mddoc9,809 bytesLICENSEasset1,069 bytesREADME.mddoc23,555 bytesREADME.zh-CN.mddoc22,224 bytesSKILL.mdcore62,440 bytesSKILL.mdcore62,440 bytesSKILL.mdcore62,440 bytesTHIRD_PARTY_NOTICES.mddoc8,588 bytesassets/demo-thumb.pngasset161,552 bytesassets/demo.mp4asset2,608,997 bytesassets/genui-icon.svgasset982 bytesassets/genui-logo.svgasset1,461 bytesassets/showcase-panel.pngasset90,117 bytesassets/showcase-plot.pngasset71,286 bytesassets/showcase.pngasset84,415 bytescordis.patch.ymlasset473 bytesdemo-prompts.mddoc6,797 bytesdocs/copy-preview.mddoc3,023 bytesdocs/diagram-component-design.mddoc11,343 bytesdocs/dsh-go.mddoc5,791 bytesdocs/gallery.mddoc5,350 bytesdocs/hub-registration.mddoc1,707 bytesdocs/map.mddoc9,776 bytesdocs/plans/2026-08-11-dsh-genui-hardening-execution-plan.mddoc52,583 bytesdocs/plans/2026-08-12-dsh-genui-design-optimization.mddoc36,185 bytesdocs/plans/2026-09-08-genui-upgrade-research.mddoc26,608 bytesdocs/plans/2026-10-13-dsh-genui-anthological-aesthetics.mddoc22,875 bytesdocs/screenshots/achievements.pngasset96,894 bytesdocs/screenshots/issue-159-light-surface.pngasset190,339 bytesdocs/screenshots/issue-183-wordcloud-svg.pngasset135,752 bytesdocs/screenshots/template-center.pngasset119,250 bytesdocs/sidechat-surfaces.mddoc4,792 bytespackage.jsonruns10,505 bytespnpm-lock.yamlasset275,551 bytespnpm-workspace.yamlasset3,686 bytesscripts/build-anthology-page.mtsruns1,826 bytesscripts/check-blocks-theme-browser.mjsruns9,880 bytesscripts/check-content-font-size-browser.mjsruns1,993 bytesscripts/check-host-api.mjsruns5,102 bytesscripts/check-interaction-state-browser.mjsruns9,260 bytesscripts/check-map-assets.mjsruns1,269 bytesscripts/check-mermaid-browser.mjsruns22,547 bytesscripts/check-standalone.mjsruns1,159 bytesscripts/check-steps-marker-browser.mjsruns9,652 bytesscripts/check-table-wrap-browser.mjsruns8,962 bytesscripts/check-text-newlines-browser.mjsruns4,183 bytesscripts/clean.mjsruns611 bytesscripts/computed-browser-checks.mjsruns8,640 bytesscripts/e2e-gallery-host.mjsruns13,440 bytesscripts/e2e-map-host.mjsruns10,477 bytesscripts/e2e-visual.mtsruns37,510 bytesscripts/e2e.mjsruns44,458 bytesscripts/fixtures/gallery-host.mjsruns3,472 bytesscripts/fixtures/map-host.mjsruns3,569 bytesscripts/gallery-browser-checks.mjsruns34,061 bytesscripts/gallery-fixed-contexts.mjsruns7,894 bytesscripts/gallery-input-mode.mjsruns2,754 bytesscripts/gallery-touch-checks.mjsruns7,987 bytesscripts/generate-icon-data.mjsruns9,528 bytesscripts/genui-usage-audit.mjsruns10,345 bytesscripts/host-dependency-policy.mjsruns733 bytesscripts/install.shruns6,747 bytesscripts/map-acceptance/README.mddoc3,862 bytesscripts/map-acceptance/browser-checks.mjsruns8,377 bytesscripts/map-acceptance/contract.mjsruns4,906 bytesscripts/map-acceptance/run.mjsruns20,388 bytesscripts/prepack.mjsruns911 bytesscripts/prepare-published-host.mjsruns2,474 bytesscripts/sidechat-acceptance/README.mddoc5,035 bytesscripts/sidechat-acceptance/ci.mjsruns8,336 bytesscripts/sidechat-acceptance/fixture/lib/index.mjsruns18,841 bytesscripts/sidechat-acceptance/fixture/lib/snapshot-diagnostics.mjsruns3,926 bytesscripts/sidechat-acceptance/fixture/lib/spec.mjsruns1,467 bytesscripts/sidechat-acceptance/fixture/lib/ui-away.mjsruns1,634 bytesscripts/sidechat-acceptance/fixture/replay/first-child.v4.jsonlasset2,193 bytesscripts/sidechat-acceptance/fixture/replay/second-child.v4.jsonlasset2,193 bytesscripts/sidechat-acceptance/scripts/exact-pack.mjsruns3,436 bytesscripts/sidechat-acceptance/scripts/owned-process.mjsruns4,328 bytesscripts/sidechat-acceptance/scripts/run-sidechat-acceptance.mjsruns18,520 bytesscripts/sidechat-acceptance/scripts/sidechat-away-navigation.mjsruns4,008 bytesscripts/sidechat-acceptance/scripts/sidechat-backend-oracle.mjsruns9,553 bytesscripts/sidechat-acceptance/scripts/sidechat-browser-checks.mjsruns17,339 bytesscripts/sidechat-acceptance/scripts/sidechat-browser-contracts.mjsruns8,207 bytesscripts/sidechat-acceptance/scripts/sidechat-browser-locators.mjsruns796 bytesscripts/sidechat-acceptance/scripts/sidechat-browser-transport.mjsruns2,405 bytesscripts/sidechat-acceptance/scripts/sidechat-host-contract.mjsruns7,586 bytesscripts/sidechat-acceptance/scripts/sidechat-onboarding.mjsruns11,903 bytesscripts/sidechat-acceptance/tests/ci.test.mjsruns19,775 bytesscripts/sidechat-acceptance/tests/exact-pack.test.mjsruns1,511 bytesscripts/sidechat-acceptance/tests/host-resolution.test.mjsruns4,382 bytesscripts/sidechat-acceptance/tests/independent-review.test.mjsruns6,879 bytesscripts/sidechat-acceptance/tests/owned-process.test.mjsruns1,995 bytesscripts/sidechat-acceptance/tests/owned-root.test.mjsruns1,313 bytesscripts/sidechat-acceptance/tests/sidechat-away-navigation.test.mjsruns9,092 bytesscripts/sidechat-acceptance/tests/sidechat-backend-oracle.test.mjsruns9,200 bytesscripts/sidechat-acceptance/tests/sidechat-browser-contracts.test.mjsruns7,879 bytesscripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjsruns5,693 bytesscripts/sidechat-acceptance/tests/sidechat-onboarding.test.mjsruns10,883 bytesscripts/sidechat-acceptance/tests/sidechat-system-head.test.mjsruns2,813 bytesscripts/sidechat-acceptance/tests/snapshot-diagnostics.test.mjsruns5,672 bytesscripts/sidechat-acceptance/tests/transport-review.test.mjsruns4,885 bytesscripts/verify-pack.mjsruns5,851 bytessite/assets/demo-thumb.pngasset161,552 bytessite/assets/demo.mp4asset2,608,997 bytessite/assets/github-octocat-original_b664c28d.pngasset17,954 bytessite/assets/index-BtlSWbij.cssasset166,339 bytessite/assets/index-CbA0uR5g.jsruns615,315 bytessite/assets/showcase-panel.pngasset83,612 bytessite/assets/showcase-plot.pngasset38,424 bytessite/assets/showcase.pngasset45,747 bytessite/index.htmlasset368,141 bytessrc/client/EChartNode.tsxruns23,536 bytessrc/client/ErrorBoundary.tsxruns2,228 bytessrc/client/GenuiBlock.module.cssasset113,300 bytessrc/client/GenuiBlock.tsxruns18,650 bytessrc/client/PlotBlock.module.cssasset5,514 bytessrc/client/PlotBlock.tsxruns20,795 bytessrc/client/TemplateDrawer.module.cssasset3,508 bytessrc/client/TemplateDrawer.tsxruns6,040 bytessrc/client/achievement-store.tsruns5,079 bytessrc/client/achievement-toast.tsxruns2,644 bytessrc/client/achievements.tsruns6,357 bytessrc/client/action-context.tsruns897 bytessrc/client/artifact/ArtifactExport.module.cssasset2,426 bytessrc/client/artifact/ExportableGenuiBlock.tsxruns5,436 bytessrc/client/artifact/create.tsruns3,480 bytessrc/client/artifact/download.tsruns1,922 bytessrc/client/artifact/html.tsruns8,050 bytessrc/client/artifact/index.tsruns566 bytessrc/client/artifact/json.tsruns222 bytessrc/client/artifact/parse.tsruns2,111 bytessrc/client/artifact/portability.tsruns4,175 bytessrc/client/artifact/standalone-theme.tsruns5,085 bytessrc/client/artifact/types.tsruns1,329 bytessrc/client/asset-echarts-core.tsruns1,870 bytessrc/client/asset-echarts.tsruns1,356 bytessrc/client/asset-loader.tsruns4,223 bytessrc/client/asset-maplibre.tsruns220 bytessrc/client/asset-mermaid.tsruns646 bytessrc/client/asset-three.tsruns526 bytessrc/client/blocks/advanced.tsxruns27,967 bytessrc/client/blocks/basic.tsxruns4,612 bytessrc/client/blocks/blocks.tsxruns6,952 bytessrc/client/blocks/carousel.tsxruns6,165 bytessrc/client/blocks/charts.tsxruns51,464 bytessrc/client/blocks/checkbox.tsxruns2,564 bytessrc/client/blocks/choices.module.cssasset4,290 bytessrc/client/blocks/choices.tsxruns6,383 bytessrc/client/blocks/compare.module.cssasset5,323 bytessrc/client/blocks/compare.tsxruns8,662 bytessrc/client/blocks/date-picker.module.cssasset955 bytessrc/client/blocks/date-picker.tsxruns4,921 bytessrc/client/blocks/diagram/geometry.tsruns5,841 bytessrc/client/blocks/diagram/index.tsxruns16,362 bytessrc/client/blocks/diagram/layout.tsruns6,983 bytessrc/client/blocks/diagram/theme.tsruns5,019 bytessrc/client/blocks/editor.module.cssasset1,053 bytessrc/client/blocks/editor.tsxruns2,994 bytessrc/client/blocks/entity-card.module.cssasset2,428 bytessrc/client/blocks/entity-card.tsxruns3,202 bytessrc/client/blocks/forms.tsxruns23,362 bytessrc/client/blocks/gallery.module.cssasset5,470 bytessrc/client/blocks/icon.tsxruns3,618 bytessrc/client/blocks/image-group.tsxruns8,460 bytessrc/client/blocks/image.tsxruns1,204 bytessrc/client/blocks/map.module.cssasset1,460 bytessrc/client/blocks/map.tsxruns5,595 bytessrc/client/blocks/popover.module.cssasset1,254 bytessrc/client/blocks/popover.tsxruns4,220 bytessrc/client/blocks/render-node.tsxruns30,726 bytessrc/client/blocks/segmented-control.module.cssasset1,340 bytessrc/client/blocks/segmented-control.tsxruns2,842 bytessrc/client/blocks/skeleton.tsxruns6,436 bytessrc/client/blocks/state.tsruns3,688 bytessrc/client/blocks/svg.tsxruns3,188 bytessrc/client/computed.tsruns16,060 bytessrc/client/conditions.tsruns8,581 bytessrc/client/copy-preview-state.tsruns1,478 bytessrc/client/date-picker.tsruns1,096 bytessrc/client/dom-fence.tsxruns89,682 bytessrc/client/echarts-engine.tsruns454 bytessrc/client/echarts-lazy.tsruns1,667 bytessrc/client/embed.tsruns1,028 bytessrc/client/fence-render.tsxruns11,772 bytessrc/client/file-address.tsruns1,808 bytessrc/client/file-link-context.tsxruns4,489 bytessrc/client/file-link.tsruns1,690 bytessrc/client/gallery.tsruns17,050 bytessrc/client/genui-runtime/diagnostics.tsruns7,758 bytessrc/client/genui-runtime/index.tsruns43 bytessrc/client/genui-runtime/limits.tsruns2,510 bytessrc/client/genui-runtime/normalize.tsruns17,406 bytessrc/client/genui-runtime/schema.tsruns27,152 bytessrc/client/genui-runtime/value-utils.tsruns3,402 bytessrc/client/guard.tsruns123,229 bytessrc/client/i18n/en.tsruns24,021 bytessrc/client/i18n/index.tsruns3,980 bytessrc/client/i18n/runtime.tsruns4,940 bytessrc/client/i18n/zh.tsruns22,808 bytessrc/client/icons/asset-icons.tsruns741 bytessrc/client/icons/icon-data-full.tsruns1,015,592 bytessrc/client/icons/icon-data.tsruns71,256 bytessrc/client/icons/icon-lazy.tsruns3,495 bytessrc/client/icons/icon-names-full.tsruns10,926 bytessrc/client/index.tsxruns12,056 bytessrc/client/inline.tsruns5,940 bytessrc/client/interaction-store.tsruns4,746 bytessrc/client/map-config.tsruns1,474 bytessrc/client/map-core.tsruns8,813 bytessrc/client/map-data.tsruns6,305 bytessrc/client/map-lazy.tsruns771 bytessrc/client/map-worker-ownership.tsruns314 bytessrc/client/maplibre-resources.tsruns156 bytessrc/client/mermaid-colors.tsruns1,651 bytessrc/client/mermaid-core.tsruns7,999 bytessrc/client/mermaid-lazy.tsruns4,713 bytessrc/client/mermaid-safe.tsruns7,457 bytessrc/client/panel-command.tsruns6,812 bytessrc/client/panel-store.tsruns25,980 bytessrc/client/panel.tsxruns13,273 bytessrc/client/parse-partial.tsruns8,003 bytessrc/client/primitive-adapter.tsruns196 bytessrc/client/primitive-labels.tsruns2,124 bytessrc/client/safe-math.tsruns12,074 bytessrc/client/scene3d-core.tsruns7,322 bytessrc/client/scene3d-lazy.tsruns1,126 bytessrc/client/session-resolver.tsruns843 bytessrc/client/sidechat-surface.tsxruns11,199 bytessrc/client/source-fence.tsruns2,583 bytessrc/client/spec.tsruns42,503 bytessrc/client/standalone/asset-loader.tsruns587 bytessrc/client/standalone/bootstrap-types.tsruns220 bytessrc/client/standalone/katex-style.tsruns10 bytessrc/client/standalone/primitive-adapter.tsxruns3,968 bytessrc/client/standalone/runtime.tsxruns1,141 bytessrc/client/streaming-shape.tsruns6,039 bytessrc/client/submission-registry.tsruns8,505 bytessrc/client/svg-fence.tsxruns1,818 bytessrc/client/table-details.tsruns8,939 bytessrc/client/table-export.tsruns1,351 bytessrc/client/templates.tsruns12,942 bytessrc/client/toolview.tsxruns3,360 bytessrc/client/walk-spec.tsruns2,440 bytessrc/css-modules.d.tsruns172 bytessrc/index.tsruns410 bytessrc/plugin/chart-contract.tsruns515 bytessrc/plugin/dsh-go-compiler.tsruns20,554 bytessrc/plugin/dsh-go-native.tsruns17,437 bytessrc/plugin/dsh-go-submission.tsruns1,680 bytessrc/plugin/dsh-go-types.tsruns1,373 bytessrc/plugin/dsh-go-view.tsruns538 bytessrc/plugin/fence-feedback.tsruns31,244 bytessrc/plugin/genui-diagnostic.tsruns4,967 bytessrc/plugin/index.tsruns13,771 bytessrc/plugin/inline-content-diagnostic.tsruns7,037 bytessrc/plugin/node-shims.d.tsruns959 bytessrc/plugin/tool.tsruns21,658 bytessrc/shared/fence-language.tsruns1,470 bytessrc/shared/fence-repair.tsruns29,225 bytessrc/shared/fence-resolve.tsruns3,295 bytessrc/shared/panel-merge.tsruns1,760 bytestests/achievements.spec.tsruns4,070 bytestests/browser/blocks-theme.README.mddoc2,485 bytestests/browser/blocks-theme.htmlasset945 bytestests/browser/blocks-theme.tsxruns5,309 bytestests/browser/content-font-size.htmlasset1,511 bytestests/browser/interaction-state.README.mddoc1,373 bytestests/browser/interaction-state.htmlasset306 bytestests/browser/interaction-state.tsxruns1,069 bytestests/browser/map.htmlasset286 bytestests/browser/map.tsxruns3,844 bytestests/browser/plot-content-font-size.htmlasset1,214 bytestests/browser/steps-marker.README.mddoc3,081 bytestests/browser/steps-marker.htmlasset1,071 bytestests/browser/steps-marker.tsxruns4,612 bytestests/browser/table-wrap.htmlasset1,499 bytestests/browser/table-wrap.tsxruns6,736 bytestests/browser/text-newlines.htmlasset1,872 bytestests/browser/text-newlines.tsxruns25,039 bytestests/dom-fence-container-stream.spec.tsxruns3,234 bytestests/dom-fence-maintenance.spec.tsxruns15,603 bytestests/dom-fence-ordinals.spec.tsxruns17,059 bytestests/dom-fence-raf-cleanup.spec.tsxruns2,073 bytestests/dom-fence-skeleton.spec.tsxruns3,494 bytestests/dom-fence.spec.tsxruns103,297 bytestests/dsh-go-native.spec.tsruns20,705 bytestests/dsh-go-view.spec.tsruns5,475 bytestests/e2e-auth.spec.tsruns823 bytestests/fence-feedback-agentloop.spec.tsruns6,426 bytestests/fence-feedback.spec.tsruns54,758 bytestests/fence-repair-cjk-punctuation.spec.tsruns4,401 bytestests/fence-repair-json-quotes.spec.tsruns7,274 bytestests/fence-repair-trailing-junk.spec.tsruns4,746 bytestests/fence-repair-trim-root.spec.tsruns1,325 bytestests/fence-repair-valueless-keys.spec.tsruns2,499 bytestests/fence-repair-wrapped-key.spec.tsruns5,971 bytestests/fixtures/dsh-go-native.jsonasset17,509 bytestests/gallery-carousel-settle.spec.tsruns7,369 bytestests/gallery-dialog-controls.spec.tsruns4,372 bytestests/gallery-input-mode.spec.tsruns3,215 bytestests/genui-artifact-assets.spec.tsruns2,244 bytestests/genui-artifact-html.spec.tsruns6,725 bytestests/genui-artifact.spec.tsruns3,620 bytestests/genui-asset-loader.spec.tsruns3,561 bytestests/genui-boundaries.spec.tsxruns13,271 bytestests/genui-chart-contract.spec.tsxruns6,870 bytestests/genui-checkbox-group.spec.tsxruns8,532 bytestests/genui-choices.spec.tsxruns8,717 bytestests/genui-combined-fields.spec.tsxruns5,641 bytestests/genui-compare.spec.tsxruns4,594 bytestests/genui-computed-checkbox.spec.tsxruns2,424 bytestests/genui-computed-echart.spec.tsxruns2,460 bytestests/genui-computed.spec.tsxruns26,652 bytestests/genui-conditions.spec.tsxruns13,911 bytestests/genui-copy-occurrence.spec.tsxruns6,395 bytestests/genui-copy-preview.spec.tsxruns13,341 bytestests/genui-date-picker.spec.tsxruns11,635 bytestests/genui-debounce-handler.spec.tsxruns3,186 bytestests/genui-debounce.spec.tsxruns5,653 bytestests/genui-diagnostic.spec.tsruns1,119 bytestests/genui-diagram-guard.spec.tsruns3,911 bytestests/genui-diagram.spec.tsxruns10,468 bytestests/genui-diff-labels.spec.tsxruns3,413 bytestests/genui-echart-font-size.spec.tsxruns4,435 bytestests/genui-echart-guard.spec.tsruns9,135 bytestests/genui-echart.spec.tsxruns8,474 bytestests/genui-editor-entity-card-popover.spec.tsxruns10,658 bytestests/genui-embed.spec.tsxruns2,024 bytestests/genui-empty-containers.spec.tsxruns2,966 bytestests/genui-enable-when.spec.tsxruns3,829 bytestests/genui-error-boundary.spec.tsxruns2,420 bytestests/genui-export-state.spec.tsxruns1,256 bytestests/genui-export-ui.spec.tsxruns5,617 bytestests/genui-fence-fallback.spec.tsxruns16,911 bytestests/genui-field-identity.spec.tsxruns9,847 bytestests/genui-field-name-regression.spec.tsruns10,446 bytestests/genui-figure-primitives.spec.tsxruns14,047 bytestests/genui-file-link.spec.tsxruns16,047 bytestests/genui-file-tree-collapse-key.spec.tsxruns1,643 bytestests/genui-file-tree.spec.tsxruns17,979 bytestests/genui-gallery-contract.spec.tsruns13,170 bytestests/genui-gallery-control-scope.spec.tsxruns5,574 bytestests/genui-gallery-feedback.spec.tsruns9,021 bytestests/genui-gallery-render.spec.tsxruns17,250 bytestests/genui-gallery-resolve.spec.tsxruns934 bytestests/genui-gallery.spec.tsxruns4,116 bytestests/genui-grade-layout.spec.tsruns1,649 bytestests/genui-guard.spec.tsruns24,660 bytestests/genui-hardening.spec.tsxruns10,471 bytestests/genui-icon-fidelity.spec.tsxruns2,674 bytestests/genui-icon-generator.spec.tsruns3,144 bytestests/genui-image.spec.tsxruns2,445 bytestests/genui-inline.spec.tsxruns13,365 bytestests/genui-invalid-input.spec.tsxruns9,774 bytestests/genui-list-item-fields.spec.tsruns2,472 bytestests/genui-map-assets.spec.tsruns2,802 bytestests/genui-map-browser-contract.spec.tsruns19,741 bytestests/genui-map-engine.spec.tsruns14,432 bytestests/genui-map-guard.spec.tsruns4,717 bytestests/genui-map-types.spec.tsruns2,703 bytestests/genui-map-worker-build.spec.tsruns6,092 bytestests/genui-map.spec.tsxruns15,657 bytestests/genui-markdown.tsxruns1,791 bytestests/genui-math-fields.spec.tsxruns2,299 bytestests/genui-media.spec.tsxruns2,702 bytestests/genui-mermaid-colors.spec.tsruns5,388 bytestests/genui-mermaid-render-state.spec.tsxruns17,957 bytestests/genui-mermaid-safe.spec.tsruns9,720 bytestests/genui-panel.spec.tsxruns30,706 bytestests/genui-partial-render.spec.tsruns13,080 bytestests/genui-partial.spec.tsxruns9,442 bytestests/genui-plot-lock.spec.tsxruns1,601 bytestests/genui-plot-pan.spec.tsxruns4,993 bytestests/genui-plot-redraw.spec.tsxruns2,369 bytestests/genui-plot-view.spec.tsxruns1,710 bytestests/genui-plot-wheel-lock.spec.tsxruns4,494 bytestests/genui-quiz-guard.spec.tsruns3,246 bytestests/genui-root-shape.spec.tsruns11,250 bytestests/genui-schema.spec.tsruns28,336 bytestests/genui-segmented-control.spec.tsxruns8,362 bytestests/genui-skill-examples.spec.tsruns2,598 bytestests/genui-slider-precision.spec.tsxruns4,097 bytestests/genui-standalone-runtime.spec.tsxruns3,501 bytestests/genui-standalone-theme.spec.tsruns4,603 bytestests/genui-stat-decimal-comma.spec.tsxruns2,915 bytestests/genui-state-key.spec.tsxruns3,707 bytestests/genui-submit-members.spec.tsxruns26,195 bytestests/genui-svg.spec.tsxruns5,757 bytestests/genui-table-column-name.spec.tsxruns4,088 bytestests/genui-table-external-links.spec.tsxruns8,488 bytestests/genui-table-filter-details.spec.tsxruns7,741 bytestests/genui-table-multiline-cell.spec.tsxruns5,893 bytestests/genui-table-scroll.spec.tsxruns5,572 bytestests/genui-table-smart-sort.spec.tsxruns9,281 bytestests/genui-table-wrap.spec.tsxruns5,599 bytestests/genui-tabs-active-index.spec.tsxruns1,455 bytestests/genui-teach.spec.tsxruns4,906 bytestests/genui-tetris-table.spec.tsruns4,835 bytestests/genui-toolview.spec.tsxruns3,407 bytestests/genui-v11.spec.tsxruns4,863 bytestests/genui-v12.spec.tsxruns10,986 bytestests/genui-v25.spec.tsxruns11,168 bytestests/genui-v26.spec.tsxruns10,886 bytestests/genui-v27.spec.tsxruns9,937 bytestests/genui-v28.spec.tsxruns9,052 bytestests/genui-v29.spec.tsxruns29,595 bytestests/genui.spec.tsxruns8,743 bytestests/helpers/standalone.tsruns4,227 bytestests/host-dependency-policy.spec.tsruns902 bytestests/i18n.spec.tsxruns7,640 bytestests/input-color.spec.tsxruns4,139 bytestests/input-durable-value-priority.spec.tsxruns1,875 bytestests/install-script.spec.tsruns7,575 bytestests/markdown-labels.tsxruns626 bytestests/panel-append.spec.tsxruns8,787 bytestests/panel-command.spec.tsruns6,109 bytestests/panel-computed-state.spec.tsxruns10,085 bytestests/peer-range.spec.tsruns1,610 bytestests/plot-loop.spec.tsxruns2,562 bytestests/plugin-genui.spec.tsruns21,804 bytestests/plugin-tool.spec.tsruns30,775 bytestests/quiz-id-reset.spec.tsxruns2,390 bytestests/safe-math-tokenizer.spec.tsruns3,160 bytestests/scene3d-events.spec.tsxruns5,801 bytestests/session-resolver.spec.tsruns887 bytestests/setup.tsruns1,770 bytestests/sidechat-surface.spec.tsxruns14,672 bytestests/skill-md.spec.tsruns2,368 bytestests/source-fence.spec.tsruns6,318 bytestests/streaming-shape.spec.tsruns3,625 bytestests/submission-registry.spec.tsruns14,413 bytestests/svg-fence.spec.tsxruns1,908 bytestests/template-drawer.spec.tsxruns3,432 bytestests/templates.spec.tsruns2,060 bytestests/textarea-durable-value-priority.spec.tsxruns3,456 bytestsconfig.jsonasset778 bytestsdown.config.tsruns16,647 bytesvitest.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 GitHubSkills 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
- #882 on Oct 22
- #896 on Oct 23
- #835 on Oct 24
- #1,000 on Nov 5
- #997 on Nov 6
- #994 since Nov 7
71 earlier periods
- #903 on Aug 9
- #929 on Aug 13
- #902 on Aug 14
- #867 on Aug 15
- #889 on Aug 16
- #892 on Aug 17
- #908 on Aug 18
- #901 on Aug 19
- #885 on Aug 20
- #892 on Aug 21
- #837 on Aug 22
- #892 on Aug 23
- #906 on Aug 24
- #916 on Aug 25
- #898 on Aug 26
- #904 on Aug 27
- #940 on Aug 28
- #856 on Aug 29
- #858 on Aug 30
- #904 on Aug 31
- #942 on Sep 1
- #907 on Sep 2
- #912 on Sep 3
- #876 on Sep 4
- #850 on Sep 5
- #884 on Sep 6
- #910 on Sep 7
- #930 on Sep 8
- #915 on Sep 9
- #914 on Sep 10
- #879 on Sep 11
- #875 on Sep 12
- #876 on Sep 13
- #911 on Sep 14
- #899 on Sep 15
- #912 on Sep 16
- #909 on Sep 17
- #894 on Sep 18
- #869 on Sep 19
- #889 on Sep 20
- #909 on Sep 21
- #930 on Sep 22
- #921 on Sep 23
- #885 on Sep 24
- #837 on Sep 25
- #861 on Sep 26
- #881 on Sep 27
- #930 on Sep 28
- #957 on Sep 29
- #924 on Sep 30
- #858 on Oct 1
- #874 on Oct 2
- #846 on Oct 3
- #888 on Oct 4
- #910 on Oct 5
- #899 on Oct 6
- #935 on Oct 7
- #976 on Oct 8
- #942 on Oct 9
- #917 on Oct 10
- #928 on Oct 11
- #948 on Oct 12
- #952 on Oct 13
- #968 on Oct 14
- #952 on Oct 15
- #960 on Oct 16
- #935 on Oct 17
- #908 on Oct 18
- #927 on Oct 19
- #911 on Oct 20
- #920 on Oct 21
Before you install
Network or broad shellAutomated 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:29Analysis incomplete: physical or joined line exceeds character limitSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsite/assets/index-BtlSWbij.css:1Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:9Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:7Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:21Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:19Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:20Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:40Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:41Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:42Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:54Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:52Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:53Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:62Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:60Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:61Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:78Analysis incomplete: physical or joined line exceeds character limitsite/assets/index-CbA0uR5g.js:76Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- 17 dangerous shell commandsin 13 files: scripts/check-table-wrap-browser.mjs:47 scripts/check-text-newlines-browser.mjs:25 scripts/sidechat-acceptance/ci.mjs:4 and 10 more
- 582 network referencesin 91 files: site/assets/index-CbA0uR5g.js:1 tests/genui-table-external-links.spec.tsx:29 tests/genui-compare.spec.tsx:16 and 88 more
- 42 obfuscation signalsin 3 files: site/assets/index-CbA0uR5g.js:1 src/client/artifact/html.ts:88 tests/helpers/standalone.ts:19
- No instruction overrides
- 366 executable scriptsin 366 files: package.json:1 scripts/build-anthology-page.mts:1 scripts/check-blocks-theme-browser.mjs:1 and 363 more
- 12 references to secretsin 9 files: scripts/e2e.mjs:99 scripts/sidechat-acceptance/tests/ci.test.mjs:131 scripts/sidechat-acceptance/tests/sidechat-host-contract.test.mjs:33 and 6 more
- No requests to vote in Hot
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
[](https://www.npmjs.com/package/@changfenhuang/dsh-genui) - Network accessline 11
[](https://github.com/omdsh-dev/dsh-genui) - Network accessline 12
[](LICENSE) - Network accessline 13
[](https://www.typescriptlang.org/) - Network accessline 14
[](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
[](https://www.npmjs.com/package/@changfenhuang/dsh-genui) - Network accessline 11
[](https://github.com/omdsh-dev/dsh-genui) - Network accessline 12
[](LICENSE) - Network accessline 13
[](https://www.typescriptlang.org/) - Network accessline 14
[](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
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
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
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
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
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
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
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
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
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
src/client/icons/icon-data.ts
src/client/icons/icon-lazy.ts
- Executable scriptline 1
Executable file
src/client/icons/icon-names-full.ts
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
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
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
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
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
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
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
- Contacts react.dev, which SKILL.md, the README and the plugin manifest do not mentionsite/assets/index-CbA0uR5g.js:80High confidence
- Contacts raw.githubusercontent.com, which SKILL.md, the README and the plugin manifest do not mentionsrc/client/gallery.ts:236High confidence
Signal confidence: 498 facts
- Network access in prose of documentationCHANGELOG.md:86Low confidence
- Network access in prose of documentationCHANGELOG.md:87Low confidence
- Network access in prose of documentationCHANGELOG.md:88Low confidence
- Network access in prose of documentationCHANGELOG.md:89Low confidence
- Network access in prose of documentationCHANGELOG.md:90Low confidence
- Access to secrets in prose of documentationCHANGELOG.md:448Low confidence
- Network access in prose of documentationREADME.md:10Low confidence
- Network access in prose of documentationREADME.md:11Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in prose of documentationREADME.md:14Low confidence
- Network access in prose of documentationREADME.md:20Low confidence
- Network access in prose of documentationREADME.md:21Low confidence
- Network access in prose of documentationREADME.md:47Low confidence
- Network access in code of documentationREADME.md:276Low confidence
- Access to secrets in code of documentationREADME.md:308Low confidence
- Network access in prose of documentationREADME.md:358Low confidence
- Network access in prose of documentationREADME.md:414Low confidence
- Network access in prose of documentationREADME.md:415Low confidence
- Network access in prose of documentationREADME.zh-CN.md:10Low confidence
- Network access in prose of documentationREADME.zh-CN.md:11Low confidence
- Network access in prose of documentationREADME.zh-CN.md:12Low confidence
- Network access in prose of documentationREADME.zh-CN.md:13Low confidence
- Network access in prose of documentationREADME.zh-CN.md:14Low confidence
- Network access in prose of documentationREADME.zh-CN.md:20Low confidence
- Network access in prose of documentationREADME.zh-CN.md:21Low confidence
- Network access in prose of documentationREADME.zh-CN.md:47Low confidence
- Network access in code of documentationREADME.zh-CN.md:275Low confidence
- Access to secrets in code of documentationREADME.zh-CN.md:307Low confidence
- Network access in prose of documentationREADME.zh-CN.md:332Low confidence
- Network access in prose of documentationREADME.zh-CN.md:388Low confidence
- Network access in prose of documentationREADME.zh-CN.md:389Low confidence
- Network access in prose of the SKILL.mdSKILL.md:106Low confidence
- Network access in prose of the SKILL.mdSKILL.md:107Low confidence
- Network access in prose of the SKILL.mdSKILL.md:108Low confidence
- Network access in prose of the SKILL.mdSKILL.md:116Low confidence
- Network access in prose of the SKILL.mdSKILL.md:117Low confidence
- Network access in prose of the SKILL.mdSKILL.md:118Low confidence
- Network access in code of the SKILL.mdSKILL.md:131High confidence
- Network access in prose of the SKILL.mdSKILL.md:136Low confidence
- Network access in prose of the SKILL.mdSKILL.md:137Low confidence
- Network access in prose of the SKILL.mdSKILL.md:190Low confidence
- Network access in prose of the SKILL.mdSKILL.md:191Low confidence
- Network access in prose of the SKILL.mdSKILL.md:192Low confidence
- Network access in prose of documentationTHIRD_PARTY_NOTICES.md:8Low confidence
- Network access in prose of documentationTHIRD_PARTY_NOTICES.md:46Low confidence
- Network access in prose of documentationTHIRD_PARTY_NOTICES.md:47Low confidence
- Network access in code of documentationTHIRD_PARTY_NOTICES.md:143Low confidence
- Network access in prose of documentationdocs/diagram-component-design.md:3Low confidence
- Network access in prose of documentationdocs/diagram-component-design.md:243Low confidence
and 448 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard 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.
[](https://hotskills.dev/skill/omdsh-dev-dsh-genui/)