Commit Graph
1742 Commits
Author SHA1 Message Date
Dudu-0223 43d419ac5c fix(lsp): address codex review round 3
Final review pass on the local provider:
- Tear the instance down when `initialize` REJECTS (utf-8 negotiation, malformed
  result), not only on abort, so a permanently-rejecting `ready` is never pooled.
- Use the group-aware SIGKILL on a framing failure so helpers are reached.
- Validate maxMessageBytes and maxDocumentBytes positive at load alongside the
  other byte caps.
- Fix the location renderer's outside-workspace check to match a `..` segment
  exactly, so an in-workspace path like `..generated/a.ts` stays relative.
- Document the accepted ancestor-directory symlink-swap TOCTOU under the
  trusted-host model (O_NOFOLLOW guards only the final component).
2026-07-16 14:17:21 +08:00
Dudu-0223 0f3f0efd9c fix(lsp): address codex review round 2
Further lifecycle/safety hardening of the local provider:
- Tear the instance down when the initialize handshake is aborted, so a
  poisoned pending `ready` can't make later queries for that workspace re-wait.
- Make the serialized-queue wait itself abortable, so a query blocked behind
  hung earlier work can still observe its own timeout.
- Spawn the server detached and signal the whole process group on teardown, so
  helper processes (e.g. tsserver) can't outlive dispose().
- Open the source with O_NOFOLLOW and cap the read at maxDocumentBytes+1, closing
  the symlink-swap and concurrent-grow windows the fd-based read left open.
- Honor an already-aborted signal before any host I/O or startup.
- Validate maxStderrBytes positive at load; surface the retained stderr tail in
  the "language server exited" error so a fatal startup diagnostic is visible.
2026-07-16 13:34:37 +08:00
Dudu-0223 8e8f90e235 fix(lsp): address codex review round 1
Lifecycle and safety fixes from the external review:
- Observe abort while awaiting the initialize handshake, so a server that never
  replies can't defeat the tool-timeout signal.
- On an aborted request the server won't cancel, tear the instance down after a
  bounded grace instead of releasing the serialized queue with work still live
  (prevents overlapping document lifecycles).
- Re-check provider disposal after the canonicalize/read awaits so a query can't
  spawn an unowned server after disposeAll().
- Read the source through one open handle (stat + read on the same fd) to close
  the realpath-vs-read TOCTOU; decode with a fatal UTF-8 decoder so a legitimate
  U+FFFD is not misclassified as invalid.
- Validate and read the source BEFORE spawning a server (pre-start rejection).
- Require an explicit openClose for option-form textDocumentSync.
- Reject nonpositive teardown budgets and non-executable absolute commands at
  load; surface unsupported operations as structured LSP_UNSUPPORTED_OPERATION.
- Retain the stderr tail (fatal diagnostics land at exit), not the prefix.
- Catalog the seam vocabulary in docs/core-data-structures/lsp.md.
2026-07-16 13:11:07 +08:00
Dudu-0223 575feaddfa docs(lsp): regenerate config catalog for optional lsp-local config fields 2026-07-16 12:08:06 +08:00
Dudu-0223 d0029d8d60 feat(lsp): LSP capability seam, generic stdio provider, and lsp tool
Implements the LSP capability seam RFC as three packages: dsh-lsp (the
ctx.lsp interface — provider registry by branded id + exclusive extension
mapping, per-query order-independent selection, closed request/result
vocabulary, LspError taxonomy), dsh-lsp-local (a generic stdio language-server
provider — Content-Length JSON-RPC framing, per-(provider, workspace) process
single-flight, transient didOpen/query/didClose, an abortable per-instance
queue, UTF-16 negotiation, host-namespace source reads outside ctx.fs, and
bounded shutdown/kill teardown), and dsh-tool-lsp (the model-facing lsp tool —
four operations, one-based UTF-16 cursor conversion, workspace-grouped location
rendering, hover capping, a required session workspace, and a timeout budget).

