Commit graph

4731 commits

Author SHA1 Message Date
Yichen Jiang
8f998186a9 Merge pull request #2404 from deepseek-harness/feat/plugin-owned-settings-surface
feat(settings): serve every registered namespace and key plugin cards on it
2026-08-17 13:51:31 +08:00
Yichen Jiang
84257ea5de Merge pull request #2596 from deepseek-harness/worktree/deepseek-maxtoken-consistency-3a7c15
fix(llm): align replay state with assembled content and degrade unusable state
2026-08-17 13:47:08 +08:00
Tianyi Cui
7841e0a93e Merge pull request #2586 from deepseek-harness/worktree/minimal-mode-bash-issues-0c3ac2
fix(pty): keep the controlled prompt so persistent bash settles fast
2026-08-17 11:34:34 +08:00
Yichen Jiang
7e95a00c8a fix(llm): align replay state with assembled content and degrade unusable state
A max-tokens response that included a tool call persisted assembler-transformed
content next to replay metadata projected from the untransformed native message,
so the next request died in history reconstruction with INVALID_REPLAY_STATE and
the session stayed permanently stuck.

Write side: the finish chunk's replayState becomes a typed ReplayEnvelope —
opaque response-level metadata plus optional per-block entries aligned with the
emitted block sequence. BlockAssembler computes one keep/drop decision for
blocks and entries together, so stored metadata always describes stored content
and retained blocks keep their signatures. pi-ai splits its state into a
version-2 response half and per-block signature entries.

Read side: durable content is authoritative. toPiAssistant degrades any
unusable state — foreign kind, other versions (including the flat v1 form
already on disk), malformed metadata, or content/block mismatches — to the
existing provider-neutral conversion with an onReplayDegrade diagnostic instead
of failing the request, which un-bricks sessions poisoned before this change.

Covered by assembler and replay unit tests, an agent-loop continuation
regression, keyless real-composition continuation tests (native pruned-envelope
replay and legacy flat-state degrade), and the authored keyless snapshot
scenario max-tokens-continue through the assembled ACP app.
2026-08-15 16:07:30 +08:00
Yichen Jiang
a8dc6f9776 fix(pty): keep the controlled prompt so persistent bash settles fast
tool-bash-persistent overwrote the backend's PS1, so terminal-bash prompt
readiness never matched and every send degraded to the 3.5s silence tier
(idleSilenceMs + handoffGraceMs) under production defaults.

The controlled PROMPT_COMMAND now re-asserts PS1 before every prompt, so an
in-shell override never survives to the next prompt. The tool initializes
with stty -echo alone and detects the no-end-marker fallback through the
seam's stdin_read wait reason instead of matching its own prompt text.

Tool calls drop from 7180/3560/3566 ms to 355/88/91 ms (spawn+init+echo,
echo, pwd; darwin, production defaults). The loader composition suite now
pins the fast path by pushing idleSilenceMs beyond the send bound, and a
real-PTY case proves PS1 self-healing.

