Commit Graph
26287 Commits
Author SHA1 Message Date
sjw1231 dbcab765f9 fix(shell): keep coded failures on the bash and pwsh job path
A foreground bash or pwsh call that waits on a job rethrew a failed
preparation as new Error(view.detail), dropping the original class and
code, so even SandboxUnavailableError reached tool/result without
error.name or error.code. processJob now keeps the original error for a
failed job and the tool rethrows it; launch and spawn rejections on
every path keep a HarnessError's identity, and a platform spawn error
becomes SubprocessError (SUBPROCESS_SPAWN_NOT_FOUND or _SPAWN_FAILED).

Argument violations are ToolArgsError, a missing sandboxing executor
for sandbox_permissions is SandboxEscalationError
SANDBOX_ESCALATION_UNAVAILABLE, a disabled background call is JobError
JOB_BACKGROUND_DISABLED, and a missing job runtime is
ToolContextUnavailableError.

Refs #7869
2026-11-06 16:39:36 +08:00
sjw1231 c14b6860b4 feat(jobs): code registry refusals and job tool argument failures
jobs-local throws JobError for a missing controller
(JOB_CONTROLLER_UNAVAILABLE), the owner limit (JOB_LIMIT_REACHED), a
dead owner (JOB_OWNER_NOT_LIVE), an unknown id (JOB_NOT_FOUND), and a
foreign caller (JOB_FOREIGN_SESSION), and ToolContextUnavailableError
for an owned registration without the agent registry. An aborted wait
rejects with an error named AbortError, so the tool registry records it
as ABORTED.

job_output and job_kill report an empty job_id, and job_output a
non-positive timeout_ms, as ToolArgsError.

Refs #7869
2026-11-06 16:39:36 +08:00
sjw1231 45db11970c feat(working-directory): add WorkingDirectoryError and code directory failures
The working-directory service throws WorkingDirectoryError:
WORKING_DIRECTORY_INVALID for an empty cd, WORKING_DIRECTORY_NOT_FOUND
for a missing target, and WORKING_DIRECTORY_UNAVAILABLE when the
current and original directories are both gone or the service was
disposed. The working_directory tool reports a missing Agent as
ToolContextUnavailableError and an empty cd as ToolArgsError.

sandbox-policy reports a session cwd it cannot use as a workspace root
as SandboxInvalidRootError (SANDBOX_INVALID_ROOT), whose constructor
now names the role of the rejected path.

Refs #7869
2026-11-06 16:39:36 +08:00
sjw1231 9626ccfae8 feat(sandbox): code escalation outcomes and Windows ACL preparation failures
The sandbox Service Definition adds SandboxEscalationError with
SANDBOX_ESCALATION_INVALID_ARGUMENT, _UNAVAILABLE, _REJECTED, and
_CANCELLED, thrown by validateEscalationArgs() and approveEscalation()
with their existing messages. A cancelled approval for an aborted call
rethrows the call's cancellation instead.

It also adds SandboxPreparationError. sandbox-local wraps Windows ACL
SID, grant, temp-directory, and path-resolution failures as
SANDBOX_PREPARATION_FAILED with the Win32Error or Node error (or an
AggregateError with cleanup failures) as cause, and reports a temp root
inside the workspace as SANDBOX_INVALID_TEMP_ROOT. sandbox-windows-acl
exports isTempRootInsideWorkspace() for that check.

Refs #7869
2026-11-06 16:39:36 +08:00
sjw1231 4ef46e21b1 feat(subprocess): add SubprocessError and make Win32Error a HarnessError
The subprocess Service Definition exports SubprocessError with a closed
SUBPROCESS_* code list, rebases SubprocessExecutableNotFoundError on it
with the same name, and adds subprocessSpawnFailure() so consumers that
report a spawn rejection classify ENOENT and other platform errors with
the original as cause. subprocess-local codes empty argv, Windows Job
runner failures, runner IPC failures, and an unloadable node-pty, and
names its pre-aborted spawn error AbortError so the tool registry
classifies it as cancellation.

Win32Error now extends HarnessError with code WIN32_ERROR, keeping its
name, api, and win32Code fields.

Refs #7869
2026-11-06 16:29:31 +08:00
imccyu 7e00f186e2 Merge pull request #8022 from deepseek-harness/turtle/fix-ungrouped-new-session-8d376327b451
fix(ui-workspace): drop the inert New Session button from the Ungrouped header
2026-11-06 16:07:56 +08:00
winewill 04188f67e7 Merge pull request #7951 from deepseek-harness/fix/desktop-update-progress-width
fix(desktop): 稳定下载进度宽度并补充检查更新反馈
2026-11-06 15:23:44 +08:00
Turtle ea7c3c11c6 Merge pull request #7976 from deepseek-harness/feat/creator-persona-intent
feat(preset): state Creator's DSH customization purpose
2026-11-06 15:12:46 +08:00
Turtle ce1bb48a12 docs(ui-workspace): state why the Ungrouped header has no New Session 2026-11-06 15:12:04 +08:00
Chinesezjc e643811b4d Merge pull request #7995 from deepseek-harness/fix/ci-8600dbc-gh-exec-sleep
test(forge-github): exec the fake gh sleep so deadline cases settle
2026-11-06 15:01:46 +08:00
Turtle 1d4aaa8bf9 fix(ui-workspace): drop the inert New Session button from the Ungrouped header
Ungrouped Sessions share no directory, so the header's + never started a Session.

