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
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
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
pku-xht
ad6516933b
fix(i18n): close automated review findings
2026-08-18 21:02:50 +08:00
creatixchu
1492b0cfee
Merge remote-tracking branch 'origin/master' into worktree/command-attachment-envelope
...
# Conflicts:
# apps/web/tests/assembled-boot.ts
2026-08-18 12:00:46 +08:00
creatixchu
0e39055121
fix(attachment): refuse oversized image sides at admission
...
An image with a side above the deployed routes' 2000px many-image bound
could be durably committed by read_image, ride every later request, and
permanently fail the session with provider 400s. Admission now enforces a
configurable maxImageDimension (default 2000) during the full decode, so
read_image surfaces a recoverable tool error naming the limit instead of
poisoning durable history; the Web composer gets dedicated copy for the
new IMAGE_DIMENSION_TOO_LARGE reason.
Fixes #2626
2026-08-17 20:49:08 +08:00
creatixchu
c530de9edc
Merge origin/master: fold admitEncodedImages onto AttachmentStore.saveImages
...
master introduced AttachmentStore.saveImages as the batch admission
(count/aggregate-byte/media-type limits, validate-all-before-save,
ordered commit). admitEncodedImages narrows to the shared wire entry:
canonical-base64 enforcement plus delegation to saveImages, keeping one
home for batch policy while both wire endpoints (prompt RPC and the
command executor) still call one function. Test doubles gain saveImages;
batch-limit error texts follow saveImages' wording.
2026-08-17 19:59:53 +08:00
creatixchu
8d9fee19f9
feat(commands): route composer image attachments through slash commands
...
A claimed slash command consumed only the text half of the composer
submission: /goal with reference images executed, cleared the draft, and
silently stranded the images in the rail. Model-visible attachment intent
had no route through the command plane.
The submission envelope is now modeled end to end. CommandDefinition
input.images declares acceptance; the declaration rides the descriptor to
every client, onto the minted CommandClaim, and into the input machine's
claim snapshot. commands.execute carries the submission's base64 images
and enforces the declaration in the executor: non-declaring commands, a
missing attachment store, and exceeded batch limits settle as logged
error results before the handler runs. Admission reuses the attachment
package's new admitEncodedImages, extracted from api-proxy's prompt path
so both wire endpoints share one limits/validation/commit sequence.
Producers own model visibility: /goal submits one user followup (image
blocks + a fixed reference line) after a successful create/edit so goal
rounds read the images from session history; /plan folds them into its
steered message. Grammar misfits (/goal pause, bare /plan, /plan off)
return direct errors and the composer keeps the images.
On the client, enter adjudication carries a SubmitEnvelope and every
command route that cannot consume images throws a localized refusal that
renders as one composer notice with draft and images retained; the
claimed pre-gate applies the same copy. An accepting claim serializes the
draft images, forwards them to commands.execute, and clears plus releases
them only on a success outcome.
The assembled web test roster gains the ui-input-trigger and ui-commands
plugins, mirroring the shipped composition, so slash submissions exercise
the command plane; a new keyless snapshot pins the refusal banner and the
accepting /goal flow over the built client graph.
2026-08-17 18:57:55 +08:00
Tianyi Cui
de17206051
fix(attachment): type failure codes
2026-08-12 17:48:17 +08:00
Tianyi Cui
219d2a1fb9
feat(attachment): add ordered image batch admission
2026-08-12 17:48:17 +08:00
Tianyi Cui
c10d74ba95
fix(apiproxy): cancel attachment reads during export
...
Response-consumer cancellation already stopped lineage reads, persistence reads, and ZIP production, but the final attachment phase called readImage without the producer signal. A slow or stalled attachment backend could therefore keep working after the browser abandoned the download and prevent the producer from settling.\n\nExtend the attachment read seam with optional cancellation, forward it through the local backend into Node's filesystem read, and preserve the abort reason rather than wrapping it as a storage failure. The exporter now passes its combined request/consumer signal to every attachment read.\n\nCover both ownership boundaries: the local-store test proves filesystem forwarding and cancellation identity, while the assembled export test cancels a reader during a pending attachment provider call. Regenerate the Cordis API catalog and paired documentation so implementers can rely on the new contract.
2026-08-11 17:52:24 +08:00
Turtle
0c708cb10d
refactor: replace overloaded surface terminology
2026-08-11 15:23:05 +08:00
Yichen Jiang
c06f9041fc
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# docs/subsystems/attachment.i18n.yaml
# docs/subsystems/attachment.md
# docs/subsystems/attachment.zh.md
# docs/subsystems/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/README.md
# packages/README.zh.md
# packages/client/runtime/package.json
# packages/client/ui-conversation/package.json
# packages/client/ui-conversation/src/client/chat/AssistantMarkdown.tsx
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/host/apiproxy/src/index.ts
# packages/host/apiproxy/tests/api-proxy-models.spec.ts
# packages/self-modification/tool-cordis/src/api-catalog.ts
# pnpm-lock.yaml
# scripts/type-equiv.manifest.json
2026-08-09 23:33:35 +08:00