Commit Graph
7523 Commits
Author SHA1 Message Date
imccyu ea6eb85162 fix(ci): review follow-ups for the coverage lane split
- Split DSH_COVERAGE_MAX_WORKERS between the two parallel gates
  (instrumented gets ~2/3, exempt gets ~1/3, both at least 1) so the
  lane never exceeds the budget the failover pool's 8 x 6-instance
  bound assumes; a budget of 1 pairs with DSH_GATE_CONCURRENCY=1 on
  the serial reference lanes, which already prevents gate overlap.
- Fail loud on a set-but-not-'1' DSH_COVERAGE_EXEMPT_HEAVY value in
  vitest.config.ts instead of silently ignoring it.
- Add coverage-exempt.spec.ts: each roster entry's filter and exclude
  must select the same non-empty spec set and entries must not
  overlap, so a renamed suite breaks the gate instead of silently
  returning to the instrumented run with a stale roster.
2026-07-31 02:55:37 +08:00
imccyu c368a89dc1 doc: record the coverage-exempt heavy suites decision
Agent Note (both languages, pairing recorded): what is exempted, the
per-entry reconciliation showing no threshold input changes, the
membership contract, and why the per-file 100% thresholds police the
roster automatically.
2026-07-31 02:55:37 +08:00
imccyu e9ed7193d8 ci: run coverage-exempt heavy suites uninstrumented in parallel
The coverage lane's wall clock was pinned by a few compiler- and
subprocess-bound suites whose v8 instrumentation tax is a multiple of
their runtime while contributing nothing the per-file thresholds need:
typert generator fixtures (whole-workspace compiler analysis; its src is
threshold-excluded) and three scripts/ child-process fixture suites
(scripts/ sources are never coverage-measured; in-process imports are
covered by their owning package tests).

Split ci-coverage into two parallel gates: the instrumented run sets
DSH_COVERAGE_EXEMPT_HEAVY=1 and vitest.config.ts drops the exempt suites
from both projects (CLI --exclude cannot reach per-project include
resolution); a second uninstrumented gate runs exactly those suites, so
the aggregate still executes every test. Membership contract and the
filter/exclude pairs live in scripts/coverage-exempt.ts.

Local 6-worker A/B: instrumented gate 900s -> 260s wall; exempt gate
262s wall runs beside it, so the lane converges near the slower of the
two (~4.4min vs ~7min single-gate). DSH_GATE_CONCURRENCY now has two
schedulable gates in this lane.
2026-07-31 02:55:37 +08:00
imccyu 8a3b47ae5e Merge pull request #988 from deepseek-harness/worktree-locale
feat(client): localize the remaining client surfaces on the typed locale seat
2026-07-31 02:23:33 +08:00
imccyu 119cc05577 fix: docs/static 2026-07-31 02:13:53 +08:00
imccyu d752405ad1 feat: locale update all 2026-07-31 02:13:53 +08:00
imccyu 1e10966ef6 wip
fix: docs
2026-07-31 02:13:53 +08:00
Tianyi Cui 085383b145 Merge pull request #1006 from deepseek-harness/worktree/deepseek-max-tokens-defaults
feat(llm-deepseek): configure max tokens and 1M context defaults
2026-07-31 02:05:58 +08:00
Tianyi Cui 023a9aee9d Merge origin/master into worktree/pr1006-merge-20260731 2026-07-31 01:56:19 +08:00
Tianyi Cui 464a57d3ca Merge commit 'refs/codex/pr1006/master' into worktree/pr1006-merge-20260731
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/config-catalog.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.i18n.yaml
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
#	examples/headless-agent/cordis.yml
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/llm/llm-deepseek/README.i18n.yaml
#	packages/llm/llm-deepseek/README.md
#	packages/llm/llm-deepseek/README.zh.md
#	packages/llm/llm-deepseek/src/adapter.ts
#	packages/llm/llm-deepseek/src/index.ts
#	packages/llm/llm-deepseek/tests/adapter.spec.ts
#	packages/llm/llm/README.i18n.yaml
#	packages/llm/llm/README.md
#	packages/llm/llm/README.zh.md
#	packages/subagent/subagent-dsh-sdk/README.i18n.yaml
#	packages/ui/jsonrpc/README.i18n.yaml
2026-07-31 01:55:19 +08:00
imccyu 47dafc28bc Merge pull request #957 from deepseek-harness/worktree-guiopentelemetry
Wire session telemetry (OTel) into the dsh web composition
2026-07-31 01:49:38 +08:00
07akioni c61a05ca5f Merge pull request #994 from deepseek-harness/fix/turn-actions
feat(web): add favicon and update IconActions behavior
2026-07-31 01:40:20 +08:00
imccyu 9adee1eeb1 fix: lint 2026-07-31 01:38:34 +08:00
imccyu d802364651 feat(cli): move the telemetry row into the shared base — every surface reports
The row moves from web.cordis.yml to base.cordis.yml, so the TUI reports
too (its exit paths already drain: disposeRootAndExit on normal exit, root
dispose before the /resume execve). The TUI launcher applies the same
resolveTelemetryPatch opt-out, judged against the tree actually booting via
configHasTelemetryRow so a --config-replace tree without the row is not
failed by a switch with nothing to disable. The TUI keyless smoke disables
telemetry in its child env; README (en/zh) and the Agent Note pair updated
to the every-surface stance.
2026-07-31 01:34:43 +08:00
imccyu faaed56719 fix: node-addon bump version 2026-07-31 01:34:43 +08:00
imccyu 06d3bdfd20 docs: align bilingual link targets for the telemetry note pair
The pairing gate requires both sides of a bilingual pair to link the same
target; point the zh side's cross-references at the English canonical files
and re-record both i18n pairings.
2026-07-31 01:34:42 +08:00
imccyu bd1c69149d fix(web): review round 1 — loud opt-out, headless drain, scaffold isolation, docs
- resolveTelemetryPatch: extracted pure switch resolution (unit-tested);
  fails loud when DSH_TELEMETRY_DISABLED is set but the row is absent, and
  documents that ANY non-empty value (including '0'/'false') disables.