Fixes #2585
2026-08-15 11:06:57 +08:00
Yichen Jiang
468c62518d Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	packages/client/ui-input-trigger/README.i18n.yaml
#	packages/client/ui-settings-plugins/src/client/ConfigurablePluginsTab.tsx
#	packages/client/ui-settings-plugins/src/client/index.ts
#	packages/client/ui-settings-plugins/src/client/tab-store.ts
#	packages/client/ui-settings-plugins/tests/apply.client.spec.ts
#	packages/client/ui-settings-plugins/tests/section.client.spec.tsx
#	packages/client/ui-settings-plugins/tests/stores.client.spec.ts
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/tests/api-proxy-config.spec.ts
2026-08-14 15:46:01 +08:00
j-xiang
631d68713f docs(i18n): clarify root README reference 2026-08-14 14:43:05 +08:00
j-xiang
09432d644b docs(i18n): sharpen workspace contrast 2026-08-14 13:43:38 +08:00
j-xiang
e87c8d094b docs(i18n): align Web UI guide wording 2026-08-14 13:37:53 +08:00
j-xiang
e437afecce docs(i18n): clarify initial workspace state 2026-08-14 13:26:02 +08:00
j-xiang
692ca590d3 docs(i18n): polish the Web UI guide 2026-08-14 12:47:37 +08:00
Yichen Jiang
226600147e feat(llm-deepseek): support low reasoning effort 2026-08-14 11:47:59 +08:00
Shigma
0ae8f27b93 docs: add link to preview paper 2026-08-13 18:37:45 +08:00
Turtle
7c94659ec4 docs: add source build prerequisite to plugin tutorial 2026-08-13 18:02:12 +08:00
_Kerman
598645f119 Merge pull request #2458 from deepseek-harness/xtr/fix-cold-session-list-metadata
fix(web): keep cold blank sessions out of recent lists
2026-08-13 15:34:14 +08:00
Chinesezjc
fc4405723f Merge pull request #2299 from deepseek-harness/fix/windows-native-ci-local-validation
fix: Windows-native CI findings on latest master (local gate reproduction)
2026-08-13 15:30:47 +08:00
Huanqi Cao
a62884a565 docs: add junction-safe unlink rule to defensive patterns 2026-08-13 15:16:12 +08:00
_Kerman
378a662082 Merge remote-tracking branch 'origin/master' into dshw/pr-2458 2026-08-13 15:15:39 +08:00
_Kerman
2be3e12965 fix(apiproxy): harden cold session metadata probing 2026-08-13 15:09:21 +08:00
Turtle
4201bbceca docs: use installed dsh command in publish tutorial 2026-08-13 14:20:09 +08:00
Turtle
62080d49c2 docs: fix release smoke test failures 2026-08-13 14:20:09 +08:00
_Kerman
3c06c66ac4 fix(web): hide verified cold blank sessions 2026-08-13 14:04:16 +08:00
Turtle
1540e76598 docs: capitalize Service Provider across repository 2026-08-13 13:31:30 +08:00
Hypatia May
b6b6a72df7 feat(session-query): ship full-text session search opt-in via openAt never
The shipped bundles keep ctx.sessionQuery mounted but set the new
session-query-sqlite `openAt: never` phase: searchSessions/searchEvents
fail with the typed SESSION_QUERY_SEARCH_DISABLED code before any request
normalization, node:sqlite is never imported or opened, and no source
observation or reconciliation runs. Every inherited exact read, filter,
and trace — session export descendants, subagent-fork Workspace
inheritance, title reads — keeps working, and the Web sidebar search
degrades to its designed local title/workspace matching. Enabling content
search is a one-line openAt override in a later patch layer; the web e2e
scaffold keeps it enabled as the assembled opt-in coverage.
2026-08-13 11:46:37 +08:00
Tianyi Cui
137c3c9254 Merge pull request #2428 from deepseek-harness/fix/run-code-description-contract
让 run_code 的模型面说明点名必填的 description 参数
2026-08-13 11:17:48 +08:00
Yichen Jiang
3bcc1a0bf7 Merge remote-tracking branch 'origin/master' into worktree/minimal-no-runtime-context
# Conflicts:
#	packages/core/system-prompt/README.i18n.yaml
#	packages/core/system-prompt/README.md
#	packages/core/system-prompt/README.zh.md
#	packages/examples/agent-spine-demo/README.i18n.yaml
#	packages/examples/agent-spine-demo/README.md
#	packages/examples/agent-spine-demo/README.zh.md
#	packages/self-modification/tool-cordis/src/api-catalog.ts
2026-08-13 10:24:29 +08:00
Yichen Jiang
a135df8be6 Merge remote-tracking branch 'origin/master' into fix/run-code-description-contract
# Conflicts:
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
2026-08-13 10:13:53 +08:00
imccyu
34dd480ae5 fix(session-query): rename session log export package 2026-08-13 05:02:00 +08:00
imccyu
45dfff0cdd fix: rebase 2 2026-08-13 02:22:10 +08:00
imccyu
39f55a049f fix: rebase 2026-08-13 01:59:32 +08:00
imccyu
a7d4cd8e1b fix: ci 2026-08-13 01:33:31 +08:00
imccyu
978e573605 fix: test/docs 2026-08-13 01:30:49 +08:00
Tianyi Cui
a2d0f7f411 refactor: apply repository naming contract
Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change.
2026-08-13 00:54:38 +08:00
ZiyaZhang
d6fc55ad86 docs: refresh generated references 2026-08-12 08:39:09 -07:00
Yichen Jiang
63fecf2534 fix: name run_code's required description argument in its model-facing prose
The transport schema requires both `code` and `description`, but the tool
description and both SDK instruction flavors described the call as passing a
program. `description` was reachable only through the parameter schema, so a
model following the prose emitted `{code}` alone and lost the whole written
program to an INVALID_ARGS rejection.

