Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/compat.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Compat

# dshbase-style compatibility verification (monthly + on demand):
# dshbase-style compatibility verification (weekly + per PR + on demand):
# 1. bare-import: install the packed tarball into an empty project (native
# builds allowlisted) and import its entry - catches devDependencies
# mistaken for dependencies and native-build gate regressions.
Expand All @@ -13,8 +13,9 @@ name: Compat
# Platform guard: every assertion here is platform-neutral. Platform-specific
# behavior (Windows/macOS-only rows) is never asserted on this Linux runner.
on:
pull_request:
schedule:
- cron: '0 4 1 * *'
- cron: '0 4 * * 1'
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -139,7 +140,7 @@ jobs:
pnpm run build
pnpm pack --pack-destination "$RUNNER_TEMP"
- name: Install dsh CLI
run: npm install -g @deepseek-ai/dsh@0.1.5-rc.2
run: npm install -g @deepseek-ai/dsh@0.1.6-alpha.2

- name: Install into a scratch profile (builds allowlisted)
run: |
Expand All @@ -151,6 +152,7 @@ jobs:
packages:
- .
nodeLinker: hoisted
minimumReleaseAge: 0
autoInstallPeers: false
allowBuilds:
'@deepseek-ai/dsh-subprocess-local': true
Expand All @@ -159,7 +161,7 @@ jobs:
protobufjs: true
'@google/genai': true
YAML
dsh plugin --profile compat add '@deepseek-ai/dsh-base@0.1.5-rc.2' '@deepseek-ai/dsh-headless@0.1.5-rc.2' "$TARBALL"
dsh plugin --profile compat add '@deepseek-ai/dsh-base@0.1.6-alpha.2' '@deepseek-ai/dsh-headless@0.1.6-alpha.2' "$TARBALL"

- name: Row-mount assertion
run: |
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,21 @@ All notable changes to `dsh-background-agents` are documented here. The repo is
### Changed

- Move the room catch-up listener from the removed `agent/session-start` event to `agent/created` (the 0.1.6-alpha.1 checkout renamed the lifecycle event and added `source` to its payload).
- **The `agent/created` catch-up listener is now strictly synchronous and filtered (A1).** It returns `undefined` on every path, filters the four `SessionStartSource` values (`clear`/`compact` skip entirely), runs its real work on a microtask under a single try/catch, honours the payload's activation signal, and bounds the catch-up with its own 2 s timeout instead of inheriting `roomOpenTimeoutMs`. A slow or stuck room store can no longer serialize Agent creation. Three regression locks pin the contract (`tests/agent-created-listener.spec.ts`).
- **Client-side subagent navigation is reported instead of failing silently (CS1).** `0.1.6-alpha.2` removed the `ISessions` subagent-navigation call and states that navigation belongs to the view owners (`ui-subagent` owns the session-header lineage seat and supplies `openChild(address)` to its own renderer). This plugin has no sanctioned navigation entry on that line, so the action now logs one explicit warning and returns a user-visible explanation — previously the removed method threw into a `catch` and surfaced as an unexplained failure.
- **The panel's current session now derives from main-view retention (B5).** The removed `SessionListState.current` scalar is replaced by `retainInfo(id).retainedBy.mainView`, with per-catalog-id subscriptions so a navigation refreshes the panel; without a current session the panel keeps its explicit empty state as before.
- **An unreadable child log is reported as `unavailable` instead of as empty text (A2)**, and the pre-0.1.2 `.events` read fallback is gone from both read sites — the supported read face is `snapshotEvents()`.
- Bridge the package's zod-v3 schemas into the alpha.2 registry and domain-table slots. `@deepseek-ai/dsh-session-projection` and `@deepseek-ai/dsh-storage-domain` type their schema slots with the zod **v4** copy they depend on, which is not structurally assignable to this package's zod v3 schemas; the registry only calls `parse` on them, so the boundary is bridged explicitly and documented at each site.
- `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh`; the dev/test line is pinned to `0.1.6-alpha.2`.

### Fixed

- The published-line ruler (`typecheck:ci`) again proves something: it now covers the shipped `src` surface against the published packages (it previously included `tests`, which need checkout-only packages that are not published dependencies), and `tsconfig.paths.json`/`vitest.aliases.mjs` were regenerated against the checkout (dead `code-runtime`/`e2b` aliases and friends dropped).