- runHeadless: SIGINT/SIGTERM now dispose the tree before exit so the
  telemetry tail and shutdown marker drain (Node's default signal exit
  skips disposal).
- web.cordis.yml: explicit maxQueueSize beside maxExportBatchSize (the
  single-batch drain invariant no longer leans on an SDK default), comment
  covers exportTimeoutMillis's role and links the Agent Note.
- apps/web scaffold: disable telemetry-otel — fixture sessions must never
  leave the process.
- apps/cli README (en/zh + pairing): document the default endpoint, both
  env seams, and the no-redaction disclosure.
2026-07-31 01:34:42 +08:00
imccyu b38e1aa062 docs: Agent Note for the default web telemetry mount
Pins the deployment rulings: default-on with the production endpoint,
DSH_TELEMETRY_OTLP_URL / DSH_TELEMETRY_DISABLED env seams, 10s cadence,
the ~1s exit-drain parameter set, CI isolation, and the explicit
follow-ups (redaction, identity resource, TUI adoption, metrics).
2026-07-31 01:34:41 +08:00
imccyu ff55fe6997 fix: ci 2026-07-31 01:34:41 +08:00
imccyu 7f420ef6b6 ci: disable session telemetry in all GitHub workflows
apps/cli/cordis.yml now bakes in the production OTLP endpoint; CI boots of
the web composition (e2e, snapshots, built smokes) must not stream test
sessions there. DSH_TELEMETRY_DISABLED=1 at the workflow level disables
the telemetry row before its load-time url validation; the telemetry e2e
still runs — it overrides the variable to empty for its child process and
points DSH_TELEMETRY_OTLP_URL at its in-test collector.
2026-07-31 01:34:41 +08:00
imccyu f0b96359cc test(web): keyless e2e — OTLP collector receives the session ledger
Boot the real dsh web tree against an in-test OTLP/HTTP collector and a
mock LLM server, drive one turn over /api, then SIGINT. Asserts the wire:
OTLP JSON structure and resource identity, both instrumentation scopes,
ledger event coverage in seq order, prompt fidelity in the exported body,
the first-of-step chunk projection, and the ops shutdown marker arriving
through the exit drain.
2026-07-31 01:34:41 +08:00
imccyu 91478443c2 feat(web): wire session-telemetry-otel into the dsh web composition
Mount the existing telemetry seam + OTel logs backend in the web/headless
config tree so every session-log event streams to an OTLP/HTTP collector:

- telemetry-otel row: url defaults to the standard local OTLP endpoint,
  DSH_TELEMETRY_OTLP_URL overrides; 10s batch cadence; exporter/processor
  values bound the shutdown drain to ~1s against an unreachable collector
  (timeoutMillis doubles as the retry deadline, single-batch drain).
- DSH_TELEMETRY_DISABLED opt-out: AppCLIEntry patches the row disabled
  before boot (config alone cannot disable a row, and exporter.url
  validation is load-time fail-loud).
