master 通过 #7700 将 portal 菜单改为 CSS Anchor Positioning,并删除了 `useAnchoredPosition`。本次合并让子菜单跟进同一机制: - 子卡片以父卡片内一个不随列表滚动、与卡片同尺寸的锚点框为默认锚点, 侧开时默认在右侧、放不下时由 CSS 翻到左侧;单面板模式占据父卡片位置。 - JavaScript 只决定侧开或单面板,并提供当前行在父卡片内的偏移和子卡片 自然高度;两者都是相对尺寸,双指缩放与平移由 CSS 锚点处理。 - 锚点框绕开了 WebKit 的两个问题:锚定到自身由锚点定位的父卡片时不会 在其定位稳定后重新计算;锚定到滚动列表内的行时不计入滚动偏移。 - 删除 `useAnchoredPosition` 及其测试;`menu-submenu-position` 只保留 侧开/单面板判断,相应单测改为验证模式与锚点名。 - 解决 README、测试与 package.json 冲突,沿用 master 的 CSS 锚点说明并 补充子菜单定位描述。
description, kind
| description | kind |
|---|---|
| Runtime API inspection, process-local runners, and historical Cordis cards. | package-group |
packages/extensions
English | 中文
Summary
The extensions group provides read-only runtime API discovery for agents, process-local runners for programmatic and browser consumers, and historical generated-plugin cards. Standard and Creator modes install persistent plugins through Plugin Manager. Choose a child package for inspection, Host execution, Client execution, or browser controls.
Table of Contents
Packages
| Package | Role | ctx key |
|---|---|---|
tool-cordis |
Two read-only tools for runtime API discovery | registers on ctx.tools |
cordis-host-runner |
Host half: definition registry, sandboxed host-half lifecycle, and the inspect registry that answers browser queries | provides ctx.dynamicCordisRunner and ctx.cordisInspect |
cordis-client-runner |
Browser half: evaluates a browser-half source into a live plugin and answers run requests | client face; provides browser ctx.dynamicCordisRunner |
ui-cordis |
Browser panel and historical lifecycle tool cards | client face; registers slots |
Related documentation
- Extensions subsystem — the generated
ctx.cordisInspectandctx.dynamicCordisRunnerservice API. - Generated tool catalog — the two read-only tool schemas.
- Generated configuration catalog — the runner's accepted config fields.
- Self-referential Cordis toolset reference — design home for sandbox semantics, lifecycle, and composition.
- Client shells and dynamic packages Agent Note — package placement and build faces for the client halves.
Dev Note
Working context for maintainers — click to expand
The two browser-half packages live in this group rather than under packages/client/ because they are halves of this subsystem's dual-half packages; the client face compiles them through the client program, while the host program references only the host runner.