### Notes

- Session-log audit for the room/agent fact channel remains **off** on this line (see the README support matrix): the non-surface `background-agents/*` event cannot carry the `ignorable` marker, so the durable domain tables stay the record of authority.
- Browser-visible behavior of the subagent navigation fix and the room panel is **not yet verified on a real machine** (no browser in this environment): the release note must not claim it until the manual checklist in the batch handoff is signed off.

## [0.9.7] - 2026-09-12

Expand Down
2 changes: 1 addition & 1 deletion HARNESS_COMMIT
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5dda764ed3aa172535a7967b06ff95d9cbfe536a
ddefc45fbc7f8e46dd73185e68295696d1297887
1 change: 1 addition & 0 deletions README-es.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Los hosts `0.1.2-alpha.2` y posteriores fallan en cerrado ante el vocabulario de
0.1.5-alpha.1 (adaptado el 2026-09-09): `SessionHandleReadResult` ahora devuelve `{ eventState, events }`, así que la lectura fría de bg_result desestructura `.events` del seam de handle (el fallback `load()` de la línea publicada no cambia). El pin de CI del harness pasa al commit público del tag `5dda764ed3aa` (el checkout local está 13 commits de infra por delante e inalcanzable desde CI) y las sondas de compatibilidad instalan la línea alpha. Los peers se amplían a `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` (regla prerelease-tuple: el primer brazo por sí solo no coincide con `0.1.5-alpha.1`) y los devDeps fijan `0.1.5-alpha.1`. Verificado el 2026-09-09 contra `dsh-v0.1.5-alpha.1` (cadena completa de gates). La afirmación anterior de `0.1.3-alpha.1` queda obsoleta: esa versión preliminar cae fuera de ambos brazos de peers.
0.1.5-rc.1 (adaptado el 2026-09-10): los pines de dependencias pasan a la línea publicada 0.1.5-rc.1; ningún cambio de seam afecta el comportamiento de este plugin.
0.1.5-rc.2 (adaptado el 2026-09-11): los pines de dependencias pasan a la línea publicada 0.1.5-rc.2; ningún cambio de seam afecta el comportamiento de este plugin.
0.1.6-alpha.2 (adaptado el 2026-09-18): el servicio de sesiones del cliente eliminó su llamada de navegación a subagentes, así que la acción ahora informa que la navegación pertenece a la cabecera de sesión (el asiento de linaje de `ui-subagent`) en lugar de fallar en silencio; el panel de salas deriva su sesión actual de la retención de la vista principal (`retainedBy.mainView`) porque `SessionListState.current` ya no existe. El listener de puesta al día de `agent/created` devuelve de forma síncrona bajo su propio límite de 2 s, y un log de hijo ilegible informa `unavailable` en vez de texto vacío. Las métricas del dashboard alimentadas por el canal de hechos del log de sesión siguen **no disponibles** en esta línea (un hecho no superficial todavía no puede llevar la marca de omisión): las tablas durables de salas y el valor de proyección del panel son el registro. Verificado el 2026-09-18 (ambos typecheck + la suite completa); la mitad visible en el navegador **no** está verificada en máquina todavía.