2026-07-31 01:34:40 +08:00
Tianyi Cui cc119e39a6 Merge master into fix/turn-actions 2026-07-31 01:29:03 +08:00
Tianyi Cui 145a5eb9da Merge master into fix/turn-actions 2026-07-31 01:27:56 +08:00
Yichen Jiang a36721fa55 Merge pull request #950 from deepseek-harness/worktree/onboarding-deepseek-config
feat(GUI): guide DeepSeek setup during onboarding
2026-07-31 01:18:04 +08:00
Yichen Jiang cb90e36791 Merge pull request #939 from deepseek-harness/worktree-llm-web-config
feat: web configuration plane — settings/credentials/llm wire domains and the Models provider page
2026-07-31 01:17:54 +08:00
Yichen Jiang aa888d1c4a Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 01:10:16 +08:00
Yichen Jiang c71af0f3bb Merge latest master into worktree-llm-web-config 2026-07-31 01:09:50 +08:00
imccyu b6917b6e62 Merge pull request #981 from deepseek-harness/worktree/command-row-copy
feat(ui): drop the slash and the argument echo from the command row
2026-07-31 01:09:06 +08:00
Yichen Jiang 11ffab7400 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 01:06:55 +08:00
Yichen Jiang a37a90548a Merge latest master into worktree-llm-web-config 2026-07-31 01:06:28 +08:00
Tianyi Cui 805ba9733e Merge pull request #977 from deepseek-harness/xtr/trajectory-timeline-click-focus
feat(ui): refine trajectory navigation and streaming performance
2026-07-31 01:05:38 +08:00
Tianyi Cui 26ef1b7e6c Merge commit '557cff8871e86a7a9be85c2ee2d8225db8b439fe' into worktree/pr977-merge-20260731 2026-07-31 00:52:43 +08:00
imccyu a3ddc90df6 Merge branch 'master' into worktree/command-row-copy 2026-07-31 00:50:47 +08:00
Yichen Jiang 2638a69c04 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 00:49:06 +08:00
Yichen Jiang 3548bedff2 Merge latest master into worktree-llm-web-config 2026-07-31 00:48:46 +08:00
Yichen Jiang 37b68e1c31 Merge pull request #884 from deepseek-harness/worktree-llm-dynamic-config
feat(llm): request-level dynamic configuration over ctx.settings + a credentials seam
2026-07-31 00:47:02 +08:00
Yichen Jiang 15636fbb8e fix(web): skip unavailable DeepSeek onboarding modal 2026-07-31 00:44:24 +08:00
Yichen Jiang 3658ad663e Merge worktree-llm-dynamic-config (884) into worktree-llm-web-config 2026-07-31 00:43:50 +08:00
imccyu 5099f72ea0 Merge branch 'master' into worktree/command-row-copy 2026-07-31 00:41:04 +08:00
imccyu f26a12ba3f test(web): re-record plan-review golden for slash-free command row
The plan-review golden landed on master (63c477f14) recorded against the
old command-row rendering; this branch drops the slash and the argument
echo, so the approved-state transcript line changes accordingly.
2026-07-31 00:40:04 +08:00
Yichen Jiang 16802cd612 chore: retrigger CI
GitHub created no workflow runs and no check runs for eaaec8173, leaving the
two required contexts waiting for a status that was never going to arrive.
Empty commit, identical tree — this only makes GitHub emit the pull_request
event again.
2026-07-31 00:38:48 +08:00
Yichen Jiang c580b1b634 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 00:32:59 +08:00
Tianyi Cui dc0c52bb03 Merge commit 'aab64371402d93293bde384139aaa607906928a8' into worktree/pr977-merge-20260731 2026-07-31 00:32:10 +08:00
Yichen Jiang e8c550d0e5 Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config 2026-07-31 00:31:42 +08:00
Yichen Jiang f64026d7e3 Merge latest master into worktree-llm-dynamic-config 2026-07-31 00:31:06 +08:00
Chinesezjc 9fd9e4f060 Merge pull request #975 from deepseek-harness/feat/web-presenter
feat(web): add a web render-intent card for web_search and web_fetch results
2026-07-31 00:26:59 +08:00
Yichen Jiang 52c997d01d Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 00:22:45 +08:00
imccyu e4e78e7a31 Merge remote-tracking branch 'origin/master' into mergebot/pr981 2026-07-31 00:22:36 +08:00
Yichen Jiang ce3a75ecca Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config 2026-07-31 00:21:49 +08:00