Why: an agent had text search and file reads but no way to identify a program
symbol — follow an alias, connect an interface to implementations, or read an
inferred type — before changing code. Splitting model contract, seam, and local
subprocess behavior keeps the four semantic queries stable across future remote
or sandbox-native providers without leaking a JSON-RPC escape hatch.
2026-07-16 12:05:35 +08:00
Dudu-0223 66b2cfc609 docs(rfc): propose LSP capability seam 2026-07-15 17:34:24 +08:00
TianleLin b4ec4060a7 Merge pull request #202 from deepseek-harness/feat/mcp-client
feat: add MCP client plugin (dsh-mcp-client)
2026-07-15 15:53:27 +08:00
Tianyi Cui e7bae3aa3b Merge branch 'master' into feat/mcp-client 2026-07-15 15:50:59 +08:00
lintianle b9eeb2162c Fix lockfile broken by hand-resolved merge conflict
The web-editor conflict resolution renamed the cordis snapshot keys to
rc.7 but left the mcp-client importer pointing at the deleted
cordis@4.0.0-rc.6(...rc.4) key, so every CI lane failed at
'pnpm install --frozen-lockfile' with ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY.

Align the mcp-client cordis range with the repo-wide ^4.0.0-rc.7 sweep
from master and re-resolve the lockfile with pnpm.
2026-07-15 15:40:02 +08:00
Tianyi Cui 9cd31c7259 Merge pull request #300 from deepseek-harness/codex/simp-drop-assembled-section-order
refactor: drop assembled section order echo
2026-07-15 15:36:57 +08:00
Tianyi Cui dbae83d573 Merge remote-tracking branch 'origin/master' into codex/simp-drop-assembled-section-order 2026-07-15 15:31:29 +08:00
Tianyi Cui 6c8e856552 Merge pull request #290 from deepseek-harness/codex/simp-prune-code-runtime-surface
refactor: prune code runtime surface
2026-07-15 15:31:09 +08:00
TianleLin 905b8ead9f Merge branch 'master' into feat/mcp-client 2026-07-15 15:22:32 +08:00
Tianyi Cui 0239ac3752 Merge remote-tracking branch 'origin/master' into codex/simp-drop-assembled-section-order 2026-07-15 14:05:54 +08:00
Tianyi Cui 627738c4ed Merge remote-tracking branch 'origin/master' into codex/simp-prune-code-runtime-surface 2026-07-15 13:58:44 +08:00
Tianyi Cui 457e3b827f Merge pull request #297 from deepseek-harness/codex/simp-prune-web-seam-fields
refactor: prune unused web seam fields
2026-07-15 13:32:12 +08:00
Tianyi Cui 96851da571 Merge remote-tracking branch 'origin/master' into codex/simp-prune-web-seam-fields
# Conflicts:
#	docs/rfc/INDEX.md
2026-07-15 13:28:40 +08:00
Tianyi Cui fc3b6255e7 Merge pull request #292 from deepseek-harness/codex/simp-prune-bash-surface
refactor: prune bash implementation surface
2026-07-15 13:26:57 +08:00
Tianyi Cui fe2d61198f Merge remote-tracking branch 'origin/master' into codex/simp-prune-bash-surface 2026-07-15 13:23:16 +08:00
Tianyi Cui e6edee1d54 Merge remote-tracking branch 'origin/master' into codex/simp-drop-assembled-section-order 2026-07-15 13:21:06 +08:00
Tianyi Cui 38ea10eee0 Merge remote-tracking branch 'origin/master' into codex/simp-prune-code-runtime-surface 2026-07-15 13:20:08 +08:00
Tianyi Cui 7e03ecc937 Merge pull request #289 from deepseek-harness/codex/simp-prune-tools-prompt-surface
refactor: prune core tool and prompt surface
2026-07-15 13:19:25 +08:00
Tianyi Cui 3eb8c15b36 Merge remote-tracking branch 'origin/master' into codex/simp-prune-tools-prompt-surface 2026-07-15 13:14:56 +08:00
Tianyi Cui 7938c4201e Merge pull request #304 from deepseek-harness/refactor/agent-leaf-dependencies
refactor: add independent stdio interface - not std-agent allinone
2026-07-15 13:12:44 +08:00
Tianyi Cui eccaf2e2f7 Merge remote-tracking branch 'origin/master' into codex/simp-prune-tools-prompt-surface 2026-07-15 13:10:16 +08:00
imccyu 8aa4c8f660 Merge branch 'master' into refactor/agent-leaf-dependencies 2026-07-15 13:10:14 +08:00
Tianyi Cui 13caeaeeda Merge pull request #302 from deepseek-harness/codex/simp-share-loader-smoke-harness
refactor: share loader smoke harness
2026-07-15 13:09:41 +08:00
imccyu 517964fe84 Merge branch 'master' into refactor/agent-leaf-dependencies 2026-07-15 13:09:33 +08:00
Tianyi Cui 600af3ca79 chore: reconcile loader smoke lockfile 2026-07-15 13:06:08 +08:00
Tianyi Cui 4d29e8b5d7 Merge remote-tracking branch 'origin/master' into codex/simp-share-loader-smoke-harness 2026-07-15 13:03:53 +08:00
Tianyi Cui b75c9909e5 Merge pull request #299 from deepseek-harness/codex/simp-drop-skill-provider-events
refactor: drop unconsumed skill provider events
2026-07-15 13:03:30 +08:00
Tianyi Cui e16ce4d04e Merge remote-tracking branch 'origin/master' into codex/simp-drop-skill-provider-events 2026-07-15 12:59:17 +08:00
Tianyi Cui 6a0bb33eab Merge pull request #294 from deepseek-harness/codex/simp-prune-workflow-worker-surface
refactor: narrow workflow worker surface
2026-07-15 12:58:58 +08:00
imccyu 4593bf6ed4 Merge remote-tracking branch 'origin/master' into refactor/agent-leaf-dependencies 2026-07-15 12:54:06 +08:00
Tianyi Cui cb682af117 Merge remote-tracking branch 'origin/master' into codex/simp-prune-workflow-worker-surface 2026-07-15 12:53:29 +08:00
Tianyi Cui 60a3137fc2 Merge pull request #291 from deepseek-harness/codex/simp-hide-fs-internals
refactor: hide filesystem implementation helpers
2026-07-15 12:53:06 +08:00
imccyu e8c31e054d fix: pnpm dep after merge 2026-07-15 12:53:01 +08:00
Tianyi Cui 1c6034fa25 Merge remote-tracking branch 'origin/master' into codex/simp-hide-fs-internals 2026-07-15 12:42:58 +08:00
Tianyi Cui e6d762062f Merge branch 'master' into refactor/agent-leaf-dependencies 2026-07-15 12:36:53 +08:00
Tianyi Cui 07b2257339 Merge pull request #319 from deepseek-harness/worktree-update-cordis-vendor
feat(vendor): update cordis vendor
2026-07-15 12:34:48 +08:00
imccyu 7fc11d685a fix: boot use internal loader and fix path resolve 2026-07-15 12:04:31 +08:00
Tianyi Cui ac820b68a6 Merge branch 'master' into feat/mcp-client 2026-07-15 11:35:45 +08:00
imccyu 33474159e9 docs: add node-addon-internal-loader README 2026-07-15 11:33:23 +08:00
imccyu 52264d87ee fix: test 2026-07-15 11:31:55 +08:00
imccyu 31f4441fd4 pkg: update vendor dep 2026-07-15 11:28:45 +08:00
imccyu 8e892095a1 fix: readme and dep 2026-07-15 11:20:48 +08:00
imccyu c685582d54 vendor: update cordis / loader 2026-07-15 10:39:18 +08:00
imccyu 80fbeefbd6 refactor(ui): extract stdio plugin package
Move the readline front door from stdio-agent into @deepseek-ai/dsh-stdio, keeping the loader shape and the stdio coverage with the new package.
2026-07-15 10:04:40 +08:00
Tianyi Cui 77de6497b4 Merge remote-tracking branch 'origin/master' into codex/simp-drop-skill-provider-events
# Conflicts:
#	docs/event-producer-consumer.md
2026-07-15 01:49:41 +08:00
Tianyi Cui 3ff4d2a051 Merge remote-tracking branch 'origin/master' into codex/simp-share-loader-smoke-harness 2026-07-15 01:49:01 +08:00