| Superficie | Estado |
|---|---|
Expand Down
1 change: 1 addition & 0 deletions README-hi.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
0.1.5-alpha.1 (2026-09-09 को अनुकूलित): `SessionHandleReadResult` अब `{ eventState, events }` लौटाता है, इसलिए bg_result की कोल्ड रीड हैंडल सीम से `.events` डीस्ट्रक्चर करती है (प्रकाशित लाइन का `load()` फ़ॉलबैक अपरिवर्तित है)। CI हार्नेस पिन सार्वजनिक tag commit `5dda764ed3aa` पर चला जाता है (स्थानीय checkout 13 infra commits आगे है और CI से पहुँच से बाहर) और compat जाँचें alpha लाइन इंस्टॉल करती हैं। peers को `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` तक बढ़ाया गया (prerelease-tuple नियम: अकेला पहला ब्राज़ `0.1.5-alpha.1` से मेल नहीं खाता) और devDeps `0.1.5-alpha.1` पर पिन हैं। 2026-09-09 को `dsh-v0.1.5-alpha.1` के विरुद्ध सत्यापित (पूर्ण गेट श्रृंखला)। पहले का `0.1.3-alpha.1` दावा अब अप्रचलित है: वह प्रीरिलीज़ दोनों peer ब्राज़ों से बाहर है।
0.1.5-rc.1 (2026-09-10 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.1 लाइन पर चले जाते हैं; कोई seam परिवर्तन इस प्लगइन के व्यवहार को प्रभावित नहीं करता।
0.1.5-rc.2 (2026-09-11 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.2 लाइन पर चले जाते हैं; कोई seam परिवर्तन इस प्लगइन के व्यवहार को प्रभावित नहीं करता।
0.1.6-alpha.2 (2026-09-18 को अनुकूलित): क्लाइंट सेशन सेवा ने अपना सबएजेंट-नेविगेशन कॉल हटा दिया, इसलिए यह क्रिया अब स्पष्ट रूप से बताती है कि नेविगेशन सेशन हेडर के स्वामित्व में है (`ui-subagent` की lineage सीट), चुपचाप विफल होने के बजाय; रूम पैनल अपना वर्तमान सेशन मुख्य-व्यू retention (`retainedBy.mainView`) से निकालता है क्योंकि `SessionListState.current` अब नहीं है। `agent/created` कैच-अप लिसनर अपनी 2 सेकंड सीमा के भीतर समकालिक रूप से लौटता है, और अपठनीय चाइल्ड लॉग खाली टेक्स्ट के बजाय `unavailable` बताता है। सेशन-लॉग फ़ैक्ट चैनल से मिलने वाले dashboard मेट्रिक्स इस लाइन पर **अनुपलब्ध** रहते हैं (गैर-सरफ़ेस फ़ैक्ट इवेंट पर अब भी ignore मार्कर नहीं लग सकता) — टिकाऊ रूम टेबल और पैनल का प्रोजेक्शन मान ही रिकॉर्ड हैं। 2026-09-18 को सत्यापित (दोनों typecheck + पूरी टेस्ट सूट); ब्राउज़र-दृश्य आधा भाग अभी **मशीन-सत्यापित नहीं** है।

| सतह | स्थिति |
|---|---|
Expand Down
1 change: 1 addition & 0 deletions README-pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Hosts `0.1.2-alpha.2` e posteriores falham de forma fechada no vocabulário de e
0.1.5-alpha.1 (adaptado em 2026-09-09): `SessionHandleReadResult` agora retorna `{ eventState, events }`, então a leitura fria do bg_result desestrutura `.events` do seam de handle (o fallback `load()` da linha publicada não muda). O pin de CI do harness passa para o commit público da tag `5dda764ed3aa` (o checkout local está 13 commits de infra à frente e inalcançável pela CI) e as sondas de compatibilidade instalam a linha alpha. Os peers são ampliados para `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` (regra prerelease-tuple: o primeiro braço sozinho não corresponde a `0.1.5-alpha.1`) e os devDeps fixam `0.1.5-alpha.1`. Verificado em 2026-09-09 contra `dsh-v0.1.5-alpha.1` (cadeia completa de gates). A afirmação anterior de `0.1.3-alpha.1` fica obsoleta: essa versão preliminar cai fora dos dois braços de peers.
0.1.5-rc.1 (adaptado em 2026-09-10): os pins de dependências passam para a linha publicada 0.1.5-rc.1; nenhuma mudança de seam afeta o comportamento deste plugin.
0.1.5-rc.2 (adaptado em 2026-09-11): os pins de dependências passam para a linha publicada 0.1.5-rc.2; nenhuma mudança de seam afeta o comportamento deste plugin.
0.1.6-alpha.2 (adaptado em 2026-09-18): o serviço de sessões do cliente removeu sua chamada de navegação para subagentes, então a ação agora informa que a navegação pertence ao cabeçalho da sessão (o assento de linhagem do `ui-subagent`) em vez de falhar em silêncio; o painel de salas deriva sua sessão atual da retenção da visão principal (`retainedBy.mainView`) porque `SessionListState.current` não existe mais. O listener de recuperação de `agent/created` retorna de forma síncrona sob seu próprio limite de 2 s, e um log de filho ilegível informa `unavailable` em vez de texto vazio. As métricas do dashboard alimentadas pelo canal de fatos do log de sessão continuam **indisponíveis** nesta linha (um fato não superficial ainda não pode receber a marca de omissão): as tabelas duráveis de salas e o valor de projeção do painel são o registro. Verificado em 2026-09-18 (ambos typechecks + a suíte completa); a metade visível no navegador **não** está verificada em máquina ainda.

| Superfície | Status |
|---|---|
Expand Down
1 change: 1 addition & 0 deletions README-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
0.1.5-alpha.1(2026-09-09 已适配):`SessionHandleReadResult` 现返回 `{ eventState, events }`,因此 bg_result 冷读的句柄 seam 解构 `.events`(已发布线的 `load()` 回退臂不变)。CI 宿主钉号移至公开 tag commit `5dda764ed3aa`(本地 checkout 领先 13 个 infra commit,公开 CI 拉不到),compat 探针改装 alpha 线。peer 范围放宽为 `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0`(prerelease-tuple 规则:单臂不匹配 `0.1.5-alpha.1`),devDeps 钉 `0.1.5-alpha.1`。2026-09-09 已对照 `dsh-v0.1.5-alpha.1` 核验(全门禁链)。此前的 `0.1.3-alpha.1` 宣称已作废:该预发布版本落在两条 peer 臂之外。
0.1.5-rc.1(2026-09-10 已适配):依赖钉号移至已发布的 0.1.5-rc.1 线;无 seam 变更影响本插件行为。
0.1.5-rc.2(2026-09-11 已适配):依赖钉号移至已发布的 0.1.5-rc.2 线;无 seam 变更影响本插件行为。
0.1.6-alpha.2(2026-09-18 已适配):客户端会话服务移除了子代理导航调用,因此该动作现改为明确报告「导航归会话头部所有」(`ui-subagent` 的 lineage 座位),不再静默失败;房间面板的当前会话改由主视图保留计数推导(`retainedBy.mainView`),因为 `SessionListState.current` 已删除。`agent/created` 追赶监听器在自有 2 秒上限内同步返回,不可读的子会话日志改报 `unavailable` 而非空文本。本线上由会话日志事实通道供给的 dashboard 指标**仍不可用**(非表面事实事件仍无法盖上忽略标记)——持久房间表与面板投影值才是记录。2026-09-18 已核验(两把 typecheck 尺子 + 全量测试);浏览器可见部分**尚未**实机验证。

| 方面 | 状态 |
|---|---|
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Host `0.1.2-alpha.2` and later fails closed on the session event vocabulary, so
0.1.5-alpha.1 (adapted 2026-09-09): `SessionHandleReadResult` now returns `{ eventState, events }`, so the cold `bg_result` read destructures `.events` from the handle seam (the published `load()` fallback is unchanged). The CI harness pin moves to the public tag commit `5dda764ed3aa` (the local checkout is 13 infra commits ahead and unreachable from CI) and the compat probes install the alpha line. Peers widen to `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` (prerelease-tuple rule: the first arm alone does not match `0.1.5-alpha.1`) and devDeps pin `0.1.5-alpha.1`. Verified 2026-09-09 against `dsh-v0.1.5-alpha.1` (full gate chain). The earlier `0.1.3-alpha.1` claim is superseded: that prerelease falls outside both peer arms.
0.1.5-rc.1 (adapted 2026-09-10): dependency pins move to the published 0.1.5-rc.1 line; no seam change affects this plugin's behavior.
0.1.5-rc.2 (adapted 2026-09-11): dependency pins move to the published 0.1.5-rc.2 line; no seam change affects this plugin's behavior.
0.1.6-alpha.2 (adapted 2026-09-18): the client session service removed its subagent-navigation call, so the action now reports that navigation is owned by the session header (`ui-subagent`'s lineage seat) instead of failing silently; the room panel derives its current session from main-view retention (`retainedBy.mainView`) because `SessionListState.current` is gone. The `agent/created` catch-up listener returns synchronously under its own 2 s bound, and an unreadable child log reports `unavailable` instead of empty text. Dashboard metrics fed by the session-log fact channel remain **unavailable** on this line (a non-surface fact event still cannot be stamped with the ignore marker) — the durable room tables and the panel's projection value are the record. Verified 2026-09-18 (both typecheck rulers + the full test suite); the browser-visible half is **not** machine-verified yet.

| Surface | Status |
|---|---|
Expand Down
Loading
Loading