Commit Graph
381 Commits
Author SHA1 Message Date
creatixchu 1c065f3cd4 Merge remote-tracking branch 'origin/master' into worktree/2848-image-token-pressure
# Conflicts:
#	apps/cli/tests/profiles/acp/image-compaction.cordis.snapshot.yml
#	apps/cli/tests/profiles/acp/image-compaction.cordis.yml
#	apps/cli/tests/profiles/acp/tests/snapshots/image-compaction/input.json
#	apps/cli/tests/profiles/acp/tests/snapshots/image-compaction/session.jsonl
#	apps/cli/tests/profiles/acp/tests/snapshots/image-compaction/stdout.expected.jsonl
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	examples/acp-agent/tests/acp.snapshot.ts
#	packages/llm/token-meter/README.i18n.yaml
#	packages/llm/token-meter/README.md
#	packages/llm/token-meter/README.zh.md
#	packages/llm/token-meter/src/index.ts
#	packages/llm/token-meter/src/surface-fold.ts
2026-08-25 11:15:35 +08:00
imccyu 075a46cdec fix(client): preserve combo source identities 2026-08-25 06:43:25 +08:00
imccyu 83463aa896 feat(client): use bounded plugin combo URLs 2026-08-25 06:43:24 +08:00
imccyu 08ed5a54a8 refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
imccyu 1229292497 docs(session): refresh architecture and generated contracts 2026-08-25 06:10:25 +08:00
Tianyi Cui 4125514a08 refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
imccyu 9c3a0893f6 perf(client-modules): defer per-plugin revision hashing
Preserve sourcemaps through the production Client build and verify batched loading across Host, HMR, and Web Worker paths.
2026-08-24 20:49:13 +08:00
lsdsjy 5bbaf168d9 perf(client-modules): batch startup plugin scripts 2026-08-24 20:48:12 +08:00
creatixchu 9f2ba9f5aa Merge origin/master (regenerate config catalog) 2026-08-24 19:51:16 +08:00
creatixchu 42164508c8 feat(llm): 在 compaction 中按路由为图片请求压力计价
Closes #2848.

