The client tsdown presets found a package's own manifest by name: a glob of every packages/*/*/package.json, parsed until the name matched. tsdown's native config loader imports each package config without module cache, so the module-level cache never hit and all 82 configs repeated the glob (40-125 ms each) synchronously on tsdown's main thread, where it delayed every other package build. It was 34.5% of the client pass's main thread. - clientBundle, staticLinked and clientLibrary take the package directory (import.meta.dirname at every call site) and read <dir>/package.json once; the package name, loader id and externals come from that manifest. - A missing, unreadable or nameless manifest throws an actionable error. - The glob, the name search and the module-level caches are removed. tsdown client pass 12.78 s -> 8.73 s (median of 3 interleaved runs each, -31.7%); all 11,566 lib outputs byte-identical; all 82 configs resolve the same externals and banners. Refs #5852
description, kind
| description | kind |
|---|---|
| The agent loop's settings page on the dsh web client's Plugins page: the parallel tool-call cap of the agent-loop namespace. | package-reference |
@deepseek-ai/dsh-client-ui-settings-agent-loop
English | 中文
Summary
Open Plugins in the sidebar and select Agent loop in the Official group to set how many parallel-safe tool calls one step may run at once. The page stages what is typed and writes it only on save, marks a value the user overrode, and offers to reset it to the deployment's default. The page exists while the Host serves the agent-loop namespace.
Table of Contents
- Use this package
- Understand the implementation
- Further Exploration
- Model Experience
- Known Limitations and Deferred Work
- Dev Note
Use this package
The Agent loop card in the Official group opens the page. Parallel tool calls bounds the calls the loop runs at once within one step; the field renders the effective value, and once overridden carries an Overridden badge with Reset to default beside it. Nothing is written until Save; leaving the page drops the draft, an empty field saves as a reset, and text that is not a number blocks the save and says so under the field.
Understand the implementation
Implementation internals — click to expand
The Host half is an empty apply, present only so the package holds a Loader row the client module system serves the browser half for. The browser half binds the agent-loop namespace through ctx.configForms.get, keeps the staged form in AgentLoopCardController over the shared SettingsFormModel of ui-primitives, and registers AgentLoopCard into the Plugins page's plugins.item slot through ctx.configForms.whileServed. The page's copy lives in this package's settings.agentLoop dictionary.
Further Exploration
- ui-plugin-manager — the Plugins page and the
plugins.itemslot the page registers into. - ui-settings — the settings scope and the served-namespace watch the page rides.
- ui-primitives — the settings form model and fields the page renders.
- agent-loop — the loop that registers the
agent-loopnamespace.
Model Experience
None, as the package is a browser-side settings surface that registers no model surface.
KV Cache effect
None; this package neither assembles nor sends a provider request.
Known Limitations and Deferred Work
- One field of the namespace — the Host section carries only the parallel cap; the composed
agentsarray is boot composition, not a user setting, and has no field here.
Dev Note
Working context for maintainers — click to expand
None.