Fixes #8018
2026-11-06 14:57:19 +08:00
Dudu-0223 4fc5f5838f Merge pull request #7989 from deepseek-harness/refactor/deduplicate-snapshot-sidecars
test: 复用重复的 snapshot schema 和 system prompt
2026-11-06 14:52:04 +08:00
winewill e69ab4fcc5 Merge pull request #7925 from deepseek-harness/turtle/fix-windows-cursor-schedule-07061c1d6f38
fix(ui-schedule): keep Pause/Resume enabled-looking while the Host answers
2026-11-06 14:37:22 +08:00
winewill 9da22c1c3d test(desktop): align update status interaction coverage 2026-11-06 14:37:17 +08:00
Yichen Jiang 6a315e6aea Merge pull request #8008 from deepseek-harness/fix/forge-file-menu-and-comment-echo
fix(forge): center the selected file in the file menu and shorten comment quotes
2026-11-06 14:22:57 +08:00
winewill 610ed96855 fix(desktop): preserve update status in native fallback 2026-11-06 14:17:06 +08:00
_Kerman b1fa53b978 Merge pull request #8014 from deepseek-harness/luanlai/ptc-embedded-persistent
feat(ptc): 支持 embedded 模式启用 persistent PTC
2026-11-06 14:15:27 +08:00
winewill 63c63997cb fix(desktop): clarify update status and dialog failure feedback 2026-11-06 14:05:00 +08:00
winewill f823dac5c7 fix(desktop): open download status from progress indicator 2026-11-06 13:54:41 +08:00
Anlai Lu 41ef0fcaa9 refactor(ptc): 复用 embedded 载体的既有 process.js 启动 2026-11-06 13:51:24 +08:00
Turtle fef8334682 Merge pull request #7957 from deepseek-harness/docs/creator-plugin-detail
docs(skills): 补充单图插件详情的编写指引
2026-11-06 05:34:12 +00:00
Turtle ac006780c0 Merge pull request #7405 from deepseek-harness/fix/plugin-not-running-status
fix(plugins): mark selected bundles DSH skipped as not running
2026-11-06 13:29:58 +08:00
turtle1999 969eee66b0 merge: integrate standard documentation review fixes 2026-11-06 13:29:08 +08:00
std4453 80e3e61577 Merge pull request #7713 from deepseek-harness/feat/window-level-attachment-paste
feat(web): route unfocused pastes to one composer
2026-11-06 13:27:04 +08:00
turtle1999 b9b02f324c fix(preset): address dsh-doc review guidance and checks 2026-11-06 13:15:04 +08:00
CreatixChu ad3ca91623 Merge pull request #6746 from deepseek-harness/feat/cua-shared-native-api
处理 Windows 实现过程中发现的 CUA 包接口变更
2026-11-06 13:14:30 +08:00
Jiawei Song 7f98d178d1 Merge pull request #7966 from deepseek-harness/refactor/tool-errors-foundation
feat(tools): structured error identity for registry-owned tool failures
2026-11-06 13:11:06 +08:00
Yichen Jiang 3c839748bd fix(forge): address review on file menu reveal and comment quote summaries
- Reveal the selected file again when files arrive or reorder around it,
  so a navigation that selects a file before the diff loads still scrolls
  the wide pane; a changed filter shows its results from the top.
- Compare quote summaries in draft change detection, so restoring a draft
  that only adds or changes a summary updates the snapshot and storage.
- Read the full path and range instead of the short label to assistive
  technology; the Web snapshot now records src/<file>.
- Type the stored summary schema against QuoteSummary, test the stored
  round trip, and document why revealRow does not use scrollIntoView.
2026-11-06 13:10:37 +08:00
Yudong Han 281b96264f Merge pull request #7999 from deepseek-harness/fix/desktop-office-skill-smoke
fix(desktop): 打包冒烟检查不再要求 Office 技能提供 path
2026-11-06 13:01:30 +08:00
Turtle 652dc65597 fix(plugins): report invalid listedByDefault as a metadata diagnostic
The launcher ignores dsh.bundle.listedByDefault, so a non-boolean value now
goes to meta.error instead of error. error again means the layer was skipped,
which the plugin page relies on to mark a selected bundle as not running.
Card head geometry moves to custom properties shared with the reason line.
2026-11-06 12:57:05 +08:00
Anlai Lu 4ac6a28e68 feat(ptc): 支持 embedded 模式启用 persistent PTC 2026-11-06 12:55:15 +08:00
Yichen Jiang 7a22c11866 test(web): expect the shortened review comment quotes in the composer
The forge-panel Web snapshot recorded the composer showing the whole
model-facing User Comment reference. The composer now shows the file name,
side and lines, and comment; review-message.expected.md, the text the model
receives, stays unchanged.
2026-11-06 12:53:01 +08:00
Turtle 7427ebe33d Merge pull request #8005 from deepseek-harness/turtle/locate-docs-environments
docs(skills): locate DSH resources by runtime environment
2026-11-06 12:33:00 +08:00
creatixchu 4995b0e87a Check activation results and narrow validated runner descriptors 2026-11-06 12:31:15 +08:00
creatixchu 92c73f12e4 Refresh CUA replay for activation and tree guidance 2026-11-06 12:29:59 +08:00
Yichen Jiang b81e8c823b fix(forge): center the selected file when the file menu opens
Scrolling by the least distance left a selected file below the fold
flush against the menu's bottom edge with none of its neighbors visible.
Mounting now centers a selected row that is out of view; later selection
steps in the wide pane still scroll by the least distance.
2026-11-06 12:26:41 +08:00
creatixchu 98698bf5f7 Check optional pipe ownership in runner launch tests 2026-11-06 12:17:24 +08:00
creatixchu 96a6b779fe Validate CUA response targets and stabilize platform permission loading 2026-11-06 12:15:41 +08:00
creatixchu f5c1a31125 Change Linux status flags only on child-owned pipes 2026-11-06 12:15:38 +08:00
creatixchu 16d87f95de Keep incomplete AX action metadata local to the observed element 2026-11-06 12:05:18 +08:00
sjw1231 3da5b3a749 test(web): expect ApprovalError on a rejected approval
A user-rejected approval now records ApprovalError with
APPROVAL_REJECTED on tool/result, so the Auto review e2e asserts that
identity instead of an absent error.

Refs #7869
2026-11-06 11:55:51 +08:00
Turtle 7908117a0c docs(skills): locate DSH resources by runtime environment 2026-11-06 11:48:11 +08:00
Yichen Jiang f8dd6787b3 Merge remote-tracking branch 'origin/master' into fix/forge-file-menu-and-comment-echo
# Conflicts:
#	packages/experimental/client-ui-forge/README.i18n.yaml
#	packages/experimental/client-ui-forge/README.md
#	packages/experimental/client-ui-forge/README.zh.md
2026-11-06 11:43:08 +08:00
Yichen Jiang 1192061461 fix(forge): show review comment quotes by file and comment in the composer
Add to input inserted the whole model-facing reference (header, source,
diff hunk) as the composer quote, which was unreadable. QuotePreview and the
composer's insertQuote now accept an optional QuoteSummary that replaces the
inline excerpt with a label and body and opens a title/detail/body popover;
drafts store it, and the sent message still carries the full text. The Forge
panel supplies the file name, side and lines, path, and comment.
2026-11-06 11:29:43 +08:00
Yichen Jiang f8215a4377 fix(forge): scroll the file menu to the selected file when it opens
The All files menu remounts its rows on every opening, so a selected file
below the first screen was out of view each time. The tree now scrolls only
its row container to show the selected row on mount and when the selection
changes.
2026-11-06 11:29:41 +08:00
Yichen Jiang 46f423f5a8 Merge pull request #7979 from deepseek-harness/turtle/add-gemini-protocol-5881f01a9a7f
feat(llm-pi-ai): support the Gemini protocol for custom model APIs
2026-11-06 11:17:52 +08:00
Yichen Jiang d0290409f9 Merge branch 'master' into turtle/add-gemini-protocol-5881f01a9a7f 2026-11-06 11:05:41 +08:00
Yichen Jiang 0eaa64d1a6 Merge pull request #7938 from deepseek-harness/worktree/forge-code-review-gaps-2d9d2e
feat(forge): open comments from a hover plus, restyle the checks mark, and lengthen worktree timeouts
2026-11-06 11:03:12 +08:00
Yichen Jiang b607b769e0 Merge remote-tracking branch 'origin/master' into worktree/forge-code-review-gaps-2d9d2e 2026-11-06 10:46:32 +08:00
yudshj 0f96381169 fix(desktop): 打包冒烟检查不再要求 Office 技能提供 path
Office 技能 provider 只提供 resourceBase,从不设置可选字段 path,因此 smoke-runtime.ts 的判定在所有平台上都必然失败。判定改为只检查行为结果:4 个 Office 技能都能列出,且正文非空。

判定抽成 assertOfficeSkillsLoadable,由新增单测和 office-resources.e2e.ts 共用。判定与真实 provider 不一致时,PR 阶段的 E2E 就会失败。

Fixes #7998
2026-11-06 08:12:51 +08:00