- dsh-llm 新增 LlmAdapter.imageRequestPricing 同步钩子与 LlmImageRequestPricing/LlmImageRequestPrice 词汇,ctx.llm 按路由解析
- llm-deepseek 用官方公布的 v4 视觉计算器逐句移植(14px patch、3:1 降采样、384 上限、最坏对齐 pad)实现该钩子,复现请求投影的最旧优先 offload 与像素预算缩放;纯几何 requestImageDimensions 上移到 dsh-attachment
- token-meter 表层 fold 存储与路由无关的节点事实,measure() 按生效 envelope 的路由为图片出现处定价;锚点存快照并按同一路由重定价;TokenSurfaceNode 同时携带路由价 tokens 与固定启发式 heuristicTokens
- compaction 触发、保留与选段读取同一套路由价,记录的 shadowedTokenCount 保持启发式以维持 O(1) 投影 fold 一致
- llm-replay 支持按模型的 imageRequestTokens 声明;新增 keyless 的 image-compaction ACP 快照场景端到端验证装配应用
2026-08-24 19:15:30 +08:00
Dudu-0223 f76a225a7d Merge pull request #2663 from deepseek-harness/feat/subagent-provider
让 subagent 按需发现并选择子 Agent 模型
2026-08-24 18:23:42 +08:00
creatixchu 30704dc1df fix(attachment): budget master pixels and share the encoding ladder
Master dimensions move from a 2048 long-edge rule to a total-pixel
budget (normalizedImageMaxPixels, default 2048x2048) with an 8192
long-edge cap, so extreme aspect ratios keep short-edge resolution.
The shared quality ladder and lazy execution move to encoding.ts,
review-round doc fixes land across attachment and llm packages, and
the superseded facts in the unified-image-pipeline note now describe
the shipped routing.
2026-08-24 17:10:59 +08:00
creatixchu ebb8010b56 Merge remote-tracking branch 'origin/master' into worktree/2885-image-compression
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	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
2026-08-24 16:23:34 +08:00
creatixchu 4863890535 fix(attachment): route image encoding by alpha over shared quality ladders
Delete the 5-bit colour-count classifier and palette PNG branch that
misrouted high-frequency photographic JPEGs (issue #2885 images 23/24)
into an encoder 100x slower with 4x larger output. Both normalization
and request-image encoding now route by the decoded alpha fact alone:
opaque sources down a JPEG ladder and alpha sources down a WebP
effort-0 ladder, each at qualities 85/75/60. Byte budgets become ladder
targets: the downscale retry loop is gone and a ladder-exhausted encode
keeps its smallest output, while provider byte caps stay enforced at
the transmitting route. Request transforms move to request-image-v5.
2026-08-24 16:14:32 +08:00
creatixchu 558f08780c refactor(attachment): 分离宿主位置与模型访问路径 2026-08-24 14:51:03 +08:00
creatixchu 7f4cf99eeb 修正图片路径访问与只读存储 2026-08-24 13:11:04 +08:00
creatixchu bd4e4173e7 feat(attachment): expose model-readable image paths 2026-08-24 12:08:26 +08:00
imccyu ce1247d953 docs(client): sync injected module graph contract 2026-08-24 10:37:06 +08:00
imccyu 64c9e4a22c docs: define client-derived tool presentation 2026-08-24 10:24:16 +08:00
imccyu 3e942e5e21 docs(client): document web architecture 2026-08-24 01:27:48 +08:00
imccyu dc92793f10 fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
imccyu c5efa5ce9c docs(typert): sync Gateway type excerpt 2026-08-23 16:16:06 +08:00
imccyu d020f60911 docs(typert): refresh Remote output contract 2026-08-23 16:16:06 +08:00
imccyu a49b265f88 docs: synchronize controller transport documentation 2026-08-23 16:16:04 +08:00
imccyu 9b1069c234 docs: document controller Remote transport 2026-08-23 16:16:03 +08:00
Tianyi Cui ea3d0ffcee fix(webhook): preserve the initial model selection 2026-08-23 01:48:35 +08:00
Tianyi Cui 5f60e50d71 feat(webhook): create workspace sessions from GitHub events 2026-08-23 01:48:35 +08:00
Tianyi Cui fe72ab42d1 feat(deepseek): upload incremental session logs 2026-08-22 22:55:02 +08:00
Tianyi Cui 851eab756e docs(todo): add the owning subsystem reference 2026-08-22 22:22:43 +08:00
Tianyi Cui 59e49458e5 docs(todo): record event ownership 2026-08-22 21:10:02 +08:00
Tianyi Cui cd6197b428 Merge origin/master into worktree/acp-v1-control 2026-08-22 20:05:11 +08:00
Tianyi Cui ea6f61f144 feat(deepseek): upload plugin package metadata (#2916)
* feat(deepseek): upload plugin package metadata

* feat(deepseek): apply metadata review feedback

* docs(deepseek): specify request wire extensions

* docs(notes): record inventory cache benchmark

* docs(site): keep DeepSeek wire spec repository-only
2026-08-22 20:03:23 +08:00
Tianyi Cui 511181684c feat(acp): complete standard v1 automation controls 2026-08-22 18:52:27 +08:00
Tianyi Cui 934976732d docs: purge residual chain-of-thought leakage 2026-08-22 13:10:23 +08:00
Turtle 6b3e971805 docs: remove implementation narration from prose 2026-08-21 22:22:23 +08:00
creatixchu d4b24b5148 Merge remote-tracking branch 'origin/master' into worktree/image-management-strategy 2026-08-21 16:55:00 +08:00
imccyu 7ce85283b5 Revert "Merge pull request #2608 from deepseek-harness/fix/permission-copy-and-default"
This reverts commit d51f4106a2b0669d33e0f5dc1d5dcf21a764d313, reversing
changes made to 69ace51625b6ac665b2f2ec1e81005d5b055f152.
2026-08-21 16:21:13 +08:00
creatixchu 2491e12fd8 refactor(attachment): normalize image storage API 2026-08-21 15:06:24 +08:00
creatixchu 724783b024 refactor(image): remove region reads 2026-08-21 15:06:24 +08:00
creatixchu 72b204afa1 feat(images): expand source upload envelope 2026-08-21 15:06:11 +08:00
creatixchu 48a58b9090 fix(images): address unified pipeline review 2026-08-21 15:06:10 +08:00
creatixchu c0dd8ec820 chore(images): align merged runtime closure 2026-08-21 15:05:54 +08:00
creatixchu d29855f97c feat(images): unify master and Files request pipeline 2026-08-21 15:05:54 +08:00
creatixchu 8f83853b60 refactor(attachment): saveImage returns the canonical ref beside source facts
AttachmentStore.saveImage now resolves SavedImageAttachment: the durable
reference paired with the submitted raster's intrinsic facts, so a store may
persist a canonical re-encoding while callers keep the source dimensions for
coordinate mapping. saveImages keeps returning refs; every fake store and the
cordis API catalog follow the new signature.
2026-08-21 15:01:45 +08:00
lsdsjy 600f3a3110 fix(frontend-static): return 404 for a missing index 2026-08-20 20:03:18 +08:00
lsdsjy 92723cafeb fix(frontend-static): return 404 for missing paths 2026-08-20 20:02:11 +08:00
Turtle 93a1b569ac Merge remote-tracking branch 'origin/master' into codex/remove-cordis-catalog-line-numbers
# Conflicts:
#	docs/subsystems/agent-team.i18n.yaml
#	docs/subsystems/approval.i18n.yaml
#	docs/subsystems/client-modules.i18n.yaml
#	docs/subsystems/client-modules.md
#	docs/subsystems/client-modules.zh.md
#	docs/subsystems/code-runtime.i18n.yaml
#	docs/subsystems/commands.i18n.yaml
#	docs/subsystems/commands.md
#	docs/subsystems/commands.zh.md
#	docs/subsystems/compaction.i18n.yaml
#	docs/subsystems/compaction.md
#	docs/subsystems/compaction.zh.md
#	docs/subsystems/core.i18n.yaml
#	docs/subsystems/core.md
#	docs/subsystems/core.zh.md
#	docs/subsystems/credentials.i18n.yaml
#	docs/subsystems/credentials.md
#	docs/subsystems/credentials.zh.md
#	docs/subsystems/feedback.i18n.yaml
#	docs/subsystems/filesystem.i18n.yaml
#	docs/subsystems/goal.i18n.yaml
#	docs/subsystems/http-server.md
#	docs/subsystems/http-server.zh.md
#	docs/subsystems/invariants.i18n.yaml
#	docs/subsystems/invariants.md
#	docs/subsystems/invariants.zh.md
#	docs/subsystems/jobs.i18n.yaml
#	docs/subsystems/llm-streaming.i18n.yaml
#	docs/subsystems/llm-streaming.md
#	docs/subsystems/llm-streaming.zh.md
#	docs/subsystems/permission-presets.md
#	docs/subsystems/permission-presets.zh.md
#	docs/subsystems/persistence.i18n.yaml
#	docs/subsystems/persistence.md
#	docs/subsystems/persistence.zh.md
#	docs/subsystems/plan.i18n.yaml
#	docs/subsystems/plan.md
#	docs/subsystems/plan.zh.md
#	docs/subsystems/sandbox.i18n.yaml
#	docs/subsystems/sandbox.md
#	docs/subsystems/sandbox.zh.md
#	docs/subsystems/schedule.i18n.yaml
#	docs/subsystems/session-projection.i18n.yaml
#	docs/subsystems/session-projection.md
#	docs/subsystems/session-projection.zh.md
#	docs/subsystems/session-query.i18n.yaml
#	docs/subsystems/session-reference.i18n.yaml
#	docs/subsystems/session-reference.md
#	docs/subsystems/session-reference.zh.md
#	docs/subsystems/session-telemetry.md
#	docs/subsystems/session-telemetry.zh.md
#	docs/subsystems/session-title.i18n.yaml
#	docs/subsystems/session.i18n.yaml
#	docs/subsystems/session.md
#	docs/subsystems/session.zh.md
#	docs/subsystems/settings.i18n.yaml
#	docs/subsystems/settings.md
#	docs/subsystems/settings.zh.md
#	docs/subsystems/shell.i18n.yaml
#	docs/subsystems/shell.md
#	docs/subsystems/shell.zh.md
#	docs/subsystems/skills.i18n.yaml
#	docs/subsystems/skills.md
#	docs/subsystems/skills.zh.md
#	docs/subsystems/spill.i18n.yaml
#	docs/subsystems/storage.i18n.yaml
#	docs/subsystems/subagent.i18n.yaml
#	docs/subsystems/subagent.md
#	docs/subsystems/subagent.zh.md
#	docs/subsystems/subprocess.i18n.yaml
#	docs/subsystems/system-prompt.i18n.yaml
#	docs/subsystems/system-prompt.md
#	docs/subsystems/system-prompt.zh.md
#	docs/subsystems/tasks.md
#	docs/subsystems/tasks.zh.md
#	docs/subsystems/terminal.md
#	docs/subsystems/terminal.zh.md
#	docs/subsystems/token-meter.i18n.yaml
#	docs/subsystems/tools.i18n.yaml
#	docs/subsystems/tools.md
#	docs/subsystems/tools.zh.md
#	docs/subsystems/typert.i18n.yaml
#	docs/subsystems/typert.md
#	docs/subsystems/typert.zh.md
#	docs/subsystems/user-interaction.i18n.yaml
#	docs/subsystems/user-questions.i18n.yaml
#	docs/subsystems/user-questions.md
#	docs/subsystems/user-questions.zh.md
#	docs/subsystems/web.i18n.yaml
#	docs/subsystems/workflow.i18n.yaml
#	docs/subsystems/workflow.md
#	docs/subsystems/workflow.zh.md
#	docs/subsystems/workspace.i18n.yaml
#	docs/subsystems/workspace.md
#	docs/subsystems/workspace.zh.md
#	packages/typert/generator/tests/cordis-catalog.spec.ts
2026-08-20 19:48:43 +08:00
pku-xht 84cbec28e9 Merge remote-tracking branch 'origin/master' into codex/localized-chinese-doc-links
# Conflicts:
#	.agents/notes/implemented/architecture/2026-06-11-content-block-vocabulary.i18n.yaml
#	.agents/notes/implemented/architecture/2026-06-11-content-block-vocabulary.zh.md
#	.agents/notes/implemented/architecture/2026-06-18-shared-persistence-write-coordinator.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md
#	.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md
#	.agents/notes/implemented/bug-fix/2026-08-18-request-image-payload-bound.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-08-18-request-image-payload-bound.zh.md
#	.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md
#	.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md
#	.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.zh.md
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	.agents/notes/implemented/feature/2026-08-05-agent-teams.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md
#	.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.i18n.yaml
#	.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.i18n.yaml
#	.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.zh.md
#	.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml
#	.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md
#	.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml
#	.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.zh.md
#	.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml
#	.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md
#	.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.i18n.yaml
#	.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md
#	.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.i18n.yaml
#	README.i18n.yaml
#	README.zh.md
#	docs/architecture.i18n.yaml
#	docs/architecture.zh.md
#	docs/development.i18n.yaml
#	docs/development.zh.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.zh.md
#	docs/subsystems/README.i18n.yaml
#	docs/subsystems/README.zh.md
#	docs/subsystems/agent-team.i18n.yaml
#	docs/subsystems/agent-team.zh.md
#	docs/subsystems/client-modules.i18n.yaml
#	docs/subsystems/client-modules.zh.md
#	docs/subsystems/commands.i18n.yaml
#	docs/subsystems/commands.zh.md
#	docs/subsystems/persistence.i18n.yaml
#	docs/subsystems/persistence.zh.md
#	docs/subsystems/session-reference.i18n.yaml
#	docs/tool-catalog.i18n.yaml
#	docs/tool-catalog.zh.md
#	docs/user/guide/providers.i18n.yaml
#	docs/user/guide/providers.zh.md
#	packages/README.i18n.yaml
#	packages/README.zh.md
#	packages/bundle/web-app/README.i18n.yaml
#	packages/bundle/web-app/README.zh.md
#	packages/client/README.i18n.yaml
#	packages/client/README.zh.md
#	packages/client/connection/README.i18n.yaml
#	packages/client/connection/README.zh.md
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.zh.md
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.zh.md
#	packages/client/ui-sidebar/README.i18n.yaml
#	packages/client/ui-sidebar/README.zh.md
#	packages/client/ui-workspace/README.i18n.yaml
#	packages/client/ui-workspace/README.zh.md
#	packages/context/README.i18n.yaml
#	packages/context/README.zh.md
#	packages/core/agent-loop/README.i18n.yaml
#	packages/credentials/README.i18n.yaml
#	packages/credentials/README.zh.md
#	packages/experimental/agent-team/README.i18n.yaml
#	packages/experimental/agent-team/README.zh.md
#	packages/experimental/tool-agent-team/README.i18n.yaml
#	packages/experimental/tool-agent-team/README.zh.md
#	packages/host/frontend-static/README.i18n.yaml
#	packages/host/frontend-static/README.zh.md
#	packages/host/webserver/README.i18n.yaml
#	packages/host/webserver/README.zh.md
#	packages/interaction/commands/README.i18n.yaml
#	packages/interaction/commands/README.zh.md
#	packages/plan/plan-mode/README.i18n.yaml
#	packages/plan/plan-mode/README.zh.md
#	packages/sandbox/sandbox-local/README.i18n.yaml
#	packages/sandbox/sandbox-local/README.zh.md
#	packages/session/README.i18n.yaml
#	packages/session/README.zh.md
#	packages/session/session-persistence-sqlite/README.i18n.yaml
#	packages/session/session-persistence-sqlite/README.zh.md
#	packages/session/session-projection-cache/README.i18n.yaml
#	packages/session/session-projection-cache/README.zh.md
#	packages/shell/tool-pwsh/README.i18n.yaml
#	packages/shell/tool-pwsh/README.zh.md
#	packages/subagent/subagent-codex/README.i18n.yaml
#	packages/subagent/subagent-codex/README.zh.md
#	packages/subagent/subagent/README.i18n.yaml
#	packages/subagent/subagent/README.zh.md
#	packages/web/tool-web/README.i18n.yaml
#	packages/web/tool-web/README.zh.md
#	scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-08-20 19:15:33 +08:00
Yichen Jiang fecfabcac4 fix(credentials): name reference update event explicitly 2026-08-20 17:58:39 +08:00
Yichen Jiang 9eaaeaeb96 fix(credentials,authorization,llm-pi-ai): harden the auth seams per review
Review findings on #2509, all confirmed:

- Every writer of .credentials.yaml now waits out the record-mutation
  lock (DOCUMENT_LOCK_WAIT_MS): refs and records share one file and one
  lock, so a reference write or record delete contending with an OAuth
  refresh must not fail at the 2s file-work default.
- api-key records are admitted before they are rendered: an empty key,
  a non-POSIX env name, or an empty env value is refused at the write
  instead of persisting a document the next boot rejects wholesale.
- llm-pi-ai no longer lets the credential-key grammar reject legal
  route ids: reads answer "nothing stored" via isCredentialKeySegment
  (new dsh-credentials export), deletes have nothing to remove, and only
  a write refuses, as LlmError UNSTORABLE_PROVIDER_ID; flow registration
  skips a future catalog id outside the grammar instead of failing the
  mount.
- authorization/settled fans out with contained listener failures on
  the credentials seam's terms (INVARIANT still rethrows), so a broken
  watcher can never turn a finished attempt into a failure.
- notify() is fire-and-forget at the seam: a surface that cannot render
  a notice loses the notice, never the attempt.
- A declined prompt is an outcome: interactions reject with the new
  AuthorizationDeclinedError and the attempt settles cancelled instead
  of failed.
- NOT_COMMITTED now confirms a commit observed during the attempt
  (credentials/record-updated for the flow's key), so a re-auth cannot
  pass a stale record off as fresh; a flow that deletes its record is
  refused on the same code.

READMEs, the subsystem/event/config catalogs, and the Agent Note follow
the shipped behavior; memory.ts carries the dedup TODO.
2026-08-20 17:58:38 +08:00