The length and format guidance stays in RUN_CODE_DESCRIPTION_PARAM_DESCRIPTION
alone, so the schema and the prompt cannot drift.

Fixes #2426
2026-08-12 23:30:51 +08:00
Yichen Jiang
ece8645080 fix: suppress runtime context in minimal profiles 2026-08-12 23:28:15 +08:00
Ziya
e5e0b47cf2 Merge branch 'master' into agent/web-file-reference-prompt 2026-08-12 23:19:35 +08:00
Yichen Jiang
06e01b30dd Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	packages/client/ui-plugin-config/README.i18n.yaml
#	packages/client/ui-plugin-config/README.md
#	packages/client/ui-plugin-config/README.zh.md
#	packages/client/ui-plugin-config/src/client/PluginConfigSection.tsx
#	packages/client/ui-plugin-config/src/client/index.ts
#	packages/client/ui-plugin-config/tests/apply.client.spec.ts
#	packages/client/ui-plugin-config/tests/section.client.spec.tsx
2026-08-12 22:50:49 +08:00
ZiyaZhang
1ca6f68b17 fix(web): guide clickable file references 2026-08-12 07:30:53 -07:00
07akioni
7d595e0edc Merge branch 'master' into fix/stats 2026-08-12 21:50:33 +08:00
07akioni
cb31f5e5b5 docs: regenerate the module graph for dsh-session-stats 2026-08-12 21:48:18 +08:00
Yichen Jiang
07d608a392 Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface 2026-08-12 21:38:20 +08:00
07akioni
ae3f89e772 Merge remote-tracking branch 'origin/master' into fix/stats 2026-08-12 21:29:00 +08:00
Turtle
ca5e67490e docs: recommend agent-assisted architecture exploration 2026-08-12 21:23:06 +08:00
07akioni
efb1857853 Merge remote-tracking branch 'origin/master' into fix/stats 2026-08-12 21:22:05 +08:00
Yichen Jiang
9fecbd86d7 Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/architecture.md
#	docs/architecture.zh.md
2026-08-12 21:14:54 +08:00
Yichen Jiang
4cf285c26e Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/README.zh.md
2026-08-12 21:13:02 +08:00
Yichen Jiang
4366528a38 feat(settings): serve every registered namespace and key plugin cards on it
A plugin that registered a settings namespace could not reach the browser
configuration page: the api-proxy filtered every read and gated every
write through two hardcoded namespace lists, and the plugin configuration
section rendered an unordered list of cards carrying an opaque id rather
than the namespace they edit. Both gates lived in this repository, so a
user-authored plugin was configurable only by hand-editing settings.yaml.

The proxy now serves whatever ctx.settings.describe() returns and adds no
boundary of its own; a name no registration answers folds into the seam's
own settings-rejected, and the settings-not-exposed code retires. The
settings seam is untouched: which client may read a namespace, and which
page renders it, are facts about consumers.

settings.plugin.item becomes a keyed slot whose key is the namespace a
card edits, following tool.call.toolview. The section reads describe once
and dispatches the intersection of the slot ledger and the served set, so
a namespace another surface owns renders nothing without declaring
anything, and a card for an uncomposed plugin is never dispatched.
2026-08-12 21:07:57 +08:00
Turtle
30b2a04b69 docs: correct the turn-flow event order and dispatch modes
turn/start precedes the first claim and pre-step, a rejected or empty first claim closes a zero-step turn, llm/stream and tools/* are their own domains, and agent/turn-stopping is serial. Regenerates the lifecycle diagram from the same facts and names --patch overlays exactly.
2026-08-12 21:03:15 +08:00
Turtle
7af0b8f6df docs: fix grammar and sync Chinese counterparts
Correct the reworked English wording in the CLI profile section, architecture map, and llm-streaming cross-reference, then bring every edited pair's Chinese side along and re-record the pairing hashes.
2026-08-12 21:01:45 +08:00