From 8d2cd0cf72090cc58fe8cfc9258ebbdf58ac9f1e Mon Sep 17 00:00:00 2001 From: yixiangihsiang Date: Mon, 21 Sep 2026 21:56:10 +0800 Subject: [PATCH 01/19] feat(web): unify code block styling and icon controls --- apps/web/tests/document-preview.e2e.ts | 7 +- .../clickable-links-gallery/ui.expected.md | 6 +- .../navigation-panes/code-card.expected.md | 4 + apps/web/tests/navigation-panes.e2e.ts | 23 +++++ packages/client/locale/src/locales/en.ts | 3 + packages/client/locale/src/locales/zh.ts | 3 + .../src/client/PresetGuideDialog.tsx | 9 +- .../ui-chat/src/client/markdown-labels.ts | 2 +- .../client/ui-plan/src/client/PlanPreview.tsx | 2 +- .../client/ui-primitives/README.i18n.yaml | 4 +- packages/client/ui-primitives/README.md | 2 + packages/client/ui-primitives/README.zh.md | 2 + .../ui-primitives/src/CodeCard.module.css | 81 ++++++++++++++++ .../client/ui-primitives/src/CodeToolbar.tsx | 62 ++++++++++++ .../ui-primitives/src/DiffBlock.module.css | 67 ++++--------- .../client/ui-primitives/src/DiffBlock.tsx | 15 ++- .../ui-primitives/src/ReadBlock.module.css | 92 +++--------------- .../client/ui-primitives/src/ReadBlock.tsx | 29 +++--- .../src/markdown/CodeBlock.module.css | 19 ++++ .../ui-primitives/src/markdown/CodeBlock.tsx | 20 +++- .../src/markdown/MarkdownText.tsx | 5 +- .../ui-primitives/src/markdown/render.tsx | 3 + .../tests/code-card-controls.client.spec.tsx | 96 +++++++++++++++++++ .../ui-primitives/tests/labels.client.ts | 2 + .../tests/read-block.client.spec.tsx | 7 +- .../README.i18n.yaml | 4 +- .../ui-sidebar-documentpreview/README.md | 2 +- .../ui-sidebar-documentpreview/README.zh.md | 2 +- .../src/client/code/CodeBody.module.css | 1 + .../src/client/code/CodeBody.tsx | 2 + .../src/client/markdown/MarkdownBody.tsx | 7 +- .../tests/code-body.client.spec.tsx | 11 ++- packages/client/ui-theme/src/styles/shiki.css | 7 ++ .../tool/components/ToolDetails.module.css | 8 +- .../client/tool/components/ToolDetails.tsx | 3 +- .../client/tool/components/ToolRow.module.css | 6 -- .../src/client/tool/components/ToolRow.tsx | 5 +- .../client/tool/models/primitive-labels.ts | 14 ++- .../ui-tool/tests/diff-card.client.spec.tsx | 2 +- .../src/client/QuestionComposer.tsx | 2 +- .../ui-cordis/src/client/CordisDefineRow.tsx | 1 + 41 files changed, 449 insertions(+), 193 deletions(-) create mode 100644 apps/web/tests/expected/navigation-panes/code-card.expected.md create mode 100644 packages/client/ui-primitives/src/CodeCard.module.css create mode 100644 packages/client/ui-primitives/src/CodeToolbar.tsx create mode 100644 packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx diff --git a/apps/web/tests/document-preview.e2e.ts b/apps/web/tests/document-preview.e2e.ts index 07e7397d12..fd0ebd02ad 100644 --- a/apps/web/tests/document-preview.e2e.ts +++ b/apps/web/tests/document-preview.e2e.ts @@ -797,7 +797,12 @@ else process.exit(1); })).toEqual({ scrollTop, scrollportBelowBanner: true, firstLineAbove: true }) await page.context().grantPermissions(['clipboard-read', 'clipboard-write'], { origin: new URL(page.url()).origin }) await page.evaluate(() => navigator.clipboard.writeText('')) - await codeBlock.getByRole('button', { name: 'Copy', exact: true }).click() + const copyCode = codeBlock.getByRole('button', { name: 'Copy', exact: true }) + expect(await codeBlock.getByRole('button').count()).toBe(1) + expect(await copyCode.textContent()).toBe('') + await copyCode.hover() + await page.getByRole('tooltip', { name: 'Copy', exact: true }).waitFor() + await copyCode.click() await expect.poll(() => page.evaluate(() => navigator.clipboard.readText())).toBe(codeLines.join('\n')) sections.push([ '## Code paging', '', diff --git a/apps/web/tests/expected/clickable-links-gallery/ui.expected.md b/apps/web/tests/expected/clickable-links-gallery/ui.expected.md index 43b462deac..feaeaa2468 100644 --- a/apps/web/tests/expected/clickable-links-gallery/ui.expected.md +++ b/apps/web/tests/expected/clickable-links-gallery/ui.expected.md @@ -32,6 +32,8 @@ - text: Edit - button "src/tokens.css" - text: +1 -1 +- text: css +- button "Wrap lines" - button "Copy" - text: "src/tokens.css - --inline-code: #EBEEF2; + --inline-code: #F5F5F5; └ +1 -1 · 1 file" - button "Inspect" @@ -43,7 +45,8 @@ - button "Read docs/guide.md" [expanded]: - text: Read - button "docs/guide.md" -- text: docs/guide.md +- text: Code block docs/guide.md +- button "Wrap lines" - button "Copy" - text: "# Link style guide guide line 2 guide line 3 guide line 4" - button "Expand 4 more lines": … 4 more lines @@ -134,6 +137,7 @@ - paragraph: - img "Token preview" - text: css +- button "Do not wrap lines" [pressed] - button "Copy" - code: "--inline-code: #F5F5F5;" - paragraph: LINK_GALLERY_DONE diff --git a/apps/web/tests/expected/navigation-panes/code-card.expected.md b/apps/web/tests/expected/navigation-panes/code-card.expected.md new file mode 100644 index 0000000000..3e48942224 --- /dev/null +++ b/apps/web/tests/expected/navigation-panes/code-card.expected.md @@ -0,0 +1,4 @@ +- text: Code block +- button "Do not wrap lines" [pressed] +- button "Copy" +- code: echo WATERFALL diff --git a/apps/web/tests/navigation-panes.e2e.ts b/apps/web/tests/navigation-panes.e2e.ts index 4ab75b3ba0..f43b020a60 100644 --- a/apps/web/tests/navigation-panes.e2e.ts +++ b/apps/web/tests/navigation-panes.e2e.ts @@ -27,6 +27,7 @@ const TRAJECTORY_EXPECTED = join(SNAPSHOT_DIR, 'trajectory.expected.md') const TIMING_EXPECTED = join(SNAPSHOT_DIR, 'timing.expected.md') const SEARCH_EXPECTED = join(SNAPSHOT_DIR, 'search-results.expected.md') const TERMINAL_EXPECTED = join(SNAPSHOT_DIR, 'terminal-card.expected.md') +const CODE_CARD_EXPECTED = fileURLToPath(new URL('./expected/navigation-panes/code-card.expected.md', import.meta.url)) const MODE = webSnapshotMode() const SEED_ID = 'navigation-panes-web-e2e' const EXPORTED_LOG_FILE = `session.v${SESSION_FORMAT_VERSION}.jsonl` @@ -218,6 +219,28 @@ describe('web e2e: navigation & panes over a rich seeded session', () => { await expect.poll(() => page.getByRole('heading', { name: 'Navigation Summary' }).count(), { timeout: 15_000 }).toBe(1) }, 90_000) + it.skipIf(MODE === 'record')('renders recorded Markdown with icon tooltips and switchable wrapping', async () => { + onTestFailed(() => saveFailureShot(page, 'web-e2e-navigation-code-card')) + await ensureSeedOpen(page) + const selector = '.md-code-block:has-text("echo WATERFALL")' + const block = page.locator(selector) + await block.waitFor({ timeout: 15_000 }) + await compareOrRefreshGolden(CODE_CARD_EXPECTED, await captureStableAria(page, selector, scaffold.workspaceCwd), MODE) + const code = block.locator('pre') + const source = await code.textContent() + const copy = block.getByRole('button', { name: 'Copy', exact: true }) + await copy.hover() + await page.getByRole('tooltip', { name: 'Copy', exact: true }).waitFor() + const unwrap = block.getByRole('button', { name: 'Do not wrap lines', exact: true }) + await unwrap.hover() + await page.getByRole('tooltip', { name: 'Do not wrap lines', exact: true }).waitFor() + await unwrap.click() + await expect.poll(() => code.evaluate(element => getComputedStyle(element).whiteSpace)).toBe('pre') + await block.getByRole('button', { name: 'Wrap lines', exact: true }).click() + await expect.poll(() => code.evaluate(element => getComputedStyle(element).whiteSpace)).toBe('pre-wrap') + expect(await code.textContent()).toBe(source) + }, 60_000) + it.skipIf(MODE === 'record')('renders the trajectory ledger and opens its local record inspector', async () => { onTestFailed(() => saveFailureShot(page, 'web-e2e-navigation-trajectory')) await ensureSeedOpen(page) diff --git a/packages/client/locale/src/locales/en.ts b/packages/client/locale/src/locales/en.ts index d16b4913ae..d21b7d67f7 100644 --- a/packages/client/locale/src/locales/en.ts +++ b/packages/client/locale/src/locales/en.ts @@ -7,6 +7,9 @@ export const en = { 'close': 'Close', 'copy': 'Copy', 'copied': 'Copied', + 'codeBlock.title': 'Code block', + 'codeBlock.wrap': 'Wrap lines', + 'codeBlock.unwrap': 'Do not wrap lines', 'copy.failed': 'Copy failed', 'copy.value': 'Copy value', 'copy.json': 'Copy JSON', diff --git a/packages/client/locale/src/locales/zh.ts b/packages/client/locale/src/locales/zh.ts index 2e932cef41..d7b215babd 100644 --- a/packages/client/locale/src/locales/zh.ts +++ b/packages/client/locale/src/locales/zh.ts @@ -5,6 +5,9 @@ export const zh = { 'close': '关闭', 'copy': '复制', 'copied': '复制成功', + 'codeBlock.title': '代码块', + 'codeBlock.wrap': '自动换行', + 'codeBlock.unwrap': '取消自动换行', 'copy.failed': '复制失败', 'copy.value': '复制值', 'copy.json': '复制 JSON', diff --git a/packages/client/ui-agent-preset/src/client/PresetGuideDialog.tsx b/packages/client/ui-agent-preset/src/client/PresetGuideDialog.tsx index 6ecb534f02..8ca5270d52 100644 --- a/packages/client/ui-agent-preset/src/client/PresetGuideDialog.tsx +++ b/packages/client/ui-agent-preset/src/client/PresetGuideDialog.tsx @@ -1,6 +1,7 @@ /** Read-only help stays local to Settings and never changes the selected preset. */ import { useId, useLayoutEffect, useRef, useState } from 'react' import type { KeyboardEvent, ReactNode } from 'react' +import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots' import { Button, IconCloseOutlineRegular, IconListPenOutlineRegular, MarkdownText, Modal, SegmentedTabs, Tag } from '@deepseek-ai/dsh-client-ui-primitives' import type { AgentPresetSettingsKey } from './locales.ts' import css from './PresetGuideDialog.module.css' @@ -35,10 +36,10 @@ export function presetGuide(id: string, trust: string): PresetGuide | undefined /** Curated usage dictionaries contain only level-three example sections. */ function GuideUsage({ text, t }: { text: string - t: (key: AgentPresetSettingsKey) => string + t: TranslateNS<'settings.agentPreset'> }): ReactNode { const labels = { - code: { copyLabel: t('guideCopy'), copiedLabel: t('guideCopied') }, + code: { copyLabel: t('guideCopy'), copiedLabel: t('guideCopied'), toolbarLabels: { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } }, footnotes: t('guideFootnotes'), } return text.split(/(?=^### )/m).map((section) => { @@ -67,7 +68,7 @@ function GuideUsage({ text, t }: { export function PresetGuideDialog({ guide, initialPage, t, onClose }: { guide: PresetGuide initialPage: PresetGuidePage - t: (key: AgentPresetSettingsKey) => string + t: TranslateNS<'settings.agentPreset'> onClose: () => void }): ReactNode { const [page, setPage] = useState(initialPage) @@ -144,7 +145,7 @@ export function PresetGuideDialog({ guide, initialPage, t, onClose }: { diff --git a/packages/client/ui-chat/src/client/markdown-labels.ts b/packages/client/ui-chat/src/client/markdown-labels.ts index 6c30b99396..8818ea8f14 100644 --- a/packages/client/ui-chat/src/client/markdown-labels.ts +++ b/packages/client/ui-chat/src/client/markdown-labels.ts @@ -10,7 +10,7 @@ import type { ChatViewSlotProps } from './contract/slots.ts' */ export function markdownLabels(t: ChatViewSlotProps['t']): MarkdownLabels { return { - code: { copyLabel: t('copy'), copiedLabel: t('copied') }, + code: { copyLabel: t('copy'), copiedLabel: t('copied'), toolbarLabels: { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } }, footnotes: t('markdown.footnotes'), } } diff --git a/packages/client/ui-plan/src/client/PlanPreview.tsx b/packages/client/ui-plan/src/client/PlanPreview.tsx index b1e1689fe8..fdee35e7b9 100644 --- a/packages/client/ui-plan/src/client/PlanPreview.tsx +++ b/packages/client/ui-plan/src/client/PlanPreview.tsx @@ -22,7 +22,7 @@ export function PlanPreview({ useTabInfo, useResource, t }: PlanPreviewProps) { const params = tab.tab.navigation.params const plan = temporary ? (params !== undefined && 'planReview' in params ? params.planReview : undefined) : resource.value const labels = useMemo(() => ({ - code: { copyLabel: t('copy'), copiedLabel: t('copied') }, + code: { copyLabel: t('copy'), copiedLabel: t('copied'), toolbarLabels: { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } }, footnotes: t('markdown.footnotes'), }), [t]) if (plan === undefined) return ( diff --git a/packages/client/ui-primitives/README.i18n.yaml b/packages/client/ui-primitives/README.i18n.yaml index 38355c398f..c14c318535 100644 --- a/packages/client/ui-primitives/README.i18n.yaml +++ b/packages/client/ui-primitives/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-primitives/README.md -README.md: 7dafaf759ac329a4162b7138e58ed13ca5afd651 -README.zh.md: db38df0a298f567287e9cc99e623287465213c74 +README.md: 069aea78dd08175a9ebb1e590bb03e97dc08daab +README.zh.md: d235e19a9f9c829d4d5d6587fdd147fda9a2884e diff --git a/packages/client/ui-primitives/README.md b/packages/client/ui-primitives/README.md index 7dafaf759a..069aea78dd 100644 --- a/packages/client/ui-primitives/README.md +++ b/packages/client/ui-primitives/README.md @@ -87,6 +87,8 @@ The nearest `MarkdownDelegateProvider` supplies optional `openExternalLink` and `MarkdownText` defaults to `variant="body"`. Use `variant="compact"` for secondary content: its 13px text and 20px line height follow the content-size setting, all heading levels use the same size with weight 600, and paragraphs and lists use tighter spacing. Text, links, and code keep the tertiary color; dotted underlines distinguish links. Code headers scroll with their blocks. Tables and math stay enabled at the surrounding text size and scroll horizontally within the available width. Both variants share the parser and streaming cache. +`CodeBlock.toolbarLabels` enables the shared code-card header and spacing. `ReadBlock` and `DiffBlock` use the same header: secondary-colored language text, copy and wrap icons, and hover or keyboard-focus tooltips. Missing or unsupported languages use the owner’s localized code-block title; mixed-language diffs use that title too. Code cards share typography and content insets. Wrapping is local to each mounted card and never changes copied text; code fences start wrapped, while reads and diffs preserve source columns until wrapping is enabled. Compact Markdown omits this toolbar. With `toolbarLabels`, source previews can pass `wrap` to follow their owner’s preference and show only the language and copy icon; owner CSS retains the source layout. + `DiffBlock` compares the old and new content by line. It shows actual additions and deletions with up to three neutral context lines on each side, separates distant changes with `⋯`, and excludes shared context from both summary and footer totals. Search stops beyond 256 line additions/deletions per fragment; those fragments display and count the complete old and new contents as a coarse replacement, including shared lines. Copy includes the full displayed diff with its prefixes. A final newline is treated as a terminator; differences only in the presence of a final newline are not displayed. `JsonTree` clamps collapsed strings to `collapsedStringLines` (three by default). Expanded strings show raw text, retain sibling commas, and fit within the window and outer scrolling containers. Resize and ancestor-scroll events update that limit. Row copy feedback updates independently of JSON value rendering; pending clipboard writes cannot update a different row or an unmounted tree. diff --git a/packages/client/ui-primitives/README.zh.md b/packages/client/ui-primitives/README.zh.md index db38df0a29..d235e19a9f 100644 --- a/packages/client/ui-primitives/README.zh.md +++ b/packages/client/ui-primitives/README.zh.md @@ -87,6 +87,8 @@ kind: "package-library" `MarkdownText` 默认为 `variant="body"`。次级内容使用 `variant="compact"`:其 13px 字号与 20px 行高跟随内容字号设置,各级标题保持同一字号并使用 600 字重,段落与列表采用更紧凑的间距。正文、链接和代码均保持 tertiary 颜色,以点状下划线区分链接。代码标题栏随代码块滚动。表格和公式仍然启用,使用周围文字的字号,并在可用宽度内横向滚动。两个变体共享解析器与流式缓存。 +`CodeBlock.toolbarLabels` 启用共享代码卡片的标题栏和间距。`ReadBlock` 与 `DiffBlock` 使用相同的标题栏:secondary 色的语言名称、复制与换行图标,以及悬停或键盘聚焦时的提示。语言缺失或不受支持时显示调用方提供的本地化代码块标题;混合语言的 Diff 也使用该标题。代码卡片共用字体和内容内边距。换行设置仅属于当前挂载的卡片,不改变复制的文本;代码围栏默认换行,读取和差异卡片则在启用换行前保留源码列位置。紧凑 Markdown 不使用此工具栏。源码预览传入 `toolbarLabels` 后,可用 `wrap` 跟随所属视图的换行设置,仅显示语言和复制图标;所属视图的 CSS 保留源码布局。 + `DiffBlock` 按行比较新旧内容。它显示实际增删行及两侧最多三行中性上下文,用 `⋯` 分隔远距离改动,摘要和底部统计都不计入共享上下文。若一个片段需要超过 256 次行新增或删除,则停止精确比较;该片段按完整新旧内容显示和统计为粗粒度替换,包含共享行。复制包含完整显示 diff 及其前缀。末尾换行视为行终止符;仅末尾换行不同不会显示为改动。 `JsonTree` 把折叠字符串限制为 `collapsedStringLines` 行(默认三行)。展开后显示原始文本、保留同级逗号,并限制在窗口与外层滚动容器内;尺寸变化和祖先滚动事件会更新此限制。行复制反馈独立于 JSON 值渲染更新;尚未完成的剪贴板写入不会更新另一行或已卸载的树。 diff --git a/packages/client/ui-primitives/src/CodeCard.module.css b/packages/client/ui-primitives/src/CodeCard.module.css new file mode 100644 index 0000000000..fa3a6e579a --- /dev/null +++ b/packages/client/ui-primitives/src/CodeCard.module.css @@ -0,0 +1,81 @@ +.card { + position: relative; + margin: 16px 0; + color: var(--dsw-alias-label-primary); + background: var(--dsw-alias-markdown-code-block); + border-radius: 12px; + font: var(--dsw-font-markdown-code-block); +} + +.header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 10px 18px 4px; + background: var(--dsw-alias-markdown-code-block-banner); + border-top-left-radius: inherit; + border-top-right-radius: inherit; + color: var(--dsw-alias-label-secondary); + font: 11px/18px var(--dsw-font-family); +} + +.heading { + display: flex; + align-items: baseline; + gap: 12px; + min-width: 0; +} + +.language { + flex: none; + font-family: var(--ds-font-family-code); +} + +.title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.actions { + display: flex; + align-items: center; + gap: 4px; + flex: none; +} + +.status { + margin-right: 8px; + color: var(--dsw-alias-label-tertiary); + white-space: nowrap; +} + +.action { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + padding: 0; + border: 0; + border-radius: 6px; + color: var(--dsw-alias-label-secondary); + background: transparent; + cursor: pointer; +} + +.action:hover { + background: var(--dsw-alias-interactive-bg-hover); +} + +.action:focus-visible { + outline: 1px solid var(--dsw-alias-state-business-primary); + outline-offset: 2px; +} + +.body { + padding: 6px 18px 16px; + font: var(--dsw-font-markdown-code-block); + overflow-x: auto; +} diff --git a/packages/client/ui-primitives/src/CodeToolbar.tsx b/packages/client/ui-primitives/src/CodeToolbar.tsx new file mode 100644 index 0000000000..755753e894 --- /dev/null +++ b/packages/client/ui-primitives/src/CodeToolbar.tsx @@ -0,0 +1,62 @@ +/** Shared language, wrapping, and clipboard controls for code cards. */ +import { + IconCheckOutlineRegular, IconCopyOutlineRegular, IconNowrapFillRegular, IconWrapFillRegular, +} from './icons/index.tsx' +import { Tooltip } from './Tooltip.tsx' +import { supportsHighlighting } from './markdown/highlight.ts' +import css from './CodeCard.module.css' + +/** Localized language fallback and wrapping actions supplied by the card owner. */ +export interface CodeToolbarLabels { + /** Title for an absent or unsupported language. */ + codeLabel: string + /** Action that enables wrapping. */ + wrapLabel: string + /** Action that preserves source columns with horizontal scrolling. */ + unwrapLabel: string +} + +/** Display state and callbacks for a code card's toolbar. */ +interface CodeToolbarProps { + lang?: string | undefined + title?: string | undefined + status?: string | undefined + labels: CodeToolbarLabels + copyLabel: string + copiedLabel: string + copied: boolean + wrapped: boolean + onCopy?: (() => void) | undefined + onWrap?: (() => void) | undefined +} + +/** + * Render a language label and keyboard-accessible icon actions with tooltips. + * @param props - Localized labels, current state, and card-owned actions. + * @returns The shared code-card header. + */ +export function CodeToolbar({ lang, title, status, labels, copyLabel, copiedLabel, copied, wrapped, onCopy, onWrap }: CodeToolbarProps) { + const wrapLabel = wrapped ? labels.unwrapLabel : labels.wrapLabel + const clipboardLabel = copied ? copiedLabel : copyLabel + return ( +
+
+ {supportsHighlighting(lang) ? lang : labels.codeLabel} + {title !== undefined && {title}} +
+
+ {status !== undefined && {status}} + {onWrap !== undefined && + + } + {onCopy !== undefined && + + } +
+
+ ) +} diff --git a/packages/client/ui-primitives/src/DiffBlock.module.css b/packages/client/ui-primitives/src/DiffBlock.module.css index dd1d621aeb..649237832c 100644 --- a/packages/client/ui-primitives/src/DiffBlock.module.css +++ b/packages/client/ui-primitives/src/DiffBlock.module.css @@ -1,79 +1,52 @@ .block { - --dsl-diff-radius: 12px; - --dsl-diff-line-height: 22px; - - position: relative; - margin: 16px 0; - color: var(--dsw-alias-label-primary); - background: var(--dsw-alias-markdown-code-block); - border-radius: var(--dsl-diff-radius); -} - -/* The copy control floats in the top-right corner over the body, so the card - has no empty banner row above its first diff line (the TUI diff card has no - banner either — only the footer). The block is position: relative, so this - anchors to the card. */ -.copyButton { - position: absolute; - top: 8px; - right: 12px; - z-index: 1; - background-color: transparent; - border: none; - padding: 0; - margin: 0; - color: var(--dsw-alias-label-secondary); - cursor: pointer; - font: var(--dsw-font-xs-13); + overflow: hidden; } .body { - padding: 12px 14px; + padding: 6px 0 16px; font: var(--dsw-font-markdown-code-block); overflow-x: auto; - overflow-y: hidden; } -/* No wrapping, no word-break: a diff is read by its indentation. */ .line { - min-height: var(--dsl-diff-line-height); + box-sizing: border-box; + min-height: 1lh; + padding: 0 18px; white-space: pre; } -/* A file header: the path in the primary tone, set apart by weight. The copy - button floats over this first row's top-right corner, so reserve space at the - line's end for it — a long path scrolls under the button otherwise, and the - button's hit area would eat clicks on the path's tail. */ +.block[data-code-wrap='true'] .line { + white-space: pre-wrap; + overflow-wrap: anywhere; +} + .path { - color: var(--dsw-alias-label-primary); - font-weight: 600; - padding-right: 56px; + color: var(--dsw-alias-label-secondary); + font-weight: 500; } -/* A same-file second hunk's separator (a scattered edit), in the dim tone. */ .gap { color: var(--dsw-alias-label-tertiary); } -/* The diff's own meaning-carrying colors: removed on the error token, added on - the success token. A `- `/`+ ` prefix is drawn here so a copied line and the - shown line agree, and so the sign reads without relying on color alone. */ .del::before { content: '- '; - color: var(--dsw-alias-state-error-primary); } .del { color: var(--dsw-alias-state-error-primary); + background: var(--dsw-alias-code-diff-deleted); + box-shadow: inset 3px 0 0 var(--dsw-alias-state-error-primary); } .add::before { content: '+ '; - color: var(--dsw-alias-state-success-primary); } .add { color: var(--dsw-alias-state-success-primary); + background: var(--dsw-alias-code-diff-added); + box-shadow: inset 3px 0 0 var(--dsw-alias-state-success-primary); } .context { @@ -87,9 +60,9 @@ .expand { display: block; width: 100%; - padding: 0; + padding: 0 18px; border: none; - background-color: transparent; + background: transparent; color: var(--dsw-alias-label-tertiary); cursor: pointer; font: inherit; @@ -100,10 +73,8 @@ color: var(--dsw-alias-label-secondary); } -/* The change summary, dim under the body: `└ +A -R · N file(s)`, the same - footer the TUI transcript's diff card draws. */ .footer { - padding: 0 14px 12px; + padding: 0 18px 16px; font: var(--dsw-font-markdown-code-block); color: var(--dsw-alias-label-tertiary); } diff --git a/packages/client/ui-primitives/src/DiffBlock.tsx b/packages/client/ui-primitives/src/DiffBlock.tsx index 339c4a4af1..d9acc67fff 100644 --- a/packages/client/ui-primitives/src/DiffBlock.tsx +++ b/packages/client/ui-primitives/src/DiffBlock.tsx @@ -3,6 +3,9 @@ import clsx from 'clsx' import { structuredPatch } from 'diff' import { FoldToggle } from './FoldToggle.tsx' import { writeClipboard } from './clipboard.ts' +import { CodeToolbar, type CodeToolbarLabels } from './CodeToolbar.tsx' +import { languageForPath } from './code-highlighting.ts' +import cardCss from './CodeCard.module.css' import css from './DiffBlock.module.css' /** Output lines shown before the height cap collapses the middle. */ @@ -33,7 +36,7 @@ export interface DiffBlockProps { } /** Localized chrome for {@link DiffBlock}. */ -export interface DiffBlockLabels { +export interface DiffBlockLabels extends CodeToolbarLabels { copy: string copied: string collapseAria: string @@ -174,6 +177,9 @@ export function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, cl const { rows, added, removed, files } = useMemo(() => buildRows(diffs), [diffs]) const [expanded, setExpanded] = useState(false) const [copied, setCopied] = useState(false) + const [wrapped, setWrapped] = useState(false) + const firstLanguage = diffs[0] === undefined ? undefined : languageForPath(diffs[0].path) + const language = diffs.every(diff => languageForPath(diff.path) === firstLanguage) ? firstLanguage : undefined const onCopy = useCallback(() => { if (copied) return @@ -198,10 +204,9 @@ export function DiffBlock({ diffs, labels, maxLines = DEFAULT_DIFF_MAX_LINES, cl const tail = capped ? rows.slice(rows.length - tailLines) : [] return ( -
- +
+ { setWrapped(value => !value) }} />
{head.map((row, index) => (
{row.text}
diff --git a/packages/client/ui-primitives/src/ReadBlock.module.css b/packages/client/ui-primitives/src/ReadBlock.module.css index 2c4cf0370d..fbff018f50 100644 --- a/packages/client/ui-primitives/src/ReadBlock.module.css +++ b/packages/client/ui-primitives/src/ReadBlock.module.css @@ -1,105 +1,41 @@ .block { - --dsl-read-radius: 12px; - --dsl-read-line-height: 22px; - /* Fixed-width gutter column for the line numbers, so the content edge stays - put down the whole window regardless of how wide the numbers grow. */ - --dsl-read-gutter: 48px; - - position: relative; - margin: 16px 0; - color: var(--dsw-alias-label-primary); - background: var(--dsw-alias-markdown-code-block); - border-radius: var(--dsl-read-radius); + --dsl-read-gutter: 3ch; } -.banner { - display: flex; - justify-content: space-between; - align-items: center; - gap: 12px; - padding: 9px 14px; - background: var(--dsw-alias-markdown-code-block-banner); - border-top-left-radius: var(--dsl-read-radius); - border-top-right-radius: var(--dsl-read-radius); -} - -.label { - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: var(--dsw-alias-label-primary); - font-family: var(--ds-font-family-code); - font-size: 12px; - line-height: 18px; -} - -.action { - display: flex; - align-items: center; - flex-shrink: 0; - gap: 12px; -} - -.count { - color: var(--dsw-alias-label-tertiary); - font: var(--dsw-font-xs-13); -} - -.lang { - color: var(--dsw-alias-label-tertiary); - font-family: var(--ds-font-family-code); - font-size: 12px; - line-height: 18px; -} - -.copyButton { - background-color: transparent; - border: none; - padding: 0; - margin: 0; - color: var(--dsw-alias-label-secondary); - cursor: pointer; - font: var(--dsw-font-xs-13); -} - -.body { - padding: 12px 0; - font: var(--dsw-font-markdown-code-block); - overflow-x: auto; - overflow-y: hidden; -} - -/* One row per file line: a fixed gutter column, then the content. No wrapping — - a source line's leading whitespace is meaningful and scrolls sideways. */ .line { display: flex; - min-height: var(--dsl-read-line-height); - line-height: var(--dsl-read-line-height); + min-height: 1lh; white-space: pre; } .gutter { flex: none; width: var(--dsl-read-gutter); - padding-right: 14px; + margin-right: 12px; text-align: right; color: var(--dsw-alias-label-tertiary); - /* The gutter is chrome, not content: keep it out of a text selection so a - copy of the visible rows carries the source, not the line numbers. */ user-select: none; } .content { + min-width: 0; color: var(--dsw-alias-label-primary); } +.block[data-code-wrap='true'] .line { + white-space: pre-wrap; +} + +.block[data-code-wrap='true'] .content { + overflow-wrap: anywhere; +} + .expand { display: block; width: 100%; - padding: 0 0 0 var(--dsl-read-gutter); + padding: 0 0 0 calc(var(--dsl-read-gutter) + 12px); border: none; - background-color: transparent; + background: transparent; color: var(--dsw-alias-label-tertiary); cursor: pointer; font: inherit; diff --git a/packages/client/ui-primitives/src/ReadBlock.tsx b/packages/client/ui-primitives/src/ReadBlock.tsx index 6c1b2eaec9..e1493e3316 100644 --- a/packages/client/ui-primitives/src/ReadBlock.tsx +++ b/packages/client/ui-primitives/src/ReadBlock.tsx @@ -2,6 +2,8 @@ import { useCallback, useMemo, useRef, useState, useSyncExternalStore } from 're import clsx from 'clsx' import { FoldToggle } from './FoldToggle.tsx' import { writeClipboard } from './clipboard.ts' +import { CodeToolbar, type CodeToolbarLabels } from './CodeToolbar.tsx' +import cardCss from './CodeCard.module.css' import { grammarLoadCount, highlightLines, @@ -44,7 +46,7 @@ export interface ReadBlockProps { } /** Localized chrome for {@link ReadBlock}. */ -export interface ReadBlockLabels { +export interface ReadBlockLabels extends CodeToolbarLabels { window: (shown: number, total: number) => string copy: string copied: string @@ -88,6 +90,7 @@ export function ReadBlock({ ) const [expanded, setExpanded] = useState(false) const [copied, setCopied] = useState(false) + const [wrapped, setWrapped] = useState(false) const onCopy = useCallback(() => { if (copied) return @@ -120,23 +123,13 @@ export function ReadBlock({ [line, highlighted?.[index]]) return ( -
-
-
{label ?? ''}
-
- {windowed && ( - {labels.window(lines.length, totalLines)} - )} - {lang ?? ''} - {/* Empty files omit Copy to avoid replacing the clipboard with an empty string. */} - {lines.length > 0 && ( - - )} -
-
-
+
+ 0 ? onCopy : undefined} onWrap={() => { setWrapped(value => !value) }} + /> +
{rows(capped ? paired.slice(0, headLines) : paired)} {hidden > 0 && ( { if (copied) return @@ -178,21 +185,26 @@ export function CodeBlock({ ) return ( -
{/* These paired attributes are stable semantic hooks for owner styling and DOM tests. */} {showHeader &&
-
+ {toolbarLabels !== undefined ? { setWrapped(value => !value) } : undefined} + /> :
{lang ?? ''}
-
+
}
}
{body}
diff --git a/packages/client/ui-primitives/src/markdown/MarkdownText.tsx b/packages/client/ui-primitives/src/markdown/MarkdownText.tsx index ab2c0b380a..25b9a00172 100644 --- a/packages/client/ui-primitives/src/markdown/MarkdownText.tsx +++ b/packages/client/ui-primitives/src/markdown/MarkdownText.tsx @@ -172,7 +172,7 @@ class StreamingRenderer { * absolute HTTP(S) images render directly. */ export const MarkdownText = memo(function MarkdownText({ - text, streaming = false, labels, fileMentions, pathImages, variant = 'body', + text, streaming = false, labels: providedLabels, fileMentions, pathImages, variant = 'body', }: { text: string streaming?: boolean @@ -181,6 +181,9 @@ export const MarkdownText = memo(function MarkdownText({ pathImages?: MarkdownPathImages | undefined variant?: 'body' | 'compact' }) { + const labels = useMemo(() => variant === 'compact' + ? { ...providedLabels, code: { ...providedLabels.code, toolbarLabels: undefined } } + : providedLabels, [providedLabels, variant]) const streamRef = useRef(null) const streamLabelsRef = useRef(labels) const children = useMemo(() => { diff --git a/packages/client/ui-primitives/src/markdown/render.tsx b/packages/client/ui-primitives/src/markdown/render.tsx index c378dacd2a..cdf1b62ec9 100644 --- a/packages/client/ui-primitives/src/markdown/render.tsx +++ b/packages/client/ui-primitives/src/markdown/render.tsx @@ -36,6 +36,8 @@ export interface MarkdownCodeLabels { copyLabel: string /** Copy-button label during the post-copy confirmation window. */ copiedLabel: string + /** Shared card controls; omitted in compact and owner-styled source views. */ + toolbarLabels?: import('../CodeToolbar.tsx').CodeToolbarLabels | undefined } /** Localized chrome for a Markdown document. */ @@ -399,6 +401,7 @@ function renderCode(node: Md.Code, key: Key, context: MarkdownRenderContext): Re streaming={context.streaming} copyLabel={context.labels.code.copyLabel} copiedLabel={context.labels.code.copiedLabel} + toolbarLabels={context.labels.code.toolbarLabels} /> ) } diff --git a/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx new file mode 100644 index 0000000000..467aa5e833 --- /dev/null +++ b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx @@ -0,0 +1,96 @@ +// @vitest-environment jsdom + +import { afterEach, describe, expect, it, vi } from 'vitest' +import { act, cleanup, fireEvent, render, screen } from '@testing-library/react' +import { CodeBlock } from '../src/markdown/CodeBlock.tsx' +import { MarkdownText } from '../src/markdown/MarkdownText.tsx' +import { ReadBlock } from '../src/ReadBlock.tsx' +import { DiffBlock } from '../src/DiffBlock.tsx' +import { diffBlockLabels, readBlockLabels } from './labels.client.ts' + +const toolbarLabels = { codeLabel: 'Code block', wrapLabel: 'Wrap lines', unwrapLabel: 'Do not wrap lines' } +const labels = { copyLabel: 'Copy', copiedLabel: 'Copied', toolbarLabels } + +afterEach(() => { + cleanup() + vi.clearAllTimers() + vi.useRealTimers() +}) + +describe('code-card controls', () => { + it.each([undefined, 'unregistered'])('labels the %s language with the localized code title', (lang) => { + render() + expect(screen.getByText('Code block')).toBeTruthy() + expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('') + }) + + it('keeps a known grammar name while its highlighter is not yet visible', () => { + render() + expect(screen.getByText('typescript')).toBeTruthy() + expect(screen.queryByText('Code block')).toBeNull() + }) + + it.each(['code', 'read', 'diff'] as const)('toggles %s wrapping without changing source text', (kind) => { + const code = 'const longName = "a long value whose source must stay intact"' + const view = render(kind === 'code' + ? + : kind === 'read' + ? + : ) + const button = screen.getByRole('button', { name: kind === 'code' ? 'Do not wrap lines' : 'Wrap lines' }) + const wasWrapped = button.getAttribute('aria-pressed') === 'true' + fireEvent.click(button) + expect(button.getAttribute('aria-pressed')).toBe(String(!wasWrapped)) + expect(view.container.textContent).toContain(code) + fireEvent.click(button) + expect(button.getAttribute('aria-pressed')).toBe(String(wasWrapped)) + }) + + it('shows hover tooltips for copying and wrapping and updates the wrapping action', () => { + render() + const copy = screen.getByRole('button', { name: 'Copy' }) + fireEvent.mouseEnter(copy) + expect(screen.getByRole('tooltip').textContent).toBe('Copy') + fireEvent.mouseLeave(copy) + const wrap = screen.getByRole('button', { name: 'Do not wrap lines' }) + fireEvent.mouseEnter(wrap) + expect(screen.getByRole('tooltip').textContent).toBe('Do not wrap lines') + fireEvent.click(wrap) + expect(screen.queryByRole('tooltip')).toBeNull() + fireEvent.mouseEnter(wrap) + expect(screen.getByRole('tooltip').textContent).toBe('Wrap lines') + }) + + it('copies source through the icon and announces success', async () => { + vi.useFakeTimers() + const original = Object.getOwnPropertyDescriptor(navigator, 'clipboard') + const writeText = vi.fn<(text: string) => Promise>().mockResolvedValue() + Object.defineProperty(navigator, 'clipboard', { configurable: true, value: { writeText } }) + try { + render() + await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Copy' })) }) + expect(writeText).toHaveBeenCalledWith('const x = 1') + expect(screen.getByRole('button', { name: 'Copied' })).toBeTruthy() + } finally { + if (original === undefined) Reflect.deleteProperty(navigator, 'clipboard') + else Object.defineProperty(navigator, 'clipboard', original) + } + }) + + it('preserves compact Markdown and owner-styled source controls', () => { + const view = render() + expect(screen.queryByRole('button', { name: 'Wrap lines' })).toBeNull() + expect(screen.queryByRole('button', { name: 'Do not wrap lines' })).toBeNull() + expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('Copy') + view.rerender() + expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('Copy') + }) + + it('uses the fallback title for diffs containing different languages', () => { + render() + expect(screen.getByText('Code block')).toBeTruthy() + }) +}) diff --git a/packages/client/ui-primitives/tests/labels.client.ts b/packages/client/ui-primitives/tests/labels.client.ts index 7849d8e9c7..80b8cb7305 100644 --- a/packages/client/ui-primitives/tests/labels.client.ts +++ b/packages/client/ui-primitives/tests/labels.client.ts @@ -14,6 +14,7 @@ export const markdownLabels: MarkdownLabels = { } export const diffBlockLabels: DiffBlockLabels = { + codeLabel: '代码块', wrapLabel: '自动换行', unwrapLabel: '取消自动换行', copy: '复制', copied: '复制成功', collapseAria: '收起差异', expandAria: hidden => `展开其余 ${hidden} 行差异`, collapse: '收起', expand: hidden => `… 其余 ${hidden} 行`, @@ -21,6 +22,7 @@ export const diffBlockLabels: DiffBlockLabels = { } export const readBlockLabels: ReadBlockLabels = { + codeLabel: '代码块', wrapLabel: '自动换行', unwrapLabel: '取消自动换行', window: (shown, total) => `显示 ${shown} / ${total} 行`, copy: '复制', copied: '复制成功', collapseAria: '收起内容', expandAria: hidden => `展开其余 ${hidden} 行`, diff --git a/packages/client/ui-primitives/tests/read-block.client.spec.tsx b/packages/client/ui-primitives/tests/read-block.client.spec.tsx index 4ad939838d..1e3c7f95a7 100644 --- a/packages/client/ui-primitives/tests/read-block.client.spec.tsx +++ b/packages/client/ui-primitives/tests/read-block.client.spec.tsx @@ -134,10 +134,9 @@ describe('ReadBlock banner', () => { expect(view.queryByText(/显示/u)).toBeNull() }) - it('draws an empty label and empty language when neither is given', () => { - const view = render() - expect(view.container.querySelector('[class^="_label_"]')?.textContent).toBe('') - expect(view.container.querySelector('[class^="_lang_"]')?.textContent).toBe('') + it('uses the localized code title when no language is given', () => { + render() + expect(screen.getByText('代码块')).toBeTruthy() }) }) diff --git a/packages/client/ui-sidebar-documentpreview/README.i18n.yaml b/packages/client/ui-sidebar-documentpreview/README.i18n.yaml index d46092d14f..89c03993c4 100644 --- a/packages/client/ui-sidebar-documentpreview/README.i18n.yaml +++ b/packages/client/ui-sidebar-documentpreview/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-sidebar-documentpreview/README.md -README.md: 510e43fb723039b918672a58ec2bd26cf3b6023a -README.zh.md: 5bd9fba7c7f60f7f477afb82b0e88a5dd8b5ac30 +README.md: f5d664db612f67d71ce509e44981a4678845b50d +README.zh.md: 0361adcc79d13f06ba14cb3f6c6072e3f78dcf18 diff --git a/packages/client/ui-sidebar-documentpreview/README.md b/packages/client/ui-sidebar-documentpreview/README.md index 510e43fb72..f5d664db61 100644 --- a/packages/client/ui-sidebar-documentpreview/README.md +++ b/packages/client/ui-sidebar-documentpreview/README.md @@ -61,7 +61,7 @@ PNG, JPEG, GIF, WebP, BMP, ICO, and SVG render through Blob URLs in an `` s Shared copy comes from `sidebarDocumentPreview`; each builtin renderer owns its localized labels. PDF and converted Office previews use a graphite background in light mode and a matte-black background in dark mode, with subtle page shadows and original document colors. PDF and image previews share a floating control with **Fit width**, 25%, 50%, 100%, 150%, and 200% choices plus 25% incremental zoom across the 25%–400% fixed range. Fit width is the default and tracks pane resizing; 100% means the PDF's 96-DPI page size or the image's intrinsic CSS-pixel size. On fine pointers, the control starts hidden, slides up when the pointer enters the bottom 72 CSS pixels, and slides down after a 420 ms leave delay; hover, keyboard focus, an open menu, and an active gesture keep it visible, while devices without hover keep it visible continuously. Chromium maps a macOS trackpad pinch to the same live, pointer-anchored path as Ctrl+wheel; the control displays the gesture percentage, and the settled value survives body remounts until the tab closes. HTML previews do not expose zoom controls. -Initial reads, additional pages, and HTML/PDF/image preparation share the ongoing `StateDot` loader, which exposes its label to assistive technology and respects reduced-motion preferences; every wait before content exists centres the loader in the pane, so opening a file shows one indicator in one position until the body appears. Loaded pages stay visible while another page loads. The PDF body loads its package-local `client.pdf.js` chunk only when a PDF preview mounts; PDF.js, its Worker source, and embedded support data stay out of the startup `client.js`. PDF pages fill the pane's width edge to edge as one vertical sequence and render lazily near the viewport; an unrendered page holds its place as a quiet 3:4 placeholder block. PDF.js’s official TextLayerBuilder manages selection boundaries and normalized copying over an aligned text layer. Its companion styles keep blank line breaks unhighlighted; alignment accounts for PDF page units, page rotation, and viewport resizing, and page disposal cancels both layers. Image-only PDFs contain no selectable text. Code previews show source line numbers by default without including them in copied text; plain text uses the same font size and line height as code. Code sits on the pane's own background rather than the chat card's fill; its banner is adjacent to a full-height inner scrollport, so both scrollbars begin below the copy control. +Initial reads, additional pages, and HTML/PDF/image preparation share the ongoing `StateDot` loader, which exposes its label to assistive technology and respects reduced-motion preferences; every wait before content exists centres the loader in the pane, so opening a file shows one indicator in one position until the body appears. Loaded pages stay visible while another page loads. The PDF body loads its package-local `client.pdf.js` chunk only when a PDF preview mounts; PDF.js, its Worker source, and embedded support data stay out of the startup `client.js`. PDF pages fill the pane's width edge to edge as one vertical sequence and render lazily near the viewport; an unrendered page holds its place as a quiet 3:4 placeholder block. PDF.js’s official TextLayerBuilder manages selection boundaries and normalized copying over an aligned text layer. Its companion styles keep blank line breaks unhighlighted; alignment accounts for PDF page units, page rotation, and viewport resizing, and page disposal cancels both layers. Image-only PDFs contain no selectable text. Code previews show a secondary-colored language label and a copy icon with a tooltip; wrapping remains in the document toolbar. They show source line numbers by default without including them in copied text; plain text uses the same font size and line height as code. Code sits on the pane's own background rather than the chat card's fill; its banner is adjacent to a full-height inner scrollport, so both scrollbars begin below the copy control. ## Excel preview diff --git a/packages/client/ui-sidebar-documentpreview/README.zh.md b/packages/client/ui-sidebar-documentpreview/README.zh.md index 5bd9fba7c7..0361adcc79 100644 --- a/packages/client/ui-sidebar-documentpreview/README.zh.md +++ b/packages/client/ui-sidebar-documentpreview/README.zh.md @@ -61,7 +61,7 @@ PNG、JPEG、GIF、WebP、BMP、ICO 和 SVG 通过 Blob URL 在 `` 静态 共享文案来自 `sidebarDocumentPreview`;各内置渲染器拥有自己的本地化标签。PDF 与转换后的 Office 预览在浅色模式下使用石墨灰底色,在深色模式下使用哑黑底色,页面带有轻微阴影并保留文档原色。PDF 与图片预览共用浮动控件,提供**适应宽度**、25%、50%、100%、150% 和 200% 选项,并在 25%–400% 固定范围内按 25% 逐级缩放。适应宽度是默认模式并跟随面板尺寸;100% 表示 PDF 的 96 DPI 页面尺寸或图片的固有 CSS 像素尺寸。在精细指针设备上,控件初始隐藏;指针进入底部 72 个 CSS 像素时向上滑入,离开 420 ms 后向下退出;控件悬停、键盘焦点、菜单展开和手势进行期间保持显示,无 hover 的设备则始终显示。Chromium 将 macOS 触控板捏合映射到与 Ctrl+滚轮相同的实时指针锚定路径;控件同步显示手势比例,静止后的值在正文重新挂载后继续保留,直至 tab 关闭。HTML 预览不显示缩放控件。 -首次读取、追加页及 HTML/PDF/图片准备共用 ongoing `StateDot` loading,其标签暴露给辅助技术,并遵循减少动态效果偏好;内容出现前的每个等待都把 loading 居中在面板中,打开文件到正文出现始终是同一位置的一个标记。下一页加载期间保留已显示的内容。PDF 正文仅在 PDF 预览挂载时加载包内 `client.pdf.js` chunk;PDF.js、Worker 源码和内嵌支持数据不会进入启动 `client.js`。PDF 页面贴边占满面板宽度,组成一个纵向连续序列并在接近视口时惰性渲染;未渲染的页以安静的 3:4 占位块保持位置。PDF.js 官方 TextLayerBuilder 在与画面重合的文字层上管理选区边界和复制文本规范化。配套样式不高亮空白换行;对齐同时考虑 PDF 页面单位、页面旋转与视口宽度变化,页面释放时取消两层渲染。纯图片 PDF 不包含可选取的文字。代码预览默认显示源码行号,但复制文本不包含行号;纯文本与代码使用相同字号和行高。代码直接坐在分栏自身的背景上,而不是会话卡片的填充色;复制条与占满剩余高度的内部滚动区相邻,因此横纵滚动条都从复制控件下方开始。 +首次读取、追加页及 HTML/PDF/图片准备共用 ongoing `StateDot` loading,其标签暴露给辅助技术,并遵循减少动态效果偏好;内容出现前的每个等待都把 loading 居中在面板中,打开文件到正文出现始终是同一位置的一个标记。下一页加载期间保留已显示的内容。PDF 正文仅在 PDF 预览挂载时加载包内 `client.pdf.js` chunk;PDF.js、Worker 源码和内嵌支持数据不会进入启动 `client.js`。PDF 页面贴边占满面板宽度,组成一个纵向连续序列并在接近视口时惰性渲染;未渲染的页以安静的 3:4 占位块保持位置。PDF.js 官方 TextLayerBuilder 在与画面重合的文字层上管理选区边界和复制文本规范化。配套样式不高亮空白换行;对齐同时考虑 PDF 页面单位、页面旋转与视口宽度变化,页面释放时取消两层渲染。纯图片 PDF 不包含可选取的文字。代码预览使用 secondary 色的语言名称和带提示的复制图标;换行仍由文档工具栏控制。默认显示源码行号,但复制文本不包含行号;纯文本与代码使用相同字号和行高。代码直接坐在分栏自身的背景上,而不是会话卡片的填充色;复制条与占满剩余高度的内部滚动区相邻,因此横纵滚动条都从复制控件下方开始。 ## Excel 预览 diff --git a/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.module.css b/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.module.css index 9e284f9ce9..c430564b19 100644 --- a/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.module.css +++ b/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.module.css @@ -43,6 +43,7 @@ .renderer .code pre { box-sizing: border-box; + padding: 16px; min-width: 100%; overflow: visible; white-space: pre; diff --git a/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.tsx b/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.tsx index a643654d5b..898c0eb596 100644 --- a/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.tsx +++ b/packages/client/ui-sidebar-documentpreview/src/client/code/CodeBody.tsx @@ -24,9 +24,11 @@ export function CodeBody({ resourceAddress, content, wrap, scrollportRef, t }: C code={content.text} lang={language} streaming={!content.eof} + wrap={wrap} lineNumbers copyLabel={t('copy')} copiedLabel={t('copied')} + toolbarLabels={{ codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') }} />
) diff --git a/packages/client/ui-sidebar-documentpreview/src/client/markdown/MarkdownBody.tsx b/packages/client/ui-sidebar-documentpreview/src/client/markdown/MarkdownBody.tsx index f6164af6f3..27c672c60e 100644 --- a/packages/client/ui-sidebar-documentpreview/src/client/markdown/MarkdownBody.tsx +++ b/packages/client/ui-sidebar-documentpreview/src/client/markdown/MarkdownBody.tsx @@ -24,9 +24,12 @@ export function MarkdownBody({ content, resourceAddress, useResource, t }: Markd const copyLabel = t('code.copy') const copiedLabel = t('code.copied') const footnotes = t('footnotes') + const codeLabel = t('codeBlock.title') + const wrapLabel = t('codeBlock.wrap') + const unwrapLabel = t('codeBlock.unwrap') const labels = useMemo(() => ({ - code: { copyLabel, copiedLabel }, footnotes, - }), [copyLabel, copiedLabel, footnotes]) + code: { copyLabel, copiedLabel, toolbarLabels: { codeLabel, wrapLabel, unwrapLabel } }, footnotes, + }), [copyLabel, copiedLabel, footnotes, codeLabel, wrapLabel, unwrapLabel]) if (content.kind !== 'text') return null return (
diff --git a/packages/client/ui-sidebar-documentpreview/tests/code-body.client.spec.tsx b/packages/client/ui-sidebar-documentpreview/tests/code-body.client.spec.tsx index c2b3f0daae..ce8e6b548f 100644 --- a/packages/client/ui-sidebar-documentpreview/tests/code-body.client.spec.tsx +++ b/packages/client/ui-sidebar-documentpreview/tests/code-body.client.spec.tsx @@ -4,7 +4,7 @@ import { readFileSync } from 'node:fs' import { dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { afterEach, describe, expect, it } from 'vitest' -import { cleanup, render, waitFor } from '@testing-library/react' +import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' import type { SessionId } from '@deepseek-ai/dsh-session/types' import { absoluteFileAddress, sessionFileAddress } from '@deepseek-ai/dsh-util-workspace-path' import { CodeBody } from '../src/client/code/CodeBody.tsx' @@ -84,7 +84,11 @@ describe('CodeBody', () => { expect(view.getByText(language, { exact: true })).toBeTruthy() expect(element(view.container, '.shiki').textContent).toBe('const answer = 42') expect(view.container.querySelector('[data-line-numbers]')).not.toBeNull() - expect(view.getByRole('button', { name: 'Copy' })).toBeTruthy() + const copy = view.getByRole('button', { name: 'Copy' }) + expect(copy.textContent).toBe('') + expect(view.getAllByRole('button')).toHaveLength(1) + fireEvent.mouseEnter(copy) + expect(view.getByRole('tooltip').textContent).toBe('Copy') }) it('carries multiline grammar state across pages and preserves completed lines through settlement', () => { @@ -155,6 +159,7 @@ describe('CodeBody', () => { const view = render() const pre = element(view.container, '.shiki') const block = element(view.container, '.md-code-block') + expect(block.getAttribute('data-code-wrap')).toBe('false') const scrollport = element(view.container, '[data-code-block-content]') expect(getComputedStyle(block).marginTop).toBe('0px') expect(getComputedStyle(block).position).toBe('static') @@ -165,6 +170,8 @@ describe('CodeBody', () => { expect(getComputedStyle(pre).overflow).toBe('visible') expect(getComputedStyle(pre).wordBreak).toBe('normal') view.rerender() + expect(block.getAttribute('data-code-wrap')).toBe('true') + expect(view.getAllByRole('button')).toHaveLength(1) expect(element(view.container, '.shiki')).toBe(pre) expect(element(view.container, '[data-code-block-content]')).toBe(scrollport) expect(getComputedStyle(pre).whiteSpace).toBe('pre-wrap') diff --git a/packages/client/ui-theme/src/styles/shiki.css b/packages/client/ui-theme/src/styles/shiki.css index c7a3c5d272..f969d1b264 100644 --- a/packages/client/ui-theme/src/styles/shiki.css +++ b/packages/client/ui-theme/src/styles/shiki.css @@ -4,6 +4,11 @@ cascade as every other token sheet. Background/foreground deliberately alias the markdown code-block tokens so highlighted and plain blocks agree. */ +body { + --dsw-alias-code-diff-added: color-mix(in srgb, var(--dsw-alias-state-success-primary) 8%, transparent); + --dsw-alias-code-diff-deleted: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent); +} + :root { --shiki-foreground: var(--dsw-alias-label-primary); --shiki-background: var(--dsw-alias-markdown-code-block); @@ -19,6 +24,8 @@ } body[data-ds-dark-theme] { + --dsw-alias-code-diff-added: color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent); + --dsw-alias-code-diff-deleted: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent); --shiki-token-constant: #4dabf7; --shiki-token-string: #69db7c; --shiki-token-comment: #adb5bd; diff --git a/packages/client/ui-tool/src/client/tool/components/ToolDetails.module.css b/packages/client/ui-tool/src/client/tool/components/ToolDetails.module.css index 824bd18fde..c813c772cc 100644 --- a/packages/client/ui-tool/src/client/tool/components/ToolDetails.module.css +++ b/packages/client/ui-tool/src/client/tool/components/ToolDetails.module.css @@ -232,15 +232,13 @@ overflow: auto; } +.root .item:has(> .code:only-child) { padding: 0; } +.root .item > .code:only-child { margin: 0; } + .root .group .item:has(> .code:only-child) { padding: 4px 0 0 20px; } -.root .group .item > .code:only-child { margin: 0; } - -.root .code [data-code-block-banner] { padding: 4px 10px; } -.root .code pre { padding: 6px 10px 8px; } - .path { flex: 1; min-width: 0; diff --git a/packages/client/ui-tool/src/client/tool/components/ToolDetails.tsx b/packages/client/ui-tool/src/client/tool/components/ToolDetails.tsx index 801be3c7a0..618d998ce3 100644 --- a/packages/client/ui-tool/src/client/tool/components/ToolDetails.tsx +++ b/packages/client/ui-tool/src/client/tool/components/ToolDetails.tsx @@ -4,7 +4,7 @@ import { } from '@deepseek-ai/dsh-client-ui-primitives' import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots' import type { OpenFileOptions } from '@deepseek-ai/dsh-client-ui-chat/client' -import { markdownLabels } from '../models/primitive-labels.ts' +import { codeToolbarLabels, markdownLabels } from '../models/primitive-labels.ts' import css from './ToolDetails.module.css' /** One recorded entity, receipt, or collapsible group of related values. */ @@ -89,6 +89,7 @@ function DetailItem({ item, t, onOpenFile }: { item: ToolDetailItem } & DetailCo {item.markdown !== undefined &&
} {item.code !== undefined && ( diff --git a/packages/client/ui-tool/src/client/tool/components/ToolRow.module.css b/packages/client/ui-tool/src/client/tool/components/ToolRow.module.css index 1478b06961..5e54eeb7e5 100644 --- a/packages/client/ui-tool/src/client/tool/components/ToolRow.module.css +++ b/packages/client/ui-tool/src/client/tool/components/ToolRow.module.css @@ -324,12 +324,6 @@ color: var(--dsw-alias-label-tertiary); } -/* In-row code renders at the smaller code size (12/18) via each primitive's - rebindable content-font seam; standalone markdown code blocks keep 13/22. */ -.codeBody { - --dsl-code-block-content-font: var(--dsw-font-markdown-code-block-small); -} - /* The terminal card scrolls its OUTPUT inside its own surface (same l1 hairline as the IN/OUT card): the banner stays pinned and the scrollbar never rides over it. 224px = the 260px card cap minus the ~36px banner. */ diff --git a/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx b/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx index 62b91189fc..76fc93d13d 100644 --- a/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx +++ b/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx @@ -16,7 +16,7 @@ import { localizeTerminalCardModel, terminalBlockLabels, type TerminalCardModel, } from '../models/terminal-card-model.ts' import { - diffBlockLabels, readBlockLabels, searchBlockLabels, webBlockLabels, + codeToolbarLabels, diffBlockLabels, readBlockLabels, searchBlockLabels, webBlockLabels, } from '../models/primitive-labels.ts' import type { AskQuestionCardModel } from '../models/ask-question-card-model.ts' import { @@ -289,7 +289,8 @@ export const ToolRow = memo(function ToolRow({ <> {variant === 'code' && bodyText !== null && (
- +
)} {(cardBody !== null || outputText !== null) && ( diff --git a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts index 4b48cf4f8e..156a1f3c21 100644 --- a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts +++ b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts @@ -1,6 +1,7 @@ /** Localized copy adapters for Cordis-free UI primitives used by Tool cards. */ import type { + CodeBlockProps, DiffBlockLabels, MarkdownLabels, ReadBlockLabels, @@ -11,6 +12,15 @@ import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots' type T = TranslateNS<'conversation'> +/** + * Localize the shared code-card toolbar. + * @param t - Conversation locale seat. + * @returns Language fallback and wrapping actions. + */ +export function codeToolbarLabels(t: T): NonNullable { + return { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } +} + /** * Build localized Markdown chrome labels. * @param t - Conversation locale seat. @@ -18,7 +28,7 @@ type T = TranslateNS<'conversation'> */ export function markdownLabels(t: T): MarkdownLabels { return { - code: { copyLabel: t('copy'), copiedLabel: t('copied') }, + code: { copyLabel: t('copy'), copiedLabel: t('copied'), toolbarLabels: codeToolbarLabels(t) }, footnotes: t('markdown.footnotes'), } } @@ -30,6 +40,7 @@ export function markdownLabels(t: T): MarkdownLabels { */ export function diffBlockLabels(t: T): DiffBlockLabels { return { + ...codeToolbarLabels(t), copy: t('copy'), copied: t('copied'), collapseAria: t('diff.collapseAria'), @@ -47,6 +58,7 @@ export function diffBlockLabels(t: T): DiffBlockLabels { */ export function readBlockLabels(t: T): ReadBlockLabels { return { + ...codeToolbarLabels(t), window: (shown, total) => t('read.window', { shown, total }), copy: t('copy'), copied: t('copied'), diff --git a/packages/client/ui-tool/tests/diff-card.client.spec.tsx b/packages/client/ui-tool/tests/diff-card.client.spec.tsx index d7e37d6962..57233ea381 100644 --- a/packages/client/ui-tool/tests/diff-card.client.spec.tsx +++ b/packages/client/ui-tool/tests/diff-card.client.spec.tsx @@ -224,7 +224,7 @@ describe('FileMutationRow diff card', () => { toggleRow(view) expect(view.container.querySelector('[data-diff]')).not.toBeNull() expect(view.getByText('hello fixture')).toBeTruthy() - expect(view.getByText('复制')).toBeTruthy() + expect(view.getByRole('button', { name: '复制' })).toBeTruthy() }) it('the summary is a path link that opens the tool path through the host', () => { diff --git a/packages/client/ui-user-questions/src/client/QuestionComposer.tsx b/packages/client/ui-user-questions/src/client/QuestionComposer.tsx index 4b99d20991..4068deb520 100644 --- a/packages/client/ui-user-questions/src/client/QuestionComposer.tsx +++ b/packages/client/ui-user-questions/src/client/QuestionComposer.tsx @@ -131,7 +131,7 @@ type QuestionFlowProps = function QuestionFlow({ pending, t, useStore, actions }: QuestionFlowProps) { const questions = pending.questions const markdownLabels = useMemo(() => ({ - code: { copyLabel: t('copy'), copiedLabel: t('copied') }, + code: { copyLabel: t('copy'), copiedLabel: t('copied'), toolbarLabels: { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } }, footnotes: t('markdown.footnotes'), }), [t]) const initialProgress = useMemo(() => ({ diff --git a/packages/extensions/ui-cordis/src/client/CordisDefineRow.tsx b/packages/extensions/ui-cordis/src/client/CordisDefineRow.tsx index 0c0806a1ef..b36b62b599 100644 --- a/packages/extensions/ui-cordis/src/client/CordisDefineRow.tsx +++ b/packages/extensions/ui-cordis/src/client/CordisDefineRow.tsx @@ -134,6 +134,7 @@ export function CordisDefineRow({ aria-labelledby={`${sourcePanelId}-${activeSource}`} > Date: Mon, 21 Sep 2026 22:40:55 +0800 Subject: [PATCH 02/19] fix(web): cover code-card overflow and refresh browser expectations --- apps/web/tests/code-card-layout.e2e.ts | 160 ++++++++++++++++++ .../clickable-links-gallery/ui.expected.md | 2 +- .../expected/cordis-history/ui.expected.md | 1 + .../navigation-panes/code-card.expected.md | 2 +- apps/web/tests/navigation-panes.e2e.ts | 6 +- .../mid-stream.expected.md | 1 + .../tests/streaming-fence-highlight.e2e.ts | 2 +- apps/web/tsconfig.json | 1 + .../client/ui-primitives/README.i18n.yaml | 4 +- packages/client/ui-primitives/README.md | 2 +- packages/client/ui-primitives/README.zh.md | 2 +- .../client/ui-primitives/src/CodeToolbar.tsx | 2 +- .../ui-primitives/src/DiffBlock.module.css | 6 + .../ui-primitives/src/ReadBlock.module.css | 4 - .../client/ui-primitives/src/ReadBlock.tsx | 8 +- packages/client/ui-primitives/src/index.ts | 1 + .../src/markdown/CodeBlock.module.css | 4 - .../ui-primitives/src/markdown/render.tsx | 3 +- .../tests/code-card-controls.client.spec.tsx | 5 +- packages/client/ui-theme/README.i18n.yaml | 4 +- packages/client/ui-theme/README.md | 2 +- packages/client/ui-theme/README.zh.md | 2 +- .../ui-theme/src/styles/design-platform.css | 12 ++ packages/client/ui-theme/src/styles/shiki.css | 7 - .../client/tool/models/primitive-labels.ts | 4 +- snapshots/web/diff-bounded/ui.expected.md | 2 + snapshots/web/diff-context/ui.expected.md | 2 + .../ui-expanded.expected.md | 14 +- .../goal-multi-turn-actions/ui.expected.md | 10 +- snapshots/web/tool-details/ui.expected.md | 14 +- tsconfig.host.json | 1 + 31 files changed, 248 insertions(+), 42 deletions(-) create mode 100644 apps/web/tests/code-card-layout.e2e.ts diff --git a/apps/web/tests/code-card-layout.e2e.ts b/apps/web/tests/code-card-layout.e2e.ts new file mode 100644 index 0000000000..172d2d2ec9 --- /dev/null +++ b/apps/web/tests/code-card-layout.e2e.ts @@ -0,0 +1,160 @@ +/** Browser geometry for read offsets and horizontally scrolled diff fills. */ +import type { Browser, Page } from 'playwright' +import { chromium } from 'playwright' +import { afterAll, beforeAll, describe, expect, it, onTestFailed } from 'vitest' +import { ToolCallId, createAssistantMessage, createToolResultMessage, createUserMessage } from '@deepseek-ai/dsh-llm' +import { SESSION_FORMAT_VERSION, Session, SessionId } from '@deepseek-ai/dsh-session' +import type { JsonValue } from '@deepseek-ai/dsh-util-values' +import { launchWebScaffold, seedSession, watchConsole, type WebScaffold } from './scaffold.ts' +import { expandTurnProcesses, newEnglishPage, saveFailureShot } from './support.ts' + +const LONG_LINE = 'source_columns_'.repeat(80) +const OFFSETS = [999, 99_999] + +/** Seed durable tool results without invoking a model or allocating a large file. */ +function layoutFixture(): string { + const calls: { name: string; args: Record; result: string; meta: JsonValue }[] = OFFSETS.map((offset) => { + const path = `offset-${offset}.txt` + const lines = [{ number: offset, text: 'short' }, { number: offset + 1, text: LONG_LINE }] + return { + name: 'read', args: { file_path: path, offset }, + result: `${path}\nfile\n\n${lines.map(line => `${line.number}: ${line.text}`).join('\n')}\n`, + meta: { path, offset, lines, totalLines: offset + 2 }, + } + }) + const oldText = `old_${LONG_LINE}\nshort old` + const newText = `new_${LONG_LINE}\nshort new` + calls.push({ + name: 'edit', args: { file_path: 'long.txt', old_string: oldText, new_string: newText }, + result: 'Edited long.txt', meta: { diffs: [{ path: 'long.txt', oldText, newText }] }, + }) + const session = Session.create(SessionId('code-card-layout-source')) + session.append('turn/start', { turn: 1 }) + session.append('user/message', createUserMessage({ + content: [{ type: 'text', text: 'Inspect the source windows and edit the long lines.' }], source: { kind: 'user' }, + }), { surfaceOp: 'append' }) + session.append('step/start', { turn: 1, step: 1 }) + const namedCalls = calls.map((call, index) => ({ ...call, id: ToolCallId(`layout-${index}`), arguments: JSON.stringify(call.args) })) + session.append('assistant/message', { + stream: [], turn: 1, step: 1, + message: createAssistantMessage({ + content: namedCalls.map(call => ({ type: 'tool-call', id: call.id, name: call.name, arguments: call.arguments })), + source: { provider: 'fixture', model: 'fixture' }, + }), + }, { surfaceOp: 'append' }) + for (const call of namedCalls) { + const source = session.append('tool/call', { turn: 1, step: 1, callId: call.id, name: call.name, arguments: call.arguments }) + session.append('tool/result', { + turn: 1, step: 1, meta: call.meta, + message: createToolResultMessage({ callId: call.id, content: [{ type: 'text', text: call.result }], isError: false }), + }, { surfaceOp: 'append', sourceEventSeqs: [source.seq] }) + } + session.append('step/end', { turn: 1, step: 1 }) + session.append('step/start', { turn: 1, step: 2 }) + session.append('assistant/message', { + stream: [], turn: 1, step: 2, + message: createAssistantMessage({ + content: [{ type: 'text', text: 'CODE_LAYOUT_DONE' }], source: { provider: 'fixture', model: 'fixture' }, + }), + }, { surfaceOp: 'append' }) + session.append('step/end', { turn: 1, step: 2 }) + session.append('turn/end', { turn: 1, reason: { kind: 'completed' } }) + return [ + JSON.stringify({ type: 'session', version: SESSION_FORMAT_VERSION, id: '{{sessionId}}', createdAt: 0, cwd: '{{cwd}}', isSeeded: false, delegationDepth: 0 }), + ...session.snapshotEvents().map(event => JSON.stringify(event)), '', + ].join('\n') +} + +describe('web e2e: code-card layout', () => { + let scaffold: WebScaffold + let browser: Browser + let page: Page + let tripwire: ReturnType + + beforeAll(async () => { + scaffold = await launchWebScaffold({}) + await seedSession(scaffold, layoutFixture(), 'code-card-layout') + browser = await chromium.launch() + page = await newEnglishPage(browser) + tripwire = watchConsole(page) + await page.goto(scaffold.authenticatedUrl, { waitUntil: 'load' }) + await page.locator('[role="treeitem"]').first().click() + await page.locator('[role="treeitem"]').nth(1).click() + await page.getByText('CODE_LAYOUT_DONE', { exact: true }).waitFor() + await expandTurnProcesses(page) + for (const row of await page.locator('[data-variant="read"], [data-variant="edit"]').all()) { + await row.locator('[data-expandable]').click() + } + await page.locator('[data-read]').nth(1).waitFor() + await page.locator('[data-diff]').waitFor() + }) + + afterAll(async () => { + try { await browser?.close() } finally { await scaffold?.close() } + }) + + it.each(OFFSETS)('keeps offset %i line numbers clear of aligned source in both wrap modes', async (offset) => { + onTestFailed(() => saveFailureShot(page, `code-card-offset-${offset}`)) + const card = page.locator('[data-read]').filter({ hasText: `offset-${offset}.txt` }) + const wrap = card.getByRole('button', { name: 'Wrap lines', exact: true }) + const heights: number[] = [] + for (const wrapped of [false, true]) { + if (wrapped) await wrap.click() + expect(await wrap.getAttribute('aria-pressed')).toBe(String(wrapped)) + const rows = await card.locator('[class*="gutter"]').evaluateAll(gutters => gutters.map((gutter) => { + const content = gutter.nextElementSibling! + const range = document.createRange() + range.selectNodeContents(gutter) + const glyphs = range.getBoundingClientRect() + const slot = gutter.getBoundingClientRect() + const source = content.getBoundingClientRect() + return { + fits: glyphs.left >= slot.left - 1 && glyphs.right <= slot.right + 1, + gap: source.left - glyphs.right, left: source.left, height: source.height, + } + })) + expect(rows).toHaveLength(2) + expect(rows.every(row => row.fits && row.gap >= 11)).toBe(true) + expect(rows[0]!.left).toBe(rows[1]!.left) + heights.push(rows[1]!.height) + } + expect(heights[1]!).toBeGreaterThan(heights[0]!) + await wrap.click() + }) + + it.each([false, true])('fills long diff rows through horizontal scrolling with dark=%s', async (dark) => { + onTestFailed(() => saveFailureShot(page, `code-card-diff-${dark}`)) + await page.evaluate(value => document.body.toggleAttribute('data-ds-dark-theme', value), dark) + const card = page.locator('[data-diff]') + const body = card.locator(':scope > div').nth(1) + const wrap = card.getByRole('button', { name: 'Wrap lines', exact: true }) + for (const wrapped of [false, true]) { + if (wrapped) await wrap.click() + const result = await body.evaluate((element) => { + element.scrollLeft = element.scrollWidth + const viewport = element.getBoundingClientRect() + const rows = [...element.children].filter(row => ['+ ', '- '].includes(getComputedStyle(row, '::before').content.replaceAll('"', ''))) + return { + overflow: element.scrollWidth - element.clientWidth, + fills: rows.map(row => ({ + width: row.getBoundingClientRect().width, right: row.getBoundingClientRect().right, + fill: getComputedStyle(row).backgroundColor, marker: getComputedStyle(row).boxShadow, + })), + scrollWidth: element.scrollWidth, right: viewport.right, + } + }) + expect(result.fills).toHaveLength(4) + if (wrapped) expect(result.overflow).toBeLessThanOrEqual(1) + else expect(result.overflow).toBeGreaterThan(100) + for (const row of result.fills) { + expect(row.width).toBeGreaterThanOrEqual(result.scrollWidth - 1) + expect(row.right).toBeGreaterThanOrEqual(result.right - 1) + expect(row.fill).toMatch(dark ? /0\.12\)$/ : /0\.08\)$/) + expect(row.marker).toContain('inset') + } + } + await wrap.click() + expect(tripwire.pageErrors).toEqual([]) + expect(tripwire.warnings).toEqual([]) + }) +}) diff --git a/apps/web/tests/expected/clickable-links-gallery/ui.expected.md b/apps/web/tests/expected/clickable-links-gallery/ui.expected.md index feaeaa2468..dea186cddd 100644 --- a/apps/web/tests/expected/clickable-links-gallery/ui.expected.md +++ b/apps/web/tests/expected/clickable-links-gallery/ui.expected.md @@ -137,7 +137,7 @@ - paragraph: - img "Token preview" - text: css -- button "Do not wrap lines" [pressed] +- button "Wrap lines" [pressed] - button "Copy" - code: "--inline-code: #F5F5F5;" - paragraph: LINK_GALLERY_DONE diff --git a/apps/web/tests/expected/cordis-history/ui.expected.md b/apps/web/tests/expected/cordis-history/ui.expected.md index 1b37b0484f..d492597420 100644 --- a/apps/web/tests/expected/cordis-history/ui.expected.md +++ b/apps/web/tests/expected/cordis-history/ui.expected.md @@ -22,6 +22,7 @@ - tab "Host" [selected] - tabpanel "Host": - text: javascript + - button "Wrap lines" [pressed] - button "Copy" - code: "return { name: \"snapshot-noop\", apply(ctx) {} }" - text: Result Defined snap-1/pkg-1 (snapshot noop); it is not running yet. Use cordis_run to activate this Package. Run controls live in the Cordis panel above Settings diff --git a/apps/web/tests/expected/navigation-panes/code-card.expected.md b/apps/web/tests/expected/navigation-panes/code-card.expected.md index 3e48942224..20b377502a 100644 --- a/apps/web/tests/expected/navigation-panes/code-card.expected.md +++ b/apps/web/tests/expected/navigation-panes/code-card.expected.md @@ -1,4 +1,4 @@ - text: Code block -- button "Do not wrap lines" [pressed] +- button "Wrap lines" [pressed] - button "Copy" - code: echo WATERFALL diff --git a/apps/web/tests/navigation-panes.e2e.ts b/apps/web/tests/navigation-panes.e2e.ts index f43b020a60..2aaaaf5d0a 100644 --- a/apps/web/tests/navigation-panes.e2e.ts +++ b/apps/web/tests/navigation-panes.e2e.ts @@ -27,7 +27,8 @@ const TRAJECTORY_EXPECTED = join(SNAPSHOT_DIR, 'trajectory.expected.md') const TIMING_EXPECTED = join(SNAPSHOT_DIR, 'timing.expected.md') const SEARCH_EXPECTED = join(SNAPSHOT_DIR, 'search-results.expected.md') const TERMINAL_EXPECTED = join(SNAPSHOT_DIR, 'terminal-card.expected.md') -const CODE_CARD_EXPECTED = fileURLToPath(new URL('./expected/navigation-panes/code-card.expected.md', import.meta.url)) +const CODE_CARD_DIR = fileURLToPath(new URL('./expected/navigation-panes', import.meta.url)) +const CODE_CARD_EXPECTED = join(CODE_CARD_DIR, 'code-card.expected.md') const MODE = webSnapshotMode() const SEED_ID = 'navigation-panes-web-e2e' const EXPORTED_LOG_FILE = `session.v${SESSION_FORMAT_VERSION}.jsonl` @@ -231,7 +232,7 @@ describe('web e2e: navigation & panes over a rich seeded session', () => { const copy = block.getByRole('button', { name: 'Copy', exact: true }) await copy.hover() await page.getByRole('tooltip', { name: 'Copy', exact: true }).waitFor() - const unwrap = block.getByRole('button', { name: 'Do not wrap lines', exact: true }) + const unwrap = block.getByRole('button', { name: 'Wrap lines', exact: true }) await unwrap.hover() await page.getByRole('tooltip', { name: 'Do not wrap lines', exact: true }).waitFor() await unwrap.click() @@ -544,6 +545,7 @@ describe('web e2e: navigation & panes over a rich seeded session', () => { }, 60_000) it.skipIf(MODE === 'record')('keeps the recorded fixture inventory exact', async () => { + await assertFixtureInventory(CODE_CARD_DIR, ['code-card.expected.md']) await assertFixtureInventory(SNAPSHOT_DIR, [ 'session.v3.jsonl', 'search-results.expected.md', 'trajectory.expected.md', 'terminal-card.expected.md', 'timing.expected.md', diff --git a/apps/web/tests/snapshots/streaming-fence-highlight/mid-stream.expected.md b/apps/web/tests/snapshots/streaming-fence-highlight/mid-stream.expected.md index 19c2becc76..87f67da186 100644 --- a/apps/web/tests/snapshots/streaming-fence-highlight/mid-stream.expected.md +++ b/apps/web/tests/snapshots/streaming-fence-highlight/mid-stream.expected.md @@ -10,6 +10,7 @@ - button "Copy" - button "Context injection runtime-context" - text: ts +- button "Wrap lines" [pressed] - button "Copy" - code: "const first: number = 1 const second = \"two\" let tail" - status: Deep diving... diff --git a/apps/web/tests/streaming-fence-highlight.e2e.ts b/apps/web/tests/streaming-fence-highlight.e2e.ts index 6d65cdca0d..48017c982d 100644 --- a/apps/web/tests/streaming-fence-highlight.e2e.ts +++ b/apps/web/tests/streaming-fence-highlight.e2e.ts @@ -85,7 +85,7 @@ async function fenceTree(block: ReturnType): Promise const pre = element.querySelector('pre.shiki') if (pre === null) throw new Error('streaming fence did not render through the shiki arm') return { - language: element.querySelector('[class*="infostring"]')?.textContent ?? '', + language: element.querySelector('[data-code-block-banner] [class*="language"]')?.textContent ?? '', pre: { className: pre.className, style: pre.style.cssText, diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 9af71ce894..e7cc7396eb 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -24,6 +24,7 @@ "exclude": [ "tests/default-product-isolation.e2e.ts", "tests/diff-context.e2e.ts", + "tests/code-card-layout.e2e.ts", "tests/scaffold.ts", "tests/voice-input.e2e.ts", "tests/voice-setup.e2e.ts", diff --git a/packages/client/ui-primitives/README.i18n.yaml b/packages/client/ui-primitives/README.i18n.yaml index c14c318535..6f7cab38b8 100644 --- a/packages/client/ui-primitives/README.i18n.yaml +++ b/packages/client/ui-primitives/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-primitives/README.md -README.md: 069aea78dd08175a9ebb1e590bb03e97dc08daab -README.zh.md: d235e19a9f9c829d4d5d6587fdd147fda9a2884e +README.md: 09eab3840b7cfea7f84d12688787f6bd0344efc0 +README.zh.md: c5e46728f9ae8dfe33dc3e67812602ecc6d58af0 diff --git a/packages/client/ui-primitives/README.md b/packages/client/ui-primitives/README.md index 069aea78dd..09eab3840b 100644 --- a/packages/client/ui-primitives/README.md +++ b/packages/client/ui-primitives/README.md @@ -87,7 +87,7 @@ The nearest `MarkdownDelegateProvider` supplies optional `openExternalLink` and `MarkdownText` defaults to `variant="body"`. Use `variant="compact"` for secondary content: its 13px text and 20px line height follow the content-size setting, all heading levels use the same size with weight 600, and paragraphs and lists use tighter spacing. Text, links, and code keep the tertiary color; dotted underlines distinguish links. Code headers scroll with their blocks. Tables and math stay enabled at the surrounding text size and scroll horizontally within the available width. Both variants share the parser and streaming cache. -`CodeBlock.toolbarLabels` enables the shared code-card header and spacing. `ReadBlock` and `DiffBlock` use the same header: secondary-colored language text, copy and wrap icons, and hover or keyboard-focus tooltips. Missing or unsupported languages use the owner’s localized code-block title; mixed-language diffs use that title too. Code cards share typography and content insets. Wrapping is local to each mounted card and never changes copied text; code fences start wrapped, while reads and diffs preserve source columns until wrapping is enabled. Compact Markdown omits this toolbar. With `toolbarLabels`, source previews can pass `wrap` to follow their owner’s preference and show only the language and copy icon; owner CSS retains the source layout. +`CodeBlock.toolbarLabels` enables the shared code-card header and spacing. `ReadBlock` and `DiffBlock` use the same header: secondary-colored language text, copy and wrap icons, and hover or keyboard-focus tooltips. Missing or unsupported languages use the owner’s localized code-block title; mixed-language diffs use that title too. Code cards share typography and content insets. Read gutters fit the largest returned line number, and diff fills cover the full scrollable row. The wrap toggle keeps a fixed accessible name and exposes its state through `aria-pressed`; its tooltip describes the next action. Wrapping is local to each mounted card and never changes copied text; code fences start wrapped, while reads and diffs preserve source columns until wrapping is enabled. Compact Markdown omits this toolbar. With `toolbarLabels`, source previews can pass `wrap` to follow their owner’s preference and show only the language and copy icon; owner CSS retains the source layout. `DiffBlock` compares the old and new content by line. It shows actual additions and deletions with up to three neutral context lines on each side, separates distant changes with `⋯`, and excludes shared context from both summary and footer totals. Search stops beyond 256 line additions/deletions per fragment; those fragments display and count the complete old and new contents as a coarse replacement, including shared lines. Copy includes the full displayed diff with its prefixes. A final newline is treated as a terminator; differences only in the presence of a final newline are not displayed. diff --git a/packages/client/ui-primitives/README.zh.md b/packages/client/ui-primitives/README.zh.md index d235e19a9f..c5e46728f9 100644 --- a/packages/client/ui-primitives/README.zh.md +++ b/packages/client/ui-primitives/README.zh.md @@ -87,7 +87,7 @@ kind: "package-library" `MarkdownText` 默认为 `variant="body"`。次级内容使用 `variant="compact"`:其 13px 字号与 20px 行高跟随内容字号设置,各级标题保持同一字号并使用 600 字重,段落与列表采用更紧凑的间距。正文、链接和代码均保持 tertiary 颜色,以点状下划线区分链接。代码标题栏随代码块滚动。表格和公式仍然启用,使用周围文字的字号,并在可用宽度内横向滚动。两个变体共享解析器与流式缓存。 -`CodeBlock.toolbarLabels` 启用共享代码卡片的标题栏和间距。`ReadBlock` 与 `DiffBlock` 使用相同的标题栏:secondary 色的语言名称、复制与换行图标,以及悬停或键盘聚焦时的提示。语言缺失或不受支持时显示调用方提供的本地化代码块标题;混合语言的 Diff 也使用该标题。代码卡片共用字体和内容内边距。换行设置仅属于当前挂载的卡片,不改变复制的文本;代码围栏默认换行,读取和差异卡片则在启用换行前保留源码列位置。紧凑 Markdown 不使用此工具栏。源码预览传入 `toolbarLabels` 后,可用 `wrap` 跟随所属视图的换行设置,仅显示语言和复制图标;所属视图的 CSS 保留源码布局。 +`CodeBlock.toolbarLabels` 启用共享代码卡片的标题栏和间距。`ReadBlock` 与 `DiffBlock` 使用相同的标题栏:secondary 色的语言名称、复制与换行图标,以及悬停或键盘聚焦时的提示。语言缺失或不受支持时显示调用方提供的本地化代码块标题;混合语言的 Diff 也使用该标题。代码卡片共用字体和内容内边距。读取卡片的行号栏容纳返回窗口中的最大行号,Diff 底色覆盖完整可滚动行。换行按钮保留固定的无障碍名称,以 `aria-pressed` 表达状态;提示文本说明下一步操作。换行设置仅属于当前挂载的卡片,不改变复制的文本;代码围栏默认换行,读取和差异卡片则在启用换行前保留源码列位置。紧凑 Markdown 不使用此工具栏。源码预览传入 `toolbarLabels` 后,可用 `wrap` 跟随所属视图的换行设置,仅显示语言和复制图标;所属视图的 CSS 保留源码布局。 `DiffBlock` 按行比较新旧内容。它显示实际增删行及两侧最多三行中性上下文,用 `⋯` 分隔远距离改动,摘要和底部统计都不计入共享上下文。若一个片段需要超过 256 次行新增或删除,则停止精确比较;该片段按完整新旧内容显示和统计为粗粒度替换,包含共享行。复制包含完整显示 diff 及其前缀。末尾换行视为行终止符;仅末尾换行不同不会显示为改动。 diff --git a/packages/client/ui-primitives/src/CodeToolbar.tsx b/packages/client/ui-primitives/src/CodeToolbar.tsx index 755753e894..897d4cd1f7 100644 --- a/packages/client/ui-primitives/src/CodeToolbar.tsx +++ b/packages/client/ui-primitives/src/CodeToolbar.tsx @@ -47,7 +47,7 @@ export function CodeToolbar({ lang, title, status, labels, copyLabel, copiedLabe
{status !== undefined && {status}} {onWrap !== undefined && - } diff --git a/packages/client/ui-primitives/src/DiffBlock.module.css b/packages/client/ui-primitives/src/DiffBlock.module.css index 649237832c..8e78a0b708 100644 --- a/packages/client/ui-primitives/src/DiffBlock.module.css +++ b/packages/client/ui-primitives/src/DiffBlock.module.css @@ -3,6 +3,8 @@ } .body { + display: grid; + grid-template-columns: minmax(max-content, 1fr); padding: 6px 0 16px; font: var(--dsw-font-markdown-code-block); overflow-x: auto; @@ -15,6 +17,10 @@ white-space: pre; } +.block[data-code-wrap='true'] .body { + grid-template-columns: minmax(0, 1fr); +} + .block[data-code-wrap='true'] .line { white-space: pre-wrap; overflow-wrap: anywhere; diff --git a/packages/client/ui-primitives/src/ReadBlock.module.css b/packages/client/ui-primitives/src/ReadBlock.module.css index fbff018f50..601bb29f48 100644 --- a/packages/client/ui-primitives/src/ReadBlock.module.css +++ b/packages/client/ui-primitives/src/ReadBlock.module.css @@ -1,7 +1,3 @@ -.block { - --dsl-read-gutter: 3ch; -} - .line { display: flex; min-height: 1lh; diff --git a/packages/client/ui-primitives/src/ReadBlock.tsx b/packages/client/ui-primitives/src/ReadBlock.tsx index e1493e3316..0eaf96374f 100644 --- a/packages/client/ui-primitives/src/ReadBlock.tsx +++ b/packages/client/ui-primitives/src/ReadBlock.tsx @@ -1,4 +1,4 @@ -import { useCallback, useMemo, useRef, useState, useSyncExternalStore } from 'react' +import { useCallback, useMemo, useRef, useState, useSyncExternalStore, type CSSProperties } from 'react' import clsx from 'clsx' import { FoldToggle } from './FoldToggle.tsx' import { writeClipboard } from './clipboard.ts' @@ -119,14 +119,18 @@ export function ReadBlock({
)) + const gutterDigits = lines.reduce((digits, line) => Math.max(digits, String(line.number).length), 3) + const gutterStyle = { '--dsl-read-gutter': `${gutterDigits}ch` } as CSSProperties + const paired = lines.map((line, index): readonly [ReadBlockLine, readonly HighlightSpan[] | undefined] => [line, highlighted?.[index]]) return ( -
+
0 ? onCopy : undefined} onWrap={() => { setWrapped(value => !value) }} />
diff --git a/packages/client/ui-primitives/src/index.ts b/packages/client/ui-primitives/src/index.ts index 12518ed198..b8ec370298 100644 --- a/packages/client/ui-primitives/src/index.ts +++ b/packages/client/ui-primitives/src/index.ts @@ -2,6 +2,7 @@ * Cordis-free React primitives styled only through `--dsw-*` tokens. */ +export type { CodeToolbarLabels } from './CodeToolbar.tsx' export { StateDot } from './StateDot.tsx' export type { StateDotState } from './StateDot.tsx' export { DisclosureRow } from './DisclosureRow.tsx' diff --git a/packages/client/ui-primitives/src/markdown/CodeBlock.module.css b/packages/client/ui-primitives/src/markdown/CodeBlock.module.css index 3c2cf7eebe..49bcfe33a7 100644 --- a/packages/client/ui-primitives/src/markdown/CodeBlock.module.css +++ b/packages/client/ui-primitives/src/markdown/CodeBlock.module.css @@ -104,10 +104,6 @@ color: var(--dsw-alias-label-primary); } -.card { - --dsl-code-block-content-font: var(--dsw-font-markdown-code-block); -} - .card :where(pre) { padding: 6px 18px 16px; word-break: normal; diff --git a/packages/client/ui-primitives/src/markdown/render.tsx b/packages/client/ui-primitives/src/markdown/render.tsx index cdf1b62ec9..a7bb8a2365 100644 --- a/packages/client/ui-primitives/src/markdown/render.tsx +++ b/packages/client/ui-primitives/src/markdown/render.tsx @@ -22,6 +22,7 @@ import clsx from 'clsx' import type * as Md from 'mdast' import type {} from 'mdast-util-math' import { normalizeUri } from 'micromark-util-sanitize-uri' +import type { CodeToolbarLabels } from '../CodeToolbar.tsx' import { CodeBlock } from './CodeBlock.tsx' import { parseFileLink } from './file-link.ts' import { renderTexToReact } from './katex.tsx' @@ -37,7 +38,7 @@ export interface MarkdownCodeLabels { /** Copy-button label during the post-copy confirmation window. */ copiedLabel: string /** Shared card controls; omitted in compact and owner-styled source views. */ - toolbarLabels?: import('../CodeToolbar.tsx').CodeToolbarLabels | undefined + toolbarLabels?: CodeToolbarLabels | undefined } /** Localized chrome for a Markdown document. */ diff --git a/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx index 467aa5e833..e4b152650f 100644 --- a/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx +++ b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx @@ -37,10 +37,11 @@ describe('code-card controls', () => { : kind === 'read' ? : ) - const button = screen.getByRole('button', { name: kind === 'code' ? 'Do not wrap lines' : 'Wrap lines' }) + const button = screen.getByRole('button', { name: 'Wrap lines' }) const wasWrapped = button.getAttribute('aria-pressed') === 'true' fireEvent.click(button) expect(button.getAttribute('aria-pressed')).toBe(String(!wasWrapped)) + expect(button.getAttribute('aria-label')).toBe('Wrap lines') expect(view.container.textContent).toContain(code) fireEvent.click(button) expect(button.getAttribute('aria-pressed')).toBe(String(wasWrapped)) @@ -52,7 +53,7 @@ describe('code-card controls', () => { fireEvent.mouseEnter(copy) expect(screen.getByRole('tooltip').textContent).toBe('Copy') fireEvent.mouseLeave(copy) - const wrap = screen.getByRole('button', { name: 'Do not wrap lines' }) + const wrap = screen.getByRole('button', { name: 'Wrap lines' }) fireEvent.mouseEnter(wrap) expect(screen.getByRole('tooltip').textContent).toBe('Do not wrap lines') fireEvent.click(wrap) diff --git a/packages/client/ui-theme/README.i18n.yaml b/packages/client/ui-theme/README.i18n.yaml index e48e09fdac..819e09548b 100644 --- a/packages/client/ui-theme/README.i18n.yaml +++ b/packages/client/ui-theme/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-theme/README.md -README.md: 9526078829a882f18b08e5cc7ac8a9bb5ac7dfe4 -README.zh.md: e487d85191d1afdb4d1d013459f94c0742d93b1d +README.md: f1fb30221bb176648cc99f1b2a39984ff3b84871 +README.zh.md: c1e44eb5b9307dbb49e0868b0c68af3410b38928 diff --git a/packages/client/ui-theme/README.md b/packages/client/ui-theme/README.md index 9526078829..f1fb30221b 100644 --- a/packages/client/ui-theme/README.md +++ b/packages/client/ui-theme/README.md @@ -51,7 +51,7 @@ The service owns theme and font-size state and publishes snapshots. The ui-layou ### Stylesheets -`src/styles/` holds six sheets imported in order by ui-theme's dynamic client entry: `base.css`, `corner-shape.css`, `design-platform.css`, `scrollbar.css`, `gradient-shadow-text.css`, and `shiki.css`. The client bundle compiles and injects them as plugin-owned global styles, so unload and HMR remove them with ui-theme. `scrollbar.css` consumes the `--dsw-alias-scrollbar-*` tokens and must follow `design-platform.css`, which declares them. Status marks use their own semantic state tokens. +`src/styles/` holds six sheets imported in order by ui-theme's dynamic client entry: `base.css`, `corner-shape.css`, `design-platform.css`, `scrollbar.css`, `gradient-shadow-text.css`, and `shiki.css`. The client bundle compiles and injects them as plugin-owned global styles, so unload and HMR remove them with ui-theme. `scrollbar.css` consumes the `--dsw-alias-scrollbar-*` tokens and must follow `design-platform.css`, which declares them. Status marks use their own semantic state tokens. `design-platform.css` also owns the code-diff fill aliases and their static alpha palette entries; `shiki.css` owns syntax colors. `corner-shape.css` smooths every rounded corner: inside `@supports (corner-shape: superellipse(1.5))` it defines `--dsw-corner-shape` and applies it to all elements and their `::before`/`::after` through the universal selector, so engines without `corner-shape` keep circular corners. Full-round shapes — `border-radius: 50%` circles and pill radii — pair `corner-shape: round` with their radius in the owning component sheet because a superellipse deforms them; the corner-shape stylesheet spec enforces that pairing across every package stylesheet. diff --git a/packages/client/ui-theme/README.zh.md b/packages/client/ui-theme/README.zh.md index e487d85191..c1e44eb5b9 100644 --- a/packages/client/ui-theme/README.zh.md +++ b/packages/client/ui-theme/README.zh.md @@ -51,7 +51,7 @@ kind: "package-reference" ### 样式表 -`src/styles/` 下有六张样式表,由 ui-theme 的动态客户端 entry 依次导入:`base.css`、`corner-shape.css`、`design-platform.css`、`scrollbar.css`、`gradient-shadow-text.css` 与 `shiki.css`。客户端 bundle 将其编译并注入为插件持有的全局样式,因此卸载与 HMR(热模块替换)会随 ui-theme 一同移除。`scrollbar.css` 消费 `--dsw-alias-scrollbar-*` token,必须排在声明这些 token 的 `design-platform.css` 之后。状态标记使用各自的语义状态 token。 +`src/styles/` 下有六张样式表,由 ui-theme 的动态客户端 entry 依次导入:`base.css`、`corner-shape.css`、`design-platform.css`、`scrollbar.css`、`gradient-shadow-text.css` 与 `shiki.css`。客户端 bundle 将其编译并注入为插件持有的全局样式,因此卸载与 HMR(热模块替换)会随 ui-theme 一同移除。`scrollbar.css` 消费 `--dsw-alias-scrollbar-*` token,必须排在声明这些 token 的 `design-platform.css` 之后。状态标记使用各自的语义状态 token。`design-platform.css` 还负责代码差异底色的别名及其静态透明度色阶;`shiki.css` 负责语法颜色。 `corner-shape.css` 平滑所有圆角:在 `@supports (corner-shape: superellipse(1.5))` 内定义 `--dsw-corner-shape`,并通过通配选择器应用到所有元素及其 `::before`/`::after`,因此不支持 `corner-shape` 的引擎保持普通圆弧。正圆形状——`border-radius: 50%` 的圆与胶囊半径——因超级椭圆会使其变形,须在所属组件样式表中把 `corner-shape: round` 与半径声明配对;corner-shape 样式表 spec 跨全部包样式表强制这一配对。 diff --git a/packages/client/ui-theme/src/styles/design-platform.css b/packages/client/ui-theme/src/styles/design-platform.css index 4cc18f3be5..929b24be6c 100644 --- a/packages/client/ui-theme/src/styles/design-platform.css +++ b/packages/client/ui-theme/src/styles/design-platform.css @@ -34,6 +34,8 @@ body { --dsw-static-green-100: rgb(230, 250, 237); --dsw-static-green-400: rgb(78, 209, 126); --dsw-static-green-500: rgb(34, 197, 94); + --dsw-static-green-500-a08: rgb(34 197 94 / 8%); + --dsw-static-green-500-a12: rgb(34 197 94 / 12%); --dsw-static-green-900: rgb(35, 60, 44); --dsw-static-neutral-00: rgb(255, 255, 255); --dsw-static-neutral-1000: rgb(0, 0, 0); @@ -72,9 +74,11 @@ body { --dsw-static-neutral-bluish-950: rgb(21, 21, 23); --dsw-static-red-100: rgb(254, 226, 226); --dsw-static-red-400: rgb(242, 90, 90); + --dsw-static-red-400-a12: rgb(242 90 90 / 12%); --dsw-static-red-500: rgb(239, 68, 68); --dsw-static-red-50: rgb(254, 242, 242); --dsw-static-red-600: rgb(236, 19, 19); + --dsw-static-red-600-a08: rgb(236 19 19 / 8%); --dsw-static-red-900: rgb(87, 12, 12); } @@ -111,6 +115,8 @@ body[data-ds-dark-theme] { --dsw-static-green-100: rgb(230, 250, 237); --dsw-static-green-400: rgb(78, 209, 126); --dsw-static-green-500: rgb(34, 197, 94); + --dsw-static-green-500-a08: rgb(34 197 94 / 8%); + --dsw-static-green-500-a12: rgb(34 197 94 / 12%); --dsw-static-green-900: rgb(35, 60, 44); --dsw-static-neutral-00: rgb(255, 255, 255); --dsw-static-neutral-1000: rgb(0, 0, 0); @@ -149,9 +155,11 @@ body[data-ds-dark-theme] { --dsw-static-neutral-bluish-950: rgb(21, 21, 23); --dsw-static-red-100: rgb(254, 226, 226); --dsw-static-red-400: rgb(242, 90, 90); + --dsw-static-red-400-a12: rgb(242 90 90 / 12%); --dsw-static-red-500: rgb(239, 68, 68); --dsw-static-red-50: rgb(254, 242, 242); --dsw-static-red-600: rgb(236, 19, 19); + --dsw-static-red-600-a08: rgb(236 19 19 / 8%); --dsw-static-red-900: rgb(87, 12, 12); } @@ -226,6 +234,8 @@ body { --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-300); --dsw-alias-state-business-primary: var(--dsw-static-deepseek-500); --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-100); + --dsw-alias-code-diff-added: var(--dsw-static-green-500-a08); + --dsw-alias-code-diff-deleted: var(--dsw-static-red-600-a08); --dsw-alias-state-error-primary: var(--dsw-static-red-600); --dsw-alias-state-error-secondary: var(--dsw-static-red-400); --dsw-alias-state-idle-primary: var(--dsw-static-neutral-300); @@ -324,6 +334,8 @@ body[data-ds-dark-theme] { --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-550); --dsw-alias-state-business-primary: var(--dsw-static-deepseek-400); --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-800); + --dsw-alias-code-diff-added: var(--dsw-static-green-500-a12); + --dsw-alias-code-diff-deleted: var(--dsw-static-red-400-a12); --dsw-alias-state-error-primary: var(--dsw-static-red-400); --dsw-alias-state-error-secondary: var(--dsw-static-red-400); --dsw-alias-state-idle-primary: var(--dsw-static-neutral-600); diff --git a/packages/client/ui-theme/src/styles/shiki.css b/packages/client/ui-theme/src/styles/shiki.css index f969d1b264..c7a3c5d272 100644 --- a/packages/client/ui-theme/src/styles/shiki.css +++ b/packages/client/ui-theme/src/styles/shiki.css @@ -4,11 +4,6 @@ cascade as every other token sheet. Background/foreground deliberately alias the markdown code-block tokens so highlighted and plain blocks agree. */ -body { - --dsw-alias-code-diff-added: color-mix(in srgb, var(--dsw-alias-state-success-primary) 8%, transparent); - --dsw-alias-code-diff-deleted: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent); -} - :root { --shiki-foreground: var(--dsw-alias-label-primary); --shiki-background: var(--dsw-alias-markdown-code-block); @@ -24,8 +19,6 @@ body { } body[data-ds-dark-theme] { - --dsw-alias-code-diff-added: color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent); - --dsw-alias-code-diff-deleted: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent); --shiki-token-constant: #4dabf7; --shiki-token-string: #69db7c; --shiki-token-comment: #adb5bd; diff --git a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts index 156a1f3c21..af1e13679b 100644 --- a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts +++ b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts @@ -1,7 +1,7 @@ /** Localized copy adapters for Cordis-free UI primitives used by Tool cards. */ import type { - CodeBlockProps, + CodeToolbarLabels, DiffBlockLabels, MarkdownLabels, ReadBlockLabels, @@ -17,7 +17,7 @@ type T = TranslateNS<'conversation'> * @param t - Conversation locale seat. * @returns Language fallback and wrapping actions. */ -export function codeToolbarLabels(t: T): NonNullable { +export function codeToolbarLabels(t: T): CodeToolbarLabels { return { codeLabel: t('codeBlock.title'), wrapLabel: t('codeBlock.wrap'), unwrapLabel: t('codeBlock.unwrap') } } diff --git a/snapshots/web/diff-bounded/ui.expected.md b/snapshots/web/diff-bounded/ui.expected.md index 056f1e2156..1883ed4a1c 100644 --- a/snapshots/web/diff-bounded/ui.expected.md +++ b/snapshots/web/diff-bounded/ui.expected.md @@ -2,6 +2,8 @@ - text: Edit - button "large.txt" - text: +130 -130 +- text: Code block +- button "Wrap lines" - button "Copy" - text: large.txt - shared heading - old setting 0 - old setting 1 - old setting 2 - button "Expand 252 more diff lines": … 252 more lines diff --git a/snapshots/web/diff-context/ui.expected.md b/snapshots/web/diff-context/ui.expected.md index 628877899b..44e1810526 100644 --- a/snapshots/web/diff-context/ui.expected.md +++ b/snapshots/web/diff-context/ui.expected.md @@ -2,6 +2,8 @@ - text: Edit - button "config.txt" - text: +1 -1 +- text: Code block +- button "Wrap lines" - button "Copy" - text: config.txt - mode=DEBUG + mode=RELEASE level=info └ +1 -1 · 1 file - button "Inspect" diff --git a/snapshots/web/goal-multi-turn-actions/ui-expanded.expected.md b/snapshots/web/goal-multi-turn-actions/ui-expanded.expected.md index 7c9f533f8c..1492d81803 100644 --- a/snapshots/web/goal-multi-turn-actions/ui-expanded.expected.md +++ b/snapshots/web/goal-multi-turn-actions/ui-expanded.expected.md @@ -31,8 +31,12 @@ - text: — 随机选中的包: - code: packages/context/session-reference - text: 📦 +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: session-reference ├── README.md ├── package.json ├── src │ ├── index.ts │ └── uri.ts └── tests └── session-reference.spec.ts +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: "session-reference/ ├── README.md # 包说明文档 ├── package.json # 包元数据与依赖声明 ├── src/ │ ├── index.ts # 入口,导出公共 API │ └── uri.ts # 会话引用 URI 相关实现 └── tests/ └── session-reference.spec.ts # 单元测试" - paragraph: 这是一个很典型的轻量 TypeScript 包结构:入口 + 实现 + 测试。这一轮到此结束,等系统开启下一个 turn。 @@ -54,8 +58,12 @@ - text: — 随机选中的包: - code: packages/llm/token-meter - text: 📦 +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: token-meter ├── README.md ├── package.json ├── src │ └── index.ts └── tests └── token-meter.spec.ts +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: "token-meter/ ├── README.md # 包说明文档 ├── package.json # 包元数据与依赖声明 ├── src/ │ └── index.ts # 入口,导出公共 API(token 计量逻辑) └── tests/ └── token-meter.spec.ts # 单元测试" - paragraph: @@ -76,14 +84,16 @@ - strong: Turn 1 - text: — 随机选中 - code: packages/context/session-reference - - text: ,输出了文件结构: + - text: ,输出了文件结构: Code block + - button "Wrap lines" [pressed] - button "Copy" - code: session-reference/ ├── README.md ├── package.json ├── src/ │ ├── index.ts │ └── uri.ts └── tests/ └── session-reference.spec.ts - listitem: - strong: Turn 2 - text: — 随机选中 - code: packages/llm/token-meter - - text: ,输出了文件结构: + - text: ,输出了文件结构: Code block + - button "Wrap lines" [pressed] - button "Copy" - code: token-meter/ ├── README.md ├── package.json ├── src/ │ └── index.ts └── tests/ └── token-meter.spec.ts - paragraph: diff --git a/snapshots/web/goal-multi-turn-actions/ui.expected.md b/snapshots/web/goal-multi-turn-actions/ui.expected.md index 2d7d6a5d24..0251c8d0e7 100644 --- a/snapshots/web/goal-multi-turn-actions/ui.expected.md +++ b/snapshots/web/goal-multi-turn-actions/ui.expected.md @@ -17,8 +17,12 @@ - text: — 随机选中的包: - code: packages/context/session-reference - text: 📦 +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: session-reference ├── README.md ├── package.json ├── src │ ├── index.ts │ └── uri.ts └── tests └── session-reference.spec.ts +- text: Code block +- button "Wrap lines" [pressed] - button "Copy" - code: "session-reference/ ├── README.md # 包说明文档 ├── package.json # 包元数据与依赖声明 ├── src/ │ ├── index.ts # 入口,导出公共 API │ └── uri.ts # 会话引用 URI 相关实现 └── tests/ └── session-reference.spec.ts # 单元测试" - paragraph: 这是一个很典型的轻量 TypeScript 包结构:入口 + 实现 + 测试。这一轮到此结束,等系统开启下一个 turn。 @@ -36,14 +40,16 @@ - strong: Turn 1 - text: — 随机选中 - code: packages/context/session-reference - - text: ,输出了文件结构: + - text: ,输出了文件结构: Code block + - button "Wrap lines" [pressed] - button "Copy" - code: session-reference/ ├── README.md ├── package.json ├── src/ │ ├── index.ts │ └── uri.ts └── tests/ └── session-reference.spec.ts - listitem: - strong: Turn 2 - text: — 随机选中 - code: packages/llm/token-meter - - text: ,输出了文件结构: + - text: ,输出了文件结构: Code block + - button "Wrap lines" [pressed] - button "Copy" - code: token-meter/ ├── README.md ├── package.json ├── src/ │ └── index.ts └── tests/ └── token-meter.spec.ts - paragraph: diff --git a/snapshots/web/tool-details/ui.expected.md b/snapshots/web/tool-details/ui.expected.md index bd5a22851a..4a7cc83df9 100644 --- a/snapshots/web/tool-details/ui.expected.md +++ b/snapshots/web/tool-details/ui.expected.md @@ -129,6 +129,7 @@ - list: - listitem: - text: json + - button "Wrap lines" [pressed] - button "Copy" - code: "{ \"type\": \"object\", \"properties\": { \"service\": { \"type\": \"string\" } } }" - group: @@ -136,6 +137,7 @@ - list: - listitem: - text: json + - button "Wrap lines" [pressed] - button "Copy" - code: "{ \"type\": \"object\" }" - listitem: @@ -154,6 +156,7 @@ - list: - listitem: - text: json + - button "Wrap lines" [pressed] - button "Copy" - code: "{ \"type\": \"object\", \"properties\": { \"root\": { \"type\": \"string\" } } }" - group: @@ -161,6 +164,7 @@ - list: - listitem: - text: json + - button "Wrap lines" [pressed] - button "Copy" - code: "{ \"type\": \"object\" }" - button "Inspect" @@ -224,6 +228,7 @@ - list: - listitem: - text: javascript + - button "Wrap lines" [pressed] - button "Copy" - code: "return { reviewed: 12, needsDetails: [\"list_agents\", \"job_list\", \"terminal_list\"] };" - listitem: @@ -440,7 +445,8 @@ - text: Recorded result - list: - listitem: - - text: job-demo-build Running + - text: job-demo-build Running Code block + - button "Wrap lines" [pressed] - button "Copy" - code: Building client assets… ✓ 184 modules transformed. dist/index.js 92.4 kB - button "Inspect" @@ -458,6 +464,8 @@ - text: preview Started terminal-demo-1 - term: Type - definition: shell + - text: Code block + - button "Wrap lines" [pressed] - button "Copy" - code: /workspace/demo % - button "Inspect" @@ -465,7 +473,8 @@ - text: Recorded result - list: - listitem: - - text: terminal-demo-1 Lines 16–18 of 18 + - text: terminal-demo-1 Lines 16–18 of 18 Code block + - button "Wrap lines" [pressed] - button "Copy" - code: "VITE v7.0.0 ready in {{duration}} Local: http://localhost:5173/ Watching for file changes…" - button "Inspect" @@ -545,6 +554,7 @@ - listitem: - button "src/tool-details.ts:24:1" - text: typescript + - button "Wrap lines" [pressed] - button "Copy" - code: "function renderToolDetails(model: ToolDetailsModel): ReactNode" - paragraph: Render compact fields and list rows from a recorded tool result. diff --git a/tsconfig.host.json b/tsconfig.host.json index 140e9f5894..f359eaba9a 100644 --- a/tsconfig.host.json +++ b/tsconfig.host.json @@ -12,6 +12,7 @@ "apps/web/product-isolation.ts", "apps/web/tests/default-product-isolation.e2e.ts", "apps/web/tests/diff-context.e2e.ts", + "apps/web/tests/code-card-layout.e2e.ts", "apps/web/tests/scaffold.ts", "apps/web/tests/voice-input.e2e.ts", "apps/web/tests/voice-setup.e2e.ts", From ab62f09c22560e3649901e32f1a41fe51888ba75 Mon Sep 17 00:00:00 2001 From: winewill <324803222+winewill@users.noreply.github.com> Date: Tue, 22 Sep 2026 12:38:05 +0800 Subject: [PATCH 03/19] fix(desktop): report Windows extraction failures with 7-Zip evidence The installer showed "Failed to decompress files" and discarded 7-Zip's error output, so a failure such as security software quarantining an extracted file could not be told apart from a full disk or a broken download. - InstallerExtract returns negated Win32 errors for launch failures so they no longer collide with 7-Zip exit codes; 7-Zip writes UTF-8 errors. - window-frame.dll composes a report (result, archive, destination, Windows version, full 7-Zip output), saves it under the updater cache directory, and presents a task dialog with the first error line, a collapsible bounded excerpt, and a Copy error details button. Silent installs keep only the report; a missing task dialog falls back to a message box. - Unsigned Windows builds name their installer *-unsigned.exe so a shared file cannot pass for a release artifact; version discovery still counts them. - The directory smoke asserts the saved report on a broken archive and smoke-windows.ps1 accepts the prepared DLL. Refs #4893 --- apps/desktop/README.i18n.yaml | 4 +- apps/desktop/README.md | 6 +- apps/desktop/README.zh.md | 6 +- apps/desktop/electron-builder.config.d.mts | 1 + apps/desktop/installer/extract-report.h | 277 ++++++++++++++++++ apps/desktop/installer/extract.h | 42 +-- apps/desktop/installer/strings.nsh | 16 + apps/desktop/installer/window-frame.cpp | 25 ++ .../desktop-build-version-discovery.ts | 4 +- .../scripts/electron-builder-config.mjs | 3 +- .../desktop/scripts/installer-directories.nsh | 6 +- apps/desktop/scripts/installer.nsh | 33 +++ .../scripts/prepare-windows-installer.ps1 | 10 + .../scripts/smoke-installer-directories.ps1 | 20 +- apps/desktop/scripts/smoke-windows.ps1 | 8 +- .../desktop-build-version-discovery.spec.ts | 9 + .../fixtures/installer-directory-smoke.nsi | 3 + .../desktop/tests/installer-packaging.spec.ts | 13 + .../windows-installer-extract-report.cpp | 114 +++++++ .../tests/windows-update-publisher.spec.ts | 1 + 20 files changed, 570 insertions(+), 31 deletions(-) create mode 100644 apps/desktop/installer/extract-report.h create mode 100644 apps/desktop/tests/windows-installer-extract-report.cpp diff --git a/apps/desktop/README.i18n.yaml b/apps/desktop/README.i18n.yaml index 1281bcb68f..4765413cbe 100644 --- a/apps/desktop/README.i18n.yaml +++ b/apps/desktop/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write apps/desktop/README.md -README.md: 813813cf2292a6cfece78a273dcf6843093a95cf -README.zh.md: e63557e98c0a19ecd9bf9e6c9497ce074ce8b57b +README.md: c90e8162f785bb0aa8e25b755fa278725d1dd034 +README.zh.md: d78fc7ada24826f317877162ecf26cad21b519e3 diff --git a/apps/desktop/README.md b/apps/desktop/README.md index 813813cf22..c90e8162f7 100644 --- a/apps/desktop/README.md +++ b/apps/desktop/README.md @@ -190,14 +190,16 @@ The [Office conversion provider](../../packages/document/office-to-pdf/README.md The packaged application runs compiled JavaScript and pre-generated Typert metadata; it does not compile TypeScript plugins. Source-level debugger navigation and editor declarations remain available in development packages. [Copy-policy tests](tests/runtime-file-policy.spec.ts) cover exclusions and retained assets; The [payload smoke](tests/fixtures/runtime-payload-smoke.mjs) runs under Electron RunAsNode before the Host smoke and final inventory verification. The payload smoke resolves the search tool’s ripgrep executable and verifies text search and file enumeration. Signed Windows builds run these checks after dependency signing; other builds run them during `prepare:dsh`. The [Host smoke](scripts/smoke-runtime.ts) creates DOCX, XLSX, and PPTX inputs with bundled Python, converts each through the real Office provider, and checks PDF output. Every assembled application, including directory and unsigned Windows builds, repeats the payload and Host checks against ASAR. Archive integrity checks compare the complete archived descriptor with preparation, file bytes and membership in both archive and unpacked trees, recorded executable flags for archived files, and physical permissions for unpacked files. Conversion failures stop packaging before a release record is written; macOS DMG/ZIP builds run these checks before notarization. -Windows release qualification also runs [directory and replacement checks](scripts/smoke-windows.ps1) manually after the Desktop build. Set `$Makensis`, `$SevenZip`, and `$PluginDir` to the pinned builder’s NSIS compiler, 7-Zip executable, and x86-unicode NSIS plugin directory. From the repository root, run the command below. It verifies directory replacement and rollback, and both locked-file replacement modes; it is not part of the unit-test lane. +Windows release qualification also runs [directory and replacement checks](scripts/smoke-windows.ps1) manually after the Desktop build. Set `$Makensis`, `$SevenZip`, and `$PluginDir` to the pinned builder’s NSIS compiler, 7-Zip executable, and x86-unicode NSIS plugin directory; pass the prepared `window-frame.dll` as `-FrameLibrary` to exercise the native extraction path and its failure report as well. From the repository root, run the command below. It verifies directory replacement and rollback, and both locked-file replacement modes; it is not part of the unit-test lane. ```powershell -pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis -SevenZip $SevenZip -PluginDir $PluginDir +pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis -SevenZip $SevenZip -PluginDir $PluginDir -FrameLibrary apps/desktop/.desktop-build/targets/win-x64/installer-ui/window-frame.dll ``` The Windows installer extracts the new version beside the installation directory, stops the old application, and replaces directories through same-volume renames. Same-path upgrades preserve the old directory until promotion succeeds; extraction failure leaves it intact, and promotion failure attempts to restore it. The installer removes the old backup before launch. Forced termination or power loss can leave `.new-*` or `.old-*` directories; installation-location and scope migrations retain electron-builder's old-uninstaller flow. +When extraction fails, the installer writes a report with the 7-Zip result and its complete error output to `%LOCALAPPDATA%\deepseek harness-updater\installer-logs\extract-failure-.log` and shows the first error line with a **Copy error details** button; silent installs write only the report. Unsigned Windows builds (`DSH_DESKTOP_UNSIGNED=1`) name their installer `deepseek-harness--win-x64-unsigned.exe` so they cannot be mistaken for release artifacts. + ### Upload updates diff --git a/apps/desktop/README.zh.md b/apps/desktop/README.zh.md index e63557e98c..d78fc7ada2 100644 --- a/apps/desktop/README.zh.md +++ b/apps/desktop/README.zh.md @@ -190,14 +190,16 @@ Desktop 在本地打包工作区包,并通过目标捆绑的 Node 和 pnpm 安 打包应用运行编译后的 JavaScript 和预生成的 Typert 元数据,不编译 TypeScript 插件。源码级调试导航和编辑器声明仍可从开发包中获取。[复制规则测试](tests/runtime-file-policy.spec.ts)覆盖排除项和保留资源;[产物 smoke](tests/fixtures/runtime-payload-smoke.mjs) 在 Host smoke 和最终清单验证之前,使用 Electron RunAsNode 执行。产物 smoke 解析搜索工具使用的 ripgrep 可执行文件,并验证文本搜索和文件枚举。Windows 签名构建在依赖签名后运行这些检查;其他构建在 `prepare:dsh` 中运行。[Host smoke](scripts/smoke-runtime.ts) 使用捆绑的 Python 创建 DOCX、XLSX 和 PPTX 输入,通过真实 Office 提供方逐一转换并检查 PDF 输出。每个组装后的应用(包括目录包和 Windows 未签名构建)都会针对 ASAR 重复产物和 Host 检查。归档完整性检查将归档内完整描述符与准备结果比对,并核对归档和解包目录中的文件内容与清单、归档内文件记录的执行标志,以及解包文件的物理权限。转换失败会在写入发布记录前终止打包;macOS DMG/ZIP 构建在公证前执行这些检查。 -Windows 发布验收还需在 Desktop 构建后手动运行[目录和替换检查](scripts/smoke-windows.ps1)。将 `$Makensis`、`$SevenZip` 和 `$PluginDir` 分别设为锁定版本构建器的 NSIS 编译器、7-Zip 可执行文件和 x86-unicode NSIS 插件目录。从仓库根目录运行以下命令。它验证 目录替换与回滚和两种文件占用替换方式;不属于单元测试通道。 +Windows 发布验收还需在 Desktop 构建后手动运行[目录和替换检查](scripts/smoke-windows.ps1)。将 `$Makensis`、`$SevenZip` 和 `$PluginDir` 分别设为锁定版本构建器的 NSIS 编译器、7-Zip 可执行文件和 x86-unicode NSIS 插件目录;通过 `-FrameLibrary` 传入已准备好的 `window-frame.dll`,即可同时覆盖原生解压路径及其失败报告。从仓库根目录运行以下命令。它验证 目录替换与回滚和两种文件占用替换方式;不属于单元测试通道。 ```powershell -pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis -SevenZip $SevenZip -PluginDir $PluginDir +pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis -SevenZip $SevenZip -PluginDir $PluginDir -FrameLibrary apps/desktop/.desktop-build/targets/win-x64/installer-ui/window-frame.dll ``` Windows 安装器先将新版本解压到安装目录旁边,再退出旧应用并通过同卷目录改名完成替换。同路径升级在替换成功前保留旧目录;解压失败时旧版不变,替换失败时尝试恢复旧目录。安装器在启动前清理旧版备份。强制结束安装器或断电可能留下 `.new-*` 或 `.old-*` 目录;不同安装位置或安装范围迁移仍使用 electron-builder 的旧卸载器流程。 +解压失败时,安装器会把 7-Zip 的结果和完整错误输出写入 `%LOCALAPPDATA%\deepseek harness-updater\installer-logs\extract-failure-<时间戳>.log`,并在弹窗中显示首条错误行和 **复制错误信息** 按钮;静默安装只写入报告。未签名的 Windows 构建(`DSH_DESKTOP_UNSIGNED=1`)会将安装包命名为 `deepseek-harness-<版本>-win-x64-unsigned.exe`,以免被误当作发布产物。 + ### 上传更新 diff --git a/apps/desktop/electron-builder.config.d.mts b/apps/desktop/electron-builder.config.d.mts index c35e702674..d1cae61b6a 100644 --- a/apps/desktop/electron-builder.config.d.mts +++ b/apps/desktop/electron-builder.config.d.mts @@ -3,6 +3,7 @@ import type { AfterPackContext, BeforePackContext } from 'app-builder-lib' /** Electron-builder fields asserted by the Desktop release tests. */ export interface DesktopElectronBuilderConfig { readonly appId: string + readonly artifactName: string readonly protocols: readonly [{ readonly name: 'DeepSeek Harness'; readonly schemes: readonly ['dsh'] }] readonly directories: { readonly output: string diff --git a/apps/desktop/installer/extract-report.h b/apps/desktop/installer/extract-report.h new file mode 100644 index 0000000000..eb83f431a5 --- /dev/null +++ b/apps/desktop/installer/extract-report.h @@ -0,0 +1,277 @@ +// 7-Zip's error output is the primary evidence for an extraction failure; the report preserves it verbatim +// on disk and in the clipboard while the dialog shows only a headline and a bounded excerpt. +#pragma once +#include +#include +#include +#include +#include +#include + +namespace extract_report { + +constexpr size_t kOutputLimit = 256 * 1024; +constexpr size_t kHeadlineLimit = 160; +constexpr size_t kExcerptLineLimit = 120; +constexpr size_t kExcerptLines = 10; +constexpr size_t kExcerptChars = 1000; + +// Exit codes documented by 7-Zip; the installer treats every non-zero value as fatal. +inline const wchar_t* SevenZipMeaning(int code) { + switch (code) { + case 1: return L"warning: some files were not extracted"; + case 2: return L"fatal error"; + case 7: return L"command line error"; + case 8: return L"not enough memory"; + case 255: return L"stopped before completion"; + default: return L"unexpected exit code"; + } +} + +inline std::wstring Trim(const std::wstring& text) { + const auto begin = text.find_first_not_of(L" \t\r\n"); + if (begin == std::wstring::npos) return L""; + const auto end = text.find_last_not_of(L" \t\r\n"); + return text.substr(begin, end - begin + 1); +} + +inline std::vector Lines(const std::wstring& text) { + std::vector lines; + size_t start = 0; + while (start <= text.size()) { + const auto end = text.find(L'\n', start); + std::wstring line = text.substr(start, end == std::wstring::npos ? std::wstring::npos : end - start); + if (!line.empty() && line.back() == L'\r') line.pop_back(); + lines.push_back(line); + if (end == std::wstring::npos) break; + start = end + 1; + } + return lines; +} + +constexpr wchar_t kEllipsis = 0x2026; + +inline std::wstring Truncate(const std::wstring& text, size_t limit) { + if (text.size() <= limit) return text; + return text.substr(0, limit - 1) + kEllipsis; +} + +inline std::wstring Win32Message(DWORD error) { + LPWSTR buffer = nullptr; + const DWORD length = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + nullptr, error, 0, reinterpret_cast(&buffer), 0, nullptr); + std::wstring message = length && buffer ? Trim(std::wstring(buffer, length)) : L""; + if (buffer) LocalFree(buffer); + return message; +} + +// Positive results are 7-Zip exit codes; negative results are negated Win32 errors from launching or supervising it. +inline std::wstring DescribeResult(int code) { + if (code >= 0) return L"7-Zip exit code " + std::to_wstring(code) + L" (" + SevenZipMeaning(code) + L")"; + const DWORD error = static_cast(-static_cast(code)); + std::wstring message = Win32Message(error); + return L"Windows error " + std::to_wstring(error) + L" while running 7-Zip" + (message.empty() ? L"" : L" (" + message + L")"); +} + +// 7-Zip prefixes the failing operation and path with "ERROR:"; the bare archive name it prints first says nothing. +inline std::wstring Headline(int code, const std::wstring& output) { + std::wstring fallback; + for (const std::wstring& raw : Lines(output)) { + const std::wstring line = Trim(raw); + const auto marker = line.find(L"ERROR"); + if (marker == std::wstring::npos) continue; + const std::wstring detail = Trim(line.substr(line.find(L':', marker) == std::wstring::npos ? line.size() : line.find(L':', marker) + 1)); + if (detail.empty()) continue; + if (detail.find(L" : ") != std::wstring::npos || detail.find(L' ') != std::wstring::npos) return Truncate(line, kHeadlineLimit); + if (fallback.empty()) fallback = line; + } + if (!fallback.empty()) return Truncate(fallback, kHeadlineLimit); + return DescribeResult(code); +} + +inline std::wstring Compose(int code, const std::wstring& archive, const std::wstring& destination, const std::wstring& output, + const std::wstring& timestamp, const std::wstring& windowsVersion) { + std::wstring report = L"DeepSeek Harness installer: extraction failed\r\n"; + report += L"Time: " + timestamp + L"\r\n"; + report += L"Result: " + DescribeResult(code) + L"\r\n"; + report += L"Archive: " + archive + L"\r\n"; + report += L"Destination: " + destination + L"\r\n"; + report += L"Windows: " + windowsVersion + L"\r\n"; + report += L"\r\n7-Zip output:\r\n"; + const std::wstring trimmed = Trim(output); + if (trimmed.empty()) { + report += L"(none)\r\n"; + } else { + for (const std::wstring& line : Lines(trimmed)) report += line + L"\r\n"; + } + return report; +} + +// The dialog stays compact: long lines are cut and a trailing note counts what the report still holds. +inline std::wstring Excerpt(const std::wstring& report, size_t maxLines = kExcerptLines, size_t maxChars = kExcerptChars) { + const std::vector lines = Lines(Trim(report)); + std::wstring excerpt; + size_t shown = 0; + for (const std::wstring& line : lines) { + const std::wstring cut = Truncate(line, kExcerptLineLimit); + if (shown == maxLines || excerpt.size() + cut.size() + 2 > maxChars) break; + excerpt += (shown ? L"\r\n" : L"") + cut; + ++shown; + } + if (shown < lines.size()) { + excerpt += L"\r\n" + std::wstring(1, kEllipsis) + L" (" + std::to_wstring(lines.size() - shown) + L" more lines in the saved report)"; + } + return excerpt; +} + +inline std::wstring Decode(const std::string& bytes) { + if (bytes.empty()) return L""; + for (UINT codePage : {static_cast(CP_UTF8), static_cast(CP_ACP)}) { + const DWORD flags = codePage == CP_UTF8 ? MB_ERR_INVALID_CHARS : 0; + const int length = MultiByteToWideChar(codePage, flags, bytes.data(), static_cast(bytes.size()), nullptr, 0); + if (length <= 0) continue; + std::wstring text(static_cast(length), L'\0'); + MultiByteToWideChar(codePage, flags, bytes.data(), static_cast(bytes.size()), &text[0], length); + return text; + } + return L"(undecodable 7-Zip output)"; +} + +inline std::wstring ReadOutput(LPCWSTR path) { + HANDLE file = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (file == INVALID_HANDLE_VALUE) return L""; + std::string bytes; + char buffer[8192]; + DWORD count = 0; + while (bytes.size() < kOutputLimit && ReadFile(file, buffer, sizeof(buffer), &count, nullptr) && count) { + bytes.append(buffer, std::min(count, kOutputLimit - bytes.size())); + } + CloseHandle(file); + return Decode(bytes); +} + +inline std::wstring Timestamp() { + SYSTEMTIME now; + GetLocalTime(&now); + WCHAR text[32]; + wsprintfW(text, L"%04u-%02u-%02u %02u:%02u:%02u", now.wYear, now.wMonth, now.wDay, now.wHour, now.wMinute, now.wSecond); + return text; +} + +inline std::wstring WindowsVersion() { + typedef LONG(WINAPI * RtlGetVersionFn)(PRTL_OSVERSIONINFOW); + HMODULE ntdll = GetModuleHandleW(L"ntdll.dll"); + auto getVersion = ntdll ? reinterpret_cast(GetProcAddress(ntdll, "RtlGetVersion")) : nullptr; + RTL_OSVERSIONINFOW info = {}; + info.dwOSVersionInfoSize = sizeof(info); + if (!getVersion || getVersion(&info) != 0) return L"unknown"; + WCHAR text[64]; + wsprintfW(text, L"%u.%u.%u", info.dwMajorVersion, info.dwMinorVersion, info.dwBuildNumber); + return text; +} + +inline bool WriteUtf8(LPCWSTR path, const std::wstring& text) { + std::wstring directory(path); + const auto separator = directory.find_last_of(L"\\/"); + if (separator != std::wstring::npos) { + directory.resize(separator); + const int created = SHCreateDirectoryExW(nullptr, directory.c_str(), nullptr); + if (created != ERROR_SUCCESS && created != ERROR_ALREADY_EXISTS && created != ERROR_FILE_EXISTS) return false; + } + const int length = WideCharToMultiByte(CP_UTF8, 0, text.data(), static_cast(text.size()), nullptr, 0, nullptr, nullptr); + if (length <= 0) return false; + std::string bytes("\xEF\xBB\xBF", 3); + bytes.resize(3 + static_cast(length)); + WideCharToMultiByte(CP_UTF8, 0, text.data(), static_cast(text.size()), &bytes[3], length, nullptr, nullptr); + HANDLE file = CreateFileW(path, GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + if (file == INVALID_HANDLE_VALUE) return false; + DWORD written = 0; + const bool complete = WriteFile(file, bytes.data(), static_cast(bytes.size()), &written, nullptr) && written == bytes.size(); + CloseHandle(file); + return complete; +} + +inline bool CopyToClipboard(HWND owner, const std::wstring& text) { + const size_t bytes = (text.size() + 1) * sizeof(wchar_t); + HGLOBAL memory = GlobalAlloc(GMEM_MOVEABLE, bytes); + if (!memory) return false; + void* target = GlobalLock(memory); + if (!target) { GlobalFree(memory); return false; } + memcpy(target, text.c_str(), bytes); + GlobalUnlock(memory); + bool copied = false; + for (int attempt = 0; attempt < 5 && !copied; ++attempt) { + if (attempt) Sleep(50); + if (!OpenClipboard(owner)) continue; + copied = EmptyClipboard() && SetClipboardData(CF_UNICODETEXT, memory) != nullptr; + CloseClipboard(); + } + if (!copied) GlobalFree(memory); + return copied; +} + +struct DialogStrings { + LPCWSTR title; + LPCWSTR heading; + LPCWSTR copy; + LPCWSTR expand; + LPCWSTR collapse; + LPCWSTR footer; + LPCWSTR copied; +}; + +struct DialogState { + const std::wstring* report; + const DialogStrings* strings; +}; + +constexpr int kCopyButton = 1001; + +inline HRESULT CALLBACK DialogCallback(HWND dialog, UINT notification, WPARAM wparam, LPARAM, LONG_PTR data) { + auto* state = reinterpret_cast(data); + if (notification == TDN_BUTTON_CLICKED && static_cast(wparam) == kCopyButton && state) { + if (CopyToClipboard(dialog, *state->report)) { + SendMessageW(dialog, TDM_SET_ELEMENT_TEXT, TDE_FOOTER, reinterpret_cast(state->strings->copied)); + } + return S_FALSE; + } + return S_OK; +} + +// The task dialog comes from the comctl32 v6 the installer already loads; without it a message box carries the headline. +inline void Show(HWND parent, const std::wstring& headline, const std::wstring& excerpt, const std::wstring& report, const DialogStrings& strings) { + typedef HRESULT(WINAPI * TaskDialogIndirectFn)(const TASKDIALOGCONFIG*, int*, int*, BOOL*); + HMODULE comctl = GetModuleHandleW(L"comctl32.dll"); + if (!comctl) comctl = LoadLibraryW(L"comctl32.dll"); + auto taskDialog = comctl ? reinterpret_cast(GetProcAddress(comctl, "TaskDialogIndirect")) : nullptr; + if (taskDialog) { + DialogState state{&report, &strings}; + TASKDIALOG_BUTTON buttons[] = {{kCopyButton, strings.copy}}; + TASKDIALOGCONFIG config = {}; + config.cbSize = sizeof(config); + config.hwndParent = parent; + config.dwFlags = TDF_ALLOW_DIALOG_CANCELLATION | TDF_POSITION_RELATIVE_TO_WINDOW; + config.dwCommonButtons = TDCBF_OK_BUTTON; + config.pszWindowTitle = strings.title; + config.pszMainIcon = TD_WARNING_ICON; + config.pszMainInstruction = strings.heading; + config.pszContent = headline.c_str(); + config.cButtons = 1; + config.pButtons = buttons; + config.nDefaultButton = IDOK; + config.pszExpandedInformation = excerpt.c_str(); + config.pszExpandedControlText = strings.collapse; + config.pszCollapsedControlText = strings.expand; + config.pszFooterIcon = TD_INFORMATION_ICON; + config.pszFooter = strings.footer; + config.pfCallback = DialogCallback; + config.lpCallbackData = reinterpret_cast(&state); + config.cxWidth = 320; + int pressed = 0; + if (SUCCEEDED(taskDialog(&config, &pressed, nullptr, nullptr))) return; + } + const std::wstring text = std::wstring(strings.heading) + L"\r\n\r\n" + headline + L"\r\n\r\n" + strings.footer; + MessageBoxW(parent, text.c_str(), strings.title, MB_OK | MB_ICONEXCLAMATION | MB_SETFOREGROUND); +} + +} // namespace extract_report diff --git a/apps/desktop/installer/extract.h b/apps/desktop/installer/extract.h index 86c5161824..af30077912 100644 --- a/apps/desktop/installer/extract.h +++ b/apps/desktop/installer/extract.h @@ -1,5 +1,6 @@ // The pinned 7-Zip executable owns extraction; this pipe reader publishes its work percentage. #pragma once +#include #include #include #include "extract-progress.h" @@ -32,25 +33,30 @@ struct InstallerAttributes { } }; -static DWORD ExtractApplication(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWSTR destination, LPCWSTR log) { +// Win32 failures around the 7-Zip process return negated error codes so they never collide with 7-Zip's exit codes. +static int LaunchFailure(DWORD error) { + return -static_cast(error ? error : ERROR_GEN_FAILURE); +} + +static int ExtractApplication(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWSTR destination, LPCWSTR log) { SECURITY_ATTRIBUTES security = {sizeof(security), nullptr, TRUE}; InstallerHandle input, output; - if (!CreatePipe(&input.value, &output.value, &security, 0)) return GetLastError(); - if (!SetHandleInformation(input.value, HANDLE_FLAG_INHERIT, 0)) return GetLastError(); + if (!CreatePipe(&input.value, &output.value, &security, 0)) return LaunchFailure(GetLastError()); + if (!SetHandleInformation(input.value, HANDLE_FLAG_INHERIT, 0)) return LaunchFailure(GetLastError()); InstallerHandle errors(CreateFileW(log, GENERIC_WRITE, FILE_SHARE_READ, &security, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr)); - if (errors.value == INVALID_HANDLE_VALUE) return GetLastError(); + if (errors.value == INVALID_HANDLE_VALUE) return LaunchFailure(GetLastError()); InstallerHandle nullInput(CreateFileW(L"NUL", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, &security, OPEN_EXISTING, 0, nullptr)); - if (nullInput.value == INVALID_HANDLE_VALUE) return GetLastError(); + if (nullInput.value == INVALID_HANDLE_VALUE) return LaunchFailure(GetLastError()); InstallerHandle job(CreateJobObjectW(nullptr, nullptr)); - if (!job.value) return GetLastError(); + if (!job.value) return LaunchFailure(GetLastError()); JOBOBJECT_EXTENDED_LIMIT_INFORMATION limits = {}; limits.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; - if (!SetInformationJobObject(job.value, JobObjectExtendedLimitInformation, &limits, sizeof(limits))) return GetLastError(); + if (!SetInformationJobObject(job.value, JobObjectExtendedLimitInformation, &limits, sizeof(limits))) return LaunchFailure(GetLastError()); InstallerAttributes attributes; - if (!attributes.Initialize()) return GetLastError(); + if (!attributes.Initialize()) return LaunchFailure(GetLastError()); HANDLE inherited[] = {nullInput.value, output.value, errors.value}; if (!UpdateProcThreadAttribute(attributes.list, 0, PROC_THREAD_ATTRIBUTE_HANDLE_LIST, inherited, sizeof(inherited), nullptr, nullptr) || - !UpdateProcThreadAttribute(attributes.list, 0, PROC_THREAD_ATTRIBUTE_JOB_LIST, &job.value, sizeof(job.value), nullptr, nullptr)) return GetLastError(); + !UpdateProcThreadAttribute(attributes.list, 0, PROC_THREAD_ATTRIBUTE_JOB_LIST, &job.value, sizeof(job.value), nullptr, nullptr)) return LaunchFailure(GetLastError()); STARTUPINFOEXW startup = {}; startup.StartupInfo.cb = sizeof(startup); startup.StartupInfo.dwFlags = STARTF_USESTDHANDLES; @@ -59,10 +65,11 @@ static DWORD ExtractApplication(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCW startup.StartupInfo.hStdError = errors.value; startup.lpAttributeList = attributes.list; // A final dot prevents a destination's trailing backslash from escaping its closing quote. - std::wstring command = L"\"" + std::wstring(tool) + L"\" x -y -bso0 -bse2 -bsp1 -bb0 \"-o" + destination + L"\\.\" \"" + archive + L"\""; + // Error output is UTF-8 so the failure report can quote paths from any code page. + std::wstring command = L"\"" + std::wstring(tool) + L"\" x -y -bso0 -bse2 -bsp1 -bb0 -sccUTF-8 \"-o" + destination + L"\\.\" \"" + archive + L"\""; PROCESS_INFORMATION child = {}; if (!CreateProcessW(tool, &command[0], nullptr, nullptr, TRUE, - EXTENDED_STARTUPINFO_PRESENT | CREATE_NO_WINDOW, nullptr, nullptr, &startup.StartupInfo, &child)) return GetLastError(); + EXTENDED_STARTUPINFO_PRESENT | CREATE_NO_WINDOW, nullptr, nullptr, &startup.StartupInfo, &child)) return LaunchFailure(GetLastError()); InstallerHandle process(child.hProcess), thread(child.hThread); output.Close(); errors.Close(); @@ -79,17 +86,18 @@ static DWORD ExtractApplication(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCW if (readError != ERROR_BROKEN_PIPE && readError != ERROR_SUCCESS) { TerminateJobObject(job.value, readError); WaitForSingleObject(process.value, INFINITE); - return readError; + return LaunchFailure(readError); } - if (WaitForSingleObject(process.value, INFINITE) != WAIT_OBJECT_0) return GetLastError(); + if (WaitForSingleObject(process.value, INFINITE) != WAIT_OBJECT_0) return LaunchFailure(GetLastError()); DWORD result; - if (!GetExitCodeProcess(process.value, &result)) return GetLastError(); + if (!GetExitCodeProcess(process.value, &result)) return LaunchFailure(GetLastError()); if (result == 0 && parent) SetPropW(parent, L"HarnessInstaller.ExtractProgress", reinterpret_cast(100)); - return result; + return result > INT_MAX ? INT_MAX : static_cast(result); } // Runs on the NSIS worker; only an exit code of zero permits directory promotion. -extern "C" __declspec(dllexport) DWORD __cdecl InstallerExtract(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWSTR destination, LPCWSTR log) { +// Positive results are 7-Zip exit codes; negative results are negated Win32 errors from launching or supervising it. +extern "C" __declspec(dllexport) int __cdecl InstallerExtract(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWSTR destination, LPCWSTR log) { try { return ExtractApplication(parent, tool, archive, destination, log); } - catch (const std::bad_alloc&) { return ERROR_NOT_ENOUGH_MEMORY; } + catch (const std::bad_alloc&) { return LaunchFailure(ERROR_NOT_ENOUGH_MEMORY); } } diff --git a/apps/desktop/installer/strings.nsh b/apps/desktop/installer/strings.nsh index bea3ac97d9..f2f2b08191 100644 --- a/apps/desktop/installer/strings.nsh +++ b/apps/desktop/installer/strings.nsh @@ -39,3 +39,19 @@ LangString INSTALLER_DISK_SPACE ${LANG_ENGLISH} "There is not enough free disk s LangString INSTALLER_DISK_SPACE ${LANG_SIMPCHINESE} "此磁盘的可用空间不足,请选择其他位置。" LangString INSTALLER_PER_USER ${LANG_ENGLISH} "This installer supports the current user only. Uninstall the existing all-users installation first." LangString INSTALLER_PER_USER ${LANG_SIMPCHINESE} "此安装程序仅支持当前用户。请先卸载已有的所有用户安装版本。" +LangString INSTALLER_EXTRACT_FAILED ${LANG_ENGLISH} "The application files could not be extracted." +LangString INSTALLER_EXTRACT_FAILED ${LANG_SIMPCHINESE} "无法解压应用程序文件。" +LangString INSTALLER_EXTRACT_HINT ${LANG_ENGLISH} "Security software may have blocked a file, or the disk may be full. Close this installer and try again. If it keeps failing, send us the error details below." +LangString INSTALLER_EXTRACT_HINT ${LANG_SIMPCHINESE} "可能是安全软件拦截了文件,或磁盘空间不足。请关闭安装程序后重试;如仍然失败,请将下方错误信息发送给我们。" +LangString INSTALLER_EXTRACT_COPY ${LANG_ENGLISH} "Copy error details" +LangString INSTALLER_EXTRACT_COPY ${LANG_SIMPCHINESE} "复制错误信息" +LangString INSTALLER_EXTRACT_EXPAND ${LANG_ENGLISH} "Show details" +LangString INSTALLER_EXTRACT_EXPAND ${LANG_SIMPCHINESE} "显示详情" +LangString INSTALLER_EXTRACT_COLLAPSE ${LANG_ENGLISH} "Hide details" +LangString INSTALLER_EXTRACT_COLLAPSE ${LANG_SIMPCHINESE} "隐藏详情" +LangString INSTALLER_EXTRACT_SAVED ${LANG_ENGLISH} "The full report was saved to %s" +LangString INSTALLER_EXTRACT_SAVED ${LANG_SIMPCHINESE} "完整错误报告已保存到 %s" +LangString INSTALLER_EXTRACT_UNSAVED ${LANG_ENGLISH} "The full report could not be saved. Use Copy error details to keep it." +LangString INSTALLER_EXTRACT_UNSAVED ${LANG_SIMPCHINESE} "无法保存完整错误报告,请使用“复制错误信息”保留。" +LangString INSTALLER_EXTRACT_COPIED ${LANG_ENGLISH} "Error details were copied to the clipboard." +LangString INSTALLER_EXTRACT_COPIED ${LANG_SIMPCHINESE} "错误信息已复制到剪贴板。" diff --git a/apps/desktop/installer/window-frame.cpp b/apps/desktop/installer/window-frame.cpp index 7f47563e81..0a81fae33e 100644 --- a/apps/desktop/installer/window-frame.cpp +++ b/apps/desktop/installer/window-frame.cpp @@ -12,10 +12,35 @@ #include #include "progress.h" #include "extract.h" +#include "extract-report.h" #include "uninstall-data.h" using namespace Gdiplus; +// Saves the extraction failure report and, unless silent, presents its headline with a copy action. +// Returns 1 when the report file was written and 0 otherwise; the dialog outcome never fails the caller. +extern "C" __declspec(dllexport) int __cdecl InstallerReportExtractFailure( + HWND parent, int code, LPCWSTR archive, LPCWSTR destination, LPCWSTR log, LPCWSTR reportPath, int show, + LPCWSTR title, LPCWSTR heading, LPCWSTR hint, LPCWSTR copy, LPCWSTR expand, LPCWSTR collapse, LPCWSTR savedFormat, LPCWSTR unsaved, LPCWSTR copied) { + try { + const std::wstring output = extract_report::ReadOutput(log); + const std::wstring report = extract_report::Compose(code, archive, destination, output, + extract_report::Timestamp(), extract_report::WindowsVersion()); + const bool saved = extract_report::WriteUtf8(reportPath, report); + if (show) { + std::wstring footer = saved ? savedFormat : unsaved; + const auto placeholder = footer.find(L"%s"); + if (saved && placeholder != std::wstring::npos) footer.replace(placeholder, 2, reportPath); + const extract_report::DialogStrings strings{title, heading, copy, expand, collapse, footer.c_str(), copied}; + const std::wstring content = extract_report::Headline(code, output) + L"\r\n\r\n" + hint; + extract_report::Show(parent, content, extract_report::Excerpt(report), report, strings); + } + return saved ? 1 : 0; + } catch (const std::bad_alloc&) { + return 0; + } +} + // Returns a Win32 error code; no cleanup request may traverse a linked root or touch the protected root. extern "C" __declspec(dllexport) DWORD __cdecl UninstallRemoveData(LPCWSTR path, LPCWSTR installation, LPCWSTR protectedRoot) { return uninstall_data::Remove(path, installation, protectedRoot); diff --git a/apps/desktop/scripts/desktop-build-version-discovery.ts b/apps/desktop/scripts/desktop-build-version-discovery.ts index 32ed5a37b2..6bb7a1b045 100644 --- a/apps/desktop/scripts/desktop-build-version-discovery.ts +++ b/apps/desktop/scripts/desktop-build-version-discovery.ts @@ -30,8 +30,8 @@ const LISTING_DEADLINE_MS = 8_000 /** Objects one listing page may return. */ const LISTING_PAGE_SIZE = 1000 -/** Artifact name electron-builder writes for one build, on either platform. */ -const ARTIFACT = /(?:^|\/)deepseek-harness-(?.+)-(?:mac|win)-(?:arm64|x64)\.(?:exe|dmg|zip)$/u +/** Artifact name electron-builder writes for one build, on either platform; unsigned Windows builds add a suffix. */ +const ARTIFACT = /(?:^|\/)deepseek-harness-(?.+)-(?:mac|win)-(?:arm64|x64)(?:-unsigned)?\.(?:exe|dmg|zip)$/u /** Inputs that decide which versions are already taken. */ export interface DesktopBuildVersionSuggestionOptions { diff --git a/apps/desktop/scripts/electron-builder-config.mjs b/apps/desktop/scripts/electron-builder-config.mjs index e3873de35f..2cee72d23d 100644 --- a/apps/desktop/scripts/electron-builder-config.mjs +++ b/apps/desktop/scripts/electron-builder-config.mjs @@ -106,7 +106,8 @@ export function createElectronBuilderConfig( ...packaged === undefined ? {} : { dshBuildCommit: packaged.commit, dshBuildDirty: packaged.dirty }, }, productName: 'DeepSeek Harness', - artifactName: 'deepseek-harness-${version}-${os}-${arch}.${ext}', + // Unsigned builds carry their own suffix so a shared file can never pass for a release artifact. + artifactName: `deepseek-harness-\${version}-\${os}-\${arch}${unsigned ? '-unsigned' : ''}.\${ext}`, directories: { output: unsigned ? buildPaths.unsignedArtifacts : buildPaths.artifacts }, asar: true, electronDist: buildPaths.electron, diff --git a/apps/desktop/scripts/installer-directories.nsh b/apps/desktop/scripts/installer-directories.nsh index 881bdc8b20..49d4a2fb82 100644 --- a/apps/desktop/scripts/installer-directories.nsh +++ b/apps/desktop/scripts/installer-directories.nsh @@ -17,7 +17,11 @@ Var dshNewMoved ${If} $R0 != 0 DetailPrint $R1 Call dshRollbackDirectories - MessageBox MB_OK|MB_ICONEXCLAMATION "$(decompressionFailed)" /SD IDOK + !ifmacrodef customInstallerExtractFailed + !insertmacro customInstallerExtractFailed "${FILE}" + !else + MessageBox MB_OK|MB_ICONEXCLAMATION "$(decompressionFailed)" /SD IDOK + !endif SetErrorLevel 2 Quit ${EndIf} diff --git a/apps/desktop/scripts/installer.nsh b/apps/desktop/scripts/installer.nsh index 8d0378ebc0..7ddda5aa85 100644 --- a/apps/desktop/scripts/installer.nsh +++ b/apps/desktop/scripts/installer.nsh @@ -1,4 +1,5 @@ !include "LogicLib.nsh" +!include "FileFunc.nsh" !define INSTALLER_SOURCE_DIR "${__FILEDIR__}\..\installer" !define /ifndef INSTALLER_BUILD_DIR "${__FILEDIR__}\..\.desktop-build\targets\win-x64\installer-ui" @@ -132,6 +133,38 @@ ManifestDPIAware true ${EndIf} !macroend +; The report outlives $PLUGINSDIR so a user can send it; silent installs keep only the file. +!ifndef DSH_INSTALLER_LOG_DIR + !define DSH_INSTALLER_LOG_DIR "$LOCALAPPDATA\${DSH_UPDATER_CACHE_NAME}\installer-logs" +!endif + +!macro customInstallerExtractFailed Archive + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6 + StrCpy $0 "${DSH_INSTALLER_LOG_DIR}\extract-failure-$2$1$0-$4$5$6.log" + StrCpy $1 1 + ${If} ${Silent} + StrCpy $1 0 + ${EndIf} + System::Call '$PLUGINSDIR\window-frame.dll::InstallerReportExtractFailure(p $HWNDPARENT, i R0, w "${Archive}", w "$dshNewDirectory", w "$PLUGINSDIR\extract.log", w r0, i r1, w "$(^SetupCaption)", w "$(INSTALLER_EXTRACT_FAILED)", w "$(INSTALLER_EXTRACT_HINT)", w "$(INSTALLER_EXTRACT_COPY)", w "$(INSTALLER_EXTRACT_EXPAND)", w "$(INSTALLER_EXTRACT_COLLAPSE)", w "$(INSTALLER_EXTRACT_SAVED)", w "$(INSTALLER_EXTRACT_UNSAVED)", w "$(INSTALLER_EXTRACT_COPIED)") i.r2 ?c' + ${If} $2 == 1 + DetailPrint $0 + ${EndIf} + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 +!macroend + !macro customCheckAppRunning !ifdef BUILD_UNINSTALLER InitPluginsDir diff --git a/apps/desktop/scripts/prepare-windows-installer.ps1 b/apps/desktop/scripts/prepare-windows-installer.ps1 index 0209e74d78..98e02cf9a6 100644 --- a/apps/desktop/scripts/prepare-windows-installer.ps1 +++ b/apps/desktop/scripts/prepare-windows-installer.ps1 @@ -50,6 +50,16 @@ if ($TestProgress -or $CompileProgressOnly) { & $presentationExecutable if ($LASTEXITCODE -ne 0) { throw 'Installer presentation regression failed.' } } + $reportSource = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '../tests/windows-installer-extract-report.cpp')) + $reportExecutable = Join-Path $output 'extract-report-test.exe' + $reportScript = Join-Path $output 'compile-extract-report-test.cmd' + [IO.File]::WriteAllLines($reportScript, @('@echo off', ('call "{0}" >nul' -f $vcvars), 'if errorlevel 1 exit /b %errorlevel%', ('cl /nologo /MT /W4 /WX /EHsc "{0}" /Fo"{1}" /Fe"{2}" /link "{3}" user32.lib shell32.lib' -f $reportSource, (Join-Path $output 'extract-report-test.obj'), $reportExecutable, (Join-Path $output 'window-frame.lib'))), [Text.Encoding]::Default) + & $env:ComSpec /d /c $reportScript + if ($LASTEXITCODE -ne 0) { throw 'Extraction report test compilation failed.' } + if ($TestProgress) { + & $reportExecutable + if ($LASTEXITCODE -ne 0) { throw 'Extraction report regression failed.' } + } } Add-Type -AssemblyName System.Drawing foreach ($asset in @('brand', 'brand-2x', 'brand-dark', 'brand-dark-2x', 'uninstaller-sidebar')) { diff --git a/apps/desktop/scripts/smoke-installer-directories.ps1 b/apps/desktop/scripts/smoke-installer-directories.ps1 index 2fa8eabfb5..283f168016 100644 --- a/apps/desktop/scripts/smoke-installer-directories.ps1 +++ b/apps/desktop/scripts/smoke-installer-directories.ps1 @@ -42,8 +42,9 @@ try { } $probe = Join-Path $caseRoot 'probe.exe' $caseArchive = if ($mode -eq 'broken') { $brokenArchive } else { $archive } + $reportDir = Join-Path $caseRoot 'installer-logs' $compileArgs = @('/V2', "/DOUTPUT_FILE=$probe", "/DPAYLOAD_FILE=$caseArchive", "/DTARGET_DIR=$target", "/DDSH_SEVENZIP_PATH=$SevenZip") - if ($FrameLibrary) { $compileArgs += "/DSOURCE_DLL=$FrameLibrary" } + if ($FrameLibrary) { $compileArgs += @("/DSOURCE_DLL=$FrameLibrary", "/DREPORT_DIR=$reportDir") } if ($mode -eq 'missing-stage') { $compileArgs += '/DMISSING_STAGE' } if ($mode -eq 'cancelled') { $compileArgs += '/DCANCELLED' } Invoke-Checked $Makensis ($compileArgs + $fixture) @@ -76,9 +77,24 @@ try { if ((Test-Path -LiteralPath (Join-Path $target 'obsolete.txt')) -ne $expectObsolete) { throw "Directory smoke $mode did not preserve the expected old-only file state" } - if (@(Get-ChildItem -LiteralPath $caseRoot -Directory | Where-Object Name -ne 'Application').Count -ne 0) { + if (@(Get-ChildItem -LiteralPath $caseRoot -Directory | Where-Object Name -notin @('Application', 'installer-logs')).Count -ne 0) { throw "Directory smoke $mode left transaction directories behind" } + if ($FrameLibrary) { + # Only an extraction failure writes a report; it must quote 7-Zip's verdict so support can read the cause. + $reports = @(if (Test-Path -LiteralPath $reportDir) { Get-ChildItem -LiteralPath $reportDir -File }) + if ($mode -eq 'broken') { + if ($reports.Count -ne 1 -or $reports[0].Name -notmatch '^extract-failure-\d{8}-\d{6}\.log$') { + throw "Directory smoke $mode did not save exactly one extraction report" + } + $report = Get-Content -LiteralPath $reports[0].FullName -Raw -Encoding UTF8 + foreach ($expected in @('Result: 7-Zip exit code 2 (fatal error)', "Archive: $caseArchive", 'Cannot open the file as [7z] archive')) { + if (-not $report.Contains($expected)) { throw "Directory smoke $mode report lacks '$expected'" } + } + } elseif ($reports.Count -ne 0) { + throw "Directory smoke $mode saved an unexpected extraction report" + } + } Write-Output "Directory replacement smoke passed: $mode" } } finally { diff --git a/apps/desktop/scripts/smoke-windows.ps1 b/apps/desktop/scripts/smoke-windows.ps1 index 5f3c0372e8..8ae29ad614 100644 --- a/apps/desktop/scripts/smoke-windows.ps1 +++ b/apps/desktop/scripts/smoke-windows.ps1 @@ -2,7 +2,8 @@ param( [Parameter(Mandatory)][string]$Makensis, [Parameter(Mandatory)][string]$SevenZip, - [Parameter(Mandatory)][string]$PluginDir + [Parameter(Mandatory)][string]$PluginDir, + [string]$FrameLibrary ) $ErrorActionPreference = 'Stop' $desktopRoot = Split-Path $PSScriptRoot -Parent @@ -15,7 +16,10 @@ function Invoke-Checked([string]$Executable, [string[]]$Arguments) { } try { - & (Join-Path $PSScriptRoot 'smoke-installer-directories.ps1') -Makensis $Makensis -SevenZip $SevenZip + # The prepared window-frame.dll adds the native extraction path and its failure report to the directory checks. + $directoryArguments = @{ Makensis = $Makensis; SevenZip = $SevenZip } + if ($FrameLibrary) { $directoryArguments.FrameLibrary = $FrameLibrary } + & (Join-Path $PSScriptRoot 'smoke-installer-directories.ps1') @directoryArguments $payload = Join-Path $scratch 'payload' New-Item -ItemType Directory -Path $payload | Out-Null [System.IO.File]::WriteAllText((Join-Path $payload 'locked.txt'), 'new runtime') diff --git a/apps/desktop/tests/desktop-build-version-discovery.spec.ts b/apps/desktop/tests/desktop-build-version-discovery.spec.ts index 490227416e..8438e076ad 100644 --- a/apps/desktop/tests/desktop-build-version-discovery.spec.ts +++ b/apps/desktop/tests/desktop-build-version-discovery.spec.ts @@ -70,4 +70,13 @@ describe('desktop build version discovery', () => { await expect(suggestDesktopBuildVersion({ productVersion: PRERELEASE, target: 'mac-arm64', environment: {}, date: DATE, artifactsRoot })) .resolves.toBe(`${PRERELEASE}.${DATE}.4`) }) + + it('counts unsigned Windows artifacts written under their own suffix', async () => { + const artifactsRoot = await artifactsWith([ + `deepseek-harness-${PRERELEASE}.${DATE}.2-win-x64-unsigned.exe`, + `deepseek-harness-${PRERELEASE}.${DATE}.5-win-x64-unsigned.exe.blockmap`, + ]) + await expect(suggestDesktopBuildVersion({ productVersion: PRERELEASE, target: 'win-x64', environment: {}, date: DATE, artifactsRoot })) + .resolves.toBe(`${PRERELEASE}.${DATE}.3`) + }) }) diff --git a/apps/desktop/tests/fixtures/installer-directory-smoke.nsi b/apps/desktop/tests/fixtures/installer-directory-smoke.nsi index 2269a06d38..3afd73a433 100644 --- a/apps/desktop/tests/fixtures/installer-directory-smoke.nsi +++ b/apps/desktop/tests/fixtures/installer-directory-smoke.nsi @@ -11,6 +11,9 @@ LangString decompressionFailed ${LANG_ENGLISH} "Payload extraction failed" !insertmacro dshExtractPayload "${PAYLOAD_FILE}" !macroend !ifdef SOURCE_DLL + LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf" + !include "..\..\installer\strings.nsh" + !define DSH_INSTALLER_LOG_DIR "${REPORT_DIR}" !include "..\..\scripts\installer.nsh" !else !include "..\..\scripts\installer-directories.nsh" diff --git a/apps/desktop/tests/installer-packaging.spec.ts b/apps/desktop/tests/installer-packaging.spec.ts index ef8d377e92..3e42ed5a63 100644 --- a/apps/desktop/tests/installer-packaging.spec.ts +++ b/apps/desktop/tests/installer-packaging.spec.ts @@ -57,6 +57,19 @@ describe('installer preparation preserves application dependencies', () => { } }) + it('names unsigned Windows artifacts so they cannot pass for release builds', async () => { + const { createElectronBuilderConfig } = await import('../scripts/electron-builder-config.mjs') + const config = createElectronBuilderConfig({ + DSH_DESKTOP_APP_ID: 'com.example.installer', + DSH_DESKTOP_MANDATORY_UPDATE_TEST_ORIGIN: 'https://policy.example.com', + DSH_DESKTOP_MANDATORY_UPDATE_CONFIG: JSON.stringify({ allowedAuthOrigins: ['https://login.example.com'] }), + DSH_DESKTOP_TARGET_PLATFORM: 'win32', + DSH_DESKTOP_TARGET_ARCH: 'x64', + DSH_DESKTOP_UNSIGNED: '1', + }, 'win32', 'x64') + expect(config.artifactName).toBe('deepseek-harness-${version}-${os}-${arch}-unsigned.${ext}') + }) + it('packages every preload entry point the shell loads', async () => { const { readdirSync, readFileSync } = await import('node:fs') const sourceDirectory = new URL('../src/', import.meta.url) diff --git a/apps/desktop/tests/windows-installer-extract-report.cpp b/apps/desktop/tests/windows-installer-extract-report.cpp new file mode 100644 index 0000000000..ea73fd2fd1 --- /dev/null +++ b/apps/desktop/tests/windows-installer-extract-report.cpp @@ -0,0 +1,114 @@ +// Extraction failure reports keep 7-Zip's evidence intact while the dialog headline and excerpt stay bounded. +#define WIN32_LEAN_AND_MEAN +#define UNICODE +#include +#include +#include +#include "../installer/extract-report.h" + +extern "C" __declspec(dllimport) int __cdecl InstallerReportExtractFailure( + HWND parent, int code, LPCWSTR archive, LPCWSTR destination, LPCWSTR log, LPCWSTR reportPath, int show, + LPCWSTR title, LPCWSTR heading, LPCWSTR hint, LPCWSTR copy, LPCWSTR expand, LPCWSTR collapse, LPCWSTR savedFormat, LPCWSTR unsaved, LPCWSTR copied); + +static bool Contains(const std::wstring& text, const std::wstring& needle) { return text.find(needle) != std::wstring::npos; } + +static std::string ReadBytes(const std::wstring& path) { + HANDLE file = CreateFileW(path.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr); + assert(file != INVALID_HANDLE_VALUE); + std::string bytes(1 << 16, '\0'); + DWORD count = 0; + const BOOL read = ReadFile(file, &bytes[0], static_cast(bytes.size()), &count, nullptr); + assert(read); + CloseHandle(file); + bytes.resize(count); + return bytes; +} + +static void WriteBytes(const std::wstring& path, const std::string& bytes) { + HANDLE file = CreateFileW(path.c_str(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, 0, nullptr); + assert(file != INVALID_HANDLE_VALUE); + DWORD written = 0; + const BOOL wrote = WriteFile(file, bytes.data(), static_cast(bytes.size()), &written, nullptr); + assert(wrote); + CloseHandle(file); +} + +int wmain() { + using namespace extract_report; + + // Result codes distinguish 7-Zip's own exit codes from Win32 failures around its process. + assert(DescribeResult(2) == L"7-Zip exit code 2 (fatal error)"); + assert(DescribeResult(9) == L"7-Zip exit code 9 (unexpected exit code)"); + assert(DescribeResult(-5).rfind(L"Windows error 5 while running 7-Zip", 0) == 0); + assert(Contains(DescribeResult(-ERROR_FILE_NOT_FOUND), L"Windows error 2")); + + // The headline prefers the line naming the failing operation over the archive name 7-Zip prints first. + const std::wstring broken = L"ERROR: broken.7z\r\nbroken.7z\r\nOpen ERROR: Cannot open the file as [7z] archive\r\n\r\n\r\nERRORS:\r\nIs not archive\r\n"; + assert(Headline(2, broken) == L"Open ERROR: Cannot open the file as [7z] archive"); + const std::wstring locked = L"ERROR: Cannot delete output file : The process cannot access the file. : C:\\Apps\\Harness.new-1\\resources\\app.node\r\n"; + assert(Headline(2, locked) == Trim(locked)); + assert(Headline(-ERROR_ACCESS_DENIED, L"") == DescribeResult(-ERROR_ACCESS_DENIED)); + assert(Headline(1, L"ERROR: only-a-path\r\n") == L"ERROR: only-a-path"); + const std::wstring longLine = L"ERROR: Cannot open output file : " + std::wstring(400, L'x'); + const std::wstring headline = Headline(2, longLine); + assert(headline.size() == kHeadlineLimit && headline.back() == kEllipsis); + + // The report carries the result, both paths, and 7-Zip's output verbatim. + const std::wstring report = Compose(2, L"C:\\Temp\\app-64.7z", L"C:\\Apps\\Harness.new-1", locked, L"2026-09-22 10:59:49", L"10.0.26100"); + assert(Contains(report, L"Result: 7-Zip exit code 2 (fatal error)\r\n")); + assert(Contains(report, L"Archive: C:\\Temp\\app-64.7z\r\n")); + assert(Contains(report, L"Destination: C:\\Apps\\Harness.new-1\r\n")); + assert(Contains(report, L"Windows: 10.0.26100\r\n")); + assert(Contains(report, L"\r\n7-Zip output:\r\n" + Trim(locked) + L"\r\n")); + assert(Contains(Compose(2, L"a", L"b", L" \r\n", L"t", L"w"), L"7-Zip output:\r\n(none)\r\n")); + + // The excerpt is bounded by lines and characters and tells how much the saved report still holds. + std::wstring manyErrors; + for (int i = 0; i < 40; ++i) manyErrors += L"ERROR: Cannot open output file : Access is denied. : C:\\Apps\\file" + std::to_wstring(i) + L".dll\r\n"; + const std::wstring excerpt = Excerpt(Compose(2, L"a", L"b", manyErrors, L"t", L"w")); + assert(Lines(excerpt).size() == kExcerptLines + 1); + assert(excerpt.size() <= kExcerptChars + 64); + assert(Contains(excerpt, L" (" + std::to_wstring(48 - kExcerptLines) + L" more lines in the saved report)")); + assert(Excerpt(L"one\r\ntwo") == L"one\r\ntwo"); + assert(Excerpt(std::wstring(2000, L'x') + L"\r\nnext").size() < kExcerptLineLimit + 64); + + // 7-Zip output arrives as UTF-8; anything else falls back to the system code page instead of vanishing. + assert(Decode("Access denied: \xE6\x96\x87\xE4\xBB\xB6") == L"Access denied: \x6587\x4EF6"); + assert(!Decode("\xC1\xED\xD2\xBB : file").empty()); + assert(Decode("") == L""); + + // The exported entry point writes the report beside a missing directory and survives a missing log file. + WCHAR temp[MAX_PATH]; + const DWORD tempLength = GetTempPathW(MAX_PATH, temp); + assert(tempLength); + const std::wstring root = std::wstring(temp) + L"dsh-extract-report-" + std::to_wstring(GetCurrentProcessId()); + const BOOL created = CreateDirectoryW(root.c_str(), nullptr); + assert(created); + const std::wstring log = root + L"\\extract.log"; + WriteBytes(log, "ERROR: Cannot open output file : Access is denied. : C:\\Apps\\Harness.new-1\\\xE6\x96\x87\xE4\xBB\xB6.dll\r\n"); + const std::wstring reportPath = root + L"\\nested\\logs\\extract-failure.log"; + const int written = InstallerReportExtractFailure(nullptr, 2, L"C:\\Temp\\app-64.7z", L"C:\\Apps\\Harness.new-1", log.c_str(), reportPath.c_str(), 0, + L"title", L"heading", L"hint", L"copy", L"expand", L"collapse", L"saved %s", L"unsaved", L"copied"); + assert(written == 1); + const std::string saved = ReadBytes(reportPath); + assert(saved.rfind("\xEF\xBB\xBF", 0) == 0); + assert(saved.find("Result: 7-Zip exit code 2 (fatal error)") != std::string::npos); + assert(saved.find("Access is denied. : C:\\Apps\\Harness.new-1\\\xE6\x96\x87\xE4\xBB\xB6.dll") != std::string::npos); + const std::wstring missingLogReport = root + L"\\missing.log.txt"; + const int withoutLog = InstallerReportExtractFailure(nullptr, -ERROR_ACCESS_DENIED, L"a", L"b", (root + L"\\absent.log").c_str(), missingLogReport.c_str(), 0, + L"title", L"heading", L"hint", L"copy", L"expand", L"collapse", L"saved %s", L"unsaved", L"copied"); + assert(withoutLog == 1); + assert(ReadBytes(missingLogReport).find("Windows error 5 while running 7-Zip") != std::string::npos); + assert(ReadBytes(missingLogReport).find("7-Zip output:\r\n(none)") != std::string::npos); + // An unwritable report location reports failure without throwing. + const int unwritable = InstallerReportExtractFailure(nullptr, 2, L"a", L"b", log.c_str(), (log + L"\\impossible.txt").c_str(), 0, + L"title", L"heading", L"hint", L"copy", L"expand", L"collapse", L"saved %s", L"unsaved", L"copied"); + assert(unwritable == 0); + + for (const std::wstring& file : {reportPath, missingLogReport, log}) DeleteFileW(file.c_str()); + RemoveDirectoryW((root + L"\\nested\\logs").c_str()); + RemoveDirectoryW((root + L"\\nested").c_str()); + const BOOL removed = RemoveDirectoryW(root.c_str()); + assert(removed); + return 0; +} diff --git a/apps/desktop/tests/windows-update-publisher.spec.ts b/apps/desktop/tests/windows-update-publisher.spec.ts index 2c27e600a1..a1af8d5416 100644 --- a/apps/desktop/tests/windows-update-publisher.spec.ts +++ b/apps/desktop/tests/windows-update-publisher.spec.ts @@ -90,6 +90,7 @@ describe('Windows update publisher', () => { DSH_DESKTOP_AUTO_UPDATE_ENV: 'production', }, 'win32', 'x64') expect(config.win.forceCodeSigning).toBe(true) + expect(config.artifactName).toBe('deepseek-harness-${version}-${os}-${arch}.${ext}') expect(typeof config.win.signtoolOptions.sign).toBe('function') const manager = new WindowsSignToolManager({ platformSpecificBuildOptions: config.win, getCscLink: () => undefined }) expect(await manager.computedPublisherName.value).toEqual(['CN=Publisher,O=Company,C=CN']) From 943af81a185ea4d70eda2b36598938857b1f851b Mon Sep 17 00:00:00 2001 From: imccyu Date: Tue, 22 Sep 2026 13:07:34 +0800 Subject: [PATCH 04/19] fix(release): pin vendor dependencies for dsh 0.1.5 --- apps/cli/package.json | 12 +- apps/desktop-host/package.json | 4 +- apps/web/package.json | 2 +- benchmarks/package.json | 4 +- packages/acp/acp/package.json | 6 +- packages/api/gateway/package.json | 6 +- packages/api/remotes/package.json | 4 +- packages/api/session-controller/package.json | 6 +- packages/api/settings-controller/package.json | 6 +- .../api/workspace-controller/package.json | 4 +- packages/api/workspace-files/package.json | 6 +- .../attachment/attachment-local/package.json | 6 +- packages/attachment/attachment/package.json | 4 +- packages/boot/app-boot/package.json | 22 +- packages/boot/cmdline/package.json | 10 +- packages/bundle/acp-app/package.json | 6 +- packages/bundle/base/package.json | 8 +- packages/bundle/headless/package.json | 10 +- packages/bundle/sdk-app/package.json | 8 +- packages/bundle/sdk-minimal/package.json | 6 +- packages/bundle/web-app/package.json | 10 +- packages/client/connection/package.json | 6 +- packages/client/file-upload/package.json | 4 +- packages/client/hmr/package.json | 8 +- packages/client/locale/package.json | 6 +- packages/client/modules/package.json | 6 +- packages/client/resources/package.json | 4 +- packages/client/store/package.json | 4 +- packages/client/ui-agent-preset/package.json | 4 +- packages/client/ui-approval/package.json | 4 +- packages/client/ui-attachment/package.json | 4 +- .../client/ui-brand-official/package.json | 4 +- packages/client/ui-chat/package.json | 6 +- packages/client/ui-commands/package.json | 4 +- packages/client/ui-conversation/package.json | 6 +- packages/client/ui-deliverables/package.json | 4 +- .../ui-directory-picker-browse/package.json | 4 +- .../ui-directory-picker-native/package.json | 4 +- packages/client/ui-dockkit/package.json | 4 +- packages/client/ui-goal/package.json | 4 +- packages/client/ui-input-trigger/package.json | 4 +- packages/client/ui-jobs/package.json | 4 +- packages/client/ui-layout/package.json | 4 +- .../client/ui-message-feedback/package.json | 4 +- .../client/ui-model-selection/package.json | 4 +- packages/client/ui-open-in-app/package.json | 4 +- .../client/ui-permission-presets/package.json | 4 +- packages/client/ui-plan/package.json | 4 +- packages/client/ui-primitives/package.json | 4 +- packages/client/ui-reference/package.json | 4 +- packages/client/ui-renderer/package.json | 4 +- packages/client/ui-schedule/package.json | 4 +- packages/client/ui-session/package.json | 4 +- .../client/ui-settings-general/package.json | 6 +- .../client/ui-settings-models/package.json | 4 +- .../ui-settings-plugin-inventory/package.json | 4 +- .../client/ui-settings-plugins/package.json | 4 +- packages/client/ui-settings/package.json | 6 +- .../ui-sidebar-documentpreview/package.json | 4 +- packages/client/ui-sidebar-files/package.json | 4 +- packages/client/ui-sidebar-right/package.json | 4 +- packages/client/ui-sidebar/package.json | 4 +- packages/client/ui-skill/package.json | 4 +- packages/client/ui-slots/package.json | 4 +- packages/client/ui-subagent/package.json | 4 +- packages/client/ui-theme/package.json | 6 +- packages/client/ui-tool/package.json | 4 +- packages/client/ui-trajectory/package.json | 4 +- .../client/ui-user-questions/package.json | 4 +- packages/client/ui-workflow-run/package.json | 4 +- packages/client/ui-workspace/package.json | 4 +- packages/client/web/package.json | 6 +- .../code-runtime-worker-thread/package.json | 6 +- .../code-runtime/code-runtime/package.json | 4 +- .../compaction/command-compact/package.json | 8 +- .../compaction/compaction-basic/package.json | 10 +- .../package.json | 10 +- packages/compaction/compaction/package.json | 4 +- .../context/agent-instructions/package.json | 8 +- .../context/file-reference-local/package.json | 6 +- packages/context/file-reference/package.json | 4 +- .../context/session-reference/package.json | 10 +- packages/context/time-context/package.json | 6 +- packages/context/tmux-context/package.json | 6 +- .../core/agent-default-model/package.json | 6 +- packages/core/agent-loop/package.json | 6 +- .../core/agent-tool-presentation/package.json | 6 +- packages/core/agent/package.json | 4 +- packages/core/scope/package.json | 4 +- packages/core/session/package.json | 4 +- packages/core/system-prompt/package.json | 6 +- packages/core/tools/package.json | 6 +- .../credentials/authorization/package.json | 4 +- .../credentials-local/package.json | 6 +- packages/credentials/credentials/package.json | 4 +- packages/e2b/e2b/package.json | 6 +- packages/e2b/fs-e2b/package.json | 4 +- packages/e2b/subprocess-e2b/package.json | 6 +- .../agent-team-profile/package.json | 6 +- .../agent-team-web-profile/package.json | 6 +- packages/experimental/agent-team/package.json | 6 +- .../client-ui-agent-team/package.json | 4 +- .../code-runtime-python/package.json | 6 +- packages/experimental/inspector/package.json | 12 +- .../experimental/tool-agent-team/package.json | 6 +- .../webworker-packer/package.json | 6 +- .../webworker-runtime/package.json | 8 +- .../cordis-client-runner/package.json | 6 +- .../cordis-host-runner/package.json | 8 +- packages/extensions/tool-cordis/package.json | 6 +- packages/extensions/ui-cordis/package.json | 4 +- .../feedback/command-feedback/package.json | 8 +- .../feedback/message-feedback/package.json | 10 +- packages/fs/fs-local/package.json | 6 +- .../fs/fs-observation-policy/package.json | 4 +- packages/fs/fs-sandbox/package.json | 4 +- packages/fs/fs/package.json | 4 +- packages/fs/tool-fs-search/package.json | 6 +- packages/fs/tool-fs/package.json | 6 +- packages/fs/tool-present/package.json | 6 +- .../fs/tool-str-replace-editor/package.json | 6 +- packages/goal/command-goal/package.json | 6 +- packages/goal/goal-round-driver/package.json | 4 +- packages/goal/goal/package.json | 6 +- packages/goal/tool-goal/package.json | 8 +- .../guard/repeat-tool-reminder/package.json | 6 +- packages/guard/timeout-policy/package.json | 4 +- packages/hooks/hook-protocol/package.json | 4 +- packages/hooks/hooks-claude-code/package.json | 6 +- packages/hooks/hooks-codex/package.json | 6 +- .../host/directory-picker-auto/package.json | 10 +- .../host/directory-picker-browse/package.json | 6 +- .../host/directory-picker-native/package.json | 4 +- packages/host/directory-picker/package.json | 4 +- packages/host/frontend-static/package.json | 8 +- packages/host/open-in-app/package.json | 8 +- packages/host/plugin-inventory/package.json | 8 +- packages/host/webserver/package.json | 6 +- .../identity/anonymous-user-id/package.json | 4 +- packages/interaction/commands/package.json | 4 +- .../permission-presets/package.json | 6 +- .../interaction/tool-ask-user/package.json | 4 +- .../interaction/user-approval/package.json | 6 +- .../interaction/user-questions/package.json | 4 +- packages/jobs/jobs-local/package.json | 10 +- packages/jobs/jobs/package.json | 4 +- packages/jobs/tool-jobs/package.json | 6 +- .../deepseek-llm-api-extensions/package.json | 4 +- packages/llm/llm-deepseek/package.json | 6 +- packages/llm/llm-pi-ai/package.json | 6 +- packages/llm/llm-retry/package.json | 10 +- packages/llm/llm/package.json | 6 +- .../package.json | 12 +- packages/llm/token-meter/package.json | 6 +- packages/lsp/lsp-stdio/package.json | 6 +- packages/lsp/lsp/package.json | 4 +- packages/lsp/tool-lsp/package.json | 6 +- packages/mcp/mcp-client/package.json | 6 +- packages/plan/plan-mode/package.json | 4 +- packages/preset/agent-presets/package.json | 16 +- packages/preset/persona/package.json | 6 +- .../invariants/package.json | 6 +- packages/sandbox/sandbox-local/package.json | 6 +- packages/sandbox/sandbox-policy/package.json | 6 +- .../sandbox/sandbox-windows-acl/package.json | 4 +- packages/sandbox/sandbox/package.json | 4 +- packages/schedule/schedule/package.json | 6 +- packages/sdk/client/package.json | 4 +- packages/sdk/protocol/package.json | 4 +- packages/sdk/server/package.json | 8 +- .../session-log-export/package.json | 8 +- .../session-query-sqlite/package.json | 8 +- .../session-query/session-query/package.json | 4 +- .../tool-session-query/package.json | 6 +- .../session-checkpoint-policy/package.json | 6 +- .../session-format-catalog/package.json | 4 +- .../session-format-v0-to-v1/package.json | 4 +- .../session-format-v1-to-v2/package.json | 4 +- .../session-format-v2-to-v3/package.json | 4 +- packages/session/session-format/package.json | 4 +- .../session/session-log-deepseek/package.json | 10 +- .../session-persistence-jsonl/package.json | 6 +- .../session/session-persistence/package.json | 4 +- .../session-projection-cache/package.json | 6 +- .../session/session-projection/package.json | 4 +- packages/session/session-stats/package.json | 8 +- .../session-telemetry-otel/package.json | 10 +- .../session/session-telemetry/package.json | 4 +- .../package.json | 6 +- .../package.json | 10 +- .../session/session-title-llm/package.json | 6 +- packages/session/session-title/package.json | 6 +- .../session/session-turn-outline/package.json | 8 +- packages/settings/settings-file/package.json | 6 +- packages/settings/settings/package.json | 8 +- packages/shell/bash-local/package.json | 6 +- packages/shell/bash-sandbox/package.json | 4 +- packages/shell/pwsh-local/package.json | 6 +- packages/shell/pwsh-sandbox/package.json | 4 +- packages/shell/shell-env/package.json | 6 +- packages/shell/shell/package.json | 4 +- .../shell/tool-bash-persistent/package.json | 10 +- packages/shell/tool-bash/package.json | 6 +- .../shell/tool-pwsh-persistent/package.json | 10 +- packages/shell/tool-pwsh/package.json | 6 +- packages/skill/skill-badge/package.json | 4 +- packages/skill/skill-filesystem/package.json | 6 +- packages/skill/skill/package.json | 6 +- packages/skill/tool-skill/package.json | 6 +- packages/spill/spill-local/package.json | 10 +- packages/spill/spill-policy/package.json | 6 +- packages/spill/spill/package.json | 4 +- packages/storage/storage-domain/package.json | 6 +- packages/storage/storage-json/package.json | 6 +- packages/storage/storage-sqlite/package.json | 6 +- packages/storage/storage/package.json | 4 +- packages/subagent/subagent-acp/package.json | 8 +- .../subagent-claude-code/package.json | 6 +- packages/subagent/subagent-codex/package.json | 8 +- .../subagent/subagent-dsh-sdk/package.json | 8 +- .../subagent-fork-in-process/package.json | 8 +- .../subagent-in-process-driver/package.json | 8 +- .../subagent-spawn-in-process/package.json | 8 +- packages/subagent/subagent/package.json | 4 +- .../tool-subagent-control/package.json | 4 +- packages/subagent/tool-subagent/package.json | 8 +- .../subprocess/subprocess-local/package.json | 4 +- packages/subprocess/subprocess/package.json | 4 +- .../subprocess/win32-process/package.json | 4 +- packages/terminal/terminal-bash/package.json | 6 +- packages/terminal/terminal/package.json | 4 +- packages/terminal/tool-terminal/package.json | 10 +- .../agent-loop-testkit/package.json | 4 +- .../test-support/client-runtime/package.json | 4 +- .../test-support/llm-mock-server/package.json | 4 +- packages/test-support/llm-replay/package.json | 4 +- .../test-support/loader-smoke/package.json | 4 +- .../session-snapshot/package.json | 4 +- packages/todo/tool-todo/package.json | 10 +- packages/typert/generator/package.json | 4 +- packages/typert/loader/package.json | 10 +- packages/typert/protocol/package.json | 4 +- packages/typert/registry/package.json | 4 +- packages/util/atomic-write/package.json | 4 +- packages/util/brand/package.json | 4 +- packages/util/chunked-list/package.json | 4 +- packages/util/crypto/package.json | 4 +- packages/util/deque/package.json | 4 +- packages/util/home-paths/package.json | 4 +- packages/util/http-proxy/package.json | 4 +- packages/util/launch-environment/package.json | 4 +- packages/util/native-command/package.json | 4 +- packages/util/output-retention/package.json | 4 +- packages/util/package-manifest/package.json | 4 +- packages/util/time/package.json | 4 +- packages/util/timeout/package.json | 4 +- packages/util/values/package.json | 4 +- packages/util/workspace-path/package.json | 4 +- packages/web/tool-web/package.json | 6 +- packages/web/web-fetch-http/package.json | 6 +- packages/web/web-search-deepseek/package.json | 6 +- packages/web/web-search-exa/package.json | 6 +- .../web/web-search-perplexity/package.json | 6 +- packages/web/web/package.json | 6 +- packages/webhook/webhook-github/package.json | 10 +- packages/webhook/webhook/package.json | 8 +- packages/workflow/tool-ralph/package.json | 8 +- packages/workflow/tool-workflow/package.json | 6 +- .../workflow-worker-thread/package.json | 6 +- packages/workflow/workflow/package.json | 4 +- packages/workspace/workspace/package.json | 4 +- pnpm-lock.yaml | 750 +++++++++--------- python/sdk-runtime/package.json | 14 +- scripts/verify-package-dependencies.spec.ts | 33 +- scripts/verify-package-dependencies.ts | 34 +- 275 files changed, 1212 insertions(+), 1171 deletions(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index 97881b4cfa..b265db2e3e 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -28,11 +28,11 @@ }, "license": "MIT", "dependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-hmr": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", - "@deepseek-ai/cordis-plugin-timer": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-hmr": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", "@deepseek-ai/dsh-acp-app": "workspace:^", "@deepseek-ai/dsh-agent-instructions": "workspace:^", "@deepseek-ai/dsh-agent-tool-presentation": "workspace:^", @@ -95,7 +95,7 @@ "@deepseek-ai/dsh-webhook": "workspace:^", "@deepseek-ai/dsh-webhook-github": "workspace:^", "@deepseek-ai/dsh-workflow-worker-thread": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "commander": "^15.0.0", "js-yaml": "^4.2.0", "node-addon-require-builtin": "^0.1.4", diff --git a/apps/desktop-host/package.json b/apps/desktop-host/package.json index 83b1ed2a5b..99eb2b4904 100644 --- a/apps/desktop-host/package.json +++ b/apps/desktop-host/package.json @@ -11,8 +11,8 @@ "config/desktop.cordis.patch.yml" ], "dependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", "@deepseek-ai/dsh": "workspace:^", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", diff --git a/apps/web/package.json b/apps/web/package.json index cc504af02b..50e6e88070 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -30,7 +30,7 @@ }, "license": "MIT", "devDependencies": { - "@deepseek-ai/cordis-plugin-group": "workspace:^", + "@deepseek-ai/cordis-plugin-group": "workspace:*", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-ui-dockkit": "workspace:^", diff --git a/benchmarks/package.json b/benchmarks/package.json index cc8c60cf71..4fd9edcd60 100644 --- a/benchmarks/package.json +++ b/benchmarks/package.json @@ -7,7 +7,7 @@ "devDependencies": { "playwright": "^1.49.0", "@deepseek-ai/dsh-llm-replay": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -32,6 +32,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/acp/acp/package.json b/packages/acp/acp/package.json index 1e18f54543..3bf01229ec 100644 --- a/packages/acp/acp/package.json +++ b/packages/acp/acp/package.json @@ -29,10 +29,10 @@ "dependencies": { "@agentclientprotocol/sdk": "1.4.0", "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -48,7 +48,7 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/api/gateway/package.json b/packages/api/gateway/package.json index 985db89e9e..03dbbc8245 100644 --- a/packages/api/gateway/package.json +++ b/packages/api/gateway/package.json @@ -53,12 +53,12 @@ "dependencies": { "@deepseek-ai/dsh-deque": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "ws": "^8.21.0", "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", @@ -67,7 +67,7 @@ "@deepseek-ai/dsh-typert-registry": "workspace:^", "@deepseek-ai/dsh-util-crypto": "workspace:^", "@types/ws": "^8.18.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "zod": "^4.4.3" } } diff --git a/packages/api/remotes/package.json b/packages/api/remotes/package.json index 73f4bbdd13..1415ffdc5f 100644 --- a/packages/api/remotes/package.json +++ b/packages/api/remotes/package.json @@ -55,11 +55,11 @@ "@deepseek-ai/dsh-util-values": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-scope": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-api-gateway": "workspace:^", diff --git a/packages/api/session-controller/package.json b/packages/api/session-controller/package.json index e07392fe5c..f8378d4010 100644 --- a/packages/api/session-controller/package.json +++ b/packages/api/session-controller/package.json @@ -70,12 +70,12 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-deque": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "mime-types": "^3.0.2", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", @@ -117,7 +117,7 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", diff --git a/packages/api/settings-controller/package.json b/packages/api/settings-controller/package.json index c9bcbf578a..28caa71fed 100644 --- a/packages/api/settings-controller/package.json +++ b/packages/api/settings-controller/package.json @@ -44,11 +44,11 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-native-command": "workspace:^", @@ -57,7 +57,7 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-native-command": "workspace:^", diff --git a/packages/api/workspace-controller/package.json b/packages/api/workspace-controller/package.json index e73fe14586..dc6691b4f9 100644 --- a/packages/api/workspace-controller/package.json +++ b/packages/api/workspace-controller/package.json @@ -69,7 +69,7 @@ "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-host-directory-picker": "workspace:^", @@ -79,7 +79,7 @@ "@deepseek-ai/dsh-workspace": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", diff --git a/packages/api/workspace-files/package.json b/packages/api/workspace-files/package.json index c5130dbe89..9592cc40be 100644 --- a/packages/api/workspace-files/package.json +++ b/packages/api/workspace-files/package.json @@ -54,14 +54,14 @@ "dependencies": { "@deepseek-ai/dsh-deque": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-client-resources": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", diff --git a/packages/attachment/attachment-local/package.json b/packages/attachment/attachment-local/package.json index 1d2a37a9e4..8e4f2850b4 100644 --- a/packages/attachment/attachment-local/package.json +++ b/packages/attachment/attachment-local/package.json @@ -23,15 +23,15 @@ "peerDependencies": { "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "sharp": "^0.35.3" }, "devDependencies": { "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/attachment/attachment/package.json b/packages/attachment/attachment/package.json index e030ce0e71..8bfc20cb06 100644 --- a/packages/attachment/attachment/package.json +++ b/packages/attachment/attachment/package.json @@ -23,10 +23,10 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/boot/app-boot/package.json b/packages/boot/app-boot/package.json index 9b51435015..c4b1a011e7 100644 --- a/packages/boot/app-boot/package.json +++ b/packages/boot/app-boot/package.json @@ -33,14 +33,14 @@ "resolve.exports": "^2.0.3" }, "peerDependencies": { - "@deepseek-ai/cordis-plugin-group": "workspace:^", - "@deepseek-ai/cordis-plugin-hmr": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-group": "workspace:*", + "@deepseek-ai/cordis-plugin-hmr": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-hmr": { @@ -48,16 +48,16 @@ } }, "devDependencies": { - "@deepseek-ai/cordis-plugin-group": "workspace:^", - "@deepseek-ai/cordis-plugin-hmr": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", - "@deepseek-ai/cordis-plugin-timer": "workspace:^", + "@deepseek-ai/cordis-plugin-group": "workspace:*", + "@deepseek-ai/cordis-plugin-hmr": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@types/js-yaml": "^4.0.9", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "chokidar": "4.0.3" } } diff --git a/packages/boot/cmdline/package.json b/packages/boot/cmdline/package.json index bb453aaa94..57c18c4452 100644 --- a/packages/boot/cmdline/package.json +++ b/packages/boot/cmdline/package.json @@ -27,13 +27,13 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis-plugin-loader": "workspace:*", + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "commander": "^15.0.0", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/bundle/acp-app/package.json b/packages/bundle/acp-app/package.json index f9aca81482..01b4862970 100644 --- a/packages/bundle/acp-app/package.json +++ b/packages/bundle/acp-app/package.json @@ -39,10 +39,10 @@ "commander": "^15.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/bundle/base/package.json b/packages/bundle/base/package.json index abe58f9588..5a6e059e55 100644 --- a/packages/bundle/base/package.json +++ b/packages/bundle/base/package.json @@ -34,8 +34,8 @@ } }, "dependencies": { - "@deepseek-ai/cordis-plugin-hmr": "workspace:^", - "@deepseek-ai/cordis-plugin-timer": "workspace:^", + "@deepseek-ai/cordis-plugin-hmr": "workspace:*", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", @@ -120,9 +120,9 @@ "@deepseek-ai/dsh-agent-instructions": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/bundle/headless/package.json b/packages/bundle/headless/package.json index 5d7042c166..46b1f112f4 100644 --- a/packages/bundle/headless/package.json +++ b/packages/bundle/headless/package.json @@ -43,20 +43,20 @@ "@deepseek-ai/dsh-cmdline": "workspace:^", "@deepseek-ai/dsh-code-runtime-worker-thread": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "commander": "^15.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", diff --git a/packages/bundle/sdk-app/package.json b/packages/bundle/sdk-app/package.json index 974b60623a..20f002c9a4 100644 --- a/packages/bundle/sdk-app/package.json +++ b/packages/bundle/sdk-app/package.json @@ -36,14 +36,14 @@ "dependencies": { "@deepseek-ai/dsh-cmdline": "workspace:^", "@deepseek-ai/dsh-sdk-jsonrpc-server": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "commander": "^15.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/bundle/sdk-minimal/package.json b/packages/bundle/sdk-minimal/package.json index bd32a131f0..5208226eac 100644 --- a/packages/bundle/sdk-minimal/package.json +++ b/packages/bundle/sdk-minimal/package.json @@ -34,7 +34,7 @@ } }, "dependencies": { - "@deepseek-ai/cordis-plugin-timer": "workspace:^", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", @@ -63,9 +63,9 @@ "@deepseek-ai/dsh-tools": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/bundle/web-app/package.json b/packages/bundle/web-app/package.json index 3498cb6761..2392881d50 100644 --- a/packages/bundle/web-app/package.json +++ b/packages/bundle/web-app/package.json @@ -116,19 +116,19 @@ "@deepseek-ai/dsh-tool-subagent": "workspace:^", "@deepseek-ai/dsh-web-frontend": "workspace:^", "@deepseek-ai/dsh-workspace": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "commander": "^15.0.0", "open": "^11.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-shell-env": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-shell-env": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^" } diff --git a/packages/client/connection/package.json b/packages/client/connection/package.json index 4732dcdd71..dab23d2d88 100644 --- a/packages/client/connection/package.json +++ b/packages/client/connection/package.json @@ -35,7 +35,7 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-credentials": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "files": [ @@ -44,10 +44,10 @@ "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", diff --git a/packages/client/file-upload/package.json b/packages/client/file-upload/package.json index 5c606edbc5..0b3f35d369 100644 --- a/packages/client/file-upload/package.json +++ b/packages/client/file-upload/package.json @@ -67,11 +67,11 @@ "@deepseek-ai/dsh-brand": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-scope": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-commands": "workspace:^", diff --git a/packages/client/hmr/package.json b/packages/client/hmr/package.json index 3c5f0a3cbd..05ab26abea 100644 --- a/packages/client/hmr/package.json +++ b/packages/client/hmr/package.json @@ -38,17 +38,17 @@ }, "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "files": [ "lib/index.js", diff --git a/packages/client/locale/package.json b/packages/client/locale/package.json index 4245200191..bf980b6fb9 100644 --- a/packages/client/locale/package.json +++ b/packages/client/locale/package.json @@ -39,10 +39,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-test-runtime": "workspace:^", @@ -56,7 +56,7 @@ "@deepseek-ai/dsh-settings": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "files": [ "lib/index.js", diff --git a/packages/client/modules/package.json b/packages/client/modules/package.json index 06ee59bb3e..ed5f826661 100644 --- a/packages/client/modules/package.json +++ b/packages/client/modules/package.json @@ -42,10 +42,10 @@ }, "license": "MIT", "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-host-webserver": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-package-manifest": "workspace:^" }, "files": [ @@ -55,6 +55,6 @@ "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/client/resources/package.json b/packages/client/resources/package.json index dd6b9baa2f..689f352ede 100644 --- a/packages/client/resources/package.json +++ b/packages/client/resources/package.json @@ -39,10 +39,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-test-runtime": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/store/package.json b/packages/client/store/package.json index 59325a1517..00bc212768 100644 --- a/packages/client/store/package.json +++ b/packages/client/store/package.json @@ -23,10 +23,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "zustand": "~4.4.7", "immer": "^10.1.1" }, diff --git a/packages/client/ui-agent-preset/package.json b/packages/client/ui-agent-preset/package.json index 2dce990410..6d072209e3 100644 --- a/packages/client/ui-agent-preset/package.json +++ b/packages/client/ui-agent-preset/package.json @@ -46,7 +46,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -62,7 +62,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-client-ui-session": "workspace:^", diff --git a/packages/client/ui-approval/package.json b/packages/client/ui-approval/package.json index 765176239f..86ecffb2ff 100644 --- a/packages/client/ui-approval/package.json +++ b/packages/client/ui-approval/package.json @@ -44,10 +44,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", diff --git a/packages/client/ui-attachment/package.json b/packages/client/ui-attachment/package.json index f994246609..6e19205536 100644 --- a/packages/client/ui-attachment/package.json +++ b/packages/client/ui-attachment/package.json @@ -43,7 +43,7 @@ }, "license": "MIT", "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", "@deepseek-ai/dsh-client-ui-chat": "workspace:^", @@ -64,6 +64,6 @@ "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/client/ui-brand-official/package.json b/packages/client/ui-brand-official/package.json index 1113b8a013..6a1af745e0 100644 --- a/packages/client/ui-brand-official/package.json +++ b/packages/client/ui-brand-official/package.json @@ -40,13 +40,13 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-client-ui-primitives": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-client-ui-sidebar": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", "react": "^18.2.0", diff --git a/packages/client/ui-chat/package.json b/packages/client/ui-chat/package.json index 4fc9f35f4d..f62bf82962 100644 --- a/packages/client/ui-chat/package.json +++ b/packages/client/ui-chat/package.json @@ -48,10 +48,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", @@ -88,7 +88,7 @@ "react-dom": "^18.2.0" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "files": [ "lib/index.js", diff --git a/packages/client/ui-commands/package.json b/packages/client/ui-commands/package.json index f3313850a3..a058e1b14f 100644 --- a/packages/client/ui-commands/package.json +++ b/packages/client/ui-commands/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -55,7 +55,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-commands": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", diff --git a/packages/client/ui-conversation/package.json b/packages/client/ui-conversation/package.json index 060d2a0611..8628f0b603 100644 --- a/packages/client/ui-conversation/package.json +++ b/packages/client/ui-conversation/package.json @@ -46,13 +46,13 @@ }, "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-api-workspace-controller": "workspace:^", diff --git a/packages/client/ui-deliverables/package.json b/packages/client/ui-deliverables/package.json index 676e3569fd..f9160c942e 100644 --- a/packages/client/ui-deliverables/package.json +++ b/packages/client/ui-deliverables/package.json @@ -45,7 +45,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -58,7 +58,7 @@ "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-primitives": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", diff --git a/packages/client/ui-directory-picker-browse/package.json b/packages/client/ui-directory-picker-browse/package.json index 019e02f3fe..24cfcb3575 100644 --- a/packages/client/ui-directory-picker-browse/package.json +++ b/packages/client/ui-directory-picker-browse/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -54,7 +54,7 @@ "@deepseek-ai/dsh-client-ui-workspace": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "clsx": "^2.0.0" diff --git a/packages/client/ui-directory-picker-native/package.json b/packages/client/ui-directory-picker-native/package.json index e984a73db2..7ed364f0ce 100644 --- a/packages/client/ui-directory-picker-native/package.json +++ b/packages/client/ui-directory-picker-native/package.json @@ -40,14 +40,14 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-client-ui-workspace": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-dockkit/package.json b/packages/client/ui-dockkit/package.json index 570cdebef4..d64cb583b8 100644 --- a/packages/client/ui-dockkit/package.json +++ b/packages/client/ui-dockkit/package.json @@ -23,7 +23,7 @@ }, "license": "MIT", "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-client-ui-primitives": "workspace:^", "@testing-library/react": "^16.1.0", @@ -39,6 +39,6 @@ "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/client/ui-goal/package.json b/packages/client/ui-goal/package.json index b59be8fb9a..371fc27b12 100644 --- a/packages/client/ui-goal/package.json +++ b/packages/client/ui-goal/package.json @@ -45,7 +45,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -62,7 +62,7 @@ "@deepseek-ai/dsh-goal": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-session": "workspace:^", diff --git a/packages/client/ui-input-trigger/package.json b/packages/client/ui-input-trigger/package.json index 4cf4959203..4af96ec488 100644 --- a/packages/client/ui-input-trigger/package.json +++ b/packages/client/ui-input-trigger/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-client-locale": "workspace:^", @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-file-reference": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", diff --git a/packages/client/ui-jobs/package.json b/packages/client/ui-jobs/package.json index d36767585b..e6668f556c 100644 --- a/packages/client/ui-jobs/package.json +++ b/packages/client/ui-jobs/package.json @@ -41,7 +41,7 @@ "access": "public" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-client-locale": "workspace:^", @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-client-ui-primitives": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/ui-layout/package.json b/packages/client/ui-layout/package.json index 5c56f8dfe9..7ab0b24dcf 100644 --- a/packages/client/ui-layout/package.json +++ b/packages/client/ui-layout/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", @@ -53,7 +53,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-client-ui-theme": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0" }, "files": [ diff --git a/packages/client/ui-message-feedback/package.json b/packages/client/ui-message-feedback/package.json index 051353d43f..c589cd4c23 100644 --- a/packages/client/ui-message-feedback/package.json +++ b/packages/client/ui-message-feedback/package.json @@ -43,7 +43,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -57,7 +57,7 @@ "@deepseek-ai/dsh-message-feedback": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", diff --git a/packages/client/ui-model-selection/package.json b/packages/client/ui-model-selection/package.json index bf37cfed12..463be8cc2d 100644 --- a/packages/client/ui-model-selection/package.json +++ b/packages/client/ui-model-selection/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -56,7 +56,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "@types/react-dom": "~18.3.0", diff --git a/packages/client/ui-open-in-app/package.json b/packages/client/ui-open-in-app/package.json index 923abdf40e..0c726ef252 100644 --- a/packages/client/ui-open-in-app/package.json +++ b/packages/client/ui-open-in-app/package.json @@ -47,10 +47,10 @@ } }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", diff --git a/packages/client/ui-permission-presets/package.json b/packages/client/ui-permission-presets/package.json index d96960bb15..21aaaba411 100644 --- a/packages/client/ui-permission-presets/package.json +++ b/packages/client/ui-permission-presets/package.json @@ -43,10 +43,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", diff --git a/packages/client/ui-plan/package.json b/packages/client/ui-plan/package.json index 49d6f41358..596adb6ee0 100644 --- a/packages/client/ui-plan/package.json +++ b/packages/client/ui-plan/package.json @@ -41,7 +41,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-plan-mode": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/ui-primitives/package.json b/packages/client/ui-primitives/package.json index 4c02a1ced6..70f7fba6cb 100644 --- a/packages/client/ui-primitives/package.json +++ b/packages/client/ui-primitives/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "clsx": "^2.0.0", "react-dom": "^18.2.0", @@ -53,6 +53,6 @@ "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/client/ui-reference/package.json b/packages/client/ui-reference/package.json index 84dd09e631..4c00e9d339 100644 --- a/packages/client/ui-reference/package.json +++ b/packages/client/ui-reference/package.json @@ -43,7 +43,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -58,7 +58,7 @@ "@deepseek-ai/dsh-session-reference": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@deepseek-ai/dsh-util-workspace-path": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "files": [ "lib/index.js", diff --git a/packages/client/ui-renderer/package.json b/packages/client/ui-renderer/package.json index 17edf34172..99272ba2ea 100644 --- a/packages/client/ui-renderer/package.json +++ b/packages/client/ui-renderer/package.json @@ -41,10 +41,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-client-test-runtime": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", diff --git a/packages/client/ui-schedule/package.json b/packages/client/ui-schedule/package.json index b4717e39a2..a0f43a1da0 100644 --- a/packages/client/ui-schedule/package.json +++ b/packages/client/ui-schedule/package.json @@ -41,7 +41,7 @@ "access": "public" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-session-controller": "workspace:^", @@ -57,7 +57,7 @@ "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-session/package.json b/packages/client/ui-session/package.json index e7943cbdbf..c4430b80df 100644 --- a/packages/client/ui-session/package.json +++ b/packages/client/ui-session/package.json @@ -40,10 +40,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/ui-settings-general/package.json b/packages/client/ui-settings-general/package.json index 62ea8b087d..2c4ce21271 100644 --- a/packages/client/ui-settings-general/package.json +++ b/packages/client/ui-settings-general/package.json @@ -43,10 +43,10 @@ }, "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -58,7 +58,7 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:^", "@deepseek-ai/dsh-client-ui-sidebar": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@types/react": "~18.3.1", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/ui-settings-models/package.json b/packages/client/ui-settings-models/package.json index a44acf6333..b8195de272 100644 --- a/packages/client/ui-settings-models/package.json +++ b/packages/client/ui-settings-models/package.json @@ -41,7 +41,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-client-ui-settings": "workspace:^", "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^" diff --git a/packages/client/ui-settings-plugin-inventory/package.json b/packages/client/ui-settings-plugin-inventory/package.json index a0e43dbaa4..f7b778f8ab 100644 --- a/packages/client/ui-settings-plugin-inventory/package.json +++ b/packages/client/ui-settings-plugin-inventory/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -54,7 +54,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", diff --git a/packages/client/ui-settings-plugins/package.json b/packages/client/ui-settings-plugins/package.json index a9ee3769c3..c442b85e1d 100644 --- a/packages/client/ui-settings-plugins/package.json +++ b/packages/client/ui-settings-plugins/package.json @@ -41,10 +41,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", diff --git a/packages/client/ui-settings/package.json b/packages/client/ui-settings/package.json index d8c8fd594a..77e3121444 100644 --- a/packages/client/ui-settings/package.json +++ b/packages/client/ui-settings/package.json @@ -39,10 +39,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-test-runtime": "workspace:^", @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-settings": "workspace:^", "@types/react": "~18.3.1", "react": "^18.2.0", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:^" }, "files": [ diff --git a/packages/client/ui-sidebar-documentpreview/package.json b/packages/client/ui-sidebar-documentpreview/package.json index c84f696313..6dff631937 100644 --- a/packages/client/ui-sidebar-documentpreview/package.json +++ b/packages/client/ui-sidebar-documentpreview/package.json @@ -43,10 +43,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-workspace-files": "workspace:^", diff --git a/packages/client/ui-sidebar-files/package.json b/packages/client/ui-sidebar-files/package.json index c9b0f30663..2da4742959 100644 --- a/packages/client/ui-sidebar-files/package.json +++ b/packages/client/ui-sidebar-files/package.json @@ -42,10 +42,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-workspace-files": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", diff --git a/packages/client/ui-sidebar-right/package.json b/packages/client/ui-sidebar-right/package.json index 05c813fcc2..ab8a79d601 100644 --- a/packages/client/ui-sidebar-right/package.json +++ b/packages/client/ui-sidebar-right/package.json @@ -43,10 +43,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-session-controller": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", "@deepseek-ai/dsh-client-resources": "workspace:^", diff --git a/packages/client/ui-sidebar/package.json b/packages/client/ui-sidebar/package.json index e3329d2ad5..c15eb7aa15 100644 --- a/packages/client/ui-sidebar/package.json +++ b/packages/client/ui-sidebar/package.json @@ -44,7 +44,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-workspace-controller": "workspace:^", @@ -58,7 +58,7 @@ "@deepseek-ai/dsh-client-ui-session": "workspace:^", "@deepseek-ai/dsh-client-ui-workspace": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "clsx": "^2.0.0" }, diff --git a/packages/client/ui-skill/package.json b/packages/client/ui-skill/package.json index 312000f453..faad887629 100644 --- a/packages/client/ui-skill/package.json +++ b/packages/client/ui-skill/package.json @@ -44,7 +44,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -60,7 +60,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/client/ui-slots/package.json b/packages/client/ui-slots/package.json index aa3ea2b5db..c4e442da26 100644 --- a/packages/client/ui-slots/package.json +++ b/packages/client/ui-slots/package.json @@ -25,13 +25,13 @@ "devDependencies": { "@deepseek-ai/dsh-client-store": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "files": [ "lib/index.js", "lib/types/**/*.d.ts" ], "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/client/ui-subagent/package.json b/packages/client/ui-subagent/package.json index 013105cce6..a25900dea8 100644 --- a/packages/client/ui-subagent/package.json +++ b/packages/client/ui-subagent/package.json @@ -43,7 +43,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-client-locale": "workspace:^", @@ -56,7 +56,7 @@ "@deepseek-ai/dsh-token-meter": "workspace:^", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-api-session-controller": "workspace:^", diff --git a/packages/client/ui-theme/package.json b/packages/client/ui-theme/package.json index 5a7a7fb249..eca96065c0 100644 --- a/packages/client/ui-theme/package.json +++ b/packages/client/ui-theme/package.json @@ -40,10 +40,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", @@ -70,6 +70,6 @@ "watch": "tsdown --watch" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" } } diff --git a/packages/client/ui-tool/package.json b/packages/client/ui-tool/package.json index 8e2770e323..11ddae1f81 100644 --- a/packages/client/ui-tool/package.json +++ b/packages/client/ui-tool/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-spill-policy": "workspace:^", @@ -53,7 +53,7 @@ "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-spill": "workspace:^", "@deepseek-ai/dsh-code-runtime-worker-thread": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-client-locale": "workspace:^", diff --git a/packages/client/ui-trajectory/package.json b/packages/client/ui-trajectory/package.json index 6eb6fc741f..32e664d600 100644 --- a/packages/client/ui-trajectory/package.json +++ b/packages/client/ui-trajectory/package.json @@ -43,7 +43,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -56,7 +56,7 @@ "@deepseek-ai/dsh-tools": "workspace:^", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "@deepseek-ai/dsh-client-store": "workspace:^", diff --git a/packages/client/ui-user-questions/package.json b/packages/client/ui-user-questions/package.json index 43a56f951a..2c8e881b99 100644 --- a/packages/client/ui-user-questions/package.json +++ b/packages/client/ui-user-questions/package.json @@ -44,10 +44,10 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-api-session-controller": "workspace:^", diff --git a/packages/client/ui-workflow-run/package.json b/packages/client/ui-workflow-run/package.json index ac5afa61bf..98a545b350 100644 --- a/packages/client/ui-workflow-run/package.json +++ b/packages/client/ui-workflow-run/package.json @@ -49,7 +49,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-session-controller": "workspace:^", @@ -66,7 +66,7 @@ "@deepseek-ai/dsh-tool-workflow": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0" } } diff --git a/packages/client/ui-workspace/package.json b/packages/client/ui-workspace/package.json index 086992fd19..96f844a25b 100644 --- a/packages/client/ui-workspace/package.json +++ b/packages/client/ui-workspace/package.json @@ -48,7 +48,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -70,7 +70,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-util-workspace-path": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "clsx": "^2.0.0" }, diff --git a/packages/client/web/package.json b/packages/client/web/package.json index 4b84e01cf3..07f0783d0f 100644 --- a/packages/client/web/package.json +++ b/packages/client/web/package.json @@ -23,7 +23,7 @@ }, "license": "MIT", "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-client-store": "workspace:^", "@deepseek-ai/dsh-client-ui-dockkit": "workspace:^", @@ -32,13 +32,13 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "typescript": "^6.0.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "files": [ "lib/index.js", diff --git a/packages/code-runtime/code-runtime-worker-thread/package.json b/packages/code-runtime/code-runtime-worker-thread/package.json index 5f18cafa8b..9491b8e996 100644 --- a/packages/code-runtime/code-runtime-worker-thread/package.json +++ b/packages/code-runtime/code-runtime-worker-thread/package.json @@ -31,17 +31,17 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^" }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^" diff --git a/packages/code-runtime/code-runtime/package.json b/packages/code-runtime/code-runtime/package.json index 7e31f4998e..070c598183 100644 --- a/packages/code-runtime/code-runtime/package.json +++ b/packages/code-runtime/code-runtime/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/compaction/command-compact/package.json b/packages/compaction/command-compact/package.json index ac4c49b3b6..de807314c1 100644 --- a/packages/compaction/command-compact/package.json +++ b/packages/compaction/command-compact/package.json @@ -29,16 +29,16 @@ "peerDependencies": { "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/compaction/compaction-basic/package.json b/packages/compaction/compaction-basic/package.json index 82f980e727..60eac2756d 100644 --- a/packages/compaction/compaction-basic/package.json +++ b/packages/compaction/compaction-basic/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", @@ -43,12 +43,12 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/compaction/compaction-tool-result-pruner/package.json b/packages/compaction/compaction-tool-result-pruner/package.json index 93eedeba7f..d163cc7f2b 100644 --- a/packages/compaction/compaction-tool-result-pruner/package.json +++ b/packages/compaction/compaction-tool-result-pruner/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -35,12 +35,12 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/compaction/compaction/package.json b/packages/compaction/compaction/package.json index 4382613ca4..8d21374edb 100644 --- a/packages/compaction/compaction/package.json +++ b/packages/compaction/compaction/package.json @@ -46,7 +46,7 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", @@ -54,6 +54,6 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/context/agent-instructions/package.json b/packages/context/agent-instructions/package.json index 7fa0bba69e..1531f9a2b3 100644 --- a/packages/context/agent-instructions/package.json +++ b/packages/context/agent-instructions/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", @@ -38,11 +38,11 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/context/file-reference-local/package.json b/packages/context/file-reference-local/package.json index 998c6e2e52..90b4656d9f 100644 --- a/packages/context/file-reference-local/package.json +++ b/packages/context/file-reference-local/package.json @@ -32,20 +32,20 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-file-reference": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-file-reference": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/context/file-reference/package.json b/packages/context/file-reference/package.json index abc2a1cc2a..f0334f1da6 100644 --- a/packages/context/file-reference/package.json +++ b/packages/context/file-reference/package.json @@ -37,10 +37,10 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/context/session-reference/package.json b/packages/context/session-reference/package.json index e4e17c536b..3b89b9786e 100644 --- a/packages/context/session-reference/package.json +++ b/packages/context/session-reference/package.json @@ -46,11 +46,11 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -73,9 +73,9 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-fs-local": "workspace:^", diff --git a/packages/context/time-context/package.json b/packages/context/time-context/package.json index 94023206a8..fcbdda6b7b 100644 --- a/packages/context/time-context/package.json +++ b/packages/context/time-context/package.json @@ -33,11 +33,11 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -45,7 +45,7 @@ "@deepseek-ai/dsh-session-projection": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/context/tmux-context/package.json b/packages/context/tmux-context/package.json index 95a04c31b9..b1021c6215 100644 --- a/packages/context/tmux-context/package.json +++ b/packages/context/tmux-context/package.json @@ -27,14 +27,14 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "devDependencies": { @@ -44,7 +44,7 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/core/agent-default-model/package.json b/packages/core/agent-default-model/package.json index 109ae3394d..ade673f6d5 100644 --- a/packages/core/agent-default-model/package.json +++ b/packages/core/agent-default-model/package.json @@ -27,18 +27,18 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/core/agent-loop/package.json b/packages/core/agent-loop/package.json index 708c7c514a..5091fddbdd 100644 --- a/packages/core/agent-loop/package.json +++ b/packages/core/agent-loop/package.json @@ -31,7 +31,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -46,11 +46,11 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm-pi-ai": "workspace:^", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", diff --git a/packages/core/agent-tool-presentation/package.json b/packages/core/agent-tool-presentation/package.json index 10109f5ef1..5bc00141ab 100644 --- a/packages/core/agent-tool-presentation/package.json +++ b/packages/core/agent-tool-presentation/package.json @@ -27,11 +27,11 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -40,6 +40,6 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/core/agent/package.json b/packages/core/agent/package.json index b34895cb88..f85e083ab8 100644 --- a/packages/core/agent/package.json +++ b/packages/core/agent/package.json @@ -45,7 +45,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", @@ -57,6 +57,6 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@deepseek-ai/dsh-typert-registry": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/core/scope/package.json b/packages/core/scope/package.json index 3ac55af4cb..268e0fdbe9 100644 --- a/packages/core/scope/package.json +++ b/packages/core/scope/package.json @@ -33,10 +33,10 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/core/session/package.json b/packages/core/session/package.json index 4f43ac08dd..4215779d0c 100644 --- a/packages/core/session/package.json +++ b/packages/core/session/package.json @@ -42,14 +42,14 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-scope": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@deepseek-ai/dsh-typert-registry": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/core/system-prompt/package.json b/packages/core/system-prompt/package.json index 0df2d6de53..8ec4194a77 100644 --- a/packages/core/system-prompt/package.json +++ b/packages/core/system-prompt/package.json @@ -35,15 +35,15 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/core/tools/package.json b/packages/core/tools/package.json index e3d6cdc3b8..0e37581818 100644 --- a/packages/core/tools/package.json +++ b/packages/core/tools/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", @@ -54,10 +54,10 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", diff --git a/packages/credentials/authorization/package.json b/packages/credentials/authorization/package.json index 830bdf51fe..76e5b79cef 100644 --- a/packages/credentials/authorization/package.json +++ b/packages/credentials/authorization/package.json @@ -40,12 +40,12 @@ "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/credentials/credentials-local/package.json b/packages/credentials/credentials-local/package.json index c33473e37f..c7d7d2128a 100644 --- a/packages/credentials/credentials-local/package.json +++ b/packages/credentials/credentials-local/package.json @@ -31,11 +31,11 @@ "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "chokidar": "^4.0.3", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "yaml": "^2.9.0" }, "devDependencies": { @@ -43,6 +43,6 @@ "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/credentials/credentials/package.json b/packages/credentials/credentials/package.json index 2b442b47c8..bc5c80beb8 100644 --- a/packages/credentials/credentials/package.json +++ b/packages/credentials/credentials/package.json @@ -37,11 +37,11 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-invariants": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-invariants": "workspace:^" }, "dependencies": { diff --git a/packages/e2b/e2b/package.json b/packages/e2b/e2b/package.json index 9a2bd625fc..602ed51b2c 100644 --- a/packages/e2b/e2b/package.json +++ b/packages/e2b/e2b/package.json @@ -27,15 +27,15 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "e2b": "2.29.1" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", diff --git a/packages/e2b/fs-e2b/package.json b/packages/e2b/fs-e2b/package.json index 4381fe7e86..6f989f2b8a 100644 --- a/packages/e2b/fs-e2b/package.json +++ b/packages/e2b/fs-e2b/package.json @@ -29,11 +29,11 @@ "peerDependencies": { "@deepseek-ai/dsh-e2b": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-e2b": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/e2b/subprocess-e2b/package.json b/packages/e2b/subprocess-e2b/package.json index f5824b362c..c6a7342657 100644 --- a/packages/e2b/subprocess-e2b/package.json +++ b/packages/e2b/subprocess-e2b/package.json @@ -30,15 +30,15 @@ "@deepseek-ai/dsh-e2b": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-e2b": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/experimental/agent-team-profile/package.json b/packages/experimental/agent-team-profile/package.json index 51fefe782d..1414ef126c 100644 --- a/packages/experimental/agent-team-profile/package.json +++ b/packages/experimental/agent-team-profile/package.json @@ -38,11 +38,11 @@ "@deepseek-ai/dsh-experimental-tool-agent-team": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis": "workspace:*", "js-yaml": "^4.2.0" } } diff --git a/packages/experimental/agent-team-web-profile/package.json b/packages/experimental/agent-team-web-profile/package.json index e4df1779f9..1bd3692f3e 100644 --- a/packages/experimental/agent-team-web-profile/package.json +++ b/packages/experimental/agent-team-web-profile/package.json @@ -37,11 +37,11 @@ "@deepseek-ai/dsh-experimental-client-ui-agent-team": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis": "workspace:*", "js-yaml": "^4.2.0" } } diff --git a/packages/experimental/agent-team/package.json b/packages/experimental/agent-team/package.json index b61057e3aa..c15441b1a7 100644 --- a/packages/experimental/agent-team/package.json +++ b/packages/experimental/agent-team/package.json @@ -54,11 +54,11 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -69,7 +69,7 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/experimental/client-ui-agent-team/package.json b/packages/experimental/client-ui-agent-team/package.json index 4932c980ba..563a2c7a75 100644 --- a/packages/experimental/client-ui-agent-team/package.json +++ b/packages/experimental/client-ui-agent-team/package.json @@ -57,7 +57,7 @@ "@deepseek-ai/dsh-experimental-agent-team": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -74,7 +74,7 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@testing-library/react": "^16.1.0", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react-dom": "^18.2.0" }, "files": [ diff --git a/packages/experimental/code-runtime-python/package.json b/packages/experimental/code-runtime-python/package.json index 2fb430b5a8..ceaa310bdf 100644 --- a/packages/experimental/code-runtime-python/package.json +++ b/packages/experimental/code-runtime-python/package.json @@ -26,17 +26,17 @@ "peerDependencies": { "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:^" }, "devDependencies": { "@deepseek-ai/dsh-code-runtime": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-util-values": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "private": true } diff --git a/packages/experimental/inspector/package.json b/packages/experimental/inspector/package.json index b7983de638..fe46f14acc 100644 --- a/packages/experimental/inspector/package.json +++ b/packages/experimental/inspector/package.json @@ -39,19 +39,19 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-crypto": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "ws": "^8.21.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-host-webserver": "workspace:^", "@types/ws": "^8.18.1", "playwright": "^1.49.0", diff --git a/packages/experimental/tool-agent-team/package.json b/packages/experimental/tool-agent-team/package.json index be33c259a2..7f08e60b07 100644 --- a/packages/experimental/tool-agent-team/package.json +++ b/packages/experimental/tool-agent-team/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -35,7 +35,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-experimental-agent-team": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -53,6 +53,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-experimental-agent-team": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/experimental/webworker-packer/package.json b/packages/experimental/webworker-packer/package.json index ca79afecb6..a98d0e2064 100644 --- a/packages/experimental/webworker-packer/package.json +++ b/packages/experimental/webworker-packer/package.json @@ -31,19 +31,19 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", "@deepseek-ai/dsh-experimental-webworker-runtime": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "js-yaml": "^4.2.0", "picomatch": "^4.0.4" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@types/js-yaml": "^4.0.9", "@types/picomatch": "^3.0.2", "@deepseek-ai/dsh-package-manifest": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/experimental/webworker-runtime/package.json b/packages/experimental/webworker-runtime/package.json index ec646a9b60..ac04c0d104 100644 --- a/packages/experimental/webworker-runtime/package.json +++ b/packages/experimental/webworker-runtime/package.json @@ -35,15 +35,15 @@ "readable-stream": "^4.7.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-api-gateway": "workspace:^", "@deepseek-ai/dsh-bash-sandbox": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", diff --git a/packages/extensions/cordis-client-runner/package.json b/packages/extensions/cordis-client-runner/package.json index 4b96b17335..ceb94aeaed 100644 --- a/packages/extensions/cordis-client-runner/package.json +++ b/packages/extensions/cordis-client-runner/package.json @@ -42,16 +42,16 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-api-remotes": "workspace:^", "@deepseek-ai/dsh-client-modules": "workspace:^", "@deepseek-ai/dsh-client-ui-renderer": "workspace:^", "@deepseek-ai/dsh-client-ui-theme": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "@deepseek-ai/dsh-util-values": "workspace:^" }, diff --git a/packages/extensions/cordis-host-runner/package.json b/packages/extensions/cordis-host-runner/package.json index a4578ed8c6..d8ebc413e8 100644 --- a/packages/extensions/cordis-host-runner/package.json +++ b/packages/extensions/cordis-host-runner/package.json @@ -45,11 +45,11 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -59,8 +59,8 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-timer": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/extensions/tool-cordis/package.json b/packages/extensions/tool-cordis/package.json index 77e0883e7b..d19d0fb5ef 100644 --- a/packages/extensions/tool-cordis/package.json +++ b/packages/extensions/tool-cordis/package.json @@ -34,10 +34,10 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-cordis-host-runner": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -45,6 +45,6 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/extensions/ui-cordis/package.json b/packages/extensions/ui-cordis/package.json index 4bad5de8e9..32b78e9ed7 100644 --- a/packages/extensions/ui-cordis/package.json +++ b/packages/extensions/ui-cordis/package.json @@ -47,7 +47,7 @@ }, "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-api-remotes": "workspace:^", @@ -63,7 +63,7 @@ "@deepseek-ai/dsh-client-ui-slots": "workspace:^", "@deepseek-ai/dsh-client-ui-tool": "workspace:^", "@types/react": "~18.3.1", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0" }, "files": [ diff --git a/packages/feedback/command-feedback/package.json b/packages/feedback/command-feedback/package.json index 3b0414d813..77fb5b7fc7 100644 --- a/packages/feedback/command-feedback/package.json +++ b/packages/feedback/command-feedback/package.json @@ -47,22 +47,22 @@ "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:^" }, "dependencies": { "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:^" } } diff --git a/packages/feedback/message-feedback/package.json b/packages/feedback/message-feedback/package.json index 90134101c3..abfa697159 100644 --- a/packages/feedback/message-feedback/package.json +++ b/packages/feedback/message-feedback/package.json @@ -49,23 +49,23 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-command-feedback": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-command-feedback": "workspace:^" } } diff --git a/packages/fs/fs-local/package.json b/packages/fs/fs-local/package.json index 2a70ac51a7..56a9da2f6a 100644 --- a/packages/fs/fs-local/package.json +++ b/packages/fs/fs-local/package.json @@ -28,15 +28,15 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "koffi": "^3.1.0", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/fs/fs-observation-policy/package.json b/packages/fs/fs-observation-policy/package.json index 978f3d0ae7..59ad5acad9 100644 --- a/packages/fs/fs-observation-policy/package.json +++ b/packages/fs/fs-observation-policy/package.json @@ -28,11 +28,11 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/fs/fs-sandbox/package.json b/packages/fs/fs-sandbox/package.json index e1261a7f14..dc2bb684d9 100644 --- a/packages/fs/fs-sandbox/package.json +++ b/packages/fs/fs-sandbox/package.json @@ -31,14 +31,14 @@ "@deepseek-ai/dsh-fs-local": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-fs-local": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/fs/fs/package.json b/packages/fs/fs/package.json index 800220fbbb..a46cf65967 100644 --- a/packages/fs/fs/package.json +++ b/packages/fs/fs/package.json @@ -36,13 +36,13 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/fs/tool-fs-search/package.json b/packages/fs/tool-fs-search/package.json index b4bab8a8c4..20ecda599d 100644 --- a/packages/fs/tool-fs-search/package.json +++ b/packages/fs/tool-fs-search/package.json @@ -28,7 +28,7 @@ "license": "MIT", "dependencies": { "@vscode/ripgrep": "^1.18.0", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", @@ -39,7 +39,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-scope": "workspace:^" } } diff --git a/packages/fs/tool-fs/package.json b/packages/fs/tool-fs/package.json index 3486c30fd1..03f16c0632 100644 --- a/packages/fs/tool-fs/package.json +++ b/packages/fs/tool-fs/package.json @@ -28,7 +28,7 @@ "license": "MIT", "dependencies": { "diff": "^9.0.0", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-attachment": "workspace:^", @@ -40,7 +40,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -58,7 +58,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-code-runtime": "workspace:^" diff --git a/packages/fs/tool-present/package.json b/packages/fs/tool-present/package.json index 18e5bb3d4a..659cea88a0 100644 --- a/packages/fs/tool-present/package.json +++ b/packages/fs/tool-present/package.json @@ -32,10 +32,10 @@ "lib/types/**/*.d.ts" ], "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -44,7 +44,7 @@ "@deepseek-ai/dsh-tools": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/fs/tool-str-replace-editor/package.json b/packages/fs/tool-str-replace-editor/package.json index 92b0be3892..e1e35a2a86 100644 --- a/packages/fs/tool-str-replace-editor/package.json +++ b/packages/fs/tool-str-replace-editor/package.json @@ -30,10 +30,10 @@ "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -48,7 +48,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/goal/command-goal/package.json b/packages/goal/command-goal/package.json index 1b0dfe53d3..96d36bc0ad 100644 --- a/packages/goal/command-goal/package.json +++ b/packages/goal/command-goal/package.json @@ -30,10 +30,10 @@ "@deepseek-ai/dsh-commands": "workspace:^", "@deepseek-ai/dsh-goal": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -41,7 +41,7 @@ "@deepseek-ai/dsh-goal": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/goal/goal-round-driver/package.json b/packages/goal/goal-round-driver/package.json index 6a43469b1d..9f3b170dee 100644 --- a/packages/goal/goal-round-driver/package.json +++ b/packages/goal/goal-round-driver/package.json @@ -37,7 +37,7 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -49,7 +49,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/goal/goal/package.json b/packages/goal/goal/package.json index e4664dffef..07496de265 100644 --- a/packages/goal/goal/package.json +++ b/packages/goal/goal/package.json @@ -61,10 +61,10 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { @@ -83,6 +83,6 @@ "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/goal/tool-goal/package.json b/packages/goal/tool-goal/package.json index 69f3285384..51bd83f6fd 100644 --- a/packages/goal/tool-goal/package.json +++ b/packages/goal/tool-goal/package.json @@ -33,14 +33,14 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", @@ -49,7 +49,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/guard/repeat-tool-reminder/package.json b/packages/guard/repeat-tool-reminder/package.json index e8fcc60605..64a40e0cc3 100644 --- a/packages/guard/repeat-tool-reminder/package.json +++ b/packages/guard/repeat-tool-reminder/package.json @@ -27,12 +27,12 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -41,7 +41,7 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/guard/timeout-policy/package.json b/packages/guard/timeout-policy/package.json index b7f22c3002..96481352d5 100644 --- a/packages/guard/timeout-policy/package.json +++ b/packages/guard/timeout-policy/package.json @@ -30,12 +30,12 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/hooks/hook-protocol/package.json b/packages/hooks/hook-protocol/package.json index a2400f2893..ada42c6619 100644 --- a/packages/hooks/hook-protocol/package.json +++ b/packages/hooks/hook-protocol/package.json @@ -35,12 +35,12 @@ "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/hooks/hooks-claude-code/package.json b/packages/hooks/hooks-claude-code/package.json index 1db3521903..68057a5d2e 100644 --- a/packages/hooks/hooks-claude-code/package.json +++ b/packages/hooks/hooks-claude-code/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -36,7 +36,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "devDependencies": { @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/hooks/hooks-codex/package.json b/packages/hooks/hooks-codex/package.json index 3ed5db1650..39ec414cc7 100644 --- a/packages/hooks/hooks-codex/package.json +++ b/packages/hooks/hooks-codex/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -35,7 +35,7 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "devDependencies": { @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/host/directory-picker-auto/package.json b/packages/host/directory-picker-auto/package.json index fc35b3d067..8be34c1710 100644 --- a/packages/host/directory-picker-auto/package.json +++ b/packages/host/directory-picker-auto/package.json @@ -27,8 +27,8 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-ui-directory-picker-browse": "workspace:^", "@deepseek-ai/dsh-client-ui-directory-picker-native": "workspace:^", "@deepseek-ai/dsh-host-directory-picker-browse": "workspace:^", @@ -36,9 +36,9 @@ "@deepseek-ai/dsh-host-webserver": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-ui-directory-picker-browse": "workspace:^", "@deepseek-ai/dsh-client-ui-directory-picker-native": "workspace:^", "@deepseek-ai/dsh-host-directory-picker": "workspace:^", diff --git a/packages/host/directory-picker-browse/package.json b/packages/host/directory-picker-browse/package.json index 850081c48a..6f70fe7462 100644 --- a/packages/host/directory-picker-browse/package.json +++ b/packages/host/directory-picker-browse/package.json @@ -28,12 +28,12 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-host-directory-picker": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/host/directory-picker-native/package.json b/packages/host/directory-picker-native/package.json index 36d4c902da..66c1532a9b 100644 --- a/packages/host/directory-picker-native/package.json +++ b/packages/host/directory-picker-native/package.json @@ -37,10 +37,10 @@ "koffi": "^3.1.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "tsx": "^4.19.2" } } diff --git a/packages/host/directory-picker/package.json b/packages/host/directory-picker/package.json index a930512ac0..78511ee411 100644 --- a/packages/host/directory-picker/package.json +++ b/packages/host/directory-picker/package.json @@ -32,9 +32,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/host/frontend-static/package.json b/packages/host/frontend-static/package.json index 3caae0efac..5b4a21dc44 100644 --- a/packages/host/frontend-static/package.json +++ b/packages/host/frontend-static/package.json @@ -29,16 +29,16 @@ "peerDependencies": { "@deepseek-ai/dsh-host-webserver": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-client-connection": "workspace:^", "@deepseek-ai/dsh-credentials-local": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/host/open-in-app/package.json b/packages/host/open-in-app/package.json index 9c070ef429..0219a7cb65 100644 --- a/packages/host/open-in-app/package.json +++ b/packages/host/open-in-app/package.json @@ -39,14 +39,14 @@ "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-native-command": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-host-webserver": "workspace:^" } } diff --git a/packages/host/plugin-inventory/package.json b/packages/host/plugin-inventory/package.json index 616032b4ee..fb8aeed845 100644 --- a/packages/host/plugin-inventory/package.json +++ b/packages/host/plugin-inventory/package.json @@ -47,11 +47,11 @@ "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent-presets": { @@ -59,10 +59,10 @@ } }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/host/webserver/package.json b/packages/host/webserver/package.json index 8fbede6744..ce0ea4e673 100644 --- a/packages/host/webserver/package.json +++ b/packages/host/webserver/package.json @@ -27,15 +27,15 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "compression": "^1.8.1", "negotiator": "^1.0.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@types/compression": "^1.8.1", "@types/negotiator": "^0.6.5" } diff --git a/packages/identity/anonymous-user-id/package.json b/packages/identity/anonymous-user-id/package.json index 53d9671751..33dcaef9ee 100644 --- a/packages/identity/anonymous-user-id/package.json +++ b/packages/identity/anonymous-user-id/package.json @@ -29,11 +29,11 @@ "peerDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/interaction/commands/package.json b/packages/interaction/commands/package.json index 0be908a553..98f9010fe8 100644 --- a/packages/interaction/commands/package.json +++ b/packages/interaction/commands/package.json @@ -61,7 +61,7 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-util-crypto": "workspace:^", @@ -76,6 +76,6 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/interaction/permission-presets/package.json b/packages/interaction/permission-presets/package.json index ebba3f0f18..ad1646d1fb 100644 --- a/packages/interaction/permission-presets/package.json +++ b/packages/interaction/permission-presets/package.json @@ -50,10 +50,10 @@ "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { @@ -66,6 +66,6 @@ "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/interaction/tool-ask-user/package.json b/packages/interaction/tool-ask-user/package.json index 03efa1b837..bd82bab404 100644 --- a/packages/interaction/tool-ask-user/package.json +++ b/packages/interaction/tool-ask-user/package.json @@ -30,7 +30,7 @@ "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-questions": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -38,6 +38,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-questions": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/interaction/user-approval/package.json b/packages/interaction/user-approval/package.json index 6e8354834c..64a7a2be77 100644 --- a/packages/interaction/user-approval/package.json +++ b/packages/interaction/user-approval/package.json @@ -44,10 +44,10 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -57,6 +57,6 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/interaction/user-questions/package.json b/packages/interaction/user-questions/package.json index cbe8a2854b..b2a1bf8aea 100644 --- a/packages/interaction/user-questions/package.json +++ b/packages/interaction/user-questions/package.json @@ -35,12 +35,12 @@ "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/jobs/jobs-local/package.json b/packages/jobs/jobs-local/package.json index 110ba43f3e..e4d519dad8 100644 --- a/packages/jobs/jobs-local/package.json +++ b/packages/jobs/jobs-local/package.json @@ -31,14 +31,14 @@ "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", @@ -46,6 +46,6 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/jobs/jobs/package.json b/packages/jobs/jobs/package.json index ff310752ce..8da1246315 100644 --- a/packages/jobs/jobs/package.json +++ b/packages/jobs/jobs/package.json @@ -41,13 +41,13 @@ "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/jobs/tool-jobs/package.json b/packages/jobs/tool-jobs/package.json index 8c6adfb1c3..116531ef3b 100644 --- a/packages/jobs/tool-jobs/package.json +++ b/packages/jobs/tool-jobs/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -36,7 +36,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -47,6 +47,6 @@ "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-jobs-local": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/llm/deepseek-llm-api-extensions/package.json b/packages/llm/deepseek-llm-api-extensions/package.json index 88bb421385..362afd2c35 100644 --- a/packages/llm/deepseek-llm-api-extensions/package.json +++ b/packages/llm/deepseek-llm-api-extensions/package.json @@ -32,9 +32,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/llm/llm-deepseek/package.json b/packages/llm/llm-deepseek/package.json index 9db0a60fdc..d25c0f9429 100644 --- a/packages/llm/llm-deepseek/package.json +++ b/packages/llm/llm-deepseek/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", "@deepseek-ai/dsh-atomic-write": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", @@ -43,11 +43,11 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "eventsource-parser": "^3.1.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", "@deepseek-ai/dsh-atomic-write": "workspace:^", diff --git a/packages/llm/llm-pi-ai/package.json b/packages/llm/llm-pi-ai/package.json index 6a10d5a6bb..291275e245 100644 --- a/packages/llm/llm-pi-ai/package.json +++ b/packages/llm/llm-pi-ai/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-authorization": "workspace:^", "@deepseek-ai/dsh-credentials": "workspace:^", @@ -40,11 +40,11 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@earendil-works/pi-ai": "^0.85.1" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-authorization": "workspace:^", "@deepseek-ai/dsh-credentials": "workspace:^", diff --git a/packages/llm/llm-retry/package.json b/packages/llm/llm-retry/package.json index f226562e4d..7e83c7f6a7 100644 --- a/packages/llm/llm-retry/package.json +++ b/packages/llm/llm-retry/package.json @@ -42,17 +42,17 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -66,7 +66,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/llm/llm/package.json b/packages/llm/llm/package.json index 570ac9af86..486e47ea0c 100644 --- a/packages/llm/llm/package.json +++ b/packages/llm/llm/package.json @@ -61,11 +61,11 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-util-crypto": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", @@ -75,6 +75,6 @@ "devDependencies": { "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/llm/plugin-package-inventory-deepseek/package.json b/packages/llm/plugin-package-inventory-deepseek/package.json index f04bbc0539..469607d05e 100644 --- a/packages/llm/plugin-package-inventory-deepseek/package.json +++ b/packages/llm/plugin-package-inventory-deepseek/package.json @@ -33,11 +33,11 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", @@ -49,9 +49,9 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", diff --git a/packages/llm/token-meter/package.json b/packages/llm/token-meter/package.json index 44223f3a96..e97a24ffec 100644 --- a/packages/llm/token-meter/package.json +++ b/packages/llm/token-meter/package.json @@ -32,7 +32,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-llm-retry": "workspace:^", @@ -41,11 +41,11 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-llm-retry": "workspace:^", diff --git a/packages/lsp/lsp-stdio/package.json b/packages/lsp/lsp-stdio/package.json index 6428068eb0..d0cacbce8e 100644 --- a/packages/lsp/lsp-stdio/package.json +++ b/packages/lsp/lsp-stdio/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -37,10 +37,10 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-fs-local": "workspace:^", diff --git a/packages/lsp/lsp/package.json b/packages/lsp/lsp/package.json index 4d8df70f5a..dad6904fde 100644 --- a/packages/lsp/lsp/package.json +++ b/packages/lsp/lsp/package.json @@ -29,11 +29,11 @@ "peerDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/lsp/tool-lsp/package.json b/packages/lsp/tool-lsp/package.json index f4df13c8a1..a38ba7f575 100644 --- a/packages/lsp/tool-lsp/package.json +++ b/packages/lsp/tool-lsp/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-lsp": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", @@ -36,10 +36,10 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-fs-local": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/mcp/mcp-client/package.json b/packages/mcp/mcp-client/package.json index d5573b3f94..8ec0b808e9 100644 --- a/packages/mcp/mcp-client/package.json +++ b/packages/mcp/mcp-client/package.json @@ -33,11 +33,11 @@ "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@modelcontextprotocol/sdk": "^1.12.0", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-tools": "workspace:^", "@modelcontextprotocol/server-everything": "^2026.7.4", "@modelcontextprotocol/server-filesystem": "^2026.7.4", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" } } diff --git a/packages/plan/plan-mode/package.json b/packages/plan/plan-mode/package.json index 7d5898dacd..77c8258cfb 100644 --- a/packages/plan/plan-mode/package.json +++ b/packages/plan/plan-mode/package.json @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-questions": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-commands": { @@ -72,6 +72,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-questions": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/preset/agent-presets/package.json b/packages/preset/agent-presets/package.json index 61a2ad9f75..198e9cb3ad 100644 --- a/packages/preset/agent-presets/package.json +++ b/packages/preset/agent-presets/package.json @@ -54,8 +54,8 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-atomic-write": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", @@ -67,17 +67,17 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "js-yaml": "^4.1.0", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-group": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-group": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-atomic-write": "workspace:^", @@ -92,6 +92,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/preset/persona/package.json b/packages/preset/persona/package.json index ec116bd3dd..abb1f1d95f 100644 --- a/packages/preset/persona/package.json +++ b/packages/preset/persona/package.json @@ -28,14 +28,14 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/runtime-diagnostics/invariants/package.json b/packages/runtime-diagnostics/invariants/package.json index 2d10a8814f..2a58624dd3 100644 --- a/packages/runtime-diagnostics/invariants/package.json +++ b/packages/runtime-diagnostics/invariants/package.json @@ -27,12 +27,12 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/sandbox/sandbox-local/package.json b/packages/sandbox/sandbox-local/package.json index 76bf039d88..1e81d1c41e 100644 --- a/packages/sandbox/sandbox-local/package.json +++ b/packages/sandbox/sandbox-local/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" @@ -36,10 +36,10 @@ "@deepseek-ai/dsh-sandbox-windows-acl": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", "@deepseek-ai/node-addon-system": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" diff --git a/packages/sandbox/sandbox-policy/package.json b/packages/sandbox/sandbox-policy/package.json index 686d4266ba..88956c44aa 100644 --- a/packages/sandbox/sandbox-policy/package.json +++ b/packages/sandbox/sandbox-policy/package.json @@ -37,11 +37,11 @@ "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/sandbox/sandbox-windows-acl/package.json b/packages/sandbox/sandbox-windows-acl/package.json index b5f376607c..237fdf6c5e 100644 --- a/packages/sandbox/sandbox-windows-acl/package.json +++ b/packages/sandbox/sandbox-windows-acl/package.json @@ -33,7 +33,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-win32-process": "workspace:^", @@ -42,6 +42,6 @@ "devDependencies": { "@deepseek-ai/dsh-pwsh-local": "workspace:^", "@deepseek-ai/dsh-sandbox-local": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/sandbox/sandbox/package.json b/packages/sandbox/sandbox/package.json index 05e539d567..db96b4b4dd 100644 --- a/packages/sandbox/sandbox/package.json +++ b/packages/sandbox/sandbox/package.json @@ -27,12 +27,12 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" }, diff --git a/packages/schedule/schedule/package.json b/packages/schedule/schedule/package.json index eb43fbbed4..9bb951f2c2 100644 --- a/packages/schedule/schedule/package.json +++ b/packages/schedule/schedule/package.json @@ -45,13 +45,13 @@ "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -64,6 +64,6 @@ "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/sdk/client/package.json b/packages/sdk/client/package.json index 272fbab849..b2f0a53b0a 100644 --- a/packages/sdk/client/package.json +++ b/packages/sdk/client/package.json @@ -32,12 +32,12 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sdk-protocol": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sdk-protocol": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/sdk/protocol/package.json b/packages/sdk/protocol/package.json index e65cf001d0..5d886f8917 100644 --- a/packages/sdk/protocol/package.json +++ b/packages/sdk/protocol/package.json @@ -29,12 +29,12 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/sdk/server/package.json b/packages/sdk/server/package.json index 56d1e7cad5..f2a67d92eb 100644 --- a/packages/sdk/server/package.json +++ b/packages/sdk/server/package.json @@ -28,10 +28,10 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -42,8 +42,8 @@ "@deepseek-ai/dsh-subagent": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/session-query/session-log-export/package.json b/packages/session-query/session-log-export/package.json index f63702c964..df74a200f6 100644 --- a/packages/session-query/session-log-export/package.json +++ b/packages/session-query/session-log-export/package.json @@ -37,18 +37,18 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-session-format": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "fflate": "^0.8.2", "@deepseek-ai/dsh-brand": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", "@deepseek-ai/dsh-client-connection": "workspace:^", diff --git a/packages/session-query/session-query-sqlite/package.json b/packages/session-query/session-query-sqlite/package.json index ed79f3840e..6c002b89b1 100644 --- a/packages/session-query/session-query-sqlite/package.json +++ b/packages/session-query/session-query-sqlite/package.json @@ -30,7 +30,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-query": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -38,15 +38,15 @@ } }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^", "@deepseek-ai/dsh-session-query": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/session-query/session-query/package.json b/packages/session-query/session-query/package.json index e383b1b413..209d8d3ae6 100644 --- a/packages/session-query/session-query/package.json +++ b/packages/session-query/session-query/package.json @@ -35,7 +35,7 @@ "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-session-projection-cache": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -57,6 +57,6 @@ "@deepseek-ai/dsh-session-persistence": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-session-projection-cache": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session-query/tool-session-query/package.json b/packages/session-query/tool-session-query/package.json index 1ad9a77b5c..459a310a4f 100644 --- a/packages/session-query/tool-session-query/package.json +++ b/packages/session-query/tool-session-query/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -39,10 +39,10 @@ }, "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/session/session-checkpoint-policy/package.json b/packages/session/session-checkpoint-policy/package.json index a817b06e4e..ea8f06bd48 100644 --- a/packages/session/session-checkpoint-policy/package.json +++ b/packages/session/session-checkpoint-policy/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -35,8 +35,8 @@ "@deepseek-ai/dsh-tools": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/session/session-format-catalog/package.json b/packages/session/session-format-catalog/package.json index f3ea35a6c8..35c64ad7c9 100644 --- a/packages/session/session-format-catalog/package.json +++ b/packages/session/session-format-catalog/package.json @@ -33,11 +33,11 @@ "@deepseek-ai/dsh-session-format-v2-to-v3": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^" } } diff --git a/packages/session/session-format-v0-to-v1/package.json b/packages/session/session-format-v0-to-v1/package.json index ca5d77d640..237b0353ca 100644 --- a/packages/session/session-format-v0-to-v1/package.json +++ b/packages/session/session-format-v0-to-v1/package.json @@ -43,10 +43,10 @@ "@deepseek-ai/dsh-util-values": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^" } } diff --git a/packages/session/session-format-v1-to-v2/package.json b/packages/session/session-format-v1-to-v2/package.json index a44eef9856..7eff82299f 100644 --- a/packages/session/session-format-v1-to-v2/package.json +++ b/packages/session/session-format-v1-to-v2/package.json @@ -45,10 +45,10 @@ "@deepseek-ai/dsh-util-values": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^" } } diff --git a/packages/session/session-format-v2-to-v3/package.json b/packages/session/session-format-v2-to-v3/package.json index 637cd4f0fe..e893b3afa9 100644 --- a/packages/session/session-format-v2-to-v3/package.json +++ b/packages/session/session-format-v2-to-v3/package.json @@ -44,9 +44,9 @@ "@deepseek-ai/dsh-session-format-v1-to-v2": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-format/package.json b/packages/session/session-format/package.json index 4eaefdbea2..d76b1d576e 100644 --- a/packages/session/session-format/package.json +++ b/packages/session/session-format/package.json @@ -30,9 +30,9 @@ "@deepseek-ai/dsh-util-values": "workspace:^" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-log-deepseek/package.json b/packages/session/session-log-deepseek/package.json index 4cbdc9e4f1..94050124cc 100644 --- a/packages/session/session-log-deepseek/package.json +++ b/packages/session/session-log-deepseek/package.json @@ -39,18 +39,18 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-command-feedback": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", diff --git a/packages/session/session-persistence-jsonl/package.json b/packages/session/session-persistence-jsonl/package.json index 2756ed8ebd..80df4e2342 100644 --- a/packages/session/session-persistence-jsonl/package.json +++ b/packages/session/session-persistence-jsonl/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-llm": "workspace:^", @@ -39,12 +39,12 @@ "@deepseek-ai/dsh-session-format-v2-to-v3": "workspace:^", "@deepseek-ai/node-addon-system": "workspace:^", "koffi": "^3.1.0", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-format-v0-to-v1": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-persistence/package.json b/packages/session/session-persistence/package.json index 1562f0f190..7140efbce9 100644 --- a/packages/session/session-persistence/package.json +++ b/packages/session/session-persistence/package.json @@ -27,13 +27,13 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", diff --git a/packages/session/session-projection-cache/package.json b/packages/session/session-projection-cache/package.json index bd1672e91a..8bad923651 100644 --- a/packages/session/session-projection-cache/package.json +++ b/packages/session/session-projection-cache/package.json @@ -28,17 +28,17 @@ "license": "MIT", "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-storage-domain": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-storage": "workspace:^", diff --git a/packages/session/session-projection/package.json b/packages/session/session-projection/package.json index 6f426ab889..358aa65c23 100644 --- a/packages/session/session-projection/package.json +++ b/packages/session/session-projection/package.json @@ -36,10 +36,10 @@ }, "peerDependencies": { "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-stats/package.json b/packages/session/session-stats/package.json index c62eb3b449..1f0561d70c 100644 --- a/packages/session/session-stats/package.json +++ b/packages/session/session-stats/package.json @@ -39,17 +39,17 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-telemetry-otel/package.json b/packages/session/session-telemetry-otel/package.json index 2da6d75acb..b3f1361173 100644 --- a/packages/session/session-telemetry-otel/package.json +++ b/packages/session/session-telemetry-otel/package.json @@ -33,7 +33,7 @@ "@opentelemetry/otlp-exporter-base": "^0.220.0", "@opentelemetry/resources": "^2.9.0", "@opentelemetry/sdk-logs": "^0.220.0", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-command-feedback": "workspace:^", @@ -42,11 +42,11 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-telemetry": "workspace:^", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-logger-console": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-logger-console": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-app-boot": "workspace:^", "@deepseek-ai/dsh-bash-local": "workspace:^", "@deepseek-ai/dsh-command-feedback": "workspace:^", @@ -59,7 +59,7 @@ "@deepseek-ai/dsh-session-telemetry": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", "@deepseek-ai/dsh-anonymous-user-id": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" } } diff --git a/packages/session/session-telemetry/package.json b/packages/session/session-telemetry/package.json index 1278879299..de05df1d90 100644 --- a/packages/session/session-telemetry/package.json +++ b/packages/session/session-telemetry/package.json @@ -29,11 +29,11 @@ "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/session/session-title-all-prompts-llm/package.json b/packages/session/session-title-all-prompts-llm/package.json index 4ceac7914e..90417298b3 100644 --- a/packages/session/session-title-all-prompts-llm/package.json +++ b/packages/session/session-title-all-prompts-llm/package.json @@ -27,17 +27,17 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", "@deepseek-ai/dsh-session-title-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", "@deepseek-ai/dsh-session-title-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^" } diff --git a/packages/session/session-title-first-prompt-llm/package.json b/packages/session/session-title-first-prompt-llm/package.json index e88246e9e6..77e29c11af 100644 --- a/packages/session/session-title-first-prompt-llm/package.json +++ b/packages/session/session-title-first-prompt-llm/package.json @@ -27,20 +27,20 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", "@deepseek-ai/dsh-session-title-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-llm-deepseek": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", "@deepseek-ai/dsh-session-title-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^" } diff --git a/packages/session/session-title-llm/package.json b/packages/session/session-title-llm/package.json index b7eef1d212..7dc081293d 100644 --- a/packages/session/session-title-llm/package.json +++ b/packages/session/session-title-llm/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", @@ -35,10 +35,10 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-title": "workspace:^", diff --git a/packages/session/session-title/package.json b/packages/session/session-title/package.json index a7e9894f61..2cc7a6a604 100644 --- a/packages/session/session-title/package.json +++ b/packages/session/session-title/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", @@ -51,11 +51,11 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", diff --git a/packages/session/session-turn-outline/package.json b/packages/session/session-turn-outline/package.json index 14153bed1f..1ea6e8cc81 100644 --- a/packages/session/session-turn-outline/package.json +++ b/packages/session/session-turn-outline/package.json @@ -36,7 +36,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^" @@ -45,9 +45,9 @@ "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^" diff --git a/packages/settings/settings-file/package.json b/packages/settings/settings-file/package.json index 6ab3a5b2b0..663c9682db 100644 --- a/packages/settings/settings-file/package.json +++ b/packages/settings/settings-file/package.json @@ -27,19 +27,19 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-atomic-write": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^" }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "chokidar": "^4.0.3", "yaml": "^2.9.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-atomic-write": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-settings": "workspace:^" diff --git a/packages/settings/settings/package.json b/packages/settings/settings/package.json index 65a086cf07..9151e92d0b 100644 --- a/packages/settings/settings/package.json +++ b/packages/settings/settings/package.json @@ -37,18 +37,18 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^" diff --git a/packages/shell/bash-local/package.json b/packages/shell/bash-local/package.json index b5ce1e5135..87ba3b08e0 100644 --- a/packages/shell/bash-local/package.json +++ b/packages/shell/bash-local/package.json @@ -30,18 +30,18 @@ "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" } } diff --git a/packages/shell/bash-sandbox/package.json b/packages/shell/bash-sandbox/package.json index bfe649350b..7b0c17a2e4 100644 --- a/packages/shell/bash-sandbox/package.json +++ b/packages/shell/bash-sandbox/package.json @@ -31,7 +31,7 @@ "@deepseek-ai/dsh-bash-local": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-shell": "workspace:^", @@ -40,7 +40,7 @@ "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-local": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/node-addon-system": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^" } diff --git a/packages/shell/pwsh-local/package.json b/packages/shell/pwsh-local/package.json index 6925fc8509..7254df4d80 100644 --- a/packages/shell/pwsh-local/package.json +++ b/packages/shell/pwsh-local/package.json @@ -30,18 +30,18 @@ "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" } } diff --git a/packages/shell/pwsh-sandbox/package.json b/packages/shell/pwsh-sandbox/package.json index ad46833902..be6f6fe406 100644 --- a/packages/shell/pwsh-sandbox/package.json +++ b/packages/shell/pwsh-sandbox/package.json @@ -31,7 +31,7 @@ "@deepseek-ai/dsh-pwsh-local": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", "@deepseek-ai/dsh-sandbox-policy": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-shell": "workspace:^", @@ -41,6 +41,6 @@ "@deepseek-ai/dsh-sandbox-policy": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/shell/shell-env/package.json b/packages/shell/shell-env/package.json index ddc0df2fd2..8956952748 100644 --- a/packages/shell/shell-env/package.json +++ b/packages/shell/shell-env/package.json @@ -30,10 +30,10 @@ "@deepseek-ai/dsh-shell": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -41,6 +41,6 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/shell/shell/package.json b/packages/shell/shell/package.json index 57a8573d6b..8821c3aeb8 100644 --- a/packages/shell/shell/package.json +++ b/packages/shell/shell/package.json @@ -29,13 +29,13 @@ "peerDependencies": { "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" }, "devDependencies": { "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-sandbox": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" } } diff --git a/packages/shell/tool-bash-persistent/package.json b/packages/shell/tool-bash-persistent/package.json index 8551bd66d5..3e0a7a7a8c 100644 --- a/packages/shell/tool-bash-persistent/package.json +++ b/packages/shell/tool-bash-persistent/package.json @@ -30,14 +30,14 @@ "@deepseek-ai/dsh-terminal": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -50,7 +50,7 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/shell/tool-bash/package.json b/packages/shell/tool-bash/package.json index c6d4a937b1..d6308c9be3 100644 --- a/packages/shell/tool-bash/package.json +++ b/packages/shell/tool-bash/package.json @@ -37,10 +37,10 @@ "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -61,7 +61,7 @@ "@deepseek-ai/dsh-tool-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-approval": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/shell/tool-pwsh-persistent/package.json b/packages/shell/tool-pwsh-persistent/package.json index ae0d009f52..6b536ee67a 100644 --- a/packages/shell/tool-pwsh-persistent/package.json +++ b/packages/shell/tool-pwsh-persistent/package.json @@ -30,14 +30,14 @@ "@deepseek-ai/dsh-terminal": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -52,6 +52,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/shell/tool-pwsh/package.json b/packages/shell/tool-pwsh/package.json index 30642f2ef5..455635d24d 100644 --- a/packages/shell/tool-pwsh/package.json +++ b/packages/shell/tool-pwsh/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -40,10 +40,10 @@ "@deepseek-ai/dsh-user-approval": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", diff --git a/packages/skill/skill-badge/package.json b/packages/skill/skill-badge/package.json index dc0d6728e2..4965ecb35d 100644 --- a/packages/skill/skill-badge/package.json +++ b/packages/skill/skill-badge/package.json @@ -28,10 +28,10 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-skill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-skill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/skill/skill-filesystem/package.json b/packages/skill/skill-filesystem/package.json index afdb646aa6..12fc7ec3b2 100644 --- a/packages/skill/skill-filesystem/package.json +++ b/packages/skill/skill-filesystem/package.json @@ -30,17 +30,17 @@ "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-skill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "chokidar": "^5.0.0", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "yaml": "^2.4.2" }, "devDependencies": { "@deepseek-ai/dsh-fs": "workspace:^", "@deepseek-ai/dsh-home-paths": "workspace:^", "@deepseek-ai/dsh-skill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/skill/skill/package.json b/packages/skill/skill/package.json index 01be87e133..d55f3a1897 100644 --- a/packages/skill/skill/package.json +++ b/packages/skill/skill/package.json @@ -27,16 +27,16 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^" }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-scope": "workspace:^" } diff --git a/packages/skill/tool-skill/package.json b/packages/skill/tool-skill/package.json index a12fcde6eb..b79118fbd9 100644 --- a/packages/skill/tool-skill/package.json +++ b/packages/skill/tool-skill/package.json @@ -31,10 +31,10 @@ "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-skill": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -45,6 +45,6 @@ "@deepseek-ai/dsh-skill": "workspace:^", "@deepseek-ai/dsh-skill-filesystem": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/spill/spill-local/package.json b/packages/spill/spill-local/package.json index 510acaf6b1..36bfb9cf3a 100644 --- a/packages/spill/spill-local/package.json +++ b/packages/spill/spill-local/package.json @@ -28,18 +28,18 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-spill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-spill": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/spill/spill-policy/package.json b/packages/spill/spill-policy/package.json index e6e1dee090..88e42b054f 100644 --- a/packages/spill/spill-policy/package.json +++ b/packages/spill/spill-policy/package.json @@ -37,10 +37,10 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-spill": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -50,6 +50,6 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-spill": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/spill/spill/package.json b/packages/spill/spill/package.json index b4a3c32097..fe381277f8 100644 --- a/packages/spill/spill/package.json +++ b/packages/spill/spill/package.json @@ -30,12 +30,12 @@ "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/storage/storage-domain/package.json b/packages/storage/storage-domain/package.json index 8fe6912da9..3b322ea6dd 100644 --- a/packages/storage/storage-domain/package.json +++ b/packages/storage/storage-domain/package.json @@ -34,15 +34,15 @@ "peerDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/storage/storage-json/package.json b/packages/storage/storage-json/package.json index 9d21ecfec2..bf363340b4 100644 --- a/packages/storage/storage-json/package.json +++ b/packages/storage/storage-json/package.json @@ -28,13 +28,13 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/storage/storage-sqlite/package.json b/packages/storage/storage-sqlite/package.json index d8dfc56910..d04fad5ef1 100644 --- a/packages/storage/storage-sqlite/package.json +++ b/packages/storage/storage-sqlite/package.json @@ -28,13 +28,13 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-storage": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/storage/storage/package.json b/packages/storage/storage/package.json index a418159f5c..30d2555ac2 100644 --- a/packages/storage/storage/package.json +++ b/packages/storage/storage/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/subagent/subagent-acp/package.json b/packages/subagent/subagent-acp/package.json index 45e0f6c99c..db33332e03 100644 --- a/packages/subagent/subagent-acp/package.json +++ b/packages/subagent/subagent-acp/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -38,11 +38,11 @@ "dependencies": { "@agentclientprotocol/sdk": "1.4.0", "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/subagent/subagent-claude-code/package.json b/packages/subagent/subagent-claude-code/package.json index 19d90f5a92..569dcb1e47 100644 --- a/packages/subagent/subagent-claude-code/package.json +++ b/packages/subagent/subagent-claude-code/package.json @@ -33,7 +33,7 @@ } }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", @@ -44,12 +44,12 @@ "@anthropic-ai/claude-agent-sdk": "0.3.263", "@anthropic-ai/sdk": "0.93.0", "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/subagent/subagent-codex/package.json b/packages/subagent/subagent-codex/package.json index c434b0b52d..847743c103 100644 --- a/packages/subagent/subagent-codex/package.json +++ b/packages/subagent/subagent-codex/package.json @@ -33,7 +33,7 @@ } }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", @@ -43,12 +43,12 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-sdk-protocol": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@openai/codex": "0.153.4" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/subagent/subagent-dsh-sdk/package.json b/packages/subagent/subagent-dsh-sdk/package.json index 1a378f53f2..2129650bf9 100644 --- a/packages/subagent/subagent-dsh-sdk/package.json +++ b/packages/subagent/subagent-dsh-sdk/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-sdk-client": "workspace:^", @@ -37,11 +37,11 @@ }, "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-instructions": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", diff --git a/packages/subagent/subagent-fork-in-process/package.json b/packages/subagent/subagent-fork-in-process/package.json index 22d147631e..507e1cd6be 100644 --- a/packages/subagent/subagent-fork-in-process/package.json +++ b/packages/subagent/subagent-fork-in-process/package.json @@ -31,13 +31,13 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-subagent-in-process-driver": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -47,7 +47,7 @@ "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-subagent-in-process-driver": "workspace:^", "@deepseek-ai/dsh-subagent-spawn-in-process": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/subagent/subagent-in-process-driver/package.json b/packages/subagent/subagent-in-process-driver/package.json index 2c3ede08bd..7c50e623de 100644 --- a/packages/subagent/subagent-in-process-driver/package.json +++ b/packages/subagent/subagent-in-process-driver/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -36,9 +36,9 @@ "@deepseek-ai/dsh-tools": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/subagent/subagent-spawn-in-process/package.json b/packages/subagent/subagent-spawn-in-process/package.json index a7c5e2f2a6..489d735a23 100644 --- a/packages/subagent/subagent-spawn-in-process/package.json +++ b/packages/subagent/subagent-spawn-in-process/package.json @@ -29,13 +29,13 @@ "peerDependencies": { "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-subagent-in-process-driver": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -49,7 +49,7 @@ "@deepseek-ai/dsh-subagent-in-process-driver": "workspace:^", "@deepseek-ai/dsh-tool-bash": "workspace:^", "@deepseek-ai/dsh-tool-subagent": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/subagent/subagent/package.json b/packages/subagent/subagent/package.json index ea19ef9c7b..91c412970d 100644 --- a/packages/subagent/subagent/package.json +++ b/packages/subagent/subagent/package.json @@ -59,7 +59,7 @@ "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", @@ -110,7 +110,7 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", "@deepseek-ai/dsh-attachment": "workspace:^", diff --git a/packages/subagent/tool-subagent-control/package.json b/packages/subagent/tool-subagent-control/package.json index 2272a1c6a2..938bee4928 100644 --- a/packages/subagent/tool-subagent-control/package.json +++ b/packages/subagent/tool-subagent-control/package.json @@ -32,14 +32,14 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/subagent/tool-subagent/package.json b/packages/subagent/tool-subagent/package.json index aba9a126eb..ea6d41aad7 100644 --- a/packages/subagent/tool-subagent/package.json +++ b/packages/subagent/tool-subagent/package.json @@ -48,14 +48,14 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -71,7 +71,7 @@ "@deepseek-ai/dsh-jobs-local": "workspace:^", "@deepseek-ai/dsh-tool-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/subprocess/subprocess-local/package.json b/packages/subprocess/subprocess-local/package.json index e9ee873f97..9ddd44aa8c 100644 --- a/packages/subprocess/subprocess-local/package.json +++ b/packages/subprocess/subprocess-local/package.json @@ -39,7 +39,7 @@ "peerDependencies": { "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "@deepseek-ai/dsh-win32-process": "workspace:^", @@ -50,6 +50,6 @@ "@deepseek-ai/dsh-loader-smoke": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-timeout": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/subprocess/subprocess/package.json b/packages/subprocess/subprocess/package.json index f57e763bd7..86668ed669 100644 --- a/packages/subprocess/subprocess/package.json +++ b/packages/subprocess/subprocess/package.json @@ -27,11 +27,11 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^", "@deepseek-ai/dsh-launch-environment": "workspace:^" } diff --git a/packages/subprocess/win32-process/package.json b/packages/subprocess/win32-process/package.json index 0338895db5..baaa455ffd 100644 --- a/packages/subprocess/win32-process/package.json +++ b/packages/subprocess/win32-process/package.json @@ -27,12 +27,12 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "koffi": "^3.1.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/terminal/terminal-bash/package.json b/packages/terminal/terminal-bash/package.json index 619cd97da3..7dc1f47d67 100644 --- a/packages/terminal/terminal-bash/package.json +++ b/packages/terminal/terminal-bash/package.json @@ -33,12 +33,12 @@ "@deepseek-ai/dsh-sandbox-policy": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" }, "dependencies": { "@deepseek-ai/dsh-pwsh-local": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@xterm/headless": "^6.0.0" }, "devDependencies": { @@ -50,6 +50,6 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subprocess": "workspace:^", "@deepseek-ai/dsh-subprocess-local": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/terminal/terminal/package.json b/packages/terminal/terminal/package.json index 6ae9f278ee..cdd4676fc8 100644 --- a/packages/terminal/terminal/package.json +++ b/packages/terminal/terminal/package.json @@ -29,13 +29,13 @@ "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/terminal/tool-terminal/package.json b/packages/terminal/tool-terminal/package.json index b9467f6204..62f9215d9e 100644 --- a/packages/terminal/tool-terminal/package.json +++ b/packages/terminal/tool-terminal/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "peerDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -37,11 +37,11 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -57,7 +57,7 @@ "@deepseek-ai/dsh-jobs-local": "workspace:^", "@deepseek-ai/dsh-tool-jobs": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/test-support/agent-loop-testkit/package.json b/packages/test-support/agent-loop-testkit/package.json index e476648bfa..dd756655cb 100644 --- a/packages/test-support/agent-loop-testkit/package.json +++ b/packages/test-support/agent-loop-testkit/package.json @@ -34,7 +34,7 @@ "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": {}, "devDependencies": { @@ -45,6 +45,6 @@ "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/test-support/client-runtime/package.json b/packages/test-support/client-runtime/package.json index 0d6844ea6a..2b1b3d0bf2 100644 --- a/packages/test-support/client-runtime/package.json +++ b/packages/test-support/client-runtime/package.json @@ -42,7 +42,7 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-subagent": "workspace:^", "@deepseek-ai/dsh-typert-protocol": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -64,7 +64,7 @@ "@deepseek-ai/dsh-typert-protocol": "workspace:^", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/test-support/llm-mock-server/package.json b/packages/test-support/llm-mock-server/package.json index 7a238460fb..eda9c672f6 100644 --- a/packages/test-support/llm-mock-server/package.json +++ b/packages/test-support/llm-mock-server/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/test-support/llm-replay/package.json b/packages/test-support/llm-replay/package.json index d3e4e4540e..245095b254 100644 --- a/packages/test-support/llm-replay/package.json +++ b/packages/test-support/llm-replay/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", @@ -39,7 +39,7 @@ } }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-compaction": "workspace:^", "@deepseek-ai/dsh-deepseek-llm-api-extensions": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/test-support/loader-smoke/package.json b/packages/test-support/loader-smoke/package.json index 7958561a39..d0bb80d2dd 100644 --- a/packages/test-support/loader-smoke/package.json +++ b/packages/test-support/loader-smoke/package.json @@ -31,14 +31,14 @@ "tsx": "^4.22.4" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-http-proxy": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-app-boot": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", diff --git a/packages/test-support/session-snapshot/package.json b/packages/test-support/session-snapshot/package.json index f3a6468992..ba37c3588f 100644 --- a/packages/test-support/session-snapshot/package.json +++ b/packages/test-support/session-snapshot/package.json @@ -36,12 +36,12 @@ "vitest": "^4.1.8" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-http-proxy": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-compaction": "workspace:^", diff --git a/packages/todo/tool-todo/package.json b/packages/todo/tool-todo/package.json index 7eb98180dd..4d57bff520 100644 --- a/packages/todo/tool-todo/package.json +++ b/packages/todo/tool-todo/package.json @@ -37,7 +37,7 @@ ], "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "zod": "^4.4.3" }, "peerDependencies": { @@ -46,11 +46,11 @@ "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-projection": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -61,6 +61,6 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-user-questions": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/typert/generator/package.json b/packages/typert/generator/package.json index ab65157347..21cf25f8e9 100644 --- a/packages/typert/generator/package.json +++ b/packages/typert/generator/package.json @@ -36,12 +36,12 @@ "typescript": "^6.0.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-tool-cordis": "workspace:^", "@deepseek-ai/dsh-typert-registry": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "zod": "^4.4.3" } } diff --git a/packages/typert/loader/package.json b/packages/typert/loader/package.json index d0873289e6..bcbb5548f8 100644 --- a/packages/typert/loader/package.json +++ b/packages/typert/loader/package.json @@ -27,17 +27,17 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-typert-registry": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-typert-registry": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "zod": "^4.4.3" } } diff --git a/packages/typert/protocol/package.json b/packages/typert/protocol/package.json index 199936fcc5..347f804f31 100644 --- a/packages/typert/protocol/package.json +++ b/packages/typert/protocol/package.json @@ -32,9 +32,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/typert/registry/package.json b/packages/typert/registry/package.json index 307410ed20..d2b9e5c60f 100644 --- a/packages/typert/registry/package.json +++ b/packages/typert/registry/package.json @@ -51,10 +51,10 @@ "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-typert-protocol": "workspace:^" } } diff --git a/packages/util/atomic-write/package.json b/packages/util/atomic-write/package.json index 7aa769a1ba..b805131b48 100644 --- a/packages/util/atomic-write/package.json +++ b/packages/util/atomic-write/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/brand/package.json b/packages/util/brand/package.json index b108caf9cc..e389cf15eb 100644 --- a/packages/util/brand/package.json +++ b/packages/util/brand/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/chunked-list/package.json b/packages/util/chunked-list/package.json index e93ccec925..86505ac3bc 100644 --- a/packages/util/chunked-list/package.json +++ b/packages/util/chunked-list/package.json @@ -27,10 +27,10 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "zod": "^4.4.3" diff --git a/packages/util/crypto/package.json b/packages/util/crypto/package.json index 3d1fb4e136..5ab63eb83a 100644 --- a/packages/util/crypto/package.json +++ b/packages/util/crypto/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/deque/package.json b/packages/util/deque/package.json index 37f6d8d589..d9f0a1804f 100644 --- a/packages/util/deque/package.json +++ b/packages/util/deque/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/home-paths/package.json b/packages/util/home-paths/package.json index 020b85dce1..4187d95fa2 100644 --- a/packages/util/home-paths/package.json +++ b/packages/util/home-paths/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/http-proxy/package.json b/packages/util/http-proxy/package.json index 87d0ddcc77..7a8170f50b 100644 --- a/packages/util/http-proxy/package.json +++ b/packages/util/http-proxy/package.json @@ -27,13 +27,13 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { "undici": "^8.10.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-invariants": "workspace:^" } } diff --git a/packages/util/launch-environment/package.json b/packages/util/launch-environment/package.json index 36f1f4be95..28a01033db 100644 --- a/packages/util/launch-environment/package.json +++ b/packages/util/launch-environment/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/native-command/package.json b/packages/util/native-command/package.json index 31d5770858..f4ce7b6ec2 100644 --- a/packages/util/native-command/package.json +++ b/packages/util/native-command/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/output-retention/package.json b/packages/util/output-retention/package.json index 1de1a53bd5..7048e841c1 100644 --- a/packages/util/output-retention/package.json +++ b/packages/util/output-retention/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/package-manifest/package.json b/packages/util/package-manifest/package.json index 85b8a0b1ff..c9b9121f69 100644 --- a/packages/util/package-manifest/package.json +++ b/packages/util/package-manifest/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/time/package.json b/packages/util/time/package.json index a191aa8376..81edeb6a94 100644 --- a/packages/util/time/package.json +++ b/packages/util/time/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/timeout/package.json b/packages/util/timeout/package.json index c1cbd2bae2..c5fab6aade 100644 --- a/packages/util/timeout/package.json +++ b/packages/util/timeout/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/values/package.json b/packages/util/values/package.json index b46eed22cc..af71263cbf 100644 --- a/packages/util/values/package.json +++ b/packages/util/values/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/util/workspace-path/package.json b/packages/util/workspace-path/package.json index a8dca334e3..3617c53018 100644 --- a/packages/util/workspace-path/package.json +++ b/packages/util/workspace-path/package.json @@ -27,9 +27,9 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/web/tool-web/package.json b/packages/web/tool-web/package.json index b3fe173fad..c731904124 100644 --- a/packages/web/tool-web/package.json +++ b/packages/web/tool-web/package.json @@ -27,7 +27,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", @@ -35,12 +35,12 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@joplin/turndown-plugin-gfm": "^1.0.67", "turndown": "^7.2.4" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", diff --git a/packages/web/web-fetch-http/package.json b/packages/web/web-fetch-http/package.json index 85ab4871d8..c81a828ce4 100644 --- a/packages/web/web-fetch-http/package.json +++ b/packages/web/web-fetch-http/package.json @@ -27,18 +27,18 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", "@deepseek-ai/dsh-http-proxy": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "ipaddr.js": "^2.5.0", "undici": "^8.10.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-timeout": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", "@deepseek-ai/dsh-http-proxy": "workspace:^" diff --git a/packages/web/web-search-deepseek/package.json b/packages/web/web-search-deepseek/package.json index 26eeb35a32..98853ed968 100644 --- a/packages/web/web-search-deepseek/package.json +++ b/packages/web/web-search-deepseek/package.json @@ -32,11 +32,11 @@ "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -45,7 +45,7 @@ "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-settings": "workspace:^", "@deepseek-ai/dsh-http-proxy": "workspace:^" } diff --git a/packages/web/web-search-exa/package.json b/packages/web/web-search-exa/package.json index 85bedd66d4..9e5d349579 100644 --- a/packages/web/web-search-exa/package.json +++ b/packages/web/web-search-exa/package.json @@ -29,15 +29,15 @@ "peerDependencies": { "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" } } diff --git a/packages/web/web-search-perplexity/package.json b/packages/web/web-search-perplexity/package.json index 1e5cc82fc5..f0f7b73280 100644 --- a/packages/web/web-search-perplexity/package.json +++ b/packages/web/web-search-perplexity/package.json @@ -29,15 +29,15 @@ "peerDependencies": { "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-launch-environment": "workspace:^", "@deepseek-ai/dsh-web": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-http-proxy": "workspace:^" } } diff --git a/packages/web/web/package.json b/packages/web/web/package.json index 58fa29784a..b5e92eb755 100644 --- a/packages/web/web/package.json +++ b/packages/web/web/package.json @@ -28,13 +28,13 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-llm": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/webhook/webhook-github/package.json b/packages/webhook/webhook-github/package.json index e94244a5b8..6f40c1fce7 100644 --- a/packages/webhook/webhook-github/package.json +++ b/packages/webhook/webhook-github/package.json @@ -32,7 +32,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -40,13 +40,13 @@ }, "dependencies": { "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^", + "@deepseek-ai/schemastery": "workspace:*", "@octokit/webhooks": "^14.2.0" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-credentials": "workspace:^", "@deepseek-ai/dsh-host-webserver": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", diff --git a/packages/webhook/webhook/package.json b/packages/webhook/webhook/package.json index ca075c0b3d..5f2277ba07 100644 --- a/packages/webhook/webhook/package.json +++ b/packages/webhook/webhook/package.json @@ -37,7 +37,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", @@ -49,9 +49,9 @@ "@deepseek-ai/dsh-workspace": "workspace:^" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-default-model": "workspace:^", "@deepseek-ai/dsh-agent-presets": "workspace:^", diff --git a/packages/workflow/tool-ralph/package.json b/packages/workflow/tool-ralph/package.json index 5f22369daa..70a82b6967 100644 --- a/packages/workflow/tool-ralph/package.json +++ b/packages/workflow/tool-ralph/package.json @@ -33,13 +33,13 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis-plugin-loader": "workspace:^", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", @@ -52,7 +52,7 @@ "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", "@deepseek-ai/dsh-workflow-worker-thread": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/workflow/tool-workflow/package.json b/packages/workflow/tool-workflow/package.json index bf6b1e1c60..4115427262 100644 --- a/packages/workflow/tool-workflow/package.json +++ b/packages/workflow/tool-workflow/package.json @@ -44,10 +44,10 @@ "@deepseek-ai/dsh-system-prompt": "workspace:^", "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "dependencies": { - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -59,7 +59,7 @@ "@deepseek-ai/dsh-tools": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", "@deepseek-ai/dsh-workflow-worker-thread": "workspace:^", - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-session-projection": "workspace:^" } } diff --git a/packages/workflow/workflow-worker-thread/package.json b/packages/workflow/workflow-worker-thread/package.json index 51507b52c1..259fe7527e 100644 --- a/packages/workflow/workflow-worker-thread/package.json +++ b/packages/workflow/workflow-worker-thread/package.json @@ -32,7 +32,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", @@ -43,10 +43,10 @@ "dependencies": { "@deepseek-ai/dsh-brand": "workspace:^", "@deepseek-ai/dsh-util-values": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:^", "@deepseek-ai/dsh-agent-loop": "workspace:^", "@deepseek-ai/dsh-agent-loop-testkit": "workspace:^", diff --git a/packages/workflow/workflow/package.json b/packages/workflow/workflow/package.json index 8b958f9ceb..f1bfc1f276 100644 --- a/packages/workflow/workflow/package.json +++ b/packages/workflow/workflow/package.json @@ -42,7 +42,7 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" }, "devDependencies": { "@deepseek-ai/dsh-agent": "workspace:^", @@ -50,6 +50,6 @@ "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-llm": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", - "@deepseek-ai/cordis": "workspace:^" + "@deepseek-ai/cordis": "workspace:*" } } diff --git a/packages/workspace/workspace/package.json b/packages/workspace/workspace/package.json index 35df2dc687..b5fb6fe436 100644 --- a/packages/workspace/workspace/package.json +++ b/packages/workspace/workspace/package.json @@ -37,7 +37,7 @@ ], "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", @@ -50,7 +50,7 @@ "zod": "^4.4.3" }, "devDependencies": { - "@deepseek-ai/cordis": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", "@deepseek-ai/dsh-invariants": "workspace:^", "@deepseek-ai/dsh-session": "workspace:^", "@deepseek-ai/dsh-session-persistence": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be1647c24b..91f79de0d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,19 +134,19 @@ importers: apps/cli: dependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/cordis '@deepseek-ai/cordis-plugin-hmr': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/hmr '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/loader '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/timer '@deepseek-ai/dsh-acp-app': specifier: workspace:^ @@ -544,10 +544,10 @@ importers: apps/desktop-host: dependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/include '@deepseek-ai/dsh': specifier: workspace:^ @@ -586,7 +586,7 @@ importers: apps/web: devDependencies: '@deepseek-ai/cordis-plugin-group': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/group '@deepseek-ai/dsh-client-modules': specifier: workspace:^ @@ -667,7 +667,7 @@ importers: benchmarks: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -793,7 +793,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -854,7 +854,7 @@ importers: version: 8.21.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -891,7 +891,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -991,7 +991,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -1118,7 +1118,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent-presets': specifier: workspace:^ @@ -1149,7 +1149,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-gateway': specifier: workspace:^ @@ -1192,7 +1192,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-gateway': specifier: workspace:^ @@ -1222,7 +1222,7 @@ importers: packages/attachment/attachment: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -1238,7 +1238,7 @@ importers: version: 0.35.3(@types/node@22.20.0) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-attachment': specifier: workspace:^ @@ -1263,22 +1263,22 @@ importers: version: 2.0.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-group': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/group '@deepseek-ai/cordis-plugin-hmr': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/hmr '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/timer '@deepseek-ai/dsh-home-paths': specifier: workspace:^ @@ -1299,13 +1299,13 @@ importers: packages/boot/cmdline: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader commander: specifier: ^15.0.0 @@ -1324,19 +1324,19 @@ importers: version: 15.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include packages/bundle/base: dependencies: '@deepseek-ai/cordis-plugin-hmr': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/hmr '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/timer '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -1586,7 +1586,7 @@ importers: version: link:../../workflow/workflow-worker-thread devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/bundle/headless: @@ -1611,10 +1611,10 @@ importers: version: 15.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -1651,16 +1651,16 @@ importers: version: 15.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include packages/bundle/sdk-minimal: dependencies: '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/timer '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -1742,7 +1742,7 @@ importers: version: link:../../core/tools devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/bundle/web-app: @@ -1989,10 +1989,10 @@ importers: version: 11.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-shell-env': specifier: workspace:^ @@ -2014,7 +2014,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -2063,7 +2063,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -2097,10 +2097,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-client-modules': specifier: workspace:^ @@ -2119,7 +2119,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2158,10 +2158,10 @@ importers: packages/client/modules: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-host-webserver': specifier: workspace:^ @@ -2176,7 +2176,7 @@ importers: packages/client/resources: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-client-store': specifier: workspace:^ @@ -2197,7 +2197,7 @@ importers: packages/client/store: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis immer: specifier: ^10.1.1 @@ -2209,7 +2209,7 @@ importers: packages/client/ui-agent-preset: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent-presets': specifier: workspace:^ @@ -2266,7 +2266,7 @@ importers: packages/client/ui-approval: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2311,7 +2311,7 @@ importers: packages/client/ui-attachment: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-attachment': specifier: workspace:^ @@ -2356,7 +2356,7 @@ importers: packages/client/ui-brand-official: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-client-ui-primitives': specifier: workspace:^ @@ -2387,7 +2387,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -2495,7 +2495,7 @@ importers: packages/client/ui-commands: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2556,7 +2556,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2689,7 +2689,7 @@ importers: version: link:../../typert/protocol devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -2770,7 +2770,7 @@ importers: packages/client/ui-directory-picker-browse: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2812,7 +2812,7 @@ importers: packages/client/ui-directory-picker-native: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-client-ui-renderer': specifier: workspace:^ @@ -2836,7 +2836,7 @@ importers: packages/client/ui-dockkit: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -2866,7 +2866,7 @@ importers: packages/client/ui-goal: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -2926,7 +2926,7 @@ importers: packages/client/ui-input-trigger: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -2974,7 +2974,7 @@ importers: packages/client/ui-jobs: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -3010,7 +3010,7 @@ importers: packages/client/ui-layout: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -3043,7 +3043,7 @@ importers: packages/client/ui-message-feedback: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3112,7 +3112,7 @@ importers: packages/client/ui-model-selection: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3175,7 +3175,7 @@ importers: packages/client/ui-open-in-app: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -3220,7 +3220,7 @@ importers: packages/client/ui-permission-presets: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3271,7 +3271,7 @@ importers: packages/client/ui-plan: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3313,7 +3313,7 @@ importers: packages/client/ui-primitives: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@shikijs/langs': specifier: ^4.3.1 @@ -3385,7 +3385,7 @@ importers: packages/client/ui-reference: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3427,7 +3427,7 @@ importers: packages/client/ui-renderer: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-client-test-runtime': specifier: workspace:^ @@ -3460,7 +3460,7 @@ importers: packages/client/ui-schedule: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -3511,7 +3511,7 @@ importers: packages/client/ui-session: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -3538,7 +3538,7 @@ importers: packages/client/ui-settings: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3575,7 +3575,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3626,7 +3626,7 @@ importers: packages/client/ui-settings-models: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3665,7 +3665,7 @@ importers: packages/client/ui-settings-plugin-inventory: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent-presets': specifier: workspace:^ @@ -3710,7 +3710,7 @@ importers: packages/client/ui-settings-plugins: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3749,7 +3749,7 @@ importers: packages/client/ui-sidebar: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-workspace-controller': specifier: workspace:^ @@ -3794,7 +3794,7 @@ importers: packages/client/ui-sidebar-documentpreview: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-gateway': specifier: workspace:^ @@ -3866,7 +3866,7 @@ importers: packages/client/ui-sidebar-files: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -3929,7 +3929,7 @@ importers: packages/client/ui-sidebar-right: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -3998,7 +3998,7 @@ importers: packages/client/ui-skill: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -4049,7 +4049,7 @@ importers: packages/client/ui-slots: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-client-store': specifier: workspace:^ @@ -4061,7 +4061,7 @@ importers: packages/client/ui-subagent: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -4122,7 +4122,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -4170,7 +4170,7 @@ importers: packages/client/ui-tool: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4254,7 +4254,7 @@ importers: packages/client/ui-trajectory: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4326,7 +4326,7 @@ importers: packages/client/ui-user-questions: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4389,7 +4389,7 @@ importers: packages/client/ui-workflow-run: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -4440,7 +4440,7 @@ importers: packages/client/ui-workspace: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -4509,10 +4509,10 @@ importers: packages/client/web: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-client-modules': specifier: workspace:^ @@ -4551,7 +4551,7 @@ importers: packages/code-runtime/code-runtime: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/code-runtime/code-runtime-worker-thread: @@ -4564,7 +4564,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-code-runtime': specifier: workspace:^ @@ -4579,13 +4579,13 @@ importers: packages/compaction/command-compact: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4606,7 +4606,7 @@ importers: packages/compaction/compaction: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -4634,13 +4634,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4692,13 +4692,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-compaction': specifier: workspace:^ @@ -4729,10 +4729,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4777,7 +4777,7 @@ importers: packages/context/file-reference: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4790,7 +4790,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4821,13 +4821,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4894,7 +4894,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4952,7 +4952,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -4979,7 +4979,7 @@ importers: packages/core/agent: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -5016,7 +5016,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5044,7 +5044,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5090,7 +5090,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5114,7 +5114,7 @@ importers: packages/core/scope: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -5133,7 +5133,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -5155,7 +5155,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -5180,7 +5180,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5213,7 +5213,7 @@ importers: packages/credentials/authorization: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-credentials': specifier: workspace:^ @@ -5232,7 +5232,7 @@ importers: version: link:../../util/brand devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -5251,7 +5251,7 @@ importers: version: 2.9.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-atomic-write': specifier: workspace:^ @@ -5276,7 +5276,7 @@ importers: version: 2.29.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5330,7 +5330,7 @@ importers: packages/e2b/fs-e2b: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-e2b': specifier: workspace:^ @@ -5346,7 +5346,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-e2b': specifier: workspace:^ @@ -5371,7 +5371,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5426,10 +5426,10 @@ importers: version: link:../tool-agent-team devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include js-yaml: specifier: ^4.2.0 @@ -5442,10 +5442,10 @@ importers: version: link:../client-ui-agent-team devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include js-yaml: specifier: ^4.2.0 @@ -5458,7 +5458,7 @@ importers: version: 18.3.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -5513,7 +5513,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-code-runtime': specifier: workspace:^ @@ -5544,13 +5544,13 @@ importers: version: 8.21.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-host-webserver': specifier: workspace:^ @@ -5572,7 +5572,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5623,7 +5623,7 @@ importers: packages/experimental/webworker-packer: dependencies: '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/dsh-experimental-webworker-runtime': specifier: workspace:^ @@ -5639,7 +5639,7 @@ importers: version: 4.0.4 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-package-manifest': specifier: workspace:^ @@ -5676,10 +5676,10 @@ importers: version: 4.7.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-api-gateway': specifier: workspace:^ @@ -5736,10 +5736,10 @@ importers: packages/extensions/cordis-client-runner: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -5776,10 +5776,10 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/timer '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5806,10 +5806,10 @@ importers: packages/extensions/tool-cordis: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5836,7 +5836,7 @@ importers: packages/extensions/ui-cordis: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-remotes': specifier: workspace:^ @@ -5888,13 +5888,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -5928,13 +5928,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -5961,7 +5961,7 @@ importers: packages/fs/fs: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -5986,7 +5986,7 @@ importers: version: 3.1.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-fs': specifier: workspace:^ @@ -5998,7 +5998,7 @@ importers: packages/fs/fs-observation-policy: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-fs': specifier: workspace:^ @@ -6010,7 +6010,7 @@ importers: packages/fs/fs-sandbox: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-fs': specifier: workspace:^ @@ -6038,7 +6038,7 @@ importers: version: 9.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6105,7 +6105,7 @@ importers: version: 1.18.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6148,7 +6148,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6191,7 +6191,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6236,10 +6236,10 @@ importers: packages/goal/command-goal: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6276,7 +6276,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6327,7 +6327,7 @@ importers: packages/goal/goal-round-driver: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6367,10 +6367,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6407,7 +6407,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6434,7 +6434,7 @@ importers: packages/guard/timeout-policy: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -6449,7 +6449,7 @@ importers: packages/hooks/hook-protocol: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -6468,7 +6468,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6517,7 +6517,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6559,7 +6559,7 @@ importers: packages/host/directory-picker: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/host/directory-picker-auto: @@ -6569,13 +6569,13 @@ importers: version: link:../../util/launch-environment devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-client-ui-directory-picker-browse': specifier: workspace:^ @@ -6606,7 +6606,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/host/directory-picker-native: @@ -6622,7 +6622,7 @@ importers: version: 3.1.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis tsx: specifier: ^4.19.2 @@ -6635,10 +6635,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-client-connection': specifier: workspace:^ @@ -6666,10 +6666,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-host-webserver': specifier: workspace:^ @@ -6682,10 +6682,10 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent-presets': specifier: workspace:^ @@ -6710,7 +6710,7 @@ importers: version: 1.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@types/compression': specifier: ^1.8.1 @@ -6722,7 +6722,7 @@ importers: packages/identity/anonymous-user-id: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -6741,7 +6741,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6778,7 +6778,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-commands': specifier: workspace:^ @@ -6811,7 +6811,7 @@ importers: packages/interaction/tool-ask-user: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6836,7 +6836,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6863,7 +6863,7 @@ importers: packages/interaction/user-questions: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6878,7 +6878,7 @@ importers: packages/jobs/jobs: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6900,13 +6900,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6937,7 +6937,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -6967,7 +6967,7 @@ importers: packages/llm/deepseek-llm-api-extensions: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/llm/llm: @@ -6995,7 +6995,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-attachment': specifier: workspace:^ @@ -7020,7 +7020,7 @@ importers: version: 3.1.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7090,7 +7090,7 @@ importers: version: 0.85.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-attachment': specifier: workspace:^ @@ -7133,13 +7133,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7194,13 +7194,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7234,7 +7234,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-compaction': specifier: workspace:^ @@ -7255,7 +7255,7 @@ importers: packages/lsp/lsp: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -7274,7 +7274,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -7317,7 +7317,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7366,7 +7366,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-attachment': specifier: workspace:^ @@ -7406,7 +7406,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7455,16 +7455,16 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-group': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/group '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7516,7 +7516,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-scope': specifier: workspace:^ @@ -7532,7 +7532,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/sandbox/sandbox: @@ -7542,7 +7542,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -7567,7 +7567,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -7589,7 +7589,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7620,7 +7620,7 @@ importers: version: 3.1.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-pwsh-local': specifier: workspace:^ @@ -7636,10 +7636,10 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7685,7 +7685,7 @@ importers: version: link:../../../apps/cli devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -7700,7 +7700,7 @@ importers: packages/sdk/protocol: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -7722,10 +7722,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7780,10 +7780,10 @@ importers: version: 0.8.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7840,7 +7840,7 @@ importers: packages/session-query/session-query: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -7874,10 +7874,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -7905,7 +7905,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7953,10 +7953,10 @@ importers: packages/session/session-checkpoint-policy: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -7996,7 +7996,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/session/session-format-catalog: @@ -8015,7 +8015,7 @@ importers: version: link:../session-format-v2-to-v3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8031,7 +8031,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8053,7 +8053,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8072,7 +8072,7 @@ importers: version: link:../session-format-v1-to-v2 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/session/session-log-deepseek: @@ -8088,13 +8088,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-command-feedback': specifier: workspace:^ @@ -8131,7 +8131,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -8171,7 +8171,7 @@ importers: version: 3.1.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8190,7 +8190,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8209,7 +8209,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-session': specifier: workspace:^ @@ -8234,13 +8234,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -8255,7 +8255,7 @@ importers: packages/session/session-telemetry: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8289,13 +8289,13 @@ importers: version: 0.220.0(@opentelemetry/api@1.9.1) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/cordis-plugin-logger-console': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/logger-console '@deepseek-ai/dsh-anonymous-user-id': specifier: workspace:^ @@ -8350,7 +8350,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8384,7 +8384,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent-loop': specifier: workspace:^ @@ -8412,13 +8412,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent-loop': specifier: workspace:^ @@ -8452,7 +8452,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -8474,13 +8474,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -8502,7 +8502,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -8530,7 +8530,7 @@ importers: version: 2.9.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-atomic-write': specifier: workspace:^ @@ -8549,7 +8549,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-settings': specifier: workspace:^ @@ -8570,7 +8570,7 @@ importers: packages/shell/bash-sandbox: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-bash-local': specifier: workspace:^ @@ -8604,7 +8604,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-settings': specifier: workspace:^ @@ -8625,7 +8625,7 @@ importers: packages/shell/pwsh-sandbox: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-pwsh-local': specifier: workspace:^ @@ -8652,7 +8652,7 @@ importers: packages/shell/shell: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-sandbox': specifier: workspace:^ @@ -8671,7 +8671,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8696,7 +8696,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8763,13 +8763,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8818,7 +8818,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8882,13 +8882,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -8943,7 +8943,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -8955,7 +8955,7 @@ importers: packages/skill/skill-badge: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-skill': specifier: workspace:^ @@ -8974,7 +8974,7 @@ importers: version: 2.9.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-fs': specifier: workspace:^ @@ -8993,7 +8993,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9023,7 +9023,7 @@ importers: packages/spill/spill: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -9042,13 +9042,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-brand': specifier: workspace:^ @@ -9070,7 +9070,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9097,7 +9097,7 @@ importers: packages/storage/storage: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/storage/storage-domain: @@ -9110,7 +9110,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -9126,7 +9126,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-storage': specifier: workspace:^ @@ -9139,7 +9139,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-storage': specifier: workspace:^ @@ -9161,7 +9161,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9246,10 +9246,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9313,7 +9313,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9380,10 +9380,10 @@ importers: version: 0.153.4 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9441,10 +9441,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9505,10 +9505,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9548,13 +9548,13 @@ importers: version: link:../../util/brand devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9609,10 +9609,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9667,10 +9667,10 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9731,7 +9731,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9776,7 +9776,7 @@ importers: packages/subprocess/subprocess: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-http-proxy': specifier: workspace:^ @@ -9798,7 +9798,7 @@ importers: version: 1.2.0-beta.15(patch_hash=b40ae545608897914bd25fb009c97eeac478c34e8a910298ddcb01b746534bb0) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-loader-smoke': specifier: workspace:^ @@ -9817,13 +9817,13 @@ importers: version: 3.1.1 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/terminal/terminal: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9854,7 +9854,7 @@ importers: version: 6.0.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9888,13 +9888,13 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9948,7 +9948,7 @@ importers: packages/test-support/agent-loop-testkit: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -9985,7 +9985,7 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.3)(@vitest/coverage-v8@4.1.8)(happy-dom@20.11.6)(jsdom@29.1.1(@noble/hashes@2.3.0))(vite@8.0.16(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-api-session-controller': specifier: workspace:^ @@ -10048,7 +10048,7 @@ importers: packages/test-support/llm-mock-server: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/test-support/llm-replay: @@ -10061,7 +10061,7 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-compaction': specifier: workspace:^ @@ -10086,7 +10086,7 @@ importers: version: 4.22.4 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10129,7 +10129,7 @@ importers: version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.3)(@vitest/coverage-v8@4.1.8)(happy-dom@20.11.6)(jsdom@29.1.1(@noble/hashes@2.3.0))(vite@8.0.16(@types/node@26.1.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10178,13 +10178,13 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10227,7 +10227,7 @@ importers: version: 6.0.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-tool-cordis': specifier: workspace:^ @@ -10246,10 +10246,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-typert-registry': specifier: workspace:^ @@ -10261,7 +10261,7 @@ importers: packages/typert/protocol: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/typert/registry: @@ -10271,7 +10271,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-typert-protocol': specifier: workspace:^ @@ -10280,13 +10280,13 @@ importers: packages/util/atomic-write: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/brand: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/chunked-list: @@ -10296,25 +10296,25 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/crypto: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/deque: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/home-paths: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/http-proxy: @@ -10324,7 +10324,7 @@ importers: version: 8.10.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -10333,49 +10333,49 @@ importers: packages/util/launch-environment: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/native-command: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/output-retention: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/package-manifest: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/time: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/timeout: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/values: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/util/workspace-path: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis packages/web/tool-web: @@ -10394,7 +10394,7 @@ importers: version: 7.2.4 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10443,7 +10443,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-llm': specifier: workspace:^ @@ -10462,7 +10462,7 @@ importers: version: 8.10.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-http-proxy': specifier: workspace:^ @@ -10481,7 +10481,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10515,7 +10515,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-http-proxy': specifier: workspace:^ @@ -10534,7 +10534,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-http-proxy': specifier: workspace:^ @@ -10556,13 +10556,13 @@ importers: version: link:../../util/values devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10605,13 +10605,13 @@ importers: version: 14.2.0 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-credentials': specifier: workspace:^ @@ -10633,10 +10633,10 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/loader '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10685,7 +10685,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10721,7 +10721,7 @@ importers: packages/workflow/workflow: devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10752,7 +10752,7 @@ importers: version: link:../../../vendor/schemastery devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-agent': specifier: workspace:^ @@ -10807,7 +10807,7 @@ importers: version: 4.4.3 devDependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../../vendor/cordis '@deepseek-ai/dsh-invariants': specifier: workspace:^ @@ -10831,19 +10831,19 @@ importers: python/sdk-runtime: dependencies: '@deepseek-ai/cordis': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/cordis '@deepseek-ai/cordis-plugin-group': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/group '@deepseek-ai/cordis-plugin-include': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/include '@deepseek-ai/cordis-plugin-loader': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/loader '@deepseek-ai/cordis-plugin-timer': - specifier: workspace:^ + specifier: workspace:* version: link:../../vendor/timer '@deepseek-ai/cosmokit': specifier: link:../../vendor/cosmokit diff --git a/python/sdk-runtime/package.json b/python/sdk-runtime/package.json index 3a3f128cf5..12056e2255 100644 --- a/python/sdk-runtime/package.json +++ b/python/sdk-runtime/package.json @@ -5,12 +5,12 @@ "private": true, "type": "module", "dependencies": { - "@deepseek-ai/cordis": "workspace:^", - "@deepseek-ai/cordis-plugin-group": "workspace:^", - "@deepseek-ai/cordis-plugin-include": "workspace:^", - "@deepseek-ai/cordis-plugin-loader": "workspace:^", - "@deepseek-ai/cordis-plugin-timer": "workspace:^", - "@deepseek-ai/cosmokit": "workspace:^", + "@deepseek-ai/cordis": "workspace:*", + "@deepseek-ai/cordis-plugin-group": "workspace:*", + "@deepseek-ai/cordis-plugin-include": "workspace:*", + "@deepseek-ai/cordis-plugin-loader": "workspace:*", + "@deepseek-ai/cordis-plugin-timer": "workspace:*", + "@deepseek-ai/cosmokit": "workspace:*", "@deepseek-ai/dsh": "workspace:^", "@deepseek-ai/dsh-acp": "workspace:^", "@deepseek-ai/dsh-agent": "workspace:^", @@ -130,6 +130,6 @@ "@deepseek-ai/dsh-web-search-perplexity": "workspace:^", "@deepseek-ai/dsh-workflow": "workspace:^", "@deepseek-ai/dsh-workflow-worker-thread": "workspace:^", - "@deepseek-ai/schemastery": "workspace:^" + "@deepseek-ai/schemastery": "workspace:*" } } diff --git a/scripts/verify-package-dependencies.spec.ts b/scripts/verify-package-dependencies.spec.ts index 4f49bebc5d..8652d7a361 100644 --- a/scripts/verify-package-dependencies.spec.ts +++ b/scripts/verify-package-dependencies.spec.ts @@ -932,6 +932,37 @@ describe('dependency sections', () => { ])) }) + it.each([ + CORDIS, + '@deepseek-ai/cosmokit', + '@deepseek-ai/schemastery', + '@deepseek-ai/cordis-plugin-loader', + '@deepseek-ai/cordis-plugin-include', + '@deepseek-ai/cordis-plugin-group', + '@deepseek-ai/cordis-plugin-timer', + '@deepseek-ai/cordis-plugin-hmr', + '@deepseek-ai/cordis-plugin-logger-console', + ])('preserves a release-line vendor pin on %s', (name) => { + const manifest: PackageDependencyManifest = { + name: '@deepseek-ai/dsh-probe', + dependencies: { [name]: 'workspace:*' }, + devDependencies: { [CORDIS]: 'workspace:*' }, + peerDependencies: { [CORDIS]: 'workspace:*' }, + } + const base = facts(manifest) + const subject = { ...base, workspaceNames: new Set([...base.workspaceNames, name]) } + const state = { facts: [subject], packages: [], policyViolations: [], workspaceNames: subject.workspaceNames } + + repairPackageDependencyManifest(subject) + expect(manifest[name === CORDIS ? 'peerDependencies' : 'dependencies']?.[name]).toBe('workspace:*') + expect(manifest.devDependencies?.[CORDIS]).toBe('workspace:*') + expect(manifest.dependencies?.['@deepseek-ai/dsh-runtime']).toBe('workspace:^') + expect(collectPackageDependencyViolations(state)).toEqual([]) + const repaired = structuredClone(manifest) + repairPackageDependencyManifest(subject) + expect(manifest).toEqual(repaired) + }) + it('repairs owned relationships without changing unrelated dependencies', () => { const root = mkdtempSync(join(tmpdir(), 'dsh-package-dependencies-')) roots.push(root) @@ -954,7 +985,7 @@ describe('dependency sections', () => { expect(fixPackageDependencies(root, state)).toEqual([manifestPath]) const fixed = JSON.parse(readFileSync(join(root, manifestPath), 'utf8')) as PackageDependencyManifest expect(fixed.dependencies).toEqual({ - '@deepseek-ai/schemastery': 'workspace:^', + '@deepseek-ai/schemastery': 'workspace:*', external: '^1.0.0', '@deepseek-ai/dsh-runtime': 'workspace:^', }) diff --git a/scripts/verify-package-dependencies.ts b/scripts/verify-package-dependencies.ts index 537fac154a..8d04b024eb 100644 --- a/scripts/verify-package-dependencies.ts +++ b/scripts/verify-package-dependencies.ts @@ -7,6 +7,7 @@ import { dirname, extname, join, normalize, relative, resolve, sep } from 'node: import ts from 'typescript' import { WorkspaceTypertGenerator } from '../packages/typert/generator/src/workspace.ts' import { writeModuleGraph } from './gen-module-graph.ts' +import { releaseFamily } from './release/families.ts' import { hasClientDeclaration, PACKAGE_DEPENDENCY_POLICY, @@ -20,7 +21,8 @@ import { const GATE = 'verify-package-dependencies' const CORDIS = '@deepseek-ai/cordis' -const WORKSPACE_RANGE = 'workspace:^' +const VENDOR_PACKAGES = new Set(releaseFamily('vendor').members(resolve(import.meta.dirname, '..')) + .map(member => member.name)) const RELEASE_MANIFEST_GLOB = 'packages/!(experimental)/*/package.json' const WORKSPACE_MANIFEST_GLOBS = [ 'apps/*/package.json', @@ -664,6 +666,12 @@ function describeSections(sections: readonly DependencySection[]): string { return sections.length === 0 ? 'no dependency section' : sections.join(' + ') } +function workspaceRange(facts: PackageDependencyFacts, name: string): string { + const pinned = VENDOR_PACKAGES.has(name) + && declaredSections(facts.manifest, name).some(sectionName => section(facts.manifest, sectionName)[name] === 'workspace:*') + return pinned ? 'workspace:*' : 'workspace:^' +} + /** Return all manifest and policy violations in stable order. */ export function collectPackageDependencyViolations(state: PackageDependencyState): string[] { const violations = [...state.policyViolations] @@ -671,15 +679,16 @@ export function collectPackageDependencyViolations(state: PackageDependencyState for (const facts of state.facts) { for (const [name, rule] of expectedPackageDependencies(facts)) { const actual = declaredSections(facts.manifest, name) + const expectedRange = workspaceRange(facts, name) if (rule.section === 'peer-dev') { if (actual.length === 2 && actual.includes('peerDependencies') && actual.includes('devDependencies') - && section(facts.manifest, 'peerDependencies')[name] === WORKSPACE_RANGE - && section(facts.manifest, 'devDependencies')[name] === WORKSPACE_RANGE + && section(facts.manifest, 'peerDependencies')[name] === expectedRange + && section(facts.manifest, 'devDependencies')[name] === expectedRange && facts.manifest.peerDependenciesMeta?.[name] === undefined) continue violations.push( - `${facts.manifestPath}: ${name} must be matching peerDependencies + devDependencies at ${WORKSPACE_RANGE}; found ${describeSections(actual)}`, + `${facts.manifestPath}: ${name} must be matching peerDependencies + devDependencies at ${expectedRange}; found ${describeSections(actual)}`, ) continue } @@ -687,17 +696,18 @@ export function collectPackageDependencyViolations(state: PackageDependencyState const range = section(facts.manifest, expectedSection)[name] if (actual.length === 1 && actual[0] === expectedSection - && (!facts.workspaceNames.has(name) || range === WORKSPACE_RANGE)) continue + && (!facts.workspaceNames.has(name) || range === expectedRange)) continue violations.push( `${facts.manifestPath}: ${name} (${rule.origins.join(', ')}) must be ${expectedSection}-only` - + (facts.workspaceNames.has(name) ? ` at ${WORKSPACE_RANGE}` : '') + + (facts.workspaceNames.has(name) ? ` at ${expectedRange}` : '') + `; found ${describeSections(actual)}`, ) } for (const sectionName of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'] as const) { for (const [name, range] of Object.entries(section(facts.manifest, sectionName))) { - if (!facts.workspaceNames.has(name) || range === WORKSPACE_RANGE) continue - violations.push(`${facts.manifestPath}: ${sectionName}.${name} must use ${WORKSPACE_RANGE}, found ${range}`) + const expectedRange = workspaceRange(facts, name) + if (!facts.workspaceNames.has(name) || range === expectedRange) continue + violations.push(`${facts.manifestPath}: ${sectionName}.${name} must use ${expectedRange}, found ${range}`) } } for (const name of Object.keys(facts.manifest.peerDependenciesMeta ?? {})) { @@ -742,7 +752,7 @@ function preferredRange( name: string, target: ExpectedPackageDependency['section'], ): string { - if (name === CORDIS || facts.workspaceNames.has(name)) return WORKSPACE_RANGE + if (name === CORDIS || facts.workspaceNames.has(name)) return workspaceRange(facts, name) const order: readonly DependencySection[] = target === 'dependencies' ? ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'] : ['devDependencies', 'peerDependencies', 'dependencies', 'optionalDependencies'] @@ -767,8 +777,8 @@ export function repairPackageDependencyManifest(facts: PackageDependencyFacts): for (const sectionName of ['dependencies', 'optionalDependencies'] as const) { deleteDependency(facts.manifest, sectionName, name) } - mutableSection(facts.manifest, 'peerDependencies')[name] = WORKSPACE_RANGE - mutableSection(facts.manifest, 'devDependencies')[name] = WORKSPACE_RANGE + mutableSection(facts.manifest, 'peerDependencies')[name] = range + mutableSection(facts.manifest, 'devDependencies')[name] = range deletePeerMeta(facts.manifest, name) continue } @@ -783,7 +793,7 @@ export function repairPackageDependencyManifest(facts: PackageDependencyFacts): } for (const sectionName of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'] as const) { for (const name of Object.keys(section(facts.manifest, sectionName))) { - if (facts.workspaceNames.has(name)) mutableSection(facts.manifest, sectionName)[name] = WORKSPACE_RANGE + if (facts.workspaceNames.has(name)) mutableSection(facts.manifest, sectionName)[name] = workspaceRange(facts, name) } } } From 8e7cca22ca5174eda1404511a829d38878ee4103 Mon Sep 17 00:00:00 2001 From: imccyu Date: Tue, 22 Sep 2026 13:08:07 +0800 Subject: [PATCH 05/19] release(dsh): 0.1.5-rc.3 --- apps/cli/package.json | 2 +- apps/desktop-host/package.json | 2 +- apps/desktop/package.json | 2 +- apps/web/package.json | 2 +- package.json | 2 +- packages/acp/acp/package.json | 2 +- packages/api/gateway/package.json | 2 +- packages/api/remotes/package.json | 2 +- packages/api/session-controller/package.json | 2 +- packages/api/settings-controller/package.json | 2 +- packages/api/workspace-controller/package.json | 2 +- packages/api/workspace-files/package.json | 2 +- packages/attachment/attachment-local/package.json | 2 +- packages/attachment/attachment/package.json | 2 +- packages/boot/app-boot/package.json | 2 +- packages/boot/cmdline/package.json | 2 +- packages/bundle/acp-app/package.json | 2 +- packages/bundle/base/package.json | 2 +- packages/bundle/headless/package.json | 2 +- packages/bundle/sdk-app/package.json | 2 +- packages/bundle/sdk-minimal/package.json | 2 +- packages/bundle/web-app/package.json | 2 +- packages/client/connection/package.json | 2 +- packages/client/file-upload/package.json | 2 +- packages/client/hmr/package.json | 2 +- packages/client/locale/package.json | 2 +- packages/client/modules/package.json | 2 +- packages/client/resources/package.json | 2 +- packages/client/store/package.json | 2 +- packages/client/ui-agent-preset/package.json | 2 +- packages/client/ui-approval/package.json | 2 +- packages/client/ui-attachment/package.json | 2 +- packages/client/ui-brand-official/package.json | 2 +- packages/client/ui-chat/package.json | 2 +- packages/client/ui-commands/package.json | 2 +- packages/client/ui-conversation/package.json | 2 +- packages/client/ui-deliverables/package.json | 2 +- packages/client/ui-directory-picker-browse/package.json | 2 +- packages/client/ui-directory-picker-native/package.json | 2 +- packages/client/ui-dockkit/package.json | 2 +- packages/client/ui-goal/package.json | 2 +- packages/client/ui-input-trigger/package.json | 2 +- packages/client/ui-jobs/package.json | 2 +- packages/client/ui-layout/package.json | 2 +- packages/client/ui-message-feedback/package.json | 2 +- packages/client/ui-model-selection/package.json | 2 +- packages/client/ui-open-in-app/package.json | 2 +- packages/client/ui-permission-presets/package.json | 2 +- packages/client/ui-plan/package.json | 2 +- packages/client/ui-primitives/package.json | 2 +- packages/client/ui-reference/package.json | 2 +- packages/client/ui-renderer/package.json | 2 +- packages/client/ui-schedule/package.json | 2 +- packages/client/ui-session/package.json | 2 +- packages/client/ui-settings-general/package.json | 2 +- packages/client/ui-settings-models/package.json | 2 +- packages/client/ui-settings-plugin-inventory/package.json | 2 +- packages/client/ui-settings-plugins/package.json | 2 +- packages/client/ui-settings/package.json | 2 +- packages/client/ui-sidebar-documentpreview/package.json | 2 +- packages/client/ui-sidebar-files/package.json | 2 +- packages/client/ui-sidebar-right/package.json | 2 +- packages/client/ui-sidebar/package.json | 2 +- packages/client/ui-skill/package.json | 2 +- packages/client/ui-slots/package.json | 2 +- packages/client/ui-subagent/package.json | 2 +- packages/client/ui-theme/package.json | 2 +- packages/client/ui-tool/package.json | 2 +- packages/client/ui-trajectory/package.json | 2 +- packages/client/ui-user-questions/package.json | 2 +- packages/client/ui-workflow-run/package.json | 2 +- packages/client/ui-workspace/package.json | 2 +- packages/client/web/package.json | 2 +- packages/code-runtime/code-runtime-worker-thread/package.json | 2 +- packages/code-runtime/code-runtime/package.json | 2 +- packages/compaction/command-compact/package.json | 2 +- packages/compaction/compaction-basic/package.json | 2 +- packages/compaction/compaction-tool-result-pruner/package.json | 2 +- packages/compaction/compaction/package.json | 2 +- packages/context/agent-instructions/package.json | 2 +- packages/context/file-reference-local/package.json | 2 +- packages/context/file-reference/package.json | 2 +- packages/context/session-reference/package.json | 2 +- packages/context/time-context/package.json | 2 +- packages/context/tmux-context/package.json | 2 +- packages/core/agent-default-model/package.json | 2 +- packages/core/agent-loop/package.json | 2 +- packages/core/agent-tool-presentation/package.json | 2 +- packages/core/agent/package.json | 2 +- packages/core/scope/package.json | 2 +- packages/core/session/package.json | 2 +- packages/core/system-prompt/package.json | 2 +- packages/core/tools/package.json | 2 +- packages/credentials/authorization/package.json | 2 +- packages/credentials/credentials-local/package.json | 2 +- packages/credentials/credentials/package.json | 2 +- packages/e2b/e2b/package.json | 2 +- packages/e2b/fs-e2b/package.json | 2 +- packages/e2b/subprocess-e2b/package.json | 2 +- packages/experimental/agent-team-profile/package.json | 2 +- packages/experimental/agent-team-web-profile/package.json | 2 +- packages/experimental/agent-team/package.json | 2 +- packages/experimental/client-ui-agent-team/package.json | 2 +- packages/experimental/code-runtime-python/package.json | 2 +- packages/experimental/inspector/package.json | 2 +- packages/experimental/tool-agent-team/package.json | 2 +- packages/experimental/webworker-packer/package.json | 2 +- packages/experimental/webworker-runtime/package.json | 2 +- packages/extensions/cordis-client-runner/package.json | 2 +- packages/extensions/cordis-host-runner/package.json | 2 +- packages/extensions/tool-cordis/package.json | 2 +- packages/extensions/ui-cordis/package.json | 2 +- packages/feedback/command-feedback/package.json | 2 +- packages/feedback/message-feedback/package.json | 2 +- packages/fs/fs-local/package.json | 2 +- packages/fs/fs-observation-policy/package.json | 2 +- packages/fs/fs-sandbox/package.json | 2 +- packages/fs/fs/package.json | 2 +- packages/fs/tool-fs-search/package.json | 2 +- packages/fs/tool-fs/package.json | 2 +- packages/fs/tool-present/package.json | 2 +- packages/fs/tool-str-replace-editor/package.json | 2 +- packages/goal/command-goal/package.json | 2 +- packages/goal/goal-round-driver/package.json | 2 +- packages/goal/goal/package.json | 2 +- packages/goal/tool-goal/package.json | 2 +- packages/guard/repeat-tool-reminder/package.json | 2 +- packages/guard/timeout-policy/package.json | 2 +- packages/hooks/hook-protocol/package.json | 2 +- packages/hooks/hooks-claude-code/package.json | 2 +- packages/hooks/hooks-codex/package.json | 2 +- packages/host/directory-picker-auto/package.json | 2 +- packages/host/directory-picker-browse/package.json | 2 +- packages/host/directory-picker-native/package.json | 2 +- packages/host/directory-picker/package.json | 2 +- packages/host/frontend-static/package.json | 2 +- packages/host/open-in-app/package.json | 2 +- packages/host/plugin-inventory/package.json | 2 +- packages/host/webserver/package.json | 2 +- packages/identity/anonymous-user-id/package.json | 2 +- packages/interaction/commands/package.json | 2 +- packages/interaction/permission-presets/package.json | 2 +- packages/interaction/tool-ask-user/package.json | 2 +- packages/interaction/user-approval/package.json | 2 +- packages/interaction/user-questions/package.json | 2 +- packages/jobs/jobs-local/package.json | 2 +- packages/jobs/jobs/package.json | 2 +- packages/jobs/tool-jobs/package.json | 2 +- packages/llm/deepseek-llm-api-extensions/package.json | 2 +- packages/llm/llm-deepseek/package.json | 2 +- packages/llm/llm-pi-ai/package.json | 2 +- packages/llm/llm-retry/package.json | 2 +- packages/llm/llm/package.json | 2 +- packages/llm/plugin-package-inventory-deepseek/package.json | 2 +- packages/llm/token-meter/package.json | 2 +- packages/lsp/lsp-stdio/package.json | 2 +- packages/lsp/lsp/package.json | 2 +- packages/lsp/tool-lsp/package.json | 2 +- packages/mcp/mcp-client/package.json | 2 +- packages/plan/plan-mode/package.json | 2 +- packages/preset/agent-presets/package.json | 2 +- packages/preset/persona/package.json | 2 +- packages/runtime-diagnostics/invariants/package.json | 2 +- packages/sandbox/sandbox-local/package.json | 2 +- packages/sandbox/sandbox-policy/package.json | 2 +- packages/sandbox/sandbox-windows-acl/package.json | 2 +- packages/sandbox/sandbox/package.json | 2 +- packages/schedule/schedule/package.json | 2 +- packages/sdk/client/package.json | 2 +- packages/sdk/protocol/package.json | 2 +- packages/sdk/server/package.json | 2 +- packages/session-query/session-log-export/package.json | 2 +- packages/session-query/session-query-sqlite/package.json | 2 +- packages/session-query/session-query/package.json | 2 +- packages/session-query/tool-session-query/package.json | 2 +- packages/session/session-checkpoint-policy/package.json | 2 +- packages/session/session-format-catalog/package.json | 2 +- packages/session/session-format-v0-to-v1/package.json | 2 +- packages/session/session-format-v1-to-v2/package.json | 2 +- packages/session/session-format-v2-to-v3/package.json | 2 +- packages/session/session-format/package.json | 2 +- packages/session/session-log-deepseek/package.json | 2 +- packages/session/session-persistence-jsonl/package.json | 2 +- packages/session/session-persistence/package.json | 2 +- packages/session/session-projection-cache/package.json | 2 +- packages/session/session-projection/package.json | 2 +- packages/session/session-stats/package.json | 2 +- packages/session/session-telemetry-otel/package.json | 2 +- packages/session/session-telemetry/package.json | 2 +- packages/session/session-title-all-prompts-llm/package.json | 2 +- packages/session/session-title-first-prompt-llm/package.json | 2 +- packages/session/session-title-llm/package.json | 2 +- packages/session/session-title/package.json | 2 +- packages/session/session-turn-outline/package.json | 2 +- packages/settings/settings-file/package.json | 2 +- packages/settings/settings/package.json | 2 +- packages/shell/bash-local/package.json | 2 +- packages/shell/bash-sandbox/package.json | 2 +- packages/shell/pwsh-local/package.json | 2 +- packages/shell/pwsh-sandbox/package.json | 2 +- packages/shell/shell-env/package.json | 2 +- packages/shell/shell/package.json | 2 +- packages/shell/tool-bash-persistent/package.json | 2 +- packages/shell/tool-bash/package.json | 2 +- packages/shell/tool-pwsh-persistent/package.json | 2 +- packages/shell/tool-pwsh/package.json | 2 +- packages/skill/skill-badge/package.json | 2 +- packages/skill/skill-filesystem/package.json | 2 +- packages/skill/skill/package.json | 2 +- packages/skill/tool-skill/package.json | 2 +- packages/spill/spill-local/package.json | 2 +- packages/spill/spill-policy/package.json | 2 +- packages/spill/spill/package.json | 2 +- packages/storage/storage-domain/package.json | 2 +- packages/storage/storage-json/package.json | 2 +- packages/storage/storage-sqlite/package.json | 2 +- packages/storage/storage/package.json | 2 +- packages/subagent/subagent-acp/package.json | 2 +- packages/subagent/subagent-claude-code/package.json | 2 +- packages/subagent/subagent-codex/package.json | 2 +- packages/subagent/subagent-dsh-sdk/package.json | 2 +- packages/subagent/subagent-fork-in-process/package.json | 2 +- packages/subagent/subagent-in-process-driver/package.json | 2 +- packages/subagent/subagent-spawn-in-process/package.json | 2 +- packages/subagent/subagent/package.json | 2 +- packages/subagent/tool-subagent-control/package.json | 2 +- packages/subagent/tool-subagent/package.json | 2 +- packages/subprocess/subprocess-local/package.json | 2 +- packages/subprocess/subprocess/package.json | 2 +- packages/subprocess/win32-process/package.json | 2 +- packages/terminal/terminal-bash/package.json | 2 +- packages/terminal/terminal/package.json | 2 +- packages/terminal/tool-terminal/package.json | 2 +- packages/test-support/agent-loop-testkit/package.json | 2 +- packages/test-support/client-runtime/package.json | 2 +- packages/test-support/llm-mock-server/package.json | 2 +- packages/test-support/llm-replay/package.json | 2 +- packages/test-support/loader-smoke/package.json | 2 +- packages/test-support/session-snapshot/package.json | 2 +- packages/todo/tool-todo/package.json | 2 +- packages/typert/generator/package.json | 2 +- packages/typert/loader/package.json | 2 +- packages/typert/protocol/package.json | 2 +- packages/typert/registry/package.json | 2 +- packages/util/atomic-write/package.json | 2 +- packages/util/brand/package.json | 2 +- packages/util/chunked-list/package.json | 2 +- packages/util/crypto/package.json | 2 +- packages/util/deque/package.json | 2 +- packages/util/home-paths/package.json | 2 +- packages/util/http-proxy/package.json | 2 +- packages/util/launch-environment/package.json | 2 +- packages/util/native-command/package.json | 2 +- packages/util/output-retention/package.json | 2 +- packages/util/package-manifest/package.json | 2 +- packages/util/time/package.json | 2 +- packages/util/timeout/package.json | 2 +- packages/util/values/package.json | 2 +- packages/util/workspace-path/package.json | 2 +- packages/web/tool-web/package.json | 2 +- packages/web/web-fetch-http/package.json | 2 +- packages/web/web-search-deepseek/package.json | 2 +- packages/web/web-search-exa/package.json | 2 +- packages/web/web-search-perplexity/package.json | 2 +- packages/web/web/package.json | 2 +- packages/webhook/webhook-github/package.json | 2 +- packages/webhook/webhook/package.json | 2 +- packages/workflow/tool-ralph/package.json | 2 +- packages/workflow/tool-workflow/package.json | 2 +- packages/workflow/workflow-worker-thread/package.json | 2 +- packages/workflow/workflow/package.json | 2 +- packages/workspace/workspace/package.json | 2 +- 272 files changed, 272 insertions(+), 272 deletions(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index b265db2e3e..52b399f15e 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh", "description": "dsh CLI: profile boot, plugin management, and the browser UI alias", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/apps/desktop-host/package.json b/apps/desktop-host/package.json index 99eb2b4904..06e557d113 100644 --- a/apps/desktop-host/package.json +++ b/apps/desktop-host/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-desktop-host", "description": "Private upstream-Node host process for the Electron desktop application", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "private": true, "license": "MIT", "type": "module", diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f414377a20..3b2cca5aa4 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-desktop", "description": "Electron desktop shell for an isolated pnpm-installed dsh runtime", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "private": true, "license": "MIT", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index 50e6e88070..0ff4d574c2 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-frontend", "description": "Web application entry: vite build over the @deepseek-ai/dsh-client-web shell library; dist/ served by apps/cli's dsh web", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/package.json b/package.json index a9b7c19269..a084efa26d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@deepseek-ai/dsh-root", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "license": "MIT", "private": true, "type": "module", diff --git a/packages/acp/acp/package.json b/packages/acp/acp/package.json index 3bf01229ec..2b7690eb2a 100644 --- a/packages/acp/acp/package.json +++ b/packages/acp/acp/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-acp", "description": "Automation-only Agent Client Protocol server for driving DeepSeek Harness agents over JSON-RPC stdio", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/gateway/package.json b/packages/api/gateway/package.json index 03dbbc8245..57d9808f69 100644 --- a/packages/api/gateway/package.json +++ b/packages/api/gateway/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-gateway", "description": "Typert Remote Host dispatcher and Client API endpoint", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/remotes/package.json b/packages/api/remotes/package.json index 1415ffdc5f..d0d938f9a2 100644 --- a/packages/api/remotes/package.json +++ b/packages/api/remotes/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-remotes", "description": "Remote BFF assembly for application-selected Host capabilities", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/session-controller/package.json b/packages/api/session-controller/package.json index f8378d4010..2220e2e850 100644 --- a/packages/api/session-controller/package.json +++ b/packages/api/session-controller/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-session-controller", "description": "Session Remote commands, cold reads, and live control transport", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/settings-controller/package.json b/packages/api/settings-controller/package.json index 28caa71fed..4192d1a695 100644 --- a/packages/api/settings-controller/package.json +++ b/packages/api/settings-controller/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-settings-controller", "description": "Remote owner for the configuration surfaces over the settings-domain seams", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/workspace-controller/package.json b/packages/api/workspace-controller/package.json index dc6691b4f9..5bd395714a 100644 --- a/packages/api/workspace-controller/package.json +++ b/packages/api/workspace-controller/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-workspace-controller", "description": "Workspace Remote commands and reconnect-safe state transport", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/api/workspace-files/package.json b/packages/api/workspace-files/package.json index 9592cc40be..e826c71916 100644 --- a/packages/api/workspace-files/package.json +++ b/packages/api/workspace-files/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-api-workspace-files", "description": "Workspace file service and Client resource provider: bounded reads, directory listing, and live metadata over the workspaceFiles Remote namespace", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/attachment/attachment-local/package.json b/packages/attachment/attachment-local/package.json index 8e4f2850b4..22173c3d69 100644 --- a/packages/attachment/attachment-local/package.json +++ b/packages/attachment/attachment-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-attachment-local", "description": "Private content-addressed DSH_HOME attachment storage", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/attachment/attachment/package.json b/packages/attachment/attachment/package.json index 8bfc20cb06..998bd16964 100644 --- a/packages/attachment/attachment/package.json +++ b/packages/attachment/attachment/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-attachment", "description": "Durable immutable attachment storage seam for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/boot/app-boot/package.json b/packages/boot/app-boot/package.json index c4b1a011e7..0b00676ff1 100644 --- a/packages/boot/app-boot/package.json +++ b/packages/boot/app-boot/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-app-boot", "description": "Shared boot glue for the app bins: .env loading, fail-loud Loader guards, snapshot-aware config resolution, and the Loader boot sequence", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/boot/cmdline/package.json b/packages/boot/cmdline/package.json index 57c18c4452..878c7e33fd 100644 --- a/packages/boot/cmdline/package.json +++ b/packages/boot/cmdline/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-cmdline", "description": "Immutable command-line handoff from a dsh launcher to any app plugin that injects cmdlineArgs", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/acp-app/package.json b/packages/bundle/acp-app/package.json index 01b4862970..f7f61f84da 100644 --- a/packages/bundle/acp-app/package.json +++ b/packages/bundle/acp-app/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-acp-app", "description": "The dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-base", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/base/package.json b/packages/bundle/base/package.json index 5a6e059e55..d796aba27b 100644 --- a/packages/bundle/base/package.json +++ b/packages/bundle/base/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-base", "description": "The shared dsh core as a profile bundle: the first patch layer of base-backed profiles, inserting core rows over the empty profile root", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/headless/package.json b/packages/bundle/headless/package.json index 46b1f112f4..5d650eca9a 100644 --- a/packages/bundle/headless/package.json +++ b/packages/bundle/headless/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-headless", "description": "The dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layer", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/sdk-app/package.json b/packages/bundle/sdk-app/package.json index 20f002c9a4..7c321347cb 100644 --- a/packages/bundle/sdk-app/package.json +++ b/packages/bundle/sdk-app/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sdk-app", "description": "The dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-base", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/sdk-minimal/package.json b/packages/bundle/sdk-minimal/package.json index 5208226eac..e91fc03db8 100644 --- a/packages/bundle/sdk-minimal/package.json +++ b/packages/bundle/sdk-minimal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sdk-minimal", "description": "The standalone minimal SDK profile bundle: JSON-RPC, one DeepSeek adapter, persistent shell, and JSONL sessions", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/bundle/web-app/package.json b/packages/bundle/web-app/package.json index 2392881d50..2f38466c40 100644 --- a/packages/bundle/web-app/package.json +++ b/packages/bundle/web-app/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-app", "description": "The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/connection/package.json b/packages/client/connection/package.json index dab23d2d88..1eeda4bd6d 100644 --- a/packages/client/connection/package.json +++ b/packages/client/connection/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-connection", "description": "Authenticated RPC transport, generation lifecycle, and browser fixture", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/file-upload/package.json b/packages/client/file-upload/package.json index 0b3f35d369..b669fbe4d8 100644 --- a/packages/client/file-upload/package.json +++ b/packages/client/file-upload/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-file-upload", "description": "Agent-scoped browser file upload, streaming intake, and staged receipt service", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/hmr/package.json b/packages/client/hmr/package.json index 05ab26abea..c033186f37 100644 --- a/packages/client/hmr/package.json +++ b/packages/client/hmr/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-hmr", "description": "Dev-only hot-reload driver for script-loaded client entries: SSE rebuilt frames → invalidate/prefetch → fiber swap through the vendored Loader entry", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/locale/package.json b/packages/client/locale/package.json index bf980b6fb9..5c3974a574 100644 --- a/packages/client/locale/package.json +++ b/packages/client/locale/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-locale", "description": "Locale plugin: Host-backed preference, extensible language catalog, browser fallback, and typed built-in dictionaries", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/modules/package.json b/packages/client/modules/package.json index ed5f826661..e755ac7a24 100644 --- a/packages/client/modules/package.json +++ b/packages/client/modules/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-modules", "description": "Client module system, dual-face: node half composes the __DSH_BOOT__ entry graph (incremental dsh.client scan, bundle route, index tap, webPlugins service); browser half is the lazy-CJS module table the vendored cordis Loader consumes as its internal seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/resources/package.json b/packages/client/resources/package.json index 689f352ede..551c20811a 100644 --- a/packages/client/resources/package.json +++ b/packages/client/resources/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-resources", "description": "Unified client resource model: protocol-registered providers turn URL addresses into live values, consumed through the useResource global standard hook", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/store/package.json b/packages/client/store/package.json index 00bc212768..ab9f1e9056 100644 --- a/packages/client/store/package.json +++ b/packages/client/store/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-store", "description": "React-free observable and snapshot-store contracts with the shared Zustand/Immer engine", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-agent-preset/package.json b/packages/client/ui-agent-preset/package.json index 6d072209e3..ce349095a5 100644 --- a/packages/client/ui-agent-preset/package.json +++ b/packages/client/ui-agent-preset/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-agent-preset", "description": "Agent-preset surfaces: the default for later sessions, this session's seat, and the composition editor", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-approval/package.json b/packages/client/ui-approval/package.json index 86ecffb2ff..75293548d5 100644 --- a/packages/client/ui-approval/package.json +++ b/packages/client/ui-approval/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-approval", "description": "Approval composer takeover over the scoped Remote Event waterfall", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-attachment/package.json b/packages/client/ui-attachment/package.json index 6e19205536..c47e3ed081 100644 --- a/packages/client/ui-attachment/package.json +++ b/packages/client/ui-attachment/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-attachment", "description": "Dynamic attachment presentation plugin for conversation input, message-image, and trajectory image slots", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-brand-official/package.json b/packages/client/ui-brand-official/package.json index 6a1af745e0..112ca4ea98 100644 --- a/packages/client/ui-brand-official/package.json +++ b/packages/client/ui-brand-official/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-brand-official", "description": "Official DeepSeek Harness brand occupants for the Web client's sidebar slots", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-chat/package.json b/packages/client/ui-chat/package.json index f62bf82962..4e299904f1 100644 --- a/packages/client/ui-chat/package.json +++ b/packages/client/ui-chat/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-chat", "description": "Chat Conversation target, node definitions, renderers, and details surface", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-commands/package.json b/packages/client/ui-commands/package.json index a058e1b14f..5ac75b0482 100644 --- a/packages/client/ui-commands/package.json +++ b/packages/client/ui-commands/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-commands", "description": "Client command surface: global directory cache, '/' source, three command UI kinds, popupSelect registry", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-conversation/package.json b/packages/client/ui-conversation/package.json index 8628f0b603..fa62be4830 100644 --- a/packages/client/ui-conversation/package.json +++ b/packages/client/ui-conversation/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-conversation", "description": "Target-neutral Conversation assembly, shell, composer, queue, and view navigation", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-deliverables/package.json b/packages/client/ui-deliverables/package.json index f9160c942e..53a2eff6b6 100644 --- a/packages/client/ui-deliverables/package.json +++ b/packages/client/ui-deliverables/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-deliverables", "description": "Produced-files turn tail and clickable final-response file references for Web", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-directory-picker-browse/package.json b/packages/client/ui-directory-picker-browse/package.json index 24cfcb3575..bb68eb79a3 100644 --- a/packages/client/ui-directory-picker-browse/package.json +++ b/packages/client/ui-directory-picker-browse/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-directory-picker-browse", "description": "In-app directory browsing surface: the workspace directory-flow owner rendering the host's listing and creation primitives", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-directory-picker-native/package.json b/packages/client/ui-directory-picker-native/package.json index 7ed364f0ce..6f5a996c5a 100644 --- a/packages/client/ui-directory-picker-native/package.json +++ b/packages/client/ui-directory-picker-native/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-directory-picker-native", "description": "Native directory-picker surface: the renderless workspace directory-flow occupant driving the host's OS chooser", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-dockkit/package.json b/packages/client/ui-dockkit/package.json index d64cb583b8..6766973b6f 100644 --- a/packages/client/ui-dockkit/package.json +++ b/packages/client/ui-dockkit/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-dockkit", "description": "Docking layout kit: split-tree engine with invertible operations, and the React components that render and drive it (zero cordis)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-goal/package.json b/packages/client/ui-goal/package.json index 371fc27b12..01d22201f1 100644 --- a/packages/client/ui-goal/package.json +++ b/packages/client/ui-goal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-goal", "description": "Session goal surface: GoalBar docked above the composer, read from the goal session projection", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-input-trigger/package.json b/packages/client/ui-input-trigger/package.json index 4af96ec488..f8c021db93 100644 --- a/packages/client/ui-input-trigger/package.json +++ b/packages/client/ui-input-trigger/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-input-trigger", "description": "Input trigger pipeline: '/' and '@' detection, candidate menu, pick routing to registered sources", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-jobs/package.json b/packages/client/ui-jobs/package.json index e6668f556c..a691e9c053 100644 --- a/packages/client/ui-jobs/package.json +++ b/packages/client/ui-jobs/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-jobs", "description": "Session-header background-job list: live registry state mirrored from session/jobs frames", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "type": "module", "main": "lib/index.js", "types": "lib/types/index.d.ts", diff --git a/packages/client/ui-layout/package.json b/packages/client/ui-layout/package.json index 7ab0b24dcf..bf0d77ba88 100644 --- a/packages/client/ui-layout/package.json +++ b/packages/client/ui-layout/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-layout", "description": "Shell plugin: three-column AppFrame with drag handles, ctx.layout viewing-state service (navigation + panels)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-message-feedback/package.json b/packages/client/ui-message-feedback/package.json index c589cd4c23..3ecce41bed 100644 --- a/packages/client/ui-message-feedback/package.json +++ b/packages/client/ui-message-feedback/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-message-feedback", "description": "The Web feedback surface: per-message Like/Dislike in the assistant-message action strip and the feedback dialog behind both ratings and /feedback, backed by the messageFeedback and sessionFeedback Host Remotes", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-model-selection/package.json b/packages/client/ui-model-selection/package.json index 463be8cc2d..9120ba1db1 100644 --- a/packages/client/ui-model-selection/package.json +++ b/packages/client/ui-model-selection/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-model-selection", "description": "Model selection over the shared model catalog, Session projection, and session.selectModel", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-open-in-app/package.json b/packages/client/ui-open-in-app/package.json index 0c726ef252..7d08fbcfe9 100644 --- a/packages/client/ui-open-in-app/package.json +++ b/packages/client/ui-open-in-app/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-open-in-app", "description": "Web Session-header \"Open In...\" split button opening the session workspace directory in a locally installed application", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-permission-presets/package.json b/packages/client/ui-permission-presets/package.json index 21aaaba411..b5b56a346d 100644 --- a/packages/client/ui-permission-presets/package.json +++ b/packages/client/ui-permission-presets/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-permission-presets", "description": "Permission surfaces: a new-session default in General settings and a current-session /permission popup over the permissions projection", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-plan/package.json b/packages/client/ui-plan/package.json index 596adb6ee0..7da05fb9de 100644 --- a/packages/client/ui-plan/package.json +++ b/packages/client/ui-plan/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-plan", "description": "Plan-mode composer control: the conversation.input.plan seat over the plan projection and the /plan command channel", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-primitives/package.json b/packages/client/ui-primitives/package.json index 70f7fba6cb..f9a0a9726f 100644 --- a/packages/client/ui-primitives/package.json +++ b/packages/client/ui-primitives/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-primitives", "description": "Pure React atoms for the dsh web UI: controls, icons, markdown, and JSON inspectors (zero cordis)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-reference/package.json b/packages/client/ui-reference/package.json index 4c00e9d339..f5aa167243 100644 --- a/packages/client/ui-reference/package.json +++ b/packages/client/ui-reference/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-reference", "description": "Unified Web @file and @session reference source", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-renderer/package.json b/packages/client/ui-renderer/package.json index 99272ba2ea..0b94dd78a8 100644 --- a/packages/client/ui-renderer/package.json +++ b/packages/client/ui-renderer/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-renderer", "description": "Browser UI renderer: React slot bindings, ctx.uiRenderer, and the assembled application root", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-schedule/package.json b/packages/client/ui-schedule/package.json index a0f43a1da0..9c7aa82ce2 100644 --- a/packages/client/ui-schedule/package.json +++ b/packages/client/ui-schedule/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-schedule", "description": "Read-only active Schedule catalog in the Web Session header", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "type": "module", "main": "lib/index.js", "types": "lib/types/index.d.ts", diff --git a/packages/client/ui-session/package.json b/packages/client/ui-session/package.json index c4430b80df..fc3fc1669b 100644 --- a/packages/client/ui-session/package.json +++ b/packages/client/ui-session/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-session", "description": "Session Controller adapter for React and session-scoped slots", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-settings-general/package.json b/packages/client/ui-settings-general/package.json index 2c4ce21271..f25443df03 100644 --- a/packages/client/ui-settings-general/package.json +++ b/packages/client/ui-settings-general/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-settings-general", "description": "Settings ownerless-copy and product onboarding plugin: the General section, shell trigger/header chrome content, settings dictionaries, and the versioned welcome notice", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-settings-models/package.json b/packages/client/ui-settings-models/package.json index b8195de272..2be454a33e 100644 --- a/packages/client/ui-settings-models/package.json +++ b/packages/client/ui-settings-models/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-settings-models", "description": "Models settings and shared product-onboarding dialogs over existing settings and credential joins", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-settings-plugin-inventory/package.json b/packages/client/ui-settings-plugin-inventory/package.json index f7b778f8ab..404b28be0c 100644 --- a/packages/client/ui-settings-plugin-inventory/package.json +++ b/packages/client/ui-settings-plugin-inventory/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-settings-plugin-inventory", "description": "Read-only Cordis Loader inventory tab in Web Plugins settings", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-settings-plugins/package.json b/packages/client/ui-settings-plugins/package.json index c442b85e1d..66806f3de3 100644 --- a/packages/client/ui-settings-plugins/package.json +++ b/packages/client/ui-settings-plugins/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-settings-plugins", "description": "Plugins settings section with feature-owned tabs and configurable host-plane plugin cards", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-settings/package.json b/packages/client/ui-settings/package.json index 77e3121444..72c431cbc6 100644 --- a/packages/client/ui-settings/package.json +++ b/packages/client/ui-settings/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-settings", "description": "Settings domain base plugin: the settings-namespace scope service and the canonical settings slot-type contract", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-sidebar-documentpreview/package.json b/packages/client/ui-sidebar-documentpreview/package.json index 6dff631937..9b6c2015ae 100644 --- a/packages/client/ui-sidebar-documentpreview/package.json +++ b/packages/client/ui-sidebar-documentpreview/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-sidebar-documentpreview", "description": "Extensible document previews for Sidebar files: Markdown, highlighted code, images, PDF, HTML, and plain text", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-sidebar-files/package.json b/packages/client/ui-sidebar-files/package.json index 2da4742959..4a768030ec 100644 --- a/packages/client/ui-sidebar-files/package.json +++ b/packages/client/ui-sidebar-files/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-sidebar-files", "description": "Workspace file tree tab type for the right Sidebar: lazy directory listing over the workspaceFiles Remote namespace, opening files into the Sidebar", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-sidebar-right/package.json b/packages/client/ui-sidebar-right/package.json index ab8a79d601..f6800423a9 100644 --- a/packages/client/ui-sidebar-right/package.json +++ b/packages/client/ui-sidebar-right/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-sidebar-right", "description": "Right Sidebar: the docking surface's session-bound state, its panel and header expand control, and the navigation service over it", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-sidebar/package.json b/packages/client/ui-sidebar/package.json index c15eb7aa15..2c15372562 100644 --- a/packages/client/ui-sidebar/package.json +++ b/packages/client/ui-sidebar/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-sidebar", "description": "Sidebar plugin: session multi-level tree, search, grouping, state dots", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-skill/package.json b/packages/client/ui-skill/package.json index faad887629..daa9ae2e3e 100644 --- a/packages/client/ui-skill/package.json +++ b/packages/client/ui-skill/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-skill", "description": "Web skill references and the dedicated skill tool row", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-slots/package.json b/packages/client/ui-slots/package.json index c4e442da26..3649e07ef0 100644 --- a/packages/client/ui-slots/package.json +++ b/packages/client/ui-slots/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-slots", "description": "Slot registry pure core: SlotMap declaration merging, single register composition API, four-share props types, store-seat types, renderer install seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-subagent/package.json b/packages/client/ui-subagent/package.json index a25900dea8..b375b77559 100644 --- a/packages/client/ui-subagent/package.json +++ b/packages/client/ui-subagent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-subagent", "description": "Subagent conversation catalog, continuation routing UI, and '@' reference source", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-theme/package.json b/packages/client/ui-theme/package.json index eca96065c0..0614f4c62c 100644 --- a/packages/client/ui-theme/package.json +++ b/packages/client/ui-theme/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-theme", "description": "Theme plugin: Host bootstrap for the pre-plugin palette; DOM-free ThemeRuntime for light/dark/system state; --dsw-* token styles and Appearance settings row", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-tool/package.json b/packages/client/ui-tool/package.json index 11ddae1f81..3135041778 100644 --- a/packages/client/ui-tool/package.json +++ b/packages/client/ui-tool/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-tool", "description": "Client Tool call-tree renderer and keyed per-tool presentation slot", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-trajectory/package.json b/packages/client/ui-trajectory/package.json index 32e664d600..6f2c2fae06 100644 --- a/packages/client/ui-trajectory/package.json +++ b/packages/client/ui-trajectory/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-trajectory", "description": "Trajectory event ledger with an interactive timing overview: pure-consumer plugin registering into the conversation ViewMap (no service)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-user-questions/package.json b/packages/client/ui-user-questions/package.json index 2c8e881b99..adf9809890 100644 --- a/packages/client/ui-user-questions/package.json +++ b/packages/client/ui-user-questions/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-user-questions", "description": "Web ask_user_question composer takeover and plan-review presentation UI", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-workflow-run/package.json b/packages/client/ui-workflow-run/package.json index 98a545b350..a80befef1e 100644 --- a/packages/client/ui-workflow-run/package.json +++ b/packages/client/ui-workflow-run/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-workflow-run", "description": "Durable workflow-run Conversation Node and nested member disclosure for dsh web", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/ui-workspace/package.json b/packages/client/ui-workspace/package.json index 96f844a25b..b39247b7b5 100644 --- a/packages/client/ui-workspace/package.json +++ b/packages/client/ui-workspace/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-workspace", "description": "Workspace picker plugin: one WorkspacePicker registered into the sidebar and empty-state workspace slots", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/client/web/package.json b/packages/client/web/package.json index 07f0783d0f..b733898664 100644 --- a/packages/client/web/package.json +++ b/packages/client/web/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-web", "description": "Web boot kernel: static module table, Cordis loader, framework-free boot page, and UI-renderer handoff", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/code-runtime/code-runtime-worker-thread/package.json b/packages/code-runtime/code-runtime-worker-thread/package.json index 9491b8e996..6a35870ae1 100644 --- a/packages/code-runtime/code-runtime-worker-thread/package.json +++ b/packages/code-runtime/code-runtime-worker-thread/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-code-runtime-worker-thread", "description": "Worker-thread implementation of the DeepSeek Harness code-execution seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/code-runtime/code-runtime/package.json b/packages/code-runtime/code-runtime/package.json index 070c598183..3222db8a1e 100644 --- a/packages/code-runtime/code-runtime/package.json +++ b/packages/code-runtime/code-runtime/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-code-runtime", "description": "Abstract code-execution seam (ctx.codeRuntime) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/compaction/command-compact/package.json b/packages/compaction/command-compact/package.json index de807314c1..ec8f75a087 100644 --- a/packages/compaction/command-compact/package.json +++ b/packages/compaction/command-compact/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-command-compact", "description": "Human-facing slash command for explicit session compaction", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/compaction/compaction-basic/package.json b/packages/compaction/compaction-basic/package.json index 60eac2756d..0c31e6db3d 100644 --- a/packages/compaction/compaction-basic/package.json +++ b/packages/compaction/compaction-basic/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-compaction-basic", "description": "Token-meter-driven compaction policy and LLM summarization backend for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/compaction/compaction-tool-result-pruner/package.json b/packages/compaction/compaction-tool-result-pruner/package.json index d163cc7f2b..b89920b5e0 100644 --- a/packages/compaction/compaction-tool-result-pruner/package.json +++ b/packages/compaction/compaction-tool-result-pruner/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-compaction-tool-result-pruner", "description": "Replay-safe model-free head/middle/tail pruning for tool-result surface nodes", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/compaction/compaction/package.json b/packages/compaction/compaction/package.json index 8d21374edb..7a5e2c016d 100644 --- a/packages/compaction/compaction/package.json +++ b/packages/compaction/compaction/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-compaction", "description": "Abstract compaction service seam (ctx.compaction) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/agent-instructions/package.json b/packages/context/agent-instructions/package.json index 1531f9a2b3..7f91f9e737 100644 --- a/packages/context/agent-instructions/package.json +++ b/packages/context/agent-instructions/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-instructions", "description": "Workspace context loader for AGENTS.md/CLAUDE.md instruction files", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/file-reference-local/package.json b/packages/context/file-reference-local/package.json index 90b4656d9f..b206a114b7 100644 --- a/packages/context/file-reference-local/package.json +++ b/packages/context/file-reference-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-file-reference-local", "description": "Local-filesystem ctx.fileReferences provider with bounded fuzzy indexes", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/file-reference/package.json b/packages/context/file-reference/package.json index f0334f1da6..fd20d1345b 100644 --- a/packages/context/file-reference/package.json +++ b/packages/context/file-reference/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-file-reference", "description": "File-reference discovery contract and shared @file grammar", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/session-reference/package.json b/packages/context/session-reference/package.json index 3b89b9786e..c6c284cfdd 100644 --- a/packages/context/session-reference/package.json +++ b/packages/context/session-reference/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-reference", "description": "Cross-session snapshot references and durable untrusted model context (ctx.sessionReferenceResolver)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/time-context/package.json b/packages/context/time-context/package.json index fcbdda6b7b..1b9caf48bb 100644 --- a/packages/context/time-context/package.json +++ b/packages/context/time-context/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-time-context", "description": "Opt-in durable per-step context with the current time and elapsed time", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/context/tmux-context/package.json b/packages/context/tmux-context/package.json index b1021c6215..9aa3ce7754 100644 --- a/packages/context/tmux-context/package.json +++ b/packages/context/tmux-context/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tmux-context", "description": "Opt-in durable per-step context with this agent's tmux pane and window location", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/agent-default-model/package.json b/packages/core/agent-default-model/package.json index ade673f6d5..67ec3ea087 100644 --- a/packages/core/agent-default-model/package.json +++ b/packages/core/agent-default-model/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-default-model", "description": "Default model selection shared by Agent entry points", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/agent-loop/package.json b/packages/core/agent-loop/package.json index 5091fddbdd..3377b1f571 100644 --- a/packages/core/agent-loop/package.json +++ b/packages/core/agent-loop/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-loop", "description": "The concrete agent loop plugin for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/agent-tool-presentation/package.json b/packages/core/agent-tool-presentation/package.json index 5bc00141ab..86a610b01b 100644 --- a/packages/core/agent-tool-presentation/package.json +++ b/packages/core/agent-tool-presentation/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-tool-presentation", "description": "Agent-plane presentation selector: composes one agent's tools as PTC mode, native, or both", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/agent/package.json b/packages/core/agent/package.json index f85e083ab8..a8ef1afde9 100644 --- a/packages/core/agent/package.json +++ b/packages/core/agent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent", "description": "Agent interface, registry, initiator scope, and event vocabulary for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/scope/package.json b/packages/core/scope/package.json index 268e0fdbe9..5c1cbeb8f3 100644 --- a/packages/core/scope/package.json +++ b/packages/core/scope/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-scope", "description": "Scoped-context registration primitive (scope tags, scope-filtered event dispatch) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/session/package.json b/packages/core/session/package.json index 4215779d0c..1284d1424a 100644 --- a/packages/core/session/package.json +++ b/packages/core/session/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session", "description": "Event-sourced session store for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/system-prompt/package.json b/packages/core/system-prompt/package.json index 8ec4194a77..81c499b85e 100644 --- a/packages/core/system-prompt/package.json +++ b/packages/core/system-prompt/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-system-prompt", "description": "System prompt assembly registry for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/core/tools/package.json b/packages/core/tools/package.json index 0e37581818..1fcf3d05c6 100644 --- a/packages/core/tools/package.json +++ b/packages/core/tools/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tools", "description": "Tool registry and execution pipeline for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/credentials/authorization/package.json b/packages/credentials/authorization/package.json index 76e5b79cef..183c4ff143 100644 --- a/packages/credentials/authorization/package.json +++ b/packages/credentials/authorization/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-authorization", "description": "Authorization seam (ctx.authorization): plugin-owned flows that obtain a credential through a conversation with the human", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/credentials/credentials-local/package.json b/packages/credentials/credentials-local/package.json index c7d7d2128a..0f0eaabbba 100644 --- a/packages/credentials/credentials-local/package.json +++ b/packages/credentials/credentials-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-credentials-local", "description": "File-backed credentials provider ($DSH_HOME/.env under the live process environment) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/credentials/credentials/package.json b/packages/credentials/credentials/package.json index bc5c80beb8..d188ac80d1 100644 --- a/packages/credentials/credentials/package.json +++ b/packages/credentials/credentials/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-credentials", "description": "Abstract credential seam (ctx.credentials): settings carry references to secrets, providers own the values", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/e2b/e2b/package.json b/packages/e2b/e2b/package.json index 602ed51b2c..ad316adbe8 100644 --- a/packages/e2b/e2b/package.json +++ b/packages/e2b/e2b/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-e2b", "description": "Shared E2B sandbox lifecycle for DeepSeek Harness provider adapters", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/e2b/fs-e2b/package.json b/packages/e2b/fs-e2b/package.json index 6f989f2b8a..dc46ee8a09 100644 --- a/packages/e2b/fs-e2b/package.json +++ b/packages/e2b/fs-e2b/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-fs-e2b", "description": "E2B filesystem implementation for DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/e2b/subprocess-e2b/package.json b/packages/e2b/subprocess-e2b/package.json index c6a7342657..bc1544812b 100644 --- a/packages/e2b/subprocess-e2b/package.json +++ b/packages/e2b/subprocess-e2b/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subprocess-e2b", "description": "E2B subprocess implementation for DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/agent-team-profile/package.json b/packages/experimental/agent-team-profile/package.json index 1414ef126c..51454847cf 100644 --- a/packages/experimental/agent-team-profile/package.json +++ b/packages/experimental/agent-team-profile/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-agent-team-profile", "description": "Experimental profile bundle enabling Agent Teams over dsh-base", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/agent-team-web-profile/package.json b/packages/experimental/agent-team-web-profile/package.json index 1bd3692f3e..55c95e5d72 100644 --- a/packages/experimental/agent-team-web-profile/package.json +++ b/packages/experimental/agent-team-web-profile/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-agent-team-web-profile", "description": "Experimental Web profile layer for Agent Teams Remote and UI plugins", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/agent-team/package.json b/packages/experimental/agent-team/package.json index c15441b1a7..bfe664f644 100644 --- a/packages/experimental/agent-team/package.json +++ b/packages/experimental/agent-team/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-agent-team", "description": "Implicit-root Agent Teams roster, durable peer mailbox, and shared task DAG", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/client-ui-agent-team/package.json b/packages/experimental/client-ui-agent-team/package.json index 563a2c7a75..aec4ee7f17 100644 --- a/packages/experimental/client-ui-agent-team/package.json +++ b/packages/experimental/client-ui-agent-team/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-client-ui-agent-team", "description": "Web Agent Teams roster, task board, and teammate navigation", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/code-runtime-python/package.json b/packages/experimental/code-runtime-python/package.json index ceaa310bdf..1c2cfd1011 100644 --- a/packages/experimental/code-runtime-python/package.json +++ b/packages/experimental/code-runtime-python/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-code-runtime-python", "description": "CPython subprocess implementation of the DeepSeek Harness code-execution seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "repository": { "type": "git", "url": "git+https://github.com/deepseek-ai/deepseek-harness.git", diff --git a/packages/experimental/inspector/package.json b/packages/experimental/inspector/package.json index fe46f14acc..5c1e429a95 100644 --- a/packages/experimental/inspector/package.json +++ b/packages/experimental/inspector/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-inspector", "description": "Experimental cross-realm CDP hub for Host debugging and Client Runtime inspection", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "private": true, "repository": { "type": "git", diff --git a/packages/experimental/tool-agent-team/package.json b/packages/experimental/tool-agent-team/package.json index 7f08e60b07..6d2e2c0698 100644 --- a/packages/experimental/tool-agent-team/package.json +++ b/packages/experimental/tool-agent-team/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-tool-agent-team", "description": "Scoped model-facing Agent Teams tools over ctx.agentTeams", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/experimental/webworker-packer/package.json b/packages/experimental/webworker-packer/package.json index a98d0e2064..419bb0e33b 100644 --- a/packages/experimental/webworker-packer/package.json +++ b/packages/experimental/webworker-packer/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-webworker-packer", "description": "Build-time packer for the browser runtime's base VFS image and ordered data-overlay archives", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "private": true, "repository": { "type": "git", diff --git a/packages/experimental/webworker-runtime/package.json b/packages/experimental/webworker-runtime/package.json index ac04c0d104..d667ddbd1c 100644 --- a/packages/experimental/webworker-runtime/package.json +++ b/packages/experimental/webworker-runtime/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-experimental-webworker-runtime", "description": "Browser-only harness runtime: in-memory VFS, module transform and loader, postMessage tunnel, and the dedicated Web Worker assembly, with the Node-compatibility layer that lets the host tree run unchanged", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "private": true, "repository": { "type": "git", diff --git a/packages/extensions/cordis-client-runner/package.json b/packages/extensions/cordis-client-runner/package.json index ceb94aeaed..32b00e97d6 100644 --- a/packages/extensions/cordis-client-runner/package.json +++ b/packages/extensions/cordis-client-runner/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-cordis-client-runner", "description": "Browser half of dynamic dual-half plugin packages: event subscription, closure evaluation, guard facade, and loader entries", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/extensions/cordis-host-runner/package.json b/packages/extensions/cordis-host-runner/package.json index d8ebc413e8..fc16c9faee 100644 --- a/packages/extensions/cordis-host-runner/package.json +++ b/packages/extensions/cordis-host-runner/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-cordis-host-runner", "description": "Dynamic package definition registry, host-half sandbox lifecycle, and invoke handler table for model-mounted dual-half packages", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/extensions/tool-cordis/package.json b/packages/extensions/tool-cordis/package.json index d19d0fb5ef..aac95c8823 100644 --- a/packages/extensions/tool-cordis/package.json +++ b/packages/extensions/tool-cordis/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-cordis", "description": "Self-referential cordis toolset: inspect the live runtime, mount and dispose model-written plugins", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/extensions/ui-cordis/package.json b/packages/extensions/ui-cordis/package.json index 32b78e9ed7..ca2eecf8af 100644 --- a/packages/extensions/ui-cordis/package.json +++ b/packages/extensions/ui-cordis/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-ui-cordis", "description": "Cordis dynamic-plugin definition card: the keyed cordis_define tool row with its run/stop switch", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/feedback/command-feedback/package.json b/packages/feedback/command-feedback/package.json index 77fb5b7fc7..c2edd8c779 100644 --- a/packages/feedback/command-feedback/package.json +++ b/packages/feedback/command-feedback/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-command-feedback", "description": "Log-only session feedback: the record event, the sessionFeedback Host Remote, and the human-facing slash command", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/feedback/message-feedback/package.json b/packages/feedback/message-feedback/package.json index abfa697159..9052c044aa 100644 --- a/packages/feedback/message-feedback/package.json +++ b/packages/feedback/message-feedback/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-message-feedback", "description": "Canonical Session-log ratings and notes for finalized assistant messages", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/fs-local/package.json b/packages/fs/fs-local/package.json index 56a9da2f6a..d79a6f2255 100644 --- a/packages/fs/fs-local/package.json +++ b/packages/fs/fs-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-fs-local", "description": "Local-filesystem implementation of the DeepSeek Harness filesystem seam (ctx.fs)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/fs-observation-policy/package.json b/packages/fs/fs-observation-policy/package.json index 59ad5acad9..1af4cf4034 100644 --- a/packages/fs/fs-observation-policy/package.json +++ b/packages/fs/fs-observation-policy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-fs-observation-policy", "description": "File-context policy plugin for the DeepSeek Harness — observed-state, read-before-edit, and version-guarded write/edit added over the ctx.fs provider seam through the fs/* event gate (no service API)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/fs-sandbox/package.json b/packages/fs/fs-sandbox/package.json index dc2bb684d9..f89eaf2a9c 100644 --- a/packages/fs/fs-sandbox/package.json +++ b/packages/fs/fs-sandbox/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-fs-sandbox", "description": "Sandbox-enforcing implementation of the DeepSeek Harness filesystem seam: fences write/edit by the per-call sandbox mode (read-only denies mutation, workspace-write contains it to the workspace + temp roots) while reads pass through", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/fs/package.json b/packages/fs/fs/package.json index a46cf65967..8439d17348 100644 --- a/packages/fs/fs/package.json +++ b/packages/fs/fs/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-fs", "description": "Abstract filesystem capability seam (ctx.fs) for the DeepSeek Harness — vocabulary types, the FileSystem service (text IO + optional version-guarded atomic mutations), and the fs/* policy event vocabulary", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/tool-fs-search/package.json b/packages/fs/tool-fs-search/package.json index 20ecda599d..8a7c6be277 100644 --- a/packages/fs/tool-fs-search/package.json +++ b/packages/fs/tool-fs-search/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-fs-search", "description": "Model-facing filesystem discovery tools (glob, grep) backed by the packaged ripgrep binary (@vscode/ripgrep)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/tool-fs/package.json b/packages/fs/tool-fs/package.json index 03f16c0632..343fbeccdd 100644 --- a/packages/fs/tool-fs/package.json +++ b/packages/fs/tool-fs/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-fs", "description": "Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/tool-present/package.json b/packages/fs/tool-present/package.json index 659cea88a0..9b023e2a2e 100644 --- a/packages/fs/tool-present/package.json +++ b/packages/fs/tool-present/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-present", "description": "Explicit workspace file delivery declarations for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/fs/tool-str-replace-editor/package.json b/packages/fs/tool-str-replace-editor/package.json index e1e35a2a86..2dbd933a52 100644 --- a/packages/fs/tool-str-replace-editor/package.json +++ b/packages/fs/tool-str-replace-editor/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-str-replace-editor", "description": "Model-facing view, create, literal replace, and line insert tool over the Harness filesystem service", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/goal/command-goal/package.json b/packages/goal/command-goal/package.json index 96d36bc0ad..65fc278a2f 100644 --- a/packages/goal/command-goal/package.json +++ b/packages/goal/command-goal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-command-goal", "description": "Human-facing slash command for persisted same-session goals", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/goal/goal-round-driver/package.json b/packages/goal/goal-round-driver/package.json index 9f3b170dee..4abcc68206 100644 --- a/packages/goal/goal-round-driver/package.json +++ b/packages/goal/goal-round-driver/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-goal-round-driver", "description": "Race-fenced same-session goal-round driver", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/goal/goal/package.json b/packages/goal/goal/package.json index 07496de265..29588f456f 100644 --- a/packages/goal/goal/package.json +++ b/packages/goal/goal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-goal", "description": "Event-sourced same-session goal state and lifecycle service for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/goal/tool-goal/package.json b/packages/goal/tool-goal/package.json index 51bd83f6fd..1aaa86f575 100644 --- a/packages/goal/tool-goal/package.json +++ b/packages/goal/tool-goal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-goal", "description": "Model-facing same-session goal tools with execution-time authority checks", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/guard/repeat-tool-reminder/package.json b/packages/guard/repeat-tool-reminder/package.json index 64a40e0cc3..6e57a886a3 100644 --- a/packages/guard/repeat-tool-reminder/package.json +++ b/packages/guard/repeat-tool-reminder/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-repeat-tool-reminder", "description": "Repeat-tool-call guard plugin: advisory reminders when an agent loops on identical tool calls", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/guard/timeout-policy/package.json b/packages/guard/timeout-policy/package.json index 96481352d5..14b7d621ea 100644 --- a/packages/guard/timeout-policy/package.json +++ b/packages/guard/timeout-policy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-call-timeout-policy", "description": "Tool-call timeout policy: a tools/execute wrapper that arms a per-tool deadline on exec.signal and returns TOOL_TIMEOUT when it wins", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/hooks/hook-protocol/package.json b/packages/hooks/hook-protocol/package.json index ada42c6619..49a85fe3bd 100644 --- a/packages/hooks/hook-protocol/package.json +++ b/packages/hooks/hook-protocol/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-hook-protocol", "description": "Shared Claude Code / Codex hook wire protocol: matcher engine, stdin/exit-code/stdout codec, multi-hook merge, and hook/* session events", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/hooks/hooks-claude-code/package.json b/packages/hooks/hooks-claude-code/package.json index 68057a5d2e..70d0b1bde7 100644 --- a/packages/hooks/hooks-claude-code/package.json +++ b/packages/hooks/hooks-claude-code/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-hooks-claude-code", "description": "Bridge plugin: run a Claude Code hooks.json / settings hook config on the DeepSeek Harness interception seams", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/hooks/hooks-codex/package.json b/packages/hooks/hooks-codex/package.json index 39ec414cc7..b7a20f5cd9 100644 --- a/packages/hooks/hooks-codex/package.json +++ b/packages/hooks/hooks-codex/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-hooks-codex", "description": "Bridge plugin: run a Codex hooks.json hook config on the DeepSeek Harness interception seams", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/directory-picker-auto/package.json b/packages/host/directory-picker-auto/package.json index 8be34c1710..1088c95483 100644 --- a/packages/host/directory-picker-auto/package.json +++ b/packages/host/directory-picker-auto/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-directory-picker-auto", "description": "Adaptive chooser of the directory-picker seam: resolves the host situation at boot and mounts the native or browse backend for the DeepSeek Harness web GUI host", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/directory-picker-browse/package.json b/packages/host/directory-picker-browse/package.json index 6f70fe7462..38002d75f8 100644 --- a/packages/host/directory-picker-browse/package.json +++ b/packages/host/directory-picker-browse/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-directory-picker-browse", "description": "In-app browsing backend of the directory-picker seam (listing/creation primitives over the host filesystem)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/directory-picker-native/package.json b/packages/host/directory-picker-native/package.json index 66c1532a9b..a191b4b1cd 100644 --- a/packages/host/directory-picker-native/package.json +++ b/packages/host/directory-picker-native/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-directory-picker-native", "description": "Native-OS-chooser backend of the directory-picker seam for the DeepSeek Harness web GUI host", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/directory-picker/package.json b/packages/host/directory-picker/package.json index 78511ee411..00eebac289 100644 --- a/packages/host/directory-picker/package.json +++ b/packages/host/directory-picker/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-directory-picker", "description": "Abstract workspace-directory picking seam (ctx.directoryPicker) for the DeepSeek Harness web GUI host", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/frontend-static/package.json b/packages/host/frontend-static/package.json index 5b4a21dc44..ef03cd5fdf 100644 --- a/packages/host/frontend-static/package.json +++ b/packages/host/frontend-static/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-frontend-static", "description": "SPA dist server for the Web shell: owns the webserver fallback seat, serving explicit index entries and static assets with traversal rejection and 404 misses", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/open-in-app/package.json b/packages/host/open-in-app/package.json index 0219a7cb65..58cff2e44e 100644 --- a/packages/host/open-in-app/package.json +++ b/packages/host/open-in-app/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-open-in-app", "description": "Host half of open-in-app: resolved application catalog, icons, and the launch endpoint as three webServer routes", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/plugin-inventory/package.json b/packages/host/plugin-inventory/package.json index fb8aeed845..e72377b7b4 100644 --- a/packages/host/plugin-inventory/package.json +++ b/packages/host/plugin-inventory/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-plugin-inventory", "description": "Read-only Remote projection of current Cordis Loader plugin state", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/host/webserver/package.json b/packages/host/webserver/package.json index ce0ea4e673..697de34315 100644 --- a/packages/host/webserver/package.json +++ b/packages/host/webserver/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-host-webserver", "description": "Web route-registration plugin: HTTP and upgrade routes, index transform taps, and static dist fallback; knows no harness concepts", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/identity/anonymous-user-id/package.json b/packages/identity/anonymous-user-id/package.json index 33dcaef9ee..08f585899d 100644 --- a/packages/identity/anonymous-user-id/package.json +++ b/packages/identity/anonymous-user-id/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-anonymous-user-id", "description": "Shared anonymous user identity for DeepSeek Harness telemetry and feedback correlation", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/interaction/commands/package.json b/packages/interaction/commands/package.json index 98f9010fe8..b75e2f4ddd 100644 --- a/packages/interaction/commands/package.json +++ b/packages/interaction/commands/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-commands", "description": "Plugin-owned human command registry for DeepSeek Harness UIs", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/interaction/permission-presets/package.json b/packages/interaction/permission-presets/package.json index ad1646d1fb..b28f1b5eec 100644 --- a/packages/interaction/permission-presets/package.json +++ b/packages/interaction/permission-presets/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-permission-presets", "description": "User-facing permission presets (ctx.permissionPresets) for the DeepSeek Harness: one product-level Permissions select bundling the sandbox-mode and approval-policy knobs, written through to their own session events", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/interaction/tool-ask-user/package.json b/packages/interaction/tool-ask-user/package.json index bd82bab404..cc3fe60cc0 100644 --- a/packages/interaction/tool-ask-user/package.json +++ b/packages/interaction/tool-ask-user/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-ask-user", "description": "Model-facing ask_user_question tool over the ctx.userQuestions seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/interaction/user-approval/package.json b/packages/interaction/user-approval/package.json index 64a7a2be77..3ca3f0f525 100644 --- a/packages/interaction/user-approval/package.json +++ b/packages/interaction/user-approval/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-user-approval", "description": "User-approval seam (ctx.approval) for the DeepSeek Harness: one-shot permission decisions dispatched to composed answerers over the approval/request waterfall, fail-closed by default", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/interaction/user-questions/package.json b/packages/interaction/user-questions/package.json index b2a1bf8aea..9afed4c94a 100644 --- a/packages/interaction/user-questions/package.json +++ b/packages/interaction/user-questions/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-user-questions", "description": "Abstract user-questions seam (ctx.userQuestions) for asking the human during agent runs", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/jobs/jobs-local/package.json b/packages/jobs/jobs-local/package.json index e4d519dad8..6f948e53a7 100644 --- a/packages/jobs/jobs-local/package.json +++ b/packages/jobs/jobs-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-jobs-local", "description": "Process-local implementation of the DeepSeek Harness background job registry seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/jobs/jobs/package.json b/packages/jobs/jobs/package.json index 8da1246315..84677930f0 100644 --- a/packages/jobs/jobs/package.json +++ b/packages/jobs/jobs/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-jobs", "description": "Background job registry (ctx.jobs) for the DeepSeek Harness — shared ids, owner isolation, polling, cancellation, and completion listeners for long-running tool work", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/jobs/tool-jobs/package.json b/packages/jobs/tool-jobs/package.json index 116531ef3b..24f3db873d 100644 --- a/packages/jobs/tool-jobs/package.json +++ b/packages/jobs/tool-jobs/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-jobs", "description": "Model-facing background job control tools (job_output, job_list, job_kill) over the ctx.jobs registry", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/deepseek-llm-api-extensions/package.json b/packages/llm/deepseek-llm-api-extensions/package.json index 362afd2c35..0ca77d15ba 100644 --- a/packages/llm/deepseek-llm-api-extensions/package.json +++ b/packages/llm/deepseek-llm-api-extensions/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-deepseek-llm-api-extensions", "description": "Additive request-field registry for the official DeepSeek LLM API adapter", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/llm-deepseek/package.json b/packages/llm/llm-deepseek/package.json index d25c0f9429..96a1f09daa 100644 --- a/packages/llm/llm-deepseek/package.json +++ b/packages/llm/llm-deepseek/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm-deepseek", "description": "DeepSeek chat-completions adapter for the DeepSeek Harness LLM seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/llm-pi-ai/package.json b/packages/llm/llm-pi-ai/package.json index 291275e245..ac40412c74 100644 --- a/packages/llm/llm-pi-ai/package.json +++ b/packages/llm/llm-pi-ai/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm-pi-ai", "description": "pi-ai-backed DeepSeek adapter for the DeepSeek Harness LLM seam (design-verification twin of dsh-llm-deepseek)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/llm-retry/package.json b/packages/llm/llm-retry/package.json index 7e83c7f6a7..b014875abb 100644 --- a/packages/llm/llm-retry/package.json +++ b/packages/llm/llm-retry/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm-retry", "description": "Provider-routed LLM request retry policy for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/llm/package.json b/packages/llm/llm/package.json index 486e47ea0c..42607c948a 100644 --- a/packages/llm/llm/package.json +++ b/packages/llm/llm/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm", "description": "Provider-neutral LLM service interface for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/plugin-package-inventory-deepseek/package.json b/packages/llm/plugin-package-inventory-deepseek/package.json index 469607d05e..e3a342138f 100644 --- a/packages/llm/plugin-package-inventory-deepseek/package.json +++ b/packages/llm/plugin-package-inventory-deepseek/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-plugin-package-inventory-deepseek", "description": "Active Loader-backed plugin package inventory for official DeepSeek LLM API requests", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/llm/token-meter/package.json b/packages/llm/token-meter/package.json index e97a24ffec..26277f7f7e 100644 --- a/packages/llm/token-meter/package.json +++ b/packages/llm/token-meter/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-token-meter", "description": "Replay-aware token measurement service (ctx.tokenMeter) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/lsp/lsp-stdio/package.json b/packages/lsp/lsp-stdio/package.json index d0cacbce8e..fd0a4daa96 100644 --- a/packages/lsp/lsp-stdio/package.json +++ b/packages/lsp/lsp-stdio/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-lsp-stdio", "description": "Generic stdio language-server provider for the DeepSeek Harness LSP capability seam (ctx.lsp) — spawns configured servers, translates JSON-RPC, and serves transient-open goToDefinition/findReferences/goToImplementation/hover queries in the host filesystem namespace", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/lsp/lsp/package.json b/packages/lsp/lsp/package.json index dad6904fde..5f06b7bbc2 100644 --- a/packages/lsp/lsp/package.json +++ b/packages/lsp/lsp/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-lsp", "description": "Abstract LSP capability seam (ctx.lsp) for the DeepSeek Harness — language-server provider registry keyed by branded id and extension mapping, order-independent per-query selection, normalized definition/references/implementation/hover requests and results, and the LspError taxonomy", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/lsp/tool-lsp/package.json b/packages/lsp/tool-lsp/package.json index a38ba7f575..50c138faac 100644 --- a/packages/lsp/tool-lsp/package.json +++ b/packages/lsp/tool-lsp/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-lsp", "description": "Model-facing lsp tool over the DeepSeek Harness LSP capability seam (ctx.lsp) — one read-only tool with goToDefinition/findReferences/goToImplementation/hover operations, one-based UTF-16 cursor coordinates, bounded location rendering, and hover normalization", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/mcp/mcp-client/package.json b/packages/mcp/mcp-client/package.json index 8ec0b808e9..b4a44591e2 100644 --- a/packages/mcp/mcp-client/package.json +++ b/packages/mcp/mcp-client/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-mcp-client", "description": "MCP client bridge: connects to MCP servers and registers their tools on ctx.tools", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/plan/plan-mode/package.json b/packages/plan/plan-mode/package.json index 77c8258cfb..f220584cb1 100644 --- a/packages/plan/plan-mode/package.json +++ b/packages/plan/plan-mode/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-plan-mode", "description": "Logged per-agent plan mode with deployment guidance, a direct slash command, and a user-reviewed exit", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/preset/agent-presets/package.json b/packages/preset/agent-presets/package.json index 198e9cb3ad..8864d9cbc9 100644 --- a/packages/preset/agent-presets/package.json +++ b/packages/preset/agent-presets/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-presets", "description": "Per-session agent composition from preset cordis.yml files for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/preset/persona/package.json b/packages/preset/persona/package.json index abb1f1d95f..d36ac063e7 100644 --- a/packages/preset/persona/package.json +++ b/packages/preset/persona/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-persona", "description": "Composition-authored deployment persona section for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/runtime-diagnostics/invariants/package.json b/packages/runtime-diagnostics/invariants/package.json index 2a58624dd3..88ffd72ca5 100644 --- a/packages/runtime-diagnostics/invariants/package.json +++ b/packages/runtime-diagnostics/invariants/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-invariants", "description": "Registry service for package-owned DeepSeek Harness runtime invariants", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sandbox/sandbox-local/package.json b/packages/sandbox/sandbox-local/package.json index 1e81d1c41e..b09d192393 100644 --- a/packages/sandbox/sandbox-local/package.json +++ b/packages/sandbox/sandbox-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sandbox-local", "description": "Local process-sandbox backends for the DeepSeek Harness sandbox seam: bwrap, the npm-distributed landlock-run launcher, macOS Seatbelt, or the Windows ACL restricted-token runner — functionally probed, fail-closed", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sandbox/sandbox-policy/package.json b/packages/sandbox/sandbox-policy/package.json index 88956c44aa..bb670d47be 100644 --- a/packages/sandbox/sandbox-policy/package.json +++ b/packages/sandbox/sandbox-policy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sandbox-policy", "description": "Per-call sandbox policy resolver and current model context: deployment fallbacks plus each session's mode and workspace root, shared by every enforcing capability family", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sandbox/sandbox-windows-acl/package.json b/packages/sandbox/sandbox-windows-acl/package.json index 237fdf6c5e..aa9f18f337 100644 --- a/packages/sandbox/sandbox-windows-acl/package.json +++ b/packages/sandbox/sandbox-windows-acl/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sandbox-windows-acl", "description": "Windows ACL write-restriction sandbox backend (restricted-token spawn with capability-SID write allowlist) for the DeepSeek Harness sandbox seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sandbox/sandbox/package.json b/packages/sandbox/sandbox/package.json index db96b4b4dd..e58a4360e2 100644 --- a/packages/sandbox/sandbox/package.json +++ b/packages/sandbox/sandbox/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sandbox", "description": "Abstract process-sandbox seam (ctx.sandbox) for the DeepSeek Harness: same-world confinement vocabulary and the SandboxProvider contract", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/schedule/schedule/package.json b/packages/schedule/schedule/package.json index 9bb951f2c2..36e3a7ab3b 100644 --- a/packages/schedule/schedule/package.json +++ b/packages/schedule/schedule/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-schedule", "description": "Agent-scoped durable after, at, and fixed-rate reminders over the session event log", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sdk/client/package.json b/packages/sdk/client/package.json index b2f0a53b0a..c5568acce1 100644 --- a/packages/sdk/client/package.json +++ b/packages/sdk/client/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sdk-client", "description": "TypeScript client SDK for driving a DeepSeek Harness runtime subprocess over stdio JSON-RPC: the DeepSeekHarness high-level turns API and the lower-level HarnessClient", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sdk/protocol/package.json b/packages/sdk/protocol/package.json index 5d886f8917..437026797c 100644 --- a/packages/sdk/protocol/package.json +++ b/packages/sdk/protocol/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sdk-protocol", "description": "Shared wire protocol for the DeepSeek Harness SDK runtime: the newline-delimited JSON-RPC stdio transport and the named request, result, and notification types spoken between the runtime server and SDK clients", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/sdk/server/package.json b/packages/sdk/server/package.json index f2a67d92eb..ec10f6c44e 100644 --- a/packages/sdk/server/package.json +++ b/packages/sdk/server/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-sdk-jsonrpc-server", "description": "Stdio JSON-RPC server plugin for out-of-process DeepSeek Harness SDK clients", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session-query/session-log-export/package.json b/packages/session-query/session-log-export/package.json index df74a200f6..61e19ed507 100644 --- a/packages/session-query/session-log-export/package.json +++ b/packages/session-query/session-log-export/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-log-export", "description": "Web Session-log export command and shared download dialog", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session-query/session-query-sqlite/package.json b/packages/session-query/session-query-sqlite/package.json index 6c002b89b1..b1c46dfc9b 100644 --- a/packages/session-query/session-query-sqlite/package.json +++ b/packages/session-query/session-query-sqlite/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-query-sqlite", "description": "Concrete ctx.sessionQuery backend with SQLite FTS5 search", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session-query/session-query/package.json b/packages/session-query/session-query/package.json index 209d8d3ae6..6e6ea9bcd3 100644 --- a/packages/session-query/session-query/package.json +++ b/packages/session-query/session-query/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-query", "description": "Combined session query service contract with concrete reads, traces, and filters", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session-query/tool-session-query/package.json b/packages/session-query/tool-session-query/package.json index 459a310a4f..a4b2ce8125 100644 --- a/packages/session-query/tool-session-query/package.json +++ b/packages/session-query/tool-session-query/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-session-query", "description": "Workspace-authorized model-facing session history search, trace, and event read tools", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-checkpoint-policy/package.json b/packages/session/session-checkpoint-policy/package.json index ea8f06bd48..073d8b9301 100644 --- a/packages/session/session-checkpoint-policy/package.json +++ b/packages/session/session-checkpoint-policy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-checkpoint-policy", "description": "Semantic session durability checkpoints before model requests and tool side effects", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-format-catalog/package.json b/packages/session/session-format-catalog/package.json index 35c64ad7c9..7b05cf37dc 100644 --- a/packages/session/session-format-catalog/package.json +++ b/packages/session/session-format-catalog/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-format-catalog", "description": "Build-static first-party Session format codec and migration catalog", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-format-v0-to-v1/package.json b/packages/session/session-format-v0-to-v1/package.json index 237b0353ca..1e96ded8e6 100644 --- a/packages/session/session-format-v0-to-v1/package.json +++ b/packages/session/session-format-v0-to-v1/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-format-v0-to-v1", "description": "Frozen released-v0 Session codec and identity migration to v1", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-format-v1-to-v2/package.json b/packages/session/session-format-v1-to-v2/package.json index 7eff82299f..b1a302805e 100644 --- a/packages/session/session-format-v1-to-v2/package.json +++ b/packages/session/session-format-v1-to-v2/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-format-v1-to-v2", "description": "Frozen released-v1 Session codec and assistant-stream migration to v2", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-format-v2-to-v3/package.json b/packages/session/session-format-v2-to-v3/package.json index e893b3afa9..2ab1d8b825 100644 --- a/packages/session/session-format-v2-to-v3/package.json +++ b/packages/session/session-format-v2-to-v3/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-format-v2-to-v3", "description": "Streaming system-prompt, canonical-envelope and PTC migration into V3", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-format/package.json b/packages/session/session-format/package.json index d76b1d576e..e9e8c772eb 100644 --- a/packages/session/session-format/package.json +++ b/packages/session/session-format/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-format", "description": "Streaming adjacent Session format migration machinery", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-log-deepseek/package.json b/packages/session/session-log-deepseek/package.json index 94050124cc..f8e5421b20 100644 --- a/packages/session/session-log-deepseek/package.json +++ b/packages/session/session-log-deepseek/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-log-deepseek", "description": "Incremental lossless session-log request extension for the official DeepSeek LLM API", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-persistence-jsonl/package.json b/packages/session/session-persistence-jsonl/package.json index 80df4e2342..051c990c56 100644 --- a/packages/session/session-persistence-jsonl/package.json +++ b/packages/session/session-persistence-jsonl/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-persistence-jsonl", "description": "JSONL durable session persistence backend for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-persistence/package.json b/packages/session/session-persistence/package.json index 7140efbce9..4d4f14bc46 100644 --- a/packages/session/session-persistence/package.json +++ b/packages/session/session-persistence/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-persistence", "description": "Abstract durable session persistence seam (ctx.sessionPersistence) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-projection-cache/package.json b/packages/session/session-projection-cache/package.json index 8bad923651..9fb680ffb2 100644 --- a/packages/session/session-projection-cache/package.json +++ b/packages/session/session-projection-cache/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-projection-cache", "description": "Persisted projection cache (ctx.sessionProjectionCache): durable per-session checkpoint records on the session_projcache storage domain (per-record layout), throttled write-behind, and the cached listing read", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-projection/package.json b/packages/session/session-projection/package.json index 358aa65c23..ecf64e41b8 100644 --- a/packages/session/session-projection/package.json +++ b/packages/session/session-projection/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-projection", "description": "Session-projection seam: the merge-extensible projection type table, the provider contract, and the ctx.sessionProjections registry serving whole current values of log-derived per-session state", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-stats/package.json b/packages/session/session-stats/package.json index 1f0561d70c..ed0320ebf3 100644 --- a/packages/session/session-stats/package.json +++ b/packages/session/session-stats/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-stats", "description": "Whole-log conversation counts and wall times projection (sessionStats) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-telemetry-otel/package.json b/packages/session/session-telemetry-otel/package.json index b3f1361173..fdccda3937 100644 --- a/packages/session/session-telemetry-otel/package.json +++ b/packages/session/session-telemetry-otel/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-telemetry-otel", "description": "OpenTelemetry backend for the DeepSeek Harness telemetry seam: hands captured session records to the OTel JS SDK's log pipeline", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-telemetry/package.json b/packages/session/session-telemetry/package.json index de05df1d90..501654fc92 100644 --- a/packages/session/session-telemetry/package.json +++ b/packages/session/session-telemetry/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-telemetry", "description": "SessionTelemetryBackend seam for the DeepSeek Harness: session-event capture, projection, redaction, and handoff to a reporting backend", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-title-all-prompts-llm/package.json b/packages/session/session-title-all-prompts-llm/package.json index 90417298b3..ebe626e54e 100644 --- a/packages/session/session-title-all-prompts-llm/package.json +++ b/packages/session/session-title-all-prompts-llm/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-title-all-prompts-llm", "description": "All-user-messages LLM provider plugin for DeepSeek Harness session titles", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-title-first-prompt-llm/package.json b/packages/session/session-title-first-prompt-llm/package.json index 77e29c11af..550bbbd087 100644 --- a/packages/session/session-title-first-prompt-llm/package.json +++ b/packages/session/session-title-first-prompt-llm/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-title-first-prompt-llm", "description": "First-message LLM provider plugin for DeepSeek Harness session titles", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-title-llm/package.json b/packages/session/session-title-llm/package.json index 7dc081293d..2a34c0522d 100644 --- a/packages/session/session-title-llm/package.json +++ b/packages/session/session-title-llm/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-title-llm", "description": "Shared LLM generation policy for DeepSeek Harness session-title providers", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-title/package.json b/packages/session/session-title/package.json index 2cc7a6a604..aa48bb7059 100644 --- a/packages/session/session-title/package.json +++ b/packages/session/session-title/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-title", "description": "Log-backed session title service and provider registry for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/session/session-turn-outline/package.json b/packages/session/session-turn-outline/package.json index 1ea6e8cc81..0894dc23f8 100644 --- a/packages/session/session-turn-outline/package.json +++ b/packages/session/session-turn-outline/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-turn-outline", "description": "Whole-log turn outline projection (turnOutline) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/settings/settings-file/package.json b/packages/settings/settings-file/package.json index 663c9682db..e317cb4a4b 100644 --- a/packages/settings/settings-file/package.json +++ b/packages/settings/settings-file/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-settings-file", "description": "File-backed settings provider (settings.yaml) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/settings/settings/package.json b/packages/settings/settings/package.json index 9151e92d0b..a175d964d1 100644 --- a/packages/settings/settings/package.json +++ b/packages/settings/settings/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-settings", "description": "Abstract user-settings seam (ctx.settings) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/bash-local/package.json b/packages/shell/bash-local/package.json index 87ba3b08e0..14f6c3def0 100644 --- a/packages/shell/bash-local/package.json +++ b/packages/shell/bash-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-bash-local", "description": "Local-subprocess implementation of the DeepSeek Harness bash executor seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/bash-sandbox/package.json b/packages/shell/bash-sandbox/package.json index 7b0c17a2e4..94afedadab 100644 --- a/packages/shell/bash-sandbox/package.json +++ b/packages/shell/bash-sandbox/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-bash-sandbox", "description": "Sandbox-consuming implementation of the DeepSeek Harness bash executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/pwsh-local/package.json b/packages/shell/pwsh-local/package.json index 7254df4d80..5449e63832 100644 --- a/packages/shell/pwsh-local/package.json +++ b/packages/shell/pwsh-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-pwsh-local", "description": "Local PowerShell implementation of the DeepSeek Harness bash executor seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/pwsh-sandbox/package.json b/packages/shell/pwsh-sandbox/package.json index be6f6fe406..c6ab3fe73f 100644 --- a/packages/shell/pwsh-sandbox/package.json +++ b/packages/shell/pwsh-sandbox/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-pwsh-sandbox", "description": "Sandbox-consuming implementation of the DeepSeek Harness PowerShell executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/shell-env/package.json b/packages/shell/shell-env/package.json index 8956952748..b2cd4eadad 100644 --- a/packages/shell/shell-env/package.json +++ b/packages/shell/shell-env/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-shell-env", "description": "Tool-independent managed DSH_* shell environment registry", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/shell/package.json b/packages/shell/shell/package.json index 8821c3aeb8..89ba9cbf1b 100644 --- a/packages/shell/shell/package.json +++ b/packages/shell/shell/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-shell", "description": "Abstract bash executor seam (ctx.shell) for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/tool-bash-persistent/package.json b/packages/shell/tool-bash-persistent/package.json index 3e0a7a7a8c..c371cbe14e 100644 --- a/packages/shell/tool-bash-persistent/package.json +++ b/packages/shell/tool-bash-persistent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-bash-persistent", "description": "Model-facing owner-scoped persistent Bash tool backed by the Harness PTY service", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/tool-bash/package.json b/packages/shell/tool-bash/package.json index d6308c9be3..73c8784e36 100644 --- a/packages/shell/tool-bash/package.json +++ b/packages/shell/tool-bash/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-bash", "description": "Model-facing bash tool with optional generic background-job and sandbox-escalation support", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/tool-pwsh-persistent/package.json b/packages/shell/tool-pwsh-persistent/package.json index 6b536ee67a..d83c8aa391 100644 --- a/packages/shell/tool-pwsh-persistent/package.json +++ b/packages/shell/tool-pwsh-persistent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-pwsh-persistent", "description": "Model-facing owner-scoped persistent PowerShell tool backed by the Harness PTY service", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/shell/tool-pwsh/package.json b/packages/shell/tool-pwsh/package.json index 455635d24d..ad4edddb51 100644 --- a/packages/shell/tool-pwsh/package.json +++ b/packages/shell/tool-pwsh/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-pwsh", "description": "Model-facing pwsh tool over the bash executor seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/skill/skill-badge/package.json b/packages/skill/skill-badge/package.json index 4965ecb35d..a2df18c583 100644 --- a/packages/skill/skill-badge/package.json +++ b/packages/skill/skill-badge/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-skill-badge", "description": "Bundled dsh badge skill provider for DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/skill/skill-filesystem/package.json b/packages/skill/skill-filesystem/package.json index 12fc7ec3b2..1a09d7ea55 100644 --- a/packages/skill/skill-filesystem/package.json +++ b/packages/skill/skill-filesystem/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-skill-filesystem", "description": "Local filesystem skill provider for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/skill/skill/package.json b/packages/skill/skill/package.json index d55f3a1897..6b7a052581 100644 --- a/packages/skill/skill/package.json +++ b/packages/skill/skill/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-skill", "description": "Agent skill provider registry for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/skill/tool-skill/package.json b/packages/skill/tool-skill/package.json index b79118fbd9..90173f9f12 100644 --- a/packages/skill/tool-skill/package.json +++ b/packages/skill/tool-skill/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-skill", "description": "Model-facing skill loading tool for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/spill/spill-local/package.json b/packages/spill/spill-local/package.json index 36bfb9cf3a..3dca8cdb97 100644 --- a/packages/spill/spill-local/package.json +++ b/packages/spill/spill-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-spill-local", "description": "Local-filesystem implementation of the DeepSeek Harness spill storage seam (private session-scoped files)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/spill/spill-policy/package.json b/packages/spill/spill-policy/package.json index 88e42b054f..beae462383 100644 --- a/packages/spill/spill-policy/package.json +++ b/packages/spill/spill-policy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-spill-policy", "description": "Tool-result spill policy for the DeepSeek Harness — replaces oversized plain-text tool results with a retained preview plus a spill-file path (no service API)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/spill/spill/package.json b/packages/spill/spill/package.json index fe381277f8..6744b3bef2 100644 --- a/packages/spill/spill/package.json +++ b/packages/spill/spill/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-spill", "description": "Abstract spill storage seam (ctx.spillStore) for the DeepSeek Harness — save oversized tool text and return a retrieval locator", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/storage/storage-domain/package.json b/packages/storage/storage-domain/package.json index 3b322ea6dd..25e93ba114 100644 --- a/packages/storage/storage-domain/package.json +++ b/packages/storage/storage-domain/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-storage-domain", "description": "Domain data form (ctx.storage.domain): schema-validated, event-emitting KV domains over storage backends for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/storage/storage-json/package.json b/packages/storage/storage-json/package.json index bf363340b4..bfd9a9548e 100644 --- a/packages/storage/storage-json/package.json +++ b/packages/storage/storage-json/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-storage-json", "description": "JSON file KV storage backend for the DeepSeek Harness storage hub", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/storage/storage-sqlite/package.json b/packages/storage/storage-sqlite/package.json index d04fad5ef1..f2d2d97371 100644 --- a/packages/storage/storage-sqlite/package.json +++ b/packages/storage/storage-sqlite/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-storage-sqlite", "description": "SQLite storage backend (kv facet) for the DeepSeek Harness storage hub", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/storage/storage/package.json b/packages/storage/storage/package.json index 30d2555ac2..683f16ed89 100644 --- a/packages/storage/storage/package.json +++ b/packages/storage/storage/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-storage", "description": "Storage hub (ctx.storage): named backend registry plus mounted data-form facilities for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-acp/package.json b/packages/subagent/subagent-acp/package.json index db33332e03..fdefecef3f 100644 --- a/packages/subagent/subagent-acp/package.json +++ b/packages/subagent/subagent-acp/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-acp", "description": "Out-of-process ACP subagent backend: drives a child agent in a spawned subprocess over the Agent Client Protocol", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-claude-code/package.json b/packages/subagent/subagent-claude-code/package.json index 569dcb1e47..ad5d61a1b0 100644 --- a/packages/subagent/subagent-claude-code/package.json +++ b/packages/subagent/subagent-claude-code/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-claude-code", "description": "One-shot Claude Code subagent provider over the official Agent SDK", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-codex/package.json b/packages/subagent/subagent-codex/package.json index 847743c103..9fd53d3f6b 100644 --- a/packages/subagent/subagent-codex/package.json +++ b/packages/subagent/subagent-codex/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-codex", "description": "One-shot Codex subagent provider over the official app-server protocol", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-dsh-sdk/package.json b/packages/subagent/subagent-dsh-sdk/package.json index 2129650bf9..75366da19d 100644 --- a/packages/subagent/subagent-dsh-sdk/package.json +++ b/packages/subagent/subagent-dsh-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-dsh-sdk", "description": "Out-of-process SDK subagent backend: drives a child DeepSeek Harness runtime subprocess over stdio JSON-RPC through the TypeScript SDK client", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-fork-in-process/package.json b/packages/subagent/subagent-fork-in-process/package.json index 507e1cd6be..ac1c994a81 100644 --- a/packages/subagent/subagent-fork-in-process/package.json +++ b/packages/subagent/subagent-fork-in-process/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-fork-in-process", "description": "In-process fork subagent backend: runs a child agent seeded with a prefix of the parent's log", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-in-process-driver/package.json b/packages/subagent/subagent-in-process-driver/package.json index 7c50e623de..2cffea484b 100644 --- a/packages/subagent/subagent-in-process-driver/package.json +++ b/packages/subagent/subagent-in-process-driver/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-in-process-driver", "description": "Shared in-process subagent run driver: drives a child agent on ctx.agents (used by the spawn and fork backends)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent-spawn-in-process/package.json b/packages/subagent/subagent-spawn-in-process/package.json index 489d735a23..fddaca056b 100644 --- a/packages/subagent/subagent-spawn-in-process/package.json +++ b/packages/subagent/subagent-spawn-in-process/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent-spawn-in-process", "description": "In-process spawn subagent backend: runs a fresh child agent on ctx.agents", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/subagent/package.json b/packages/subagent/subagent/package.json index 91c412970d..e80b2c60d3 100644 --- a/packages/subagent/subagent/package.json +++ b/packages/subagent/subagent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subagent", "description": "Abstract subagent seam (ctx.subagents): named-provider registry for delegating to child agents", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/tool-subagent-control/package.json b/packages/subagent/tool-subagent-control/package.json index 938bee4928..adf00d10a2 100644 --- a/packages/subagent/tool-subagent-control/package.json +++ b/packages/subagent/tool-subagent-control/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-subagent-control", "description": "Globally named send_message, interrupt_agent, and list_agents tools over ctx.subagents continuations", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subagent/tool-subagent/package.json b/packages/subagent/tool-subagent/package.json index ea6d41aad7..cfd711a58c 100644 --- a/packages/subagent/tool-subagent/package.json +++ b/packages/subagent/tool-subagent/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-subagent", "description": "Model-facing subagent delegation tool over the ctx.subagents seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subprocess/subprocess-local/package.json b/packages/subprocess/subprocess-local/package.json index 9ddd44aa8c..5d931ca699 100644 --- a/packages/subprocess/subprocess-local/package.json +++ b/packages/subprocess/subprocess-local/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subprocess-local", "description": "Local-subprocess implementation of the DeepSeek Harness subprocess seam", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subprocess/subprocess/package.json b/packages/subprocess/subprocess/package.json index 86668ed669..e1e4a52318 100644 --- a/packages/subprocess/subprocess/package.json +++ b/packages/subprocess/subprocess/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-subprocess", "description": "Subprocess seam (ctx.subprocess) for the DeepSeek Harness — managed process groups, bounded spill-backed output, and escalated kills behind one abstract service", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/subprocess/win32-process/package.json b/packages/subprocess/win32-process/package.json index baaa455ffd..fa94953d38 100644 --- a/packages/subprocess/win32-process/package.json +++ b/packages/subprocess/win32-process/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-win32-process", "description": "Shared low-level Win32 process, stdio, and Job Object primitives", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/terminal/terminal-bash/package.json b/packages/terminal/terminal-bash/package.json index 7dc1f47d67..88757151b1 100644 --- a/packages/terminal/terminal-bash/package.json +++ b/packages/terminal/terminal-bash/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-terminal-bash", "description": "Persistent shell PTY backend over the DeepSeek Harness subprocess terminal primitive", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/terminal/terminal/package.json b/packages/terminal/terminal/package.json index cdd4676fc8..f81401e660 100644 --- a/packages/terminal/terminal/package.json +++ b/packages/terminal/terminal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-terminal", "description": "Persistent PTY session seam for the DeepSeek Harness — owner-scoped ids, backend registry, interactive sends, reads, signals, and awaited cleanup", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/terminal/tool-terminal/package.json b/packages/terminal/tool-terminal/package.json index 62f9215d9e..52ed02d241 100644 --- a/packages/terminal/tool-terminal/package.json +++ b/packages/terminal/tool-terminal/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-terminal", "description": "Six model-facing persistent PTY tools with owner isolation and generic background-job integration", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/agent-loop-testkit/package.json b/packages/test-support/agent-loop-testkit/package.json index dd756655cb..70fed66a8d 100644 --- a/packages/test-support/agent-loop-testkit/package.json +++ b/packages/test-support/agent-loop-testkit/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-agent-loop-testkit", "description": "Prerequisite mounting, production AgentLoop drivers, and Inbox stubs for tests", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/client-runtime/package.json b/packages/test-support/client-runtime/package.json index 2b1b3d0bf2..f23b3e2d63 100644 --- a/packages/test-support/client-runtime/package.json +++ b/packages/test-support/client-runtime/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-client-test-runtime", "description": "jsdom slot test runtime: real Cordis Context + SlotRegistry + UI renderer with test-owned session/workspace doubles for feature specs", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/llm-mock-server/package.json b/packages/test-support/llm-mock-server/package.json index eda9c672f6..efba8e4d14 100644 --- a/packages/test-support/llm-mock-server/package.json +++ b/packages/test-support/llm-mock-server/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm-mock-server", "description": "Scriptable OpenAI-compatible HTTP/SSE fault server for LLM recovery tests", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/llm-replay/package.json b/packages/test-support/llm-replay/package.json index 245095b254..b316098c5c 100644 --- a/packages/test-support/llm-replay/package.json +++ b/packages/test-support/llm-replay/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-llm-replay", "description": "Replay LLM plugin: short-circuits llm/stream with model chunks reconstructed from a recorded session JSONL (keyless snapshot tests)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/loader-smoke/package.json b/packages/test-support/loader-smoke/package.json index d0bb80d2dd..dbf7331cd9 100644 --- a/packages/test-support/loader-smoke/package.json +++ b/packages/test-support/loader-smoke/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-loader-smoke", "description": "Shared subprocess and direct-agent harness for keyless real-Loader example smoke tests", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/test-support/session-snapshot/package.json b/packages/test-support/session-snapshot/package.json index ba37c3588f..138894273a 100644 --- a/packages/test-support/session-snapshot/package.json +++ b/packages/test-support/session-snapshot/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-session-snapshot", "description": "Session-log snapshot core with an ACP protocol adapter, expected-output normalization, and fixture invariants", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/todo/tool-todo/package.json b/packages/todo/tool-todo/package.json index 4d57bff520..5ca2d72f9d 100644 --- a/packages/todo/tool-todo/package.json +++ b/packages/todo/tool-todo/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-todo", "description": "Model-facing todo_write tool over the DeepSeek Harness event-sourced session log", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/typert/generator/package.json b/packages/typert/generator/package.json index 21cf25f8e9..b3aa62a13c 100644 --- a/packages/typert/generator/package.json +++ b/packages/typert/generator/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-typert-generator", "description": "TypeScript project analyzer and model-driven Typert artifact generator", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/typert/loader/package.json b/packages/typert/loader/package.json index bcbb5548f8..b456b74760 100644 --- a/packages/typert/loader/package.json +++ b/packages/typert/loader/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-typert-loader", "description": "Loader integration for generated Typert package contributions", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/typert/protocol/package.json b/packages/typert/protocol/package.json index 347f804f31..db5a2cc7de 100644 --- a/packages/typert/protocol/package.json +++ b/packages/typert/protocol/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-typert-protocol", "description": "Compiler-independent Remote metadata and Typert provider protocols", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/typert/registry/package.json b/packages/typert/registry/package.json index d2b9e5c60f..c2dc26fb03 100644 --- a/packages/typert/registry/package.json +++ b/packages/typert/registry/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-typert-registry", "description": "Runtime registry for generated package reflection and Zod schemas", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/atomic-write/package.json b/packages/util/atomic-write/package.json index b805131b48..6fdfc94e10 100644 --- a/packages/util/atomic-write/package.json +++ b/packages/util/atomic-write/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-atomic-write", "description": "Zero-dependency atomic file replacement: exclusive-create random-suffix temp + rename carrying the caller-stated permissions (writeFileAtomic)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/brand/package.json b/packages/util/brand/package.json index e389cf15eb..03a8ed4cb9 100644 --- a/packages/util/brand/package.json +++ b/packages/util/brand/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-brand", "description": "Stateless branded primitive types for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/chunked-list/package.json b/packages/util/chunked-list/package.json index 86505ac3bc..ac0e863eaf 100644 --- a/packages/util/chunked-list/package.json +++ b/packages/util/chunked-list/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-chunked-list", "description": "Persistent append-only chunked lists with bounded copying and JSON checkpoint validation", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/crypto/package.json b/packages/util/crypto/package.json index 5ab63eb83a..cc9cfb2a3b 100644 --- a/packages/util/crypto/package.json +++ b/packages/util/crypto/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-util-crypto", "description": "Zero-dependency browser-safe UUID and byte-encoding helpers", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/deque/package.json b/packages/util/deque/package.json index d9f0a1804f..598cb5f035 100644 --- a/packages/util/deque/package.json +++ b/packages/util/deque/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-deque", "description": "Zero-dependency circular deque with amortized constant-time end operations and bounded vacant storage", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/home-paths/package.json b/packages/util/home-paths/package.json index 4187d95fa2..2db1274725 100644 --- a/packages/util/home-paths/package.json +++ b/packages/util/home-paths/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-home-paths", "description": "Shared filesystem path helpers for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/http-proxy/package.json b/packages/util/http-proxy/package.json index 7a8170f50b..347b01616e 100644 --- a/packages/util/http-proxy/package.json +++ b/packages/util/http-proxy/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-http-proxy", "description": "Process-wide outbound HTTP proxy policy for DeepSeek Harness: resolve it from the launch environment and install it as undici's global dispatcher", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/launch-environment/package.json b/packages/util/launch-environment/package.json index 28a01033db..8486d4c28c 100644 --- a/packages/util/launch-environment/package.json +++ b/packages/util/launch-environment/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-launch-environment", "description": "Immutable DeepSeek Harness launch environment that records which layer supplied each value", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/native-command/package.json b/packages/util/native-command/package.json index f4ce7b6ec2..9f1d01ac3b 100644 --- a/packages/util/native-command/package.json +++ b/packages/util/native-command/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-native-command", "description": "Host-native command and path-opening utilities with shell-free execution, cancellation, desktop detection, and WSL handoff", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/output-retention/package.json b/packages/util/output-retention/package.json index 7048e841c1..c13057bbf4 100644 --- a/packages/util/output-retention/package.json +++ b/packages/util/output-retention/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-output-retention", "description": "Zero-dependency bounded-retention primitive: ItemRetainer/TextRetainer + neutral notice helpers (what did we keep, what did we omit)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/package-manifest/package.json b/packages/util/package-manifest/package.json index c9b9121f69..10edfdf497 100644 --- a/packages/util/package-manifest/package.json +++ b/packages/util/package-manifest/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-package-manifest", "description": "Shared type declarations for package.json.dsh configuration fields", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/time/package.json b/packages/util/time/package.json index 81edeb6a94..9c4b1e12e6 100644 --- a/packages/util/time/package.json +++ b/packages/util/time/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-util-time", "description": "Zero-dependency time vocabulary shared by wire boundaries: canonicalClientTimeZone (IANA zone validation and canonicalization only, no formatting)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/timeout/package.json b/packages/util/timeout/package.json index c5fab6aade..0ce35639af 100644 --- a/packages/util/timeout/package.json +++ b/packages/util/timeout/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-timeout", "description": "Zero-dependency timeout/deadline primitive: clampTimeout, deadline, timeoutOf, TimeoutReason (timing + classification only, no termination)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/values/package.json b/packages/util/values/package.json index af71263cbf..296695f127 100644 --- a/packages/util/values/package.json +++ b/packages/util/values/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-util-values", "description": "Duplicate-install-safe value primitives for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/util/workspace-path/package.json b/packages/util/workspace-path/package.json index 3617c53018..a2e8ec073d 100644 --- a/packages/util/workspace-path/package.json +++ b/packages/util/workspace-path/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-util-workspace-path", "description": "Browser-safe Workspace path and display helpers", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/tool-web/package.json b/packages/web/tool-web/package.json index c731904124..60aff70ad0 100644 --- a/packages/web/tool-web/package.json +++ b/packages/web/tool-web/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-web", "description": "Model-facing web tools (web_search, web_fetch) over the DeepSeek Harness web capability seam (ctx.web)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/web-fetch-http/package.json b/packages/web/web-fetch-http/package.json index c81a828ce4..ca30ce34f9 100644 --- a/packages/web/web-fetch-http/package.json +++ b/packages/web/web-fetch-http/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-fetch-http", "description": "Anonymous public HTTP(S) fetch provider for the DeepSeek Harness web capability seam (ctx.web)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/web-search-deepseek/package.json b/packages/web/web-search-deepseek/package.json index 98853ed968..539fa43cb4 100644 --- a/packages/web/web-search-deepseek/package.json +++ b/packages/web/web-search-deepseek/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-search-deepseek", "description": "DeepSeek-backed search provider (native web_search via the Anthropic-compatible API) for the DeepSeek Harness web capability seam (ctx.web)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/web-search-exa/package.json b/packages/web/web-search-exa/package.json index 9e5d349579..8e7a4ee727 100644 --- a/packages/web/web-search-exa/package.json +++ b/packages/web/web-search-exa/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-search-exa", "description": "Exa-backed search provider for the DeepSeek Harness web capability seam (ctx.web)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/web-search-perplexity/package.json b/packages/web/web-search-perplexity/package.json index f0f7b73280..fb8b89a771 100644 --- a/packages/web/web-search-perplexity/package.json +++ b/packages/web/web-search-perplexity/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web-search-perplexity", "description": "Perplexity-backed search provider for the DeepSeek Harness web capability seam (ctx.web)", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/web/web/package.json b/packages/web/web/package.json index b5e92eb755..3edb726b7b 100644 --- a/packages/web/web/package.json +++ b/packages/web/web/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-web", "description": "Abstract web access capability seam (ctx.web) for the DeepSeek Harness — search/fetch provider registry, registration-order-independent selection, request/result vocabulary, and the WebError taxonomy", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/webhook/webhook-github/package.json b/packages/webhook/webhook-github/package.json index 6f40c1fce7..ab473bbd2b 100644 --- a/packages/webhook/webhook-github/package.json +++ b/packages/webhook/webhook-github/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-webhook-github", "description": "Signed GitHub HTTP webhook adapter for the DeepSeek Harness webhook runtime", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/webhook/webhook/package.json b/packages/webhook/webhook/package.json index 5f2277ba07..fae2c0cc69 100644 --- a/packages/webhook/webhook/package.json +++ b/packages/webhook/webhook/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-webhook", "description": "Fire-and-forget webhook rule runtime that creates Workspace-backed DeepSeek Harness Sessions", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/workflow/tool-ralph/package.json b/packages/workflow/tool-ralph/package.json index 70a82b6967..3b16bf9ba3 100644 --- a/packages/workflow/tool-ralph/package.json +++ b/packages/workflow/tool-ralph/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-ralph", "description": "Model-facing fresh-agent Ralph loop over the workflow and subagent seams", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/workflow/tool-workflow/package.json b/packages/workflow/tool-workflow/package.json index 4115427262..f5dbad243b 100644 --- a/packages/workflow/tool-workflow/package.json +++ b/packages/workflow/tool-workflow/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-tool-workflow", "description": "Model-facing workflow tool: run a JavaScript orchestration script over ctx.workflowEngine", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/workflow/workflow-worker-thread/package.json b/packages/workflow/workflow-worker-thread/package.json index 259fe7527e..2a42dd5163 100644 --- a/packages/workflow/workflow-worker-thread/package.json +++ b/packages/workflow/workflow-worker-thread/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-workflow-worker-thread", "description": "worker-thread workflow engine: executes model-written orchestration scripts off the host event loop, bridging agent() calls back to ctx.subagents", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/workflow/workflow/package.json b/packages/workflow/workflow/package.json index f1bfc1f276..e027f779c0 100644 --- a/packages/workflow/workflow/package.json +++ b/packages/workflow/workflow/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-workflow", "description": "Workflow capability seam: ctx.workflowEngine service, run vocabulary, and workflow/* events", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, diff --git a/packages/workspace/workspace/package.json b/packages/workspace/workspace/package.json index b5fb6fe436..eb2151b3ab 100644 --- a/packages/workspace/workspace/package.json +++ b/packages/workspace/workspace/package.json @@ -1,7 +1,7 @@ { "name": "@deepseek-ai/dsh-workspace", "description": "Workspace entity registry (ctx.workspaceRegistry): durable workspace records with validated session attachment over the domain data form for the DeepSeek Harness", - "version": "0.1.5-rc.2", + "version": "0.1.5-rc.3", "publishConfig": { "access": "public" }, From bed4a2b5653f8766293a1c7e8885a0e5445be332 Mon Sep 17 00:00:00 2001 From: winewill <324803222+winewill@users.noreply.github.com> Date: Tue, 22 Sep 2026 14:30:56 +0800 Subject: [PATCH 06/19] fix(desktop): address review of the extraction failure report - Headline skips the archive path 7-Zip echoes before an open failure (also when the path contains spaces) and prefers the operation line. - Raw process statuses such as 0xC0000005 are kept and printed in hex instead of being clamped to INT_MAX. - The expanded panel excerpts the result and 7-Zip's own lines rather than the report header. - The saved report keeps up to 16 MiB of output, records any cut, and trims a partial UTF-8 sequence before decoding. - The details view no longer reads the UTF-8 log as ANSI; the test seam define and the zero-padded GetTime order are documented; the smoke asserts a year-first report name and normalizes -FrameLibrary. - README names the real updater cache directory. --- apps/desktop/README.i18n.yaml | 4 +- apps/desktop/README.md | 2 +- apps/desktop/README.zh.md | 2 +- apps/desktop/installer/extract-report.h | 90 ++++++++++++++----- apps/desktop/installer/extract.h | 7 +- apps/desktop/installer/window-frame.cpp | 2 +- apps/desktop/scripts/installer.nsh | 15 ++-- .../scripts/smoke-installer-directories.ps1 | 3 +- .../windows-installer-extract-report.cpp | 48 +++++++--- 9 files changed, 121 insertions(+), 52 deletions(-) diff --git a/apps/desktop/README.i18n.yaml b/apps/desktop/README.i18n.yaml index f33e5b54c0..a1081d564f 100644 --- a/apps/desktop/README.i18n.yaml +++ b/apps/desktop/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write apps/desktop/README.md -README.md: adb17f4cd3615e407baa7993bec17f8ad70bb1a9 -README.zh.md: 1410e08eec9bbf5c271ea74900e9f1e4562697b0 +README.md: 81871171931a0d49a9063b6514ea1afc897958f2 +README.zh.md: b3931a91c6e299400d093cb6b0b9ada31c435443 diff --git a/apps/desktop/README.md b/apps/desktop/README.md index adb17f4cd3..8187117193 100644 --- a/apps/desktop/README.md +++ b/apps/desktop/README.md @@ -195,7 +195,7 @@ pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis The Windows installer extracts the new version beside the installation directory, stops the old application, and replaces directories through same-volume renames. Same-path upgrades preserve the old directory until promotion succeeds; extraction failure leaves it intact, and promotion failure attempts to restore it. The installer removes the old backup before launch. Forced termination or power loss can leave `.new-*` or `.old-*` directories; installation-location and scope migrations retain electron-builder's old-uninstaller flow. -When extraction fails, the installer writes a report with the 7-Zip result and its complete error output to `%LOCALAPPDATA%\deepseek harness-updater\installer-logs\extract-failure-.log` and shows the first error line with a **Copy error details** button; silent installs write only the report. Unsigned Windows builds (`DSH_DESKTOP_UNSIGNED=1`) name their installer `deepseek-harness--win-x64-unsigned.exe` so they cannot be mistaken for release artifacts. +When extraction fails, the installer writes a report with the 7-Zip result and its complete error output to the updater cache directory as `%LOCALAPPDATA%\-updater\installer-logs\extract-failure-.log` (currently `@deepseek-aidsh-desktop-updater`) and shows the first error line with a **Copy error details** button; silent installs write only the report. Unsigned Windows builds (`DSH_DESKTOP_UNSIGNED=1`) name their installer `deepseek-harness--win-x64-unsigned.exe` so they cannot be mistaken for release artifacts. diff --git a/apps/desktop/README.zh.md b/apps/desktop/README.zh.md index 1410e08eec..b3931a91c6 100644 --- a/apps/desktop/README.zh.md +++ b/apps/desktop/README.zh.md @@ -195,7 +195,7 @@ pwsh -NoProfile -File apps/desktop/scripts/smoke-windows.ps1 -Makensis $Makensis Windows 安装器先将新版本解压到安装目录旁边,再退出旧应用并通过同卷目录改名完成替换。同路径升级在替换成功前保留旧目录;解压失败时旧版不变,替换失败时尝试恢复旧目录。安装器在启动前清理旧版备份。强制结束安装器或断电可能留下 `.new-*` 或 `.old-*` 目录;不同安装位置或安装范围迁移仍使用 electron-builder 的旧卸载器流程。 -解压失败时,安装器会把 7-Zip 的结果和完整错误输出写入 `%LOCALAPPDATA%\deepseek harness-updater\installer-logs\extract-failure-<时间戳>.log`,并在弹窗中显示首条错误行和 **复制错误信息** 按钮;静默安装只写入报告。未签名的 Windows 构建(`DSH_DESKTOP_UNSIGNED=1`)会将安装包命名为 `deepseek-harness-<版本>-win-x64-unsigned.exe`,以免被误当作发布产物。 +解压失败时,安装器会把 7-Zip 的结果和完整错误输出写入更新缓存目录 `%LOCALAPPDATA%\<按包名派生>-updater\installer-logs\extract-failure-<时间戳>.log`(当前为 `@deepseek-aidsh-desktop-updater`),并在弹窗中显示首条错误行和 **复制错误信息** 按钮;静默安装只写入报告。未签名的 Windows 构建(`DSH_DESKTOP_UNSIGNED=1`)会将安装包命名为 `deepseek-harness-<版本>-win-x64-unsigned.exe`,以免被误当作发布产物。 diff --git a/apps/desktop/installer/extract-report.h b/apps/desktop/installer/extract-report.h index eb83f431a5..c885816c75 100644 --- a/apps/desktop/installer/extract-report.h +++ b/apps/desktop/installer/extract-report.h @@ -10,11 +10,13 @@ namespace extract_report { -constexpr size_t kOutputLimit = 256 * 1024; +constexpr size_t kOutputLimit = 16 * 1024 * 1024; constexpr size_t kHeadlineLimit = 160; constexpr size_t kExcerptLineLimit = 120; constexpr size_t kExcerptLines = 10; constexpr size_t kExcerptChars = 1000; +constexpr wchar_t kEllipsis = 0x2026; +constexpr wchar_t kOutputMarker[] = L"7-Zip output:"; // Exit codes documented by 7-Zip; the installer treats every non-zero value as fatal. inline const wchar_t* SevenZipMeaning(int code) { @@ -49,8 +51,6 @@ inline std::vector Lines(const std::wstring& text) { return lines; } -constexpr wchar_t kEllipsis = 0x2026; - inline std::wstring Truncate(const std::wstring& text, size_t limit) { if (text.size() <= limit) return text; return text.substr(0, limit - 1) + kEllipsis; @@ -65,24 +65,47 @@ inline std::wstring Win32Message(DWORD error) { return message; } -// Positive results are 7-Zip exit codes; negative results are negated Win32 errors from launching or supervising it. -inline std::wstring DescribeResult(int code) { - if (code >= 0) return L"7-Zip exit code " + std::to_wstring(code) + L" (" + SevenZipMeaning(code) + L")"; - const DWORD error = static_cast(-static_cast(code)); - std::wstring message = Win32Message(error); - return L"Windows error " + std::to_wstring(error) + L" while running 7-Zip" + (message.empty() ? L"" : L" (" + message + L")"); +// Positive results up to 255 are 7-Zip exit codes and small negative results are negated Win32 errors from launching or +// supervising it; anything else is the raw process status (for example an NTSTATUS from a crash), printed in hex. +constexpr int kMaxSevenZipExitCode = 255; +constexpr int kMaxWin32Error = 0xFFFF; + +inline std::wstring HexStatus(int code) { + WCHAR text[16]; + wsprintfW(text, L"0x%08X", static_cast(code)); + return text; } -// 7-Zip prefixes the failing operation and path with "ERROR:"; the bare archive name it prints first says nothing. -inline std::wstring Headline(int code, const std::wstring& output) { +inline std::wstring DescribeResult(int code) { + if (code >= 0 && code <= kMaxSevenZipExitCode) { + return L"7-Zip exit code " + std::to_wstring(code) + L" (" + SevenZipMeaning(code) + L")"; + } + if (code < 0 && -static_cast(code) <= kMaxWin32Error) { + const DWORD error = static_cast(-static_cast(code)); + std::wstring message = Win32Message(error); + return L"Windows error " + std::to_wstring(error) + L" while running 7-Zip" + (message.empty() ? L"" : L" (" + message + L")"); + } + return L"7-Zip terminated with status " + HexStatus(code); +} + +inline bool EqualsIgnoreCase(const std::wstring& left, const std::wstring& right) { + return left.size() == right.size() && _wcsnicmp(left.c_str(), right.c_str(), left.size()) == 0; +} + +// 7-Zip reports failures as " ERROR: " or "ERROR: : : "; it also echoes the +// bare archive path after "ERROR:" before an open failure, which names nothing and is skipped. +inline std::wstring Headline(int code, const std::wstring& output, const std::wstring& archive) { + const auto separator = archive.find_last_of(L"\\/"); + const std::wstring archiveName = separator == std::wstring::npos ? archive : archive.substr(separator + 1); std::wstring fallback; for (const std::wstring& raw : Lines(output)) { const std::wstring line = Trim(raw); const auto marker = line.find(L"ERROR"); if (marker == std::wstring::npos) continue; - const std::wstring detail = Trim(line.substr(line.find(L':', marker) == std::wstring::npos ? line.size() : line.find(L':', marker) + 1)); - if (detail.empty()) continue; - if (detail.find(L" : ") != std::wstring::npos || detail.find(L' ') != std::wstring::npos) return Truncate(line, kHeadlineLimit); + const auto colon = line.find(L':', marker); + const std::wstring detail = colon == std::wstring::npos ? L"" : Trim(line.substr(colon + 1)); + if (detail.empty() || EqualsIgnoreCase(detail, archive) || EqualsIgnoreCase(detail, archiveName)) continue; + if (detail.find(L" : ") != std::wstring::npos) return Truncate(line, kHeadlineLimit); if (fallback.empty()) fallback = line; } if (!fallback.empty()) return Truncate(fallback, kHeadlineLimit); @@ -97,7 +120,7 @@ inline std::wstring Compose(int code, const std::wstring& archive, const std::ws report += L"Archive: " + archive + L"\r\n"; report += L"Destination: " + destination + L"\r\n"; report += L"Windows: " + windowsVersion + L"\r\n"; - report += L"\r\n7-Zip output:\r\n"; + report += L"\r\n" + std::wstring(kOutputMarker) + L"\r\n"; const std::wstring trimmed = Trim(output); if (trimmed.empty()) { report += L"(none)\r\n"; @@ -107,9 +130,16 @@ inline std::wstring Compose(int code, const std::wstring& archive, const std::ws return report; } -// The dialog stays compact: long lines are cut and a trailing note counts what the report still holds. +// The expanded panel adds 7-Zip's own lines beneath the result; long lines are cut and a trailing note counts what the +// saved report still holds. Header fields already appear in the report file and clipboard. inline std::wstring Excerpt(const std::wstring& report, size_t maxLines = kExcerptLines, size_t maxChars = kExcerptChars) { - const std::vector lines = Lines(Trim(report)); + std::vector lines; + bool inOutput = false; + for (const std::wstring& line : Lines(Trim(report))) { + if (inOutput) lines.push_back(line); + else if (line.rfind(L"Result: ", 0) == 0) lines.push_back(line); + else if (line == kOutputMarker) inOutput = true; + } std::wstring excerpt; size_t shown = 0; for (const std::wstring& line : lines) { @@ -124,6 +154,16 @@ inline std::wstring Excerpt(const std::wstring& report, size_t maxLines = kExcer return excerpt; } +// A cut inside a multi-byte sequence would make the whole UTF-8 attempt fail; drop the incomplete tail first. +inline void TrimPartialUtf8(std::string& bytes) { + size_t trailing = 0; + while (trailing < 3 && trailing < bytes.size() && (static_cast(bytes[bytes.size() - 1 - trailing]) & 0xC0) == 0x80) ++trailing; + if (trailing >= bytes.size()) return; + const unsigned char lead = static_cast(bytes[bytes.size() - 1 - trailing]); + const size_t expected = lead >= 0xF0 ? 4 : lead >= 0xE0 ? 3 : lead >= 0xC0 ? 2 : 1; + if (expected > trailing + 1) bytes.resize(bytes.size() - 1 - trailing); +} + inline std::wstring Decode(const std::string& bytes) { if (bytes.empty()) return L""; for (UINT codePage : {static_cast(CP_UTF8), static_cast(CP_ACP)}) { @@ -137,17 +177,27 @@ inline std::wstring Decode(const std::string& bytes) { return L"(undecodable 7-Zip output)"; } +// The saved report keeps everything 7-Zip wrote; only pathological output beyond kOutputLimit is cut, and the cut is recorded. inline std::wstring ReadOutput(LPCWSTR path) { HANDLE file = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); if (file == INVALID_HANDLE_VALUE) return L""; std::string bytes; char buffer[8192]; DWORD count = 0; - while (bytes.size() < kOutputLimit && ReadFile(file, buffer, sizeof(buffer), &count, nullptr) && count) { - bytes.append(buffer, std::min(count, kOutputLimit - bytes.size())); + bool truncated = false; + while (ReadFile(file, buffer, sizeof(buffer), &count, nullptr) && count) { + if (bytes.size() + count > kOutputLimit) { + bytes.append(buffer, kOutputLimit - bytes.size()); + truncated = true; + break; + } + bytes.append(buffer, count); } CloseHandle(file); - return Decode(bytes); + if (truncated) TrimPartialUtf8(bytes); + std::wstring output = Decode(bytes); + if (truncated) output += L"\r\n[7-Zip output truncated after " + std::to_wstring(kOutputLimit / (1024 * 1024)) + L" MiB]\r\n"; + return output; } inline std::wstring Timestamp() { diff --git a/apps/desktop/installer/extract.h b/apps/desktop/installer/extract.h index af30077912..f63a94061b 100644 --- a/apps/desktop/installer/extract.h +++ b/apps/desktop/installer/extract.h @@ -1,6 +1,5 @@ // The pinned 7-Zip executable owns extraction; this pipe reader publishes its work percentage. #pragma once -#include #include #include #include "extract-progress.h" @@ -92,11 +91,13 @@ static int ExtractApplication(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWST DWORD result; if (!GetExitCodeProcess(process.value, &result)) return LaunchFailure(GetLastError()); if (result == 0 && parent) SetPropW(parent, L"HarnessInstaller.ExtractProgress", reinterpret_cast(100)); - return result > INT_MAX ? INT_MAX : static_cast(result); + // A crash status such as 0xC0000005 comes back bit-for-bit; the report prints anything beyond 7-Zip's exit codes in hex. + return static_cast(result); } // Runs on the NSIS worker; only an exit code of zero permits directory promotion. -// Positive results are 7-Zip exit codes; negative results are negated Win32 errors from launching or supervising it. +// Results 0-255 are 7-Zip exit codes, small negative results are negated Win32 errors from launching or supervising it, +// and any other value is the raw process status. extern "C" __declspec(dllexport) int __cdecl InstallerExtract(HWND parent, LPCWSTR tool, LPCWSTR archive, LPCWSTR destination, LPCWSTR log) { try { return ExtractApplication(parent, tool, archive, destination, log); } catch (const std::bad_alloc&) { return LaunchFailure(ERROR_NOT_ENOUGH_MEMORY); } diff --git a/apps/desktop/installer/window-frame.cpp b/apps/desktop/installer/window-frame.cpp index 0a81fae33e..889ede54f0 100644 --- a/apps/desktop/installer/window-frame.cpp +++ b/apps/desktop/installer/window-frame.cpp @@ -32,7 +32,7 @@ extern "C" __declspec(dllexport) int __cdecl InstallerReportExtractFailure( const auto placeholder = footer.find(L"%s"); if (saved && placeholder != std::wstring::npos) footer.replace(placeholder, 2, reportPath); const extract_report::DialogStrings strings{title, heading, copy, expand, collapse, footer.c_str(), copied}; - const std::wstring content = extract_report::Headline(code, output) + L"\r\n\r\n" + hint; + const std::wstring content = extract_report::Headline(code, output, archive) + L"\r\n\r\n" + hint; extract_report::Show(parent, content, extract_report::Excerpt(report), report, strings); } return saved ? 1 : 0; diff --git a/apps/desktop/scripts/installer.nsh b/apps/desktop/scripts/installer.nsh index 7ddda5aa85..5980287859 100644 --- a/apps/desktop/scripts/installer.nsh +++ b/apps/desktop/scripts/installer.nsh @@ -121,19 +121,13 @@ ManifestDPIAware true System::Call /NOUNLOAD '$PLUGINSDIR\window-frame.dll::InstallerExtract(p $HWNDPARENT, w "$PLUGINSDIR\dsh-7za.exe", w "${Archive}", w "$INSTDIR", w "$PLUGINSDIR\extract.log") i.s ?c' System::Store "L" Pop $R0 + ; The failure report owns 7-Zip's UTF-8 output; the details view only needs the result code. StrCpy $R1 "$R0" - ${If} $R0 != 0 - Push $0 - FileOpen $0 "$PLUGINSDIR\extract.log" r - ${IfNot} ${Errors} - FileRead $0 $R1 - FileClose $0 - ${EndIf} - Pop $0 - ${EndIf} !macroend -; The report outlives $PLUGINSDIR so a user can send it; silent installs keep only the file. +; The report outlives $PLUGINSDIR so a user can send it; silent installs keep only the file. The updater cache +; directory is never an installation target and leaves with the application on uninstall. +; The directory smoke fixture predefines DSH_INSTALLER_LOG_DIR to keep reports inside its scratch tree. !ifndef DSH_INSTALLER_LOG_DIR !define DSH_INSTALLER_LOG_DIR "$LOCALAPPDATA\${DSH_UPDATER_CACHE_NAME}\installer-logs" !endif @@ -146,6 +140,7 @@ ManifestDPIAware true Push $4 Push $5 Push $6 + ; GetTime yields zero-padded day, month, year, weekday, hour, minute, second. ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6 StrCpy $0 "${DSH_INSTALLER_LOG_DIR}\extract-failure-$2$1$0-$4$5$6.log" StrCpy $1 1 diff --git a/apps/desktop/scripts/smoke-installer-directories.ps1 b/apps/desktop/scripts/smoke-installer-directories.ps1 index 283f168016..092750b2c1 100644 --- a/apps/desktop/scripts/smoke-installer-directories.ps1 +++ b/apps/desktop/scripts/smoke-installer-directories.ps1 @@ -8,6 +8,7 @@ param( $ErrorActionPreference = 'Stop' $Makensis = [System.IO.Path]::GetFullPath($Makensis) $SevenZip = [System.IO.Path]::GetFullPath($SevenZip) +if ($FrameLibrary) { $FrameLibrary = [System.IO.Path]::GetFullPath($FrameLibrary) } $scratch = [System.IO.Directory]::CreateTempSubdirectory('dsh-directory-smoke-').FullName $fixture = Join-Path $PSScriptRoot '../tests/fixtures/installer-directory-smoke.nsi' @@ -84,7 +85,7 @@ try { # Only an extraction failure writes a report; it must quote 7-Zip's verdict so support can read the cause. $reports = @(if (Test-Path -LiteralPath $reportDir) { Get-ChildItem -LiteralPath $reportDir -File }) if ($mode -eq 'broken') { - if ($reports.Count -ne 1 -or $reports[0].Name -notmatch '^extract-failure-\d{8}-\d{6}\.log$') { + if ($reports.Count -ne 1 -or $reports[0].Name -notmatch '^extract-failure-20\d{6}-\d{6}\.log$') { throw "Directory smoke $mode did not save exactly one extraction report" } $report = Get-Content -LiteralPath $reports[0].FullName -Raw -Encoding UTF8 diff --git a/apps/desktop/tests/windows-installer-extract-report.cpp b/apps/desktop/tests/windows-installer-extract-report.cpp index ea73fd2fd1..355d16dd94 100644 --- a/apps/desktop/tests/windows-installer-extract-report.cpp +++ b/apps/desktop/tests/windows-installer-extract-report.cpp @@ -36,21 +36,28 @@ static void WriteBytes(const std::wstring& path, const std::string& bytes) { int wmain() { using namespace extract_report; - // Result codes distinguish 7-Zip's own exit codes from Win32 failures around its process. + // Result codes distinguish 7-Zip's own exit codes, Win32 failures around its process, and raw crash statuses. assert(DescribeResult(2) == L"7-Zip exit code 2 (fatal error)"); assert(DescribeResult(9) == L"7-Zip exit code 9 (unexpected exit code)"); assert(DescribeResult(-5).rfind(L"Windows error 5 while running 7-Zip", 0) == 0); assert(Contains(DescribeResult(-ERROR_FILE_NOT_FOUND), L"Windows error 2")); + assert(DescribeResult(static_cast(0xC0000005)) == L"7-Zip terminated with status 0xC0000005"); + assert(DescribeResult(1000) == L"7-Zip terminated with status 0x000003E8"); - // The headline prefers the line naming the failing operation over the archive name 7-Zip prints first. - const std::wstring broken = L"ERROR: broken.7z\r\nbroken.7z\r\nOpen ERROR: Cannot open the file as [7z] archive\r\n\r\n\r\nERRORS:\r\nIs not archive\r\n"; - assert(Headline(2, broken) == L"Open ERROR: Cannot open the file as [7z] archive"); + // The headline prefers the line naming the failing operation; the archive path 7-Zip echoes first is skipped + // even when it contains spaces. + const std::wstring spacedArchive = L"C:\\Users\\Jane Doe\\AppData\\Local\\Temp\\nsa1F2C.tmp\\app-64.7z"; + const std::wstring broken = L"ERROR: " + spacedArchive + L"\r\napp-64.7z\r\nOpen ERROR: Cannot open the file as [7z] archive\r\n\r\n\r\nERRORS:\r\nIs not archive\r\n"; + assert(Headline(2, broken, spacedArchive) == L"Open ERROR: Cannot open the file as [7z] archive"); + assert(Headline(2, L"ERROR: app-64.7z\r\nOpen ERROR: Is not archive\r\n", spacedArchive) == L"Open ERROR: Is not archive"); const std::wstring locked = L"ERROR: Cannot delete output file : The process cannot access the file. : C:\\Apps\\Harness.new-1\\resources\\app.node\r\n"; - assert(Headline(2, locked) == Trim(locked)); - assert(Headline(-ERROR_ACCESS_DENIED, L"") == DescribeResult(-ERROR_ACCESS_DENIED)); - assert(Headline(1, L"ERROR: only-a-path\r\n") == L"ERROR: only-a-path"); + assert(Headline(2, locked, spacedArchive) == Trim(locked)); + assert(Headline(2, L"ERROR: " + spacedArchive + L"\r\n" + locked, spacedArchive) == Trim(locked)); + assert(Headline(-ERROR_ACCESS_DENIED, L"", spacedArchive) == DescribeResult(-ERROR_ACCESS_DENIED)); + assert(Headline(2, L"ERROR: " + spacedArchive + L"\r\n", spacedArchive) == DescribeResult(2)); + assert(Headline(1, L"ERROR: only a note\r\n", spacedArchive) == L"ERROR: only a note"); const std::wstring longLine = L"ERROR: Cannot open output file : " + std::wstring(400, L'x'); - const std::wstring headline = Headline(2, longLine); + const std::wstring headline = Headline(2, longLine, spacedArchive); assert(headline.size() == kHeadlineLimit && headline.back() == kEllipsis); // The report carries the result, both paths, and 7-Zip's output verbatim. @@ -62,15 +69,30 @@ int wmain() { assert(Contains(report, L"\r\n7-Zip output:\r\n" + Trim(locked) + L"\r\n")); assert(Contains(Compose(2, L"a", L"b", L" \r\n", L"t", L"w"), L"7-Zip output:\r\n(none)\r\n")); - // The excerpt is bounded by lines and characters and tells how much the saved report still holds. + // The excerpt shows the result and 7-Zip's own lines, bounded by lines and characters, and counts what it left out. std::wstring manyErrors; for (int i = 0; i < 40; ++i) manyErrors += L"ERROR: Cannot open output file : Access is denied. : C:\\Apps\\file" + std::to_wstring(i) + L".dll\r\n"; const std::wstring excerpt = Excerpt(Compose(2, L"a", L"b", manyErrors, L"t", L"w")); - assert(Lines(excerpt).size() == kExcerptLines + 1); + const std::vector excerptLines = Lines(excerpt); + assert(excerptLines.size() == kExcerptLines + 1); + assert(excerptLines[0] == L"Result: 7-Zip exit code 2 (fatal error)"); + assert(excerptLines[1].rfind(L"ERROR: Cannot open output file", 0) == 0); assert(excerpt.size() <= kExcerptChars + 64); - assert(Contains(excerpt, L" (" + std::to_wstring(48 - kExcerptLines) + L" more lines in the saved report)")); - assert(Excerpt(L"one\r\ntwo") == L"one\r\ntwo"); - assert(Excerpt(std::wstring(2000, L'x') + L"\r\nnext").size() < kExcerptLineLimit + 64); + assert(Contains(excerpt, L" (" + std::to_wstring(41 - kExcerptLines) + L" more lines in the saved report)")); + assert(!Contains(excerpt, L"Archive: ")); + assert(Excerpt(Compose(2, L"a", L"b", L"one\r\ntwo", L"t", L"w")) == L"Result: 7-Zip exit code 2 (fatal error)\r\none\r\ntwo"); + assert(Excerpt(Compose(2, L"a", L"b", std::wstring(2000, L'x'), L"t", L"w")).size() < 64 + kExcerptLineLimit + 64); + + // A cut inside a multi-byte sequence is trimmed back to a code point boundary. + std::string partial("abc\xE6\x96\x87\xE4\xBB"); + TrimPartialUtf8(partial); + assert(partial == "abc\xE6\x96\x87"); + std::string complete("abc\xE6\x96\x87"); + TrimPartialUtf8(complete); + assert(complete == "abc\xE6\x96\x87"); + std::string ascii("abc"); + TrimPartialUtf8(ascii); + assert(ascii == "abc"); // 7-Zip output arrives as UTF-8; anything else falls back to the system code page instead of vanishing. assert(Decode("Access denied: \xE6\x96\x87\xE4\xBB\xB6") == L"Access denied: \x6587\x4EF6"); From b6775f6d4f55eaa0bcac36318cd7dfc98d70195c Mon Sep 17 00:00:00 2001 From: turtle1999 Date: Tue, 22 Sep 2026 15:29:23 +0800 Subject: [PATCH 07/19] fix(tool-jobs): wake an idle owner for every completion by default `maxConsecutiveWakes` no longer defaults to 3. Unset, every background job completion wakes its idle owner; the cap is opt-in. With the default cap, a session chaining background commands and one-shot subagents exhausted the budget after three wakes. The fourth notice was injected into the next-step inbox without waking the owner, the client showed nothing, and the session stalled until the user typed something (dsh-external/issues#641). Closes dsh-external/issues#641 --- ...b-completion-wakes-an-idle-owner.i18n.yaml | 4 +-- ...ound-job-completion-wakes-an-idle-owner.md | 2 ++ ...d-job-completion-wakes-an-idle-owner.zh.md | 2 ++ docs/config-catalog.i18n.yaml | 4 +-- docs/config-catalog.md | 8 +++-- docs/config-catalog.zh.md | 8 +++-- packages/jobs/tool-jobs/README.i18n.yaml | 4 +-- packages/jobs/tool-jobs/README.md | 12 ++++---- packages/jobs/tool-jobs/README.zh.md | 12 ++++---- packages/jobs/tool-jobs/src/index.ts | 29 ++++++++++--------- .../jobs/tool-jobs/tests/tool-jobs.spec.ts | 19 ++++++++++-- 11 files changed, 64 insertions(+), 40 deletions(-) diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml index 0c51d4b42e..a38790ad6e 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md -2026-08-11-background-job-completion-wakes-an-idle-owner.md: b8a10a2150ead02036cb97506a25c3a51202adcf -2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: adc0770cd00adeb3b13c95dcc386464493dcd943 +2026-08-11-background-job-completion-wakes-an-idle-owner.md: 0844948eaa8e58e9d22667eb0962865a17969c07 +2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: d09454d17b8f1b579305cc1e98540d5ecb2f2d4f diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md index b8a10a2150..0844948eaa 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md @@ -4,6 +4,8 @@ Status: implemented Update: the `reported` bit and `onJobDone` this note relies on left the registry with the [jobs seam consolidation](../architecture/2026-09-03-jobs-seam-consolidation.md): `dsh-tool-jobs` now keeps the delivery ledger (a wait or an accepted `job_kill` claims the task) and skips teardown settlements by their `settled` cause, so the wake-or-inject decision below stands while the mechanism it names is the tool's ledger, not a registry flag. +Update: `maxConsecutiveWakes` no longer defaults to 3; unset, every idle completion wakes its owner. The accepted risk below — a spent budget is restored only by user input — was reported as a bug ([dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641)): a session mixing background commands and one-shot subagents exhausted the budget after three wakes, the fourth notice parked silently in the next-step inbox with nothing visible in the client, and the model's "you are notified when a job finishes" promise turned false exactly when the user was away. An invisible stall costs more than an unbounded chain of model requests the user can watch and stop, so the cap is opt-in. The self-exciting rationale for the field stands for deployments that set it. + English | [中文](2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md) ## Problem diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md index adc0770cd0..d09454d17b 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md @@ -4,6 +4,8 @@ Status: implemented Update:本文依赖的 `reported` 位与 `onJobDone` 已随 [jobs seam 收敛](../architecture/2026-09-03-jobs-seam-consolidation.zh.md)离开注册表:`dsh-tool-jobs` 现在持有投递台账(等待或被接受的 `job_kill` 认领任务),并按 `settled` 事件的 cause 跳过 teardown 结算,因此下文唤醒或注入的决策仍然成立,只是它提到的机制是工具的台账而非注册表标志。 +Update:`maxConsecutiveWakes` 不再默认为 3;未设置时每次空闲完成都会唤醒所有者。下文"已花掉的预算只由用户输入恢复"这条接受的风险被报告为缺陷([dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641)):一个会话混用后台命令与一次性子代理,三次唤醒后预算耗尽,第四条通知静默停在 next-step inbox 里,客户端毫无显示,而模型得到的"任务完成会通知你"承诺恰好在用户离开时失效。不可见的停摆比一条用户能看到并能停止的、无上限的模型请求链代价更高,因此上限改为可选。自激链的理由对设置了该字段的部署依然成立。 + [English](2026-08-11-background-job-completion-wakes-an-idle-owner.md) | 中文 ## 问题 diff --git a/docs/config-catalog.i18n.yaml b/docs/config-catalog.i18n.yaml index 22a29bf6ac..5b3de07b40 100644 --- a/docs/config-catalog.i18n.yaml +++ b/docs/config-catalog.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/config-catalog.md -config-catalog.md: f86f02fbec949c0212c3c038f47d1fdf50d239fe -config-catalog.zh.md: d56d5bdef41e76ce7a41e3d582a1a8afde18766b +config-catalog.md: a9616098f2e5adfb7061bec0dc8d66c7600f91e3 +config-catalog.zh.md: d53d3a93923c45e04820c10204b8380feb2d2da2 diff --git a/docs/config-catalog.md b/docs/config-catalog.md index f86f02fbec..a9616098f2 100644 --- a/docs/config-catalog.md +++ b/docs/config-catalog.md @@ -3405,9 +3405,11 @@ export interface Config { completionDelivery?: CompletionDelivery /** * Turns one owner may have opened by completion wakes before the next - * notice degrades to injection, reset by any user-authored input (default 3). - * Bounds the self-exciting chain where a woken turn starts the job whose - * completion wakes it again. + * notice degrades to injection, reset by any user-authored input. Absent by + * default: every idle completion wakes its owner. Set it to bound the + * self-exciting chain where a woken turn starts the job whose completion + * wakes it again, at the cost of notices past the cap waiting silently for + * the next user input. */ maxConsecutiveWakes?: number } diff --git a/docs/config-catalog.zh.md b/docs/config-catalog.zh.md index d56d5bdef4..d53d3a9392 100644 --- a/docs/config-catalog.zh.md +++ b/docs/config-catalog.zh.md @@ -3407,9 +3407,11 @@ export interface Config { completionDelivery?: CompletionDelivery /** * Turns one owner may have opened by completion wakes before the next - * notice degrades to injection, reset by any user-authored input (default 3). - * Bounds the self-exciting chain where a woken turn starts the job whose - * completion wakes it again. + * notice degrades to injection, reset by any user-authored input. Absent by + * default: every idle completion wakes its owner. Set it to bound the + * self-exciting chain where a woken turn starts the job whose completion + * wakes it again, at the cost of notices past the cap waiting silently for + * the next user input. */ maxConsecutiveWakes?: number } diff --git a/packages/jobs/tool-jobs/README.i18n.yaml b/packages/jobs/tool-jobs/README.i18n.yaml index f6b8dc12ed..d76b088fdc 100644 --- a/packages/jobs/tool-jobs/README.i18n.yaml +++ b/packages/jobs/tool-jobs/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/tool-jobs/README.md -README.md: 38cf89961d3bbf13d803bef206cbe843726f31ab -README.zh.md: 9a6c1c01103f03c5e9915094714bcecadf473042 +README.md: 2836f10e160ae3ecfe9a2df7f6b82a88b4ddf33f +README.zh.md: b5b702ab5f8ca4c72545f3e46899a3f01624eb42 diff --git a/packages/jobs/tool-jobs/README.md b/packages/jobs/tool-jobs/README.md index 38cf89961d..2836f10e16 100644 --- a/packages/jobs/tool-jobs/README.md +++ b/packages/jobs/tool-jobs/README.md @@ -9,7 +9,7 @@ English | [中文](README.zh.md) ## Summary -Use `dsh-tool-jobs` to inspect and control background commands, PTY work, and subagents through `job_output`, `job_list`, and `job_kill`. Reads can wait within a configured timeout, list results identify each job's kind and status, and cancellation settles only after the work stops. When owned work finishes, the agent receives an in-session notice: busy agents receive it in their next step, while idle agents may be woken by a bounded follow-up turn. Configuration controls wait limits, completion delivery, and consecutive wakeups. Stream output is consumed by one reader, and pending notices do not survive owner disposal. +Use `dsh-tool-jobs` to inspect and control background commands, PTY work, and subagents through `job_output`, `job_list`, and `job_kill`. Reads can wait within a configured timeout, list results identify each job's kind and status, and cancellation settles only after the work stops. When owned work finishes, the agent receives an in-session notice: busy agents receive it in their next step, while idle agents are woken by a follow-up turn. Configuration controls wait limits, completion delivery, and an optional cap on consecutive wakeups. Stream output is consumed by one reader, and pending notices do not survive owner disposal. ## Table of Contents @@ -39,7 +39,7 @@ The three tools return `{ text, job }`, `PublicJobSnapshot[]`, and `{ outcome: ' When a job finishes, the owning agent receives `background job (:
-
└ +{added} -{removed} · {labels.files(files)}
) } diff --git a/packages/client/ui-primitives/src/markdown/CodeBlock.module.css b/packages/client/ui-primitives/src/markdown/CodeBlock.module.css index 49bcfe33a7..fa76358887 100644 --- a/packages/client/ui-primitives/src/markdown/CodeBlock.module.css +++ b/packages/client/ui-primitives/src/markdown/CodeBlock.module.css @@ -105,7 +105,7 @@ } .card :where(pre) { - padding: 6px 18px 16px; + padding: 6px 22px 20px; word-break: normal; overflow-wrap: anywhere; } diff --git a/packages/client/ui-primitives/src/markdown/CodeBlock.tsx b/packages/client/ui-primitives/src/markdown/CodeBlock.tsx index 8eb85821b9..51d175393d 100644 --- a/packages/client/ui-primitives/src/markdown/CodeBlock.tsx +++ b/packages/client/ui-primitives/src/markdown/CodeBlock.tsx @@ -36,7 +36,7 @@ export interface CodeBlockProps { copyLabel: string /** Copy-button label during the post-copy confirmation window. */ copiedLabel: string - /** Enable the shared card toolbar and spacing; omit for owner-styled source or compact views. */ + /** Enable the shared card toolbar and spacing; omit for custom toolbar layouts. */ toolbarLabels?: CodeToolbarLabels | undefined /** With toolbarLabels, use the owner's wrapping preference and omit the toolbar's local wrap action. */ wrap?: boolean | undefined diff --git a/packages/client/ui-primitives/src/markdown/MarkdownText.module.css b/packages/client/ui-primitives/src/markdown/MarkdownText.module.css index db318ac6eb..e3c5b31953 100644 --- a/packages/client/ui-primitives/src/markdown/MarkdownText.module.css +++ b/packages/client/ui-primitives/src/markdown/MarkdownText.module.css @@ -401,24 +401,6 @@ z-index: auto; } -.compact [data-code-block-banner] { - padding: 4px 8px; - font: inherit; -} - -.compact [data-code-block-banner] > :first-child { - font-size: inherit; - line-height: inherit; - color: inherit; -} - -.compact pre { - margin: 4px 0; - padding: 8px; - font-size: inherit; - line-height: inherit; -} - /* Shiki writes token colors inline; compact code uses the surrounding text color. */ .compact pre, .compact pre :is(code, span) { diff --git a/packages/client/ui-primitives/src/markdown/MarkdownText.tsx b/packages/client/ui-primitives/src/markdown/MarkdownText.tsx index 25b9a00172..ab2c0b380a 100644 --- a/packages/client/ui-primitives/src/markdown/MarkdownText.tsx +++ b/packages/client/ui-primitives/src/markdown/MarkdownText.tsx @@ -172,7 +172,7 @@ class StreamingRenderer { * absolute HTTP(S) images render directly. */ export const MarkdownText = memo(function MarkdownText({ - text, streaming = false, labels: providedLabels, fileMentions, pathImages, variant = 'body', + text, streaming = false, labels, fileMentions, pathImages, variant = 'body', }: { text: string streaming?: boolean @@ -181,9 +181,6 @@ export const MarkdownText = memo(function MarkdownText({ pathImages?: MarkdownPathImages | undefined variant?: 'body' | 'compact' }) { - const labels = useMemo(() => variant === 'compact' - ? { ...providedLabels, code: { ...providedLabels.code, toolbarLabels: undefined } } - : providedLabels, [providedLabels, variant]) const streamRef = useRef(null) const streamLabelsRef = useRef(labels) const children = useMemo(() => { diff --git a/packages/client/ui-primitives/src/markdown/render.tsx b/packages/client/ui-primitives/src/markdown/render.tsx index a7bb8a2365..84a9c2857a 100644 --- a/packages/client/ui-primitives/src/markdown/render.tsx +++ b/packages/client/ui-primitives/src/markdown/render.tsx @@ -37,7 +37,7 @@ export interface MarkdownCodeLabels { copyLabel: string /** Copy-button label during the post-copy confirmation window. */ copiedLabel: string - /** Shared card controls; omitted in compact and owner-styled source views. */ + /** Shared card controls; omitted for custom toolbar layouts. */ toolbarLabels?: CodeToolbarLabels | undefined } diff --git a/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx index e4b152650f..62d448f499 100644 --- a/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx +++ b/packages/client/ui-primitives/tests/code-card-controls.client.spec.tsx @@ -78,11 +78,13 @@ describe('code-card controls', () => { } }) - it('preserves compact Markdown and owner-styled source controls', () => { + it('shows compact Markdown icon actions and preserves custom source controls', () => { const view = render() - expect(screen.queryByRole('button', { name: 'Wrap lines' })).toBeNull() - expect(screen.queryByRole('button', { name: 'Do not wrap lines' })).toBeNull() - expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('Copy') + const wrap = screen.getByRole('button', { name: 'Wrap lines' }) + expect(wrap.getAttribute('aria-pressed')).toBe('true') + fireEvent.click(wrap) + expect(wrap.getAttribute('aria-pressed')).toBe('false') + expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('') view.rerender() expect(screen.getByRole('button', { name: 'Copy' }).textContent).toBe('Copy') }) diff --git a/packages/client/ui-primitives/tests/diff-block.client.spec.tsx b/packages/client/ui-primitives/tests/diff-block.client.spec.tsx index 391fbfda51..2aaa72501b 100644 --- a/packages/client/ui-primitives/tests/diff-block.client.spec.tsx +++ b/packages/client/ui-primitives/tests/diff-block.client.spec.tsx @@ -75,18 +75,15 @@ describe('DiffBlock structure', () => { }) it('treats a trailing newline as a terminator, not an extra blank line', () => { - // A create whose newText ends in a newline is one added line, not two, and - // the footer counts one — the phantom `+ ` empty line the naive split drew. const { container } = render() expect(changeRows(container)).toEqual(['hello']) - expect(screen.getByText('└ +1 -0 · 1 file')).toBeTruthy() }) it('renders a full deletion as removed-only with no phantom added line', () => { // newText '' is zero added lines: an empty string must contribute nothing. const { container } = render() expect(container.querySelectorAll('[class*="_add_"]').length).toBe(0) - expect(screen.getByText('└ +0 -2 · 1 file')).toBeTruthy() + expect(changeRows(container)).toEqual(['a', 'b']) }) it('keeps a genuine interior blank line', () => { @@ -105,7 +102,6 @@ describe('DiffBlock local changes', () => { const total = count === 128 ? count : count + 1 render() expect(diffTotals(diffs)).toEqual({ added: total, removed: total }) - expect(screen.getByText(`└ +${total} -${total} · 1 file`)).toBeTruthy() await act(async () => { fireEvent.click(screen.getByRole('button', { name: '复制' })) }) expect(writeText).toHaveBeenCalledWith(count === 128 ? ['large.txt', ' shared context', ...oldLines.slice(1).map(line => `- ${line}`), ...newLines.slice(1).map(line => `+ ${line}`)].join('\n') @@ -132,7 +128,6 @@ describe('DiffBlock local changes', () => { render() expect(screen.getAllByText('start')).toHaveLength(1) expect(screen.getAllByText('end')).toHaveLength(1) - expect(screen.getByText('└ +1 -1 · 1 file')).toBeTruthy() expect(diffTotals(diffs)).toEqual({ added: 1, removed: 1 }) await act(async () => { fireEvent.click(screen.getByRole('button', { name: '复制' })) }) expect(writeText).toHaveBeenCalledWith('settings.ts\n start\n- mode = 1\n+ mode = 2\n end') @@ -150,7 +145,6 @@ describe('DiffBlock local changes', () => { 'item 40', 'changed 40', 'item 41', 'item 42', 'item 43', ]) expect(changeRows(container)).toEqual(['item 10', 'changed 10', 'item 40', 'changed 40']) - expect(screen.getByText('└ +2 -2 · 1 file')).toBeTruthy() }) it.each([ @@ -163,26 +157,10 @@ describe('DiffBlock local changes', () => { ['a\n\nb', 'a\nb', 0, 1], ])('counts ordered changes in %j → %j', (oldText, newText, added, removed) => { const diffs = [{ path: 'a.txt', oldText, newText }] - render() + const { container } = render() expect(diffTotals(diffs)).toEqual({ added, removed }) - expect(screen.getByText(`└ +${added} -${removed} · 1 file`)).toBeTruthy() - }) -}) - -describe('DiffBlock footer', () => { - it('counts added and removed lines and one file', () => { - const diffs: DiffHunk[] = [{ path: 'a.ts', oldText: 'a\nb', newText: 'c' }] - render() - expect(screen.getByText('└ +1 -2 · 1 file')).toBeTruthy() - }) - - it('pluralizes the distinct-file count', () => { - const diffs: DiffHunk[] = [ - { path: 'a.ts', oldText: null, newText: 'x' }, - { path: 'b.ts', oldText: null, newText: 'y' }, - ] - render() - expect(screen.getByText('└ +2 -0 · 2 files')).toBeTruthy() + expect(container.querySelectorAll('[class*="_add_"]')).toHaveLength(added) + expect(container.querySelectorAll('[class*="_del_"]')).toHaveLength(removed) }) }) diff --git a/packages/client/ui-primitives/tests/labels.client.ts b/packages/client/ui-primitives/tests/labels.client.ts index 80b8cb7305..4d5ae803ad 100644 --- a/packages/client/ui-primitives/tests/labels.client.ts +++ b/packages/client/ui-primitives/tests/labels.client.ts @@ -18,7 +18,6 @@ export const diffBlockLabels: DiffBlockLabels = { copy: '复制', copied: '复制成功', collapseAria: '收起差异', expandAria: hidden => `展开其余 ${hidden} 行差异`, collapse: '收起', expand: hidden => `… 其余 ${hidden} 行`, - files: count => `${count} ${count === 1 ? 'file' : 'files'}`, } export const readBlockLabels: ReadBlockLabels = { diff --git a/packages/client/ui-sidebar-documentpreview/README.i18n.yaml b/packages/client/ui-sidebar-documentpreview/README.i18n.yaml index c2720b1ea6..b175a9411b 100644 --- a/packages/client/ui-sidebar-documentpreview/README.i18n.yaml +++ b/packages/client/ui-sidebar-documentpreview/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-sidebar-documentpreview/README.md -README.md: d818feaa2cc6bff2f8400ef122e8496df6e45cfc -README.zh.md: e881f4a844708eee17945ec5ac15e17e85baa6fd +README.md: 30d3a10470682a649ea382f8d2bb07ff104f388f +README.zh.md: cabfb262e8e20ecdf7a281ca5187aaa6c050bcce diff --git a/packages/client/ui-sidebar-documentpreview/README.md b/packages/client/ui-sidebar-documentpreview/README.md index d818feaa2c..30d3a10470 100644 --- a/packages/client/ui-sidebar-documentpreview/README.md +++ b/packages/client/ui-sidebar-documentpreview/README.md @@ -61,7 +61,7 @@ PNG, JPEG, GIF, WebP, BMP, ICO, and SVG render through Blob URLs in an `` s Shared copy comes from `sidebarDocumentPreview`; each builtin renderer owns its localized labels. PDF and converted Office previews use a graphite background in light mode and a matte-black background in dark mode, with subtle page shadows and original document colors. PDF and image previews share a floating control with **Fit width**, 25%, 50%, 100%, 150%, and 200% choices plus 25% incremental zoom across the 25%–400% fixed range. Fit width is the default and tracks pane resizing; 100% means the PDF's 96-DPI page size or the image's intrinsic CSS-pixel size. On fine pointers, the control starts hidden, slides up when the pointer enters the bottom 72 CSS pixels, and slides down after a 420 ms leave delay; hover, keyboard focus, an open menu, and an active gesture keep it visible, while devices without hover keep it visible continuously. Chromium maps a macOS trackpad pinch to the same live, pointer-anchored path as Ctrl+wheel; the control displays the gesture percentage, and the settled value survives body remounts until the tab closes. HTML previews do not expose zoom controls. -Initial reads, additional pages, and HTML/PDF/image preparation share the ongoing `StateDot` loader, which exposes its label to assistive technology and respects reduced-motion preferences; every wait before content exists centres the loader in the pane, so opening a file shows one indicator in one position until the body appears. Loaded pages stay visible while another page loads. The PDF body loads its package-local `client.pdf.js` chunk only when a PDF preview mounts; PDF.js, its Worker source, and embedded support data stay out of the startup `client.js`. PDF pages fill the pane's width edge to edge as one vertical sequence and render lazily near the viewport; an unrendered page holds its place as a quiet 3:4 placeholder block. PDF.js’s official TextLayerBuilder manages selection boundaries and normalized copying over an aligned text layer. Its companion styles keep blank line breaks unhighlighted; alignment accounts for PDF page units, page rotation, and viewport resizing, and page disposal cancels both layers. Image-only PDFs contain no selectable text. Code previews show a secondary-colored language label and a copy icon with a tooltip; wrapping remains in the document toolbar. They show source line numbers by default without including them in copied text; plain text uses the same font size and line height as code. Code sits on the pane's own background rather than the chat card's fill; its banner is adjacent to a full-height inner scrollport, so both scrollbars begin below the copy control. +Initial reads, additional pages, and HTML/PDF/image preparation share the ongoing `StateDot` loader, which exposes its label to assistive technology and respects reduced-motion preferences; every wait before content exists centres the loader in the pane, so opening a file shows one indicator in one position until the body appears. Loaded pages stay visible while another page loads. The PDF body loads its package-local `client.pdf.js` chunk only when a PDF preview mounts; PDF.js, its Worker source, and embedded support data stay out of the startup `client.js`. PDF pages fill the pane's width edge to edge as one vertical sequence and render lazily near the viewport; an unrendered page holds its place as a quiet 3:4 placeholder block. PDF.js’s official TextLayerBuilder manages selection boundaries and normalized copying over an aligned text layer. Its companion styles keep blank line breaks unhighlighted; alignment accounts for PDF page units, page rotation, and viewport resizing, and page disposal cancels both layers. Image-only PDFs contain no selectable text. Code previews show a tertiary-colored language label and a copy icon with a tooltip; wrapping remains in the document toolbar. They show source line numbers by default without including them in copied text; plain text uses the same font size and line height as code. Code sits on the pane's own background rather than the chat card's fill; its banner is adjacent to a full-height inner scrollport, so both scrollbars begin below the copy control. ## Excel preview diff --git a/packages/client/ui-sidebar-documentpreview/README.zh.md b/packages/client/ui-sidebar-documentpreview/README.zh.md index e881f4a844..cabfb262e8 100644 --- a/packages/client/ui-sidebar-documentpreview/README.zh.md +++ b/packages/client/ui-sidebar-documentpreview/README.zh.md @@ -61,7 +61,7 @@ PNG、JPEG、GIF、WebP、BMP、ICO 和 SVG 通过 Blob URL 在 `` 静态 共享文案来自 `sidebarDocumentPreview`;各内置渲染器拥有自己的本地化标签。PDF 与转换后的 Office 预览在浅色模式下使用石墨灰底色,在深色模式下使用哑黑底色,页面带有轻微阴影并保留文档原色。PDF 与图片预览共用浮动控件,提供**适应宽度**、25%、50%、100%、150% 和 200% 选项,并在 25%–400% 固定范围内按 25% 逐级缩放。适应宽度是默认模式并跟随面板尺寸;100% 表示 PDF 的 96 DPI 页面尺寸或图片的固有 CSS 像素尺寸。在精细指针设备上,控件初始隐藏;指针进入底部 72 个 CSS 像素时向上滑入,离开 420 ms 后向下退出;控件悬停、键盘焦点、菜单展开和手势进行期间保持显示,无 hover 的设备则始终显示。Chromium 将 macOS 触控板捏合映射到与 Ctrl+滚轮相同的实时指针锚定路径;控件同步显示手势比例,静止后的值在正文重新挂载后继续保留,直至 tab 关闭。HTML 预览不显示缩放控件。 -首次读取、追加页及 HTML/PDF/图片准备共用 ongoing `StateDot` loading,其标签暴露给辅助技术,并遵循减少动态效果偏好;内容出现前的每个等待都把 loading 居中在面板中,打开文件到正文出现始终是同一位置的一个标记。下一页加载期间保留已显示的内容。PDF 正文仅在 PDF 预览挂载时加载包内 `client.pdf.js` chunk;PDF.js、Worker 源码和内嵌支持数据不会进入启动 `client.js`。PDF 页面贴边占满面板宽度,组成一个纵向连续序列并在接近视口时惰性渲染;未渲染的页以安静的 3:4 占位块保持位置。PDF.js 官方 TextLayerBuilder 在与画面重合的文字层上管理选区边界和复制文本规范化。配套样式不高亮空白换行;对齐同时考虑 PDF 页面单位、页面旋转与视口宽度变化,页面释放时取消两层渲染。纯图片 PDF 不包含可选取的文字。代码预览使用 secondary 色的语言名称和带提示的复制图标;换行仍由文档工具栏控制。默认显示源码行号,但复制文本不包含行号;纯文本与代码使用相同字号和行高。代码直接坐在分栏自身的背景上,而不是会话卡片的填充色;复制条与占满剩余高度的内部滚动区相邻,因此横纵滚动条都从复制控件下方开始。 +首次读取、追加页及 HTML/PDF/图片准备共用 ongoing `StateDot` loading,其标签暴露给辅助技术,并遵循减少动态效果偏好;内容出现前的每个等待都把 loading 居中在面板中,打开文件到正文出现始终是同一位置的一个标记。下一页加载期间保留已显示的内容。PDF 正文仅在 PDF 预览挂载时加载包内 `client.pdf.js` chunk;PDF.js、Worker 源码和内嵌支持数据不会进入启动 `client.js`。PDF 页面贴边占满面板宽度,组成一个纵向连续序列并在接近视口时惰性渲染;未渲染的页以安静的 3:4 占位块保持位置。PDF.js 官方 TextLayerBuilder 在与画面重合的文字层上管理选区边界和复制文本规范化。配套样式不高亮空白换行;对齐同时考虑 PDF 页面单位、页面旋转与视口宽度变化,页面释放时取消两层渲染。纯图片 PDF 不包含可选取的文字。代码预览使用 tertiary 色的语言名称和带提示的复制图标;换行仍由文档工具栏控制。默认显示源码行号,但复制文本不包含行号;纯文本与代码使用相同字号和行高。代码直接坐在分栏自身的背景上,而不是会话卡片的填充色;复制条与占满剩余高度的内部滚动区相邻,因此横纵滚动条都从复制控件下方开始。 ## Excel 预览 diff --git a/packages/client/ui-tool/README.i18n.yaml b/packages/client/ui-tool/README.i18n.yaml index 45be7c0b8f..b5dd281e0e 100644 --- a/packages/client/ui-tool/README.i18n.yaml +++ b/packages/client/ui-tool/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-tool/README.md -README.md: e26a277028d41420c4796b4678a2d6897d592872 -README.zh.md: 63d34c640571b0b3e363f6968221d15eea70ad49 +README.md: 622dbd89c93f8a21bece72f2267613a4fa81b4d6 +README.zh.md: c3fec14cb7a5d2e2448743204b59dcac73380849 diff --git a/packages/client/ui-tool/README.md b/packages/client/ui-tool/README.md index e26a277028..622dbd89c9 100644 --- a/packages/client/ui-tool/README.md +++ b/packages/client/ui-tool/README.md @@ -68,7 +68,7 @@ Tool owner props forward Chat's stable `useDisclosure` Hook through root and nes Every card is read in place in the call tree; there is no second, full-height presentation of a selected call. Row renderers share one pure card model for each terminal, read, diff, search, and web card, and the image card's gallery renders through the tool-owned `tool.call.images` slot. These models validate raw call arguments, result content, failure state, persisted metadata, PTC dispatch `parentCallId`, and Session path facts. Unsupported or malformed inputs use flattened Tool result text. A file-path summary opens the file through the owner's `openFile`, which the chat view routes to the right Sidebar's text preview; `inspect` opens the trajectory view and is absent when that View is unavailable; cards then omit Inspect. Card-specific limits and fallback rules for the terminal, diff, read, search, and web cards remain in [the ui-primitives README](../ui-primitives/README.md); the image card's model in this package carries its own fallback rules. -Chat diff cards keep nine rows before folding, enough for a file header, one removed/added pair, and three context lines on either side. The collapsed row and expanded footer share the primitive's exact or coarse-replacement counts. +Chat diff cards keep nine rows before folding, enough for a file header, one removed/added pair, and three context lines on either side. The tool row shows the primitive's exact or coarse-replacement counts; the expanded card contains the diff body without a totals footer. An Auto denial takes precedence over keyed specialized views. Its generic row preserves the call identity, omits raw arguments, and normalizes the stored reason only for display: trim surrounding whitespace and collapse line separators to spaces, with localized fallback for an empty result. Session and SDK error details keep the original reason. diff --git a/packages/client/ui-tool/README.zh.md b/packages/client/ui-tool/README.zh.md index 63d34c6405..c3fec14cb7 100644 --- a/packages/client/ui-tool/README.zh.md +++ b/packages/client/ui-tool/README.zh.md @@ -68,7 +68,7 @@ Tool 所有者属性将 Chat 注入的稳定 `useDisclosure` 钩子传给根调 每张卡片都直接在调用树中查看;选中调用后不会再显示第二个全高视图。行 renderer 为 terminal、read、diff、search 和 web 卡片各复用同一个纯 card model,image 卡片的图库经由工具自有 `tool.call.images` slot 渲染。这些 model 校验原始调用参数、结果内容、失败状态、持久 metadata、PTC dispatch 的 `parentCallId` 与会话路径信息。不受支持或格式错误的输入使用压平的工具结果文本。文件路径摘要经属主的 `openFile` 打开文件,chat 视图把它路由到右侧 Sidebar 的文本预览;`inspect` 打开轨迹视图;该视图不可用时不提供此回调,卡片随之隐藏 Inspect。terminal、diff、read、search 与 web 卡片的上限与 fallback 规则仍由 [ui-primitives README](../ui-primitives/README.zh.md) 负责;image 卡片的 fallback 规则由本包内的 card model 自行承载。 -Chat diff 卡片在折叠前保留九行,足以容纳文件标题、一对删除与新增行及两侧各三行上下文。折叠工具行与展开卡片底部采用原语一致的精确或粗粒度替换统计。 +Chat diff 卡片在折叠前保留九行,足以容纳文件标题、一对删除与新增行及两侧各三行上下文。工具行显示原语提供的精确或粗粒度替换统计;展开卡片包含差异正文,不显示底部统计。 Auto 拒绝优先于按工具名选择的专门视图。其通用行保留调用身份、省略原始参数,并且只在显示时归一化存储的理由:去除首尾空白,把行分隔符折叠为空格,结果为空时使用本地化通用理由。Session 与 SDK 错误详情保留原始理由。 diff --git a/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx b/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx index 308624227d..228b6e9a94 100644 --- a/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx +++ b/packages/client/ui-tool/src/client/tool/components/ToolRow.tsx @@ -171,9 +171,8 @@ export const ToolRow = memo(function ToolRow({ // amber while retaining the business icon and hidden state announcement. const failureLine = state === 'error' ? errorSummary ?? normalSummary : null const summaryText = failureLine ?? normalSummary - // A diff row's collapsed line carries the card's +/- totals (the same - // numbers the expanded footer prints) so the change size reads without - // expanding; an explicit summarySuffix (none today on diff rows) wins. + // The tool row keeps the diff's +/- totals visible while its body is collapsed. + // An explicit summarySuffix overrides the diff totals. const diffStat = useMemo(() => { if (diffBody === null) return null const { added, removed } = diffTotals(diffBody.card.diffs) diff --git a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts index af1e13679b..4aa7477f4c 100644 --- a/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts +++ b/packages/client/ui-tool/src/client/tool/models/primitive-labels.ts @@ -47,7 +47,6 @@ export function diffBlockLabels(t: T): DiffBlockLabels { expandAria: count => t('diff.expandAria', { count }), collapse: t('collapse'), expand: count => t('diff.expandRest', { count }), - files: count => t(count === 1 ? 'diff.files.one' : 'diff.files.other', { count }), } } diff --git a/packages/client/ui-tool/tests/diff-card.client.spec.tsx b/packages/client/ui-tool/tests/diff-card.client.spec.tsx index cbb4d46d0f..7be88bb9d6 100644 --- a/packages/client/ui-tool/tests/diff-card.client.spec.tsx +++ b/packages/client/ui-tool/tests/diff-card.client.spec.tsx @@ -246,9 +246,9 @@ describe('FileMutationRow diff card', () => { }), 'write')} />) // The collapsed row already carries the card's +/- totals beside the path. expect(view.getByText('+1 -0')).toBeTruthy() - // The footer counts live inside the collapsed diff card. toggleRow(view) - expect(view.getByText('└ +1 -0 · 1 个文件')).toBeTruthy() + expect(view.getAllByText('+1 -0')).toHaveLength(1) + expect(view.getByText('hello fixture')).toBeTruthy() }) it('reflects the run state on its leading slot', () => { diff --git a/packages/client/ui-tool/tests/tool-row.client.spec.tsx b/packages/client/ui-tool/tests/tool-row.client.spec.tsx index 050f8cc42b..723f2eb359 100644 --- a/packages/client/ui-tool/tests/tool-row.client.spec.tsx +++ b/packages/client/ui-tool/tests/tool-row.client.spec.tsx @@ -301,7 +301,7 @@ describe('ToolRow', () => { expect(view.getByText('List files')).toBeTruthy() }) - it('excludes shared context from collapsed edit totals and the expanded card', () => { + it('shows totals once and shared context once when an edit expands', () => { const view = render( { expect(view.getByText('+1 -1')).toBeTruthy() expect(view.container.querySelector('[data-diff]')).toBeNull() fireEvent.click(view.getByRole('button')) - expect(view.getByText(/└ \+1 -1/)).toBeTruthy() + expect(view.getAllByText('+1 -1')).toHaveLength(1) expect(view.getAllByText('start')).toHaveLength(1) expect(view.getAllByText('end')).toHaveLength(1) expect(view.getByText('old', { exact: true })).toBeTruthy() diff --git a/snapshots/web/diff-bounded/ui.expected.md b/snapshots/web/diff-bounded/ui.expected.md index 1883ed4a1c..09cf4e6d4d 100644 --- a/snapshots/web/diff-bounded/ui.expected.md +++ b/snapshots/web/diff-bounded/ui.expected.md @@ -7,5 +7,5 @@ - button "Copy" - text: large.txt - shared heading - old setting 0 - old setting 1 - old setting 2 - button "Expand 252 more diff lines": … 252 more lines -- text: + new setting 125 + new setting 126 + new setting 127 + new setting 128 └ +130 -130 · 1 file +- text: + new setting 125 + new setting 126 + new setting 127 + new setting 128 - button "Inspect" diff --git a/snapshots/web/diff-context/ui.expected.md b/snapshots/web/diff-context/ui.expected.md index 44e1810526..72bb5f0d61 100644 --- a/snapshots/web/diff-context/ui.expected.md +++ b/snapshots/web/diff-context/ui.expected.md @@ -5,5 +5,5 @@ - text: Code block - button "Wrap lines" - button "Copy" -- text: config.txt - mode=DEBUG + mode=RELEASE level=info └ +1 -1 · 1 file +- text: config.txt - mode=DEBUG + mode=RELEASE level=info - button "Inspect" From 780e07b8eda61042c3c59a0b4eadca714d62dbfc Mon Sep 17 00:00:00 2001 From: yixiangihsiang Date: Tue, 22 Sep 2026 16:28:46 +0800 Subject: [PATCH 09/19] test(web): align built boot assertions with diff layout --- apps/web/tests/built-boot.expected.e2e.ts | 25 +++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/web/tests/built-boot.expected.e2e.ts b/apps/web/tests/built-boot.expected.e2e.ts index 46115eff44..7ab01184fc 100644 --- a/apps/web/tests/built-boot.expected.e2e.ts +++ b/apps/web/tests/built-boot.expected.e2e.ts @@ -121,24 +121,27 @@ it('boots the built plugin graph and renders a fixture session end to end', asyn within(contextPanel).getByText('Tool definitions') within(contextPanel).getByText('Messages') - // The write/edit turns render a real diff card through the assembled graph - // (the keyed FileMutationRow composing ToolRow + DiffBlock), not just the - // fixture's raw text. The card is collapsed by default, so expand each edit/ - // write row first. The write turn's `hello fixture\n` proves the terminator - // rule end to end: a trailing newline terminates its line, so the footer reads - // `+1` (not a phantom `+2`) and one distinct file. The `+ ` prefix is a CSS - // ::before, so it is absent from textContent — assert on the line body and the - // footer. - const mutationRows = [...document.querySelectorAll('[data-variant="write"],[data-variant="edit"]')] + // The built ToolRow and DiffBlock share the write fixture's trailing-newline + // semantics: `hello fixture\n` contributes one addition. Counts belong to the + // tool row; the diff's line markers are CSS pseudo-elements, absent from textContent. + const mutationRows = [...document.querySelectorAll('[data-variant="write"],[data-variant="edit"]')] expect(mutationRows.length).toBeGreaterThan(0) + const writeRow = mutationRows.find(row => row.getAttribute('data-variant') === 'write' + && row.textContent?.includes('new-demo.txt')) + if (writeRow === undefined) throw new Error('fixture write row missing') + expect(within(writeRow).getAllByText('+1 -0', { exact: true })).toHaveLength(1) + expect(writeRow.querySelector('[data-diff]')).toBeNull() for (const row of mutationRows) { const toggle = row.querySelector('[data-expandable]') if (toggle !== null) act(() => { fireEvent.click(toggle) }) } const diffCards = [...document.querySelectorAll('[data-diff]')] expect(diffCards.length).toBeGreaterThan(0) - const footers = diffCards.map(card => card.textContent ?? '') - expect(footers.some(text => text.includes('hello fixture') && text.includes('+1 -0 · 1 file'))).toBe(true) + const writeDiff = writeRow.querySelector('[data-diff]') + if (writeDiff === null) throw new Error('expanded fixture write diff missing') + within(writeDiff).getByText('hello fixture', { exact: true }) + expect(within(writeRow).getAllByText('+1 -0', { exact: true })).toHaveLength(1) + expect(writeDiff.textContent).not.toContain('+1 -0') // The web render intent reaches the assembled boot graph: the fixture's // web_search / web_fetch turns render their keyed WebRow cards, proving the From 2d653be7b0e550c7a6c98ae3042a237229732fef Mon Sep 17 00:00:00 2001 From: turtle1999 Date: Tue, 22 Sep 2026 16:33:24 +0800 Subject: [PATCH 10/19] fix(tool-jobs): address review on the unbounded wake default Skip the per-owner wake ledger entirely when no cap is configured. Rewrite the 2026-08-11 Agent Note in place for the opt-in cap and add a note recording why the default was removed. Keep `subagent` untranslated in Chinese prose and drop change narration from the test. Refs #4944 --- ...b-completion-wakes-an-idle-owner.i18n.yaml | 4 +-- ...ound-job-completion-wakes-an-idle-owner.md | 16 ++++----- ...d-job-completion-wakes-an-idle-owner.zh.md | 16 ++++----- ...nded-completion-wakes-by-default.i18n.yaml | 6 ++++ ...2-unbounded-completion-wakes-by-default.md | 36 +++++++++++++++++++ ...nbounded-completion-wakes-by-default.zh.md | 36 +++++++++++++++++++ packages/jobs/tool-jobs/README.i18n.yaml | 2 +- packages/jobs/tool-jobs/README.zh.md | 2 +- packages/jobs/tool-jobs/src/index.ts | 18 ++++++---- .../jobs/tool-jobs/tests/tool-jobs.spec.ts | 4 +-- 10 files changed, 110 insertions(+), 30 deletions(-) create mode 100644 .agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.i18n.yaml create mode 100644 .agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.md create mode 100644 .agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.zh.md diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml index a38790ad6e..3b96b194f6 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md -2026-08-11-background-job-completion-wakes-an-idle-owner.md: 0844948eaa8e58e9d22667eb0962865a17969c07 -2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: d09454d17b8f1b579305cc1e98540d5ecb2f2d4f +2026-08-11-background-job-completion-wakes-an-idle-owner.md: f13f09d326dc7b4e7b2998f3124f70c185c50922 +2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: f9b563ebbf90e2ca19d1fc5ca9fa5b028e4429f1 diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md index 0844948eaa..f13f09d326 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md @@ -4,8 +4,6 @@ Status: implemented Update: the `reported` bit and `onJobDone` this note relies on left the registry with the [jobs seam consolidation](../architecture/2026-09-03-jobs-seam-consolidation.md): `dsh-tool-jobs` now keeps the delivery ledger (a wait or an accepted `job_kill` claims the task) and skips teardown settlements by their `settled` cause, so the wake-or-inject decision below stands while the mechanism it names is the tool's ledger, not a registry flag. -Update: `maxConsecutiveWakes` no longer defaults to 3; unset, every idle completion wakes its owner. The accepted risk below — a spent budget is restored only by user input — was reported as a bug ([dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641)): a session mixing background commands and one-shot subagents exhausted the budget after three wakes, the fourth notice parked silently in the next-step inbox with nothing visible in the client, and the model's "you are notified when a job finishes" promise turned false exactly when the user was away. An invisible stall costs more than an unbounded chain of model requests the user can watch and stop, so the cap is opt-in. The self-exciting rationale for the field stands for deployments that set it. - English | [中文](2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md) ## Problem @@ -30,11 +28,11 @@ For a driver that is genuinely running, `steer()` and `inject()` are the same de Injection is correct there. A cancelled turn is a user pressing stop, and reopening one on their behalf launders an interrupt into a model request they did not ask for. The turn loop already covers the ordinary case: it cannot close while the next-step inbox holds anything, so a notice arriving before that check extends the current turn, and several tasks settling together cost one step rather than one turn each. -### Waking is bounded, and the bound is not time +### The cap on consecutive wakes is opt-in, and it is not time -`maxConsecutiveWakes` (default 3) caps the turns one owner may open this way; beyond it a notice degrades to injection and waits for the next turn. Claiming any user-authored message restores the budget — claiming, not arrival, because that is the point human input actually enters a step. Notices this plugin queued never refill it. +Waking is unbounded unless `maxConsecutiveWakes` is set. With it set, the value caps the turns one owner may open this way; beyond it a notice degrades to injection and waits for the next turn. Claiming any user-authored message restores the budget — claiming, not arrival, because that is the point human input actually enters a step. Notices this plugin queued never refill it. -The bound exists because this chain is self-exciting in a way subagent settlement is not. Settlement is bounded by how many children the model spawned; a woken turn can start the background job whose completion wakes it again, with nobody watching. `dsh run` needs no separate policy: its one user message is claimed in the first turn and never repeats, so the budget is spent monotonically and the process terminates. +The cap exists because this chain is self-exciting in a way subagent settlement is not. Settlement is bounded by how many children the model spawned; a woken turn can start the background job whose completion wakes it again, with nobody watching. It has no default because a notice past the cap stalls the session invisibly; the [unbounded-by-default decision](2026-09-22-unbounded-completion-wakes-by-default.md) records that trade-off. `dsh run` needs no separate policy either way: headless exits once the task turn goes idle, so a completion after that point has no owner to wake. `completionDelivery: quiet` restores the old lane for idle owners. It exists for deterministic transcripts; job completion independently retains `quiet | wakeup` because its bounded owner-turn policy differs from next-step subagent reports. @@ -54,15 +52,15 @@ The bound exists because this chain is self-exciting in a way subagent settlemen **A general unsolicited-input queue** with priority lanes, as Claude Code uses to merge background jobs, cron, MCP push, and hooks into one drain. DSH's inbox already is that queue — durable `agent/inbox/spliced` splices over `next-turn`/`next-step` — so this would add a layer above an existing one to decide a single bit. -**Refusing to reopen a turn that already produced a visible answer,** Codex's `MailboxDeliveryPhase` latch. That latch is the default this decision deliberately inverts: waking after the model has spoken is the entire point, and the wake budget is the bound instead. +**Refusing to reopen a turn that already produced a visible answer,** Codex's `MailboxDeliveryPhase` latch. That latch is the default this decision deliberately inverts: waking after the model has spoken is the entire point, and the optional wake budget is the bound instead. -**A wall-clock window** on top of the counter. For an interactive agent the slow case is the wanted one — an hour-long build finishing and the agent resuming is the feature — and `dsh run` is already bounded by the counter it cannot refill. Worth revisiting only if an unattended long-lived deployment appears. +**A wall-clock window** on top of the counter. For an interactive agent the slow case is the wanted one — an hour-long build finishing and the agent resuming is the feature — and `dsh run` exits once its task turn goes idle regardless. Worth revisiting only if an unattended long-lived deployment appears. **Suppressing `onJobDone` entirely during owner drain,** symmetric with the service-wide `listenersClosed`. It reads cleaner and removes a signal that is not only for notices: the force-fail record and the runtime invariant both observe teardown settlements. The `reported` bit denies exactly the reporters and nothing else. ## Consequences -- Default behavior changes: an idle owner now spends a model request per completion, capped at `maxConsecutiveWakes` per owner between user messages. Deployments that want the old behavior set `completionDelivery: quiet`. +- Default behavior changes: an idle owner now spends a model request per completion, capped per owner between user messages only where `maxConsecutiveWakes` is set. Deployments that want the old behavior set `completionDelivery: quiet`. - The `tool-jobs` prompt section needs no edit; "You are notified in-session when a task finishes" became true rather than aspirational. - `JobSnapshot.reported` gains teardown as a fourth setter, documented at the Service Definition and in [the subsystem reference](../../../../docs/subsystems/jobs.md). - `settle()` announces completion after committing the record and publishing the visible-set change. Any listener relying on running before waiters were released or before `onJobsChanged` now runs after both. @@ -71,7 +69,7 @@ The bound exists because this chain is self-exciting in a way subagent settlemen ### Accepted risks -A spent budget is restored only by user input. An unattended agent that exhausts it collects its remaining notices whenever something else opens a turn, and nothing re-arms it in the meantime. +Under a configured `maxConsecutiveWakes`, a spent budget is restored only by user input. An unattended agent that exhausts it collects its remaining notices whenever something else opens a turn, nothing re-arms it in the meantime, and the client shows nothing while the notice waits. This is why the cap has no default. A notice pending on an idle owner under `quiet` still dies with that owner's disposal, unchanged from before: the disposal cancel clears the unclaimed inbox and the log keeps the insert/cancel pair as the record. The [settlement delivery note](2026-08-06-manager-owned-subagent-settlement-delivery.md) owns the offline-mailbox discussion this would need. diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md index d09454d17b..f9b563ebbf 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md @@ -4,8 +4,6 @@ Status: implemented Update:本文依赖的 `reported` 位与 `onJobDone` 已随 [jobs seam 收敛](../architecture/2026-09-03-jobs-seam-consolidation.zh.md)离开注册表:`dsh-tool-jobs` 现在持有投递台账(等待或被接受的 `job_kill` 认领任务),并按 `settled` 事件的 cause 跳过 teardown 结算,因此下文唤醒或注入的决策仍然成立,只是它提到的机制是工具的台账而非注册表标志。 -Update:`maxConsecutiveWakes` 不再默认为 3;未设置时每次空闲完成都会唤醒所有者。下文"已花掉的预算只由用户输入恢复"这条接受的风险被报告为缺陷([dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641)):一个会话混用后台命令与一次性子代理,三次唤醒后预算耗尽,第四条通知静默停在 next-step inbox 里,客户端毫无显示,而模型得到的"任务完成会通知你"承诺恰好在用户离开时失效。不可见的停摆比一条用户能看到并能停止的、无上限的模型请求链代价更高,因此上限改为可选。自激链的理由对设置了该字段的部署依然成立。 - [English](2026-08-11-background-job-completion-wakes-an-idle-owner.md) | 中文 ## 问题 @@ -30,11 +28,11 @@ Update:`maxConsecutiveWakes` 不再默认为 3;未设置时每次空闲完 在那里注入才是对的。轮次被取消意味着用户按了停止,替他们重新开一轮等于把一次中断洗成了他们没有要求的模型请求。普通情形已由轮次循环覆盖:只要 next-step inbox 还有内容,轮次就无法结束,因此在该检查之前抵达的通知会延长当前轮次,同时结算的多个任务只花掉一步而不是各占一轮。 -### 唤醒有界,且该界不是时间 +### 连续唤醒上限是可选的,且该界不是时间 -`maxConsecutiveWakes`(默认 3)限制一个所有者由此开启的轮数;超出后通知降级为注入,等待下一轮。领取任何用户撰写的消息都会恢复预算——是领取而非抵达,因为那才是人类输入真正进入某一步的时刻。本插件自己排队的通知永远不会补充它。 +除非设置了 `maxConsecutiveWakes`,唤醒没有上限。设置后,该值限制一个所有者由此开启的轮数;超出后通知降级为注入,等待下一轮。领取任何用户撰写的消息都会恢复预算——是领取而非抵达,因为那才是人类输入真正进入某一步的时刻。本插件自己排队的通知永远不会补充它。 -设界是因为这条链会自激,而 subagent 结算不会。结算受限于模型派生了多少子 agent;被唤醒的一轮却可能启动某个后台任务,而它的完成又会唤醒同一个所有者,且无人旁观。`dsh run` 不需要单独策略:它唯一的用户消息在第一轮就被领取且不会重复,因此预算单调消耗,进程必然终止。 +设上限是因为这条链会自激,而 subagent 结算不会。结算受限于模型派生了多少子 agent;被唤醒的一轮却可能启动某个后台任务,而它的完成又会唤醒同一个所有者,且无人旁观。它没有默认值,因为超出上限的通知会让会话不可见地停摆;[默认无上限的决策](2026-09-22-unbounded-completion-wakes-by-default.zh.md)记录了这项取舍。`dsh run` 无论如何都不需要单独策略:headless 在任务轮次空闲后即退出,此后的完成没有可唤醒的所有者。 `completionDelivery: quiet` 为空闲所有者恢复旧通道。它的存在是为了确定性 transcript;后台任务完成会独立保留 `quiet | wakeup`,因为其有界的所有者轮次策略不同于 next-step subagent 报告。 @@ -54,15 +52,15 @@ Update:`maxConsecutiveWakes` 不再默认为 3;未设置时每次空闲完 **一个通用的非请求输入队列**并带优先级通道,正如 Claude Code 用来把后台任务、cron、MCP 推送与 hook 合并进同一次排空。DSH 的 inbox 本身就是那个队列——`next-turn`/`next-step` 之上的持久 `agent/inbox/spliced` splice——因此这等于在既有层之上再加一层,只为决定一个 bit。 -**拒绝重开一个已经产出可见答复的轮次**,即 Codex 的 `MailboxDeliveryPhase` 闩锁。那条闩锁正是本决策刻意反转的默认值:在模型已经说完话之后唤醒它就是本特性的全部意义,界由唤醒预算来承担。 +**拒绝重开一个已经产出可见答复的轮次**,即 Codex 的 `MailboxDeliveryPhase` 闩锁。那条闩锁正是本决策刻意反转的默认值:在模型已经说完话之后唤醒它就是本特性的全部意义,界由可选的唤醒预算来承担。 -**在计数之上再加墙钟窗口**。对交互式 agent 而言,慢的那种情形恰恰是想要的——一小时的构建结束、agent 接着干下去,这就是特性本身——而 `dsh run` 已被它无法补充的计数封顶。只有当出现无人值守的长生命周期部署时才值得重新考虑。 +**在计数之上再加墙钟窗口**。对交互式 agent 而言,慢的那种情形恰恰是想要的——一小时的构建结束、agent 接着干下去,这就是特性本身——而 `dsh run` 无论如何都在任务轮次空闲后退出。只有当出现无人值守的长生命周期部署时才值得重新考虑。 **在 owner 排空期间整体压制 `onJobDone`**,与服务级的 `listenersClosed` 对称。它读起来更干净,但会移走一个不只服务于通知的信号:强制失败记录与运行时不变量都会观察 teardown 结算。`reported` 位恰好只否决报告方,别的什么也不否决。 ## 影响 -- 默认行为改变:空闲所有者现在每次完成会花掉一次模型请求,按所有者、在两次用户消息之间由 `maxConsecutiveWakes` 封顶。想要旧行为的部署设置 `completionDelivery: quiet`。 +- 默认行为改变:空闲所有者现在每次完成会花掉一次模型请求,只有设置了 `maxConsecutiveWakes` 时才按所有者、在两次用户消息之间封顶。想要旧行为的部署设置 `completionDelivery: quiet`。 - `tool-jobs` 的提示词段落无需改动;「任务完成时你会在会话内收到通知」从愿景变成了事实。 - `JobSnapshot.reported` 新增 teardown 作为第四个置位方,记录在 Service Definition 与[子系统参考](../../../../docs/subsystems/jobs.zh.md)中。 - `settle()` 在提交记录并发布可见集变更之后才宣布完成。任何依赖「在释放等待方之前或在 `onJobsChanged` 之前运行」的监听器现在都排在两者之后。 @@ -71,7 +69,7 @@ Update:`maxConsecutiveWakes` 不再默认为 3;未设置时每次空闲完 ### 已接受的风险 -已花掉的预算只由用户输入恢复。耗尽预算的无人值守 agent 要等到其他原因开启轮次时才收走剩余通知,在此期间没有任何机制为它重新充能。 +在设置了 `maxConsecutiveWakes` 的情况下,已花掉的预算只由用户输入恢复。耗尽预算的无人值守 agent 要等到其他原因开启轮次时才收走剩余通知,在此期间没有任何机制为它重新充能,通知等待时客户端也毫无显示。这正是上限没有默认值的原因。 在 `quiet` 下待领于空闲所有者的通知仍会随该所有者释放而消亡,与此前一致:释放时的取消会清空未领取的 inbox,日志保留插入/取消这一对作为记录。[结算交付 note](2026-08-06-manager-owned-subagent-settlement-delivery.zh.md) 承载这需要的离线信箱讨论。 diff --git a/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.i18n.yaml b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.i18n.yaml new file mode 100644 index 0000000000..24ad5190da --- /dev/null +++ b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.md +2026-09-22-unbounded-completion-wakes-by-default.md: 8760154054de423240e16d93e3db5ae01521820a +2026-09-22-unbounded-completion-wakes-by-default.zh.md: e5560bc7ced5a8ca9ab55ea56ba309676d78b568 diff --git a/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.md b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.md new file mode 100644 index 0000000000..8760154054 --- /dev/null +++ b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.md @@ -0,0 +1,36 @@ +# Agent Note: Background job completion wakes are unbounded by default + +Status: implemented + +English | [中文](2026-09-22-unbounded-completion-wakes-by-default.zh.md) + +## Problem + +The [idle-owner wake decision](2026-08-11-background-job-completion-wakes-an-idle-owner.md) shipped `maxConsecutiveWakes` with a default of 3: an idle owner could be woken three times by job completions before further notices degraded to injection, and only a claimed user message refilled the budget. The counter was per owner and shared by every job kind — background `bash`/`pwsh`/PTY commands and one-shot `subagent_*` children. + +A session that chained more than three of them without a user message hit the cap (issue #4944, reported as [dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641)). The fourth notice was injected into the next-step inbox of an owner nothing would wake; the client renders no pending `context` message, so the session sat with a notice it could not see. The `tool-jobs` prompt promises the model "you are notified in-session when a job finishes — do not busy-poll", which encourages exactly the start-and-end-turn pattern that exhausts the cap. The stall arrived when the user was away and looked like a hang until they typed something. + +## Decision + +`maxConsecutiveWakes` has no default. Unset, every completion reaching an idle owner under `wakeup` delivery opens a turn. The `agent/inbox/claimed` refill listener and the per-owner ledger exist only when a cap is configured; a configured value must still be a whole number of turns, and `Infinity` is rejected because omitting the field already means unbounded. + +The self-exciting chain the cap was built for — a woken turn starting the job whose completion wakes it again — is still real, and deployments that want the bound set the field. The trade-off is that the chain spends model requests the user can watch and stop, while a notice parked past a cap is invisible: nothing in the client shows it, nothing re-arms the budget, and the model's promise becomes false. An observable cost beats an unobservable stall. + +`dsh run` is unaffected: headless exits once the task turn goes idle, so there is no idle owner left to wake. + +## Alternatives considered + +**Keep the default cap and make the parked notice visible** — a session-level pending indicator or an unread mark on the jobs list. This keeps the runaway bound but still breaks the prompt's promise: the model ended its turn expecting a notice and receives nothing until the user acts. Visibility is worth adding for a configured cap; it does not justify a default one. + +**Count only self-excited wakes** — a wake counts against the budget only when the woken turn starts a new background job. This bounds the runaway chain without cutting off a chain of independent jobs, but the distinction needs the plugin to correlate job starts with the turn a wake opened, state no current consumer needs. It remains the natural refinement if a configured cap proves too coarse. + +**A cooldown or rate limit instead of a counter.** Time does not distinguish a wanted chain from a runaway one; the wanted case is often the slow one, and a rate limit still parks a notice invisibly when it triggers. + +**Re-check the next-step inbox on every turn-close path** (abort, LLM error, rejected pre-step). This closes the other parking spots the issue lists, but they are reached only by an already-parked notice; with no default cap the reported scenario never parks one. It stays a separate `agent-loop` change. + +## Consequences + +- An unattended session chaining background jobs is woken for every completion; the model request per wake is the cost, and the user can stop the session. +- The cap is opt-in configuration. Its README, config-catalog, and JSDoc state the silent-stall cost of setting it. +- Unit coverage pins four unattended completions each opening a turn under the default config; the cap, refill, and quiet-delivery tests keep explicit `maxConsecutiveWakes` values. +- No recorded-session snapshot changes: no shipped profile sets the field, and no existing scenario chains more than three idle completions. diff --git a/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.zh.md b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.zh.md new file mode 100644 index 0000000000..e5560bc7ce --- /dev/null +++ b/.agents/notes/implemented/feature/2026-09-22-unbounded-completion-wakes-by-default.zh.md @@ -0,0 +1,36 @@ +# Agent Note: Background job completion wakes are unbounded by default + +Status: implemented + +[English](2026-09-22-unbounded-completion-wakes-by-default.md) | 中文 + +## 问题 + +[空闲所有者唤醒决策](2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md)发布时 `maxConsecutiveWakes` 默认为 3:空闲所有者最多被任务完成唤醒三次,此后的通知降级为注入,只有被领取的用户消息才补充预算。计数器按所有者记录,并由所有任务类型共用——后台 `bash`/`pwsh`/PTY 命令与一次性 `subagent_*` 子级。 + +一个会话在没有用户消息的情况下串起超过三个这样的任务就会触顶(issue #4944,来源为 [dsh-external/issues#641](https://github.com/dsh-external/issues/issues/641))。第四条通知被注入到一个无人会唤醒的所有者的 next-step inbox;客户端不渲染待领的 `context` 消息,会话就带着一条自己看不见的通知停在那里。`tool-jobs` 的提示词向模型承诺「任务完成会在会话内通知你,不要轮询」,恰恰鼓励了会耗尽上限的「启动后结束本轮」模式。停摆发生在用户离开时,看起来像挂死,直到用户输入点什么。 + +## 决策 + +`maxConsecutiveWakes` 没有默认值。未设置时,`wakeup` 投递下抵达空闲所有者的每次完成都会开启一轮。`agent/inbox/claimed` 补充监听与按所有者的台账只在配置了上限时存在;配置的值仍必须是整数轮数,`Infinity` 被拒绝,因为省略该字段已经表示无上限。 + +上限所针对的自激链——被唤醒的一轮启动某个任务,其完成又唤醒它——依然真实存在,想要该界的部署自行设置字段。取舍在于:这条链花掉的是用户看得见、能停下的模型请求,而停在上限之外的通知是不可见的:客户端不显示,没有机制重新充能预算,模型得到的承诺也成了假话。可观察的代价胜过不可观察的停摆。 + +`dsh run` 不受影响:headless 在任务轮次空闲后即退出,没有可唤醒的空闲所有者。 + +## 被否决的替代方案 + +**保留默认上限,让停驻的通知可见**——会话级的待处理指示或任务列表上的未读标记。这保住了失控约束,但仍然违背提示词的承诺:模型结束本轮等着通知,却要等到用户动手才收到。可见性值得为已配置的上限补上;它不能为默认上限辩护。 + +**只统计自激的唤醒**——只有被唤醒的一轮又启动了新的后台任务时才计入预算。这约束了失控链而不切断一串独立任务,但这种区分需要插件把任务启动与唤醒所开启的轮次关联起来,是当前没有消费者需要的状态。若配置的上限被证明过粗,它仍是自然的细化方向。 + +**用冷却或速率限制代替计数器。** 时间无法区分想要的链与失控的链;想要的情形往往正是慢的那种,而速率限制触发时同样会把通知不可见地停驻。 + +**在每条轮次结束路径上复查 next-step inbox**(abort、LLM 错误、被拒绝的 pre-step)。这关闭了 issue 列出的其他停驻点,但它们只会被一条已停驻的通知触及;没有默认上限时,报告的场景根本不会停驻通知。它仍是独立的 `agent-loop` 改动。 + +## 影响 + +- 串起后台任务的无人值守会话会为每次完成被唤醒;每次唤醒一次模型请求是其代价,用户可以停止会话。 +- 上限是可选配置。其 README、config-catalog 与 JSDoc 说明了设置它带来的静默停摆代价。 +- 单元覆盖钉住默认配置下连续四次无人值守完成各开启一轮;上限、补充与 quiet 投递的测试保留显式的 `maxConsecutiveWakes` 值。 +- 录制会话快照无变化:没有任何内置 profile 设置该字段,也没有既有场景串起超过三次空闲完成。 diff --git a/packages/jobs/tool-jobs/README.i18n.yaml b/packages/jobs/tool-jobs/README.i18n.yaml index d76b088fdc..4c58868e42 100644 --- a/packages/jobs/tool-jobs/README.i18n.yaml +++ b/packages/jobs/tool-jobs/README.i18n.yaml @@ -3,4 +3,4 @@ # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/tool-jobs/README.md README.md: 2836f10e160ae3ecfe9a2df7f6b82a88b4ddf33f -README.zh.md: b5b702ab5f8ca4c72545f3e46899a3f01624eb42 +README.zh.md: 1311f5656ded91fd4cc520e1114a41bb87ebf4d3 diff --git a/packages/jobs/tool-jobs/README.zh.md b/packages/jobs/tool-jobs/README.zh.md index b5b702ab5f..1311f5656d 100644 --- a/packages/jobs/tool-jobs/README.zh.md +++ b/packages/jobs/tool-jobs/README.zh.md @@ -39,7 +39,7 @@ kind: "package-reference" 任务完成时,拥有它的 agent 会收到会话内消息 `background job (:
} -
+
{hasFormulas &&