Repository navigation
Releases
Releases · suifei/dsh-ai-team
文渊阁 0.4.99
文渊阁 0.4.99
Host-boundary fixes from a code review, see CHANGELOG.md.
- Plugin routes now pass the host connection trust fence (
ctx.connection.requestRejection) before any handler runs; rejected requests get 401/403, and a missing fence returns 503 instead of failing open. Upgrading is strongly recommended. - Disposing the plugin before boot settles no longer leaves the ledger locked (
E_LOCKEDuntil host restart); teardown waits for an in-flight boot, which closes its ledgers and wires nothing (#25). - 343 tests pass / 1 skipped; E2E on isolated profiles against rc.1 and rc.3.
文渊阁 0.4.98
文渊阁 0.4.98
Rolling release (0.4.88–0.4.98), see CHANGELOG.md.
- 0.4.98 (#18 audit): Thread replies on done/cancelled cards no longer wake anyone; pending re-dispatch judges busy by the live host turn (
turn/start/turn/end), at most 3 per card; cards awaiting acceptance are nudged for review whether or not QA is required; upper-case billing codes and host transient codes (SERVER/TIMEOUT/TRANSPORT/STREAM_CLOSED/EMPTY_RESPONSE) are classified correctly; editing settings no longer refills the autonomy budget (FOLD_STATE_VERSION8). - 0.4.97:
project.team.renew— a stopped project's PMO and member sessions are renewed. - 0.4.96: a stopped project blocks host tools that wake or spawn agents (
stop-guard). - 0.4.95: one member, one session — never auto-create a subagent to resume;
autoReseatLimitPer30Minremoved. - 0.4.94: a reseated member's stale session is detached from the workspace.
- 0.4.93: activation spec read in both request shapes across hosts rc.1/rc.2/rc.3.
- 0.4.92: late Thread replies are recorded with
missedcontext; no meeting without a reachable PMO. - 0.4.91: stop interrupts in-flight turns; bookkeeping events are not Human intent; PMO session joins its workspace on boot.
- 0.4.90: one PMO session per project; PMO
say; no idle spinning after the goal is done. - 0.4.89: bounded autonomy —
pmoMaxRounds(default 3); split heartbeat / patrol clocks. - 0.4.88: wake has a single delivery path,
subagents.sendMessage. - 341 tests pass / 1 skipped; E2E on isolated DSH_HOME against rc.1 and rc.3.
文渊阁 0.4.87
文渊阁 0.4.87
Rolling release (0.4.86–0.4.87), see CHANGELOG.md.
- Built-in skills are now assembled per member identity: the project owner (ledger ownerMemberId) or a lead/PMO role gets the read-only reviewer text, QA roles get the new independent-re-run reviewer skill, everyone else gets the new executor skill — executors are no longer told "do not write code".
- New skills/ai-team-executor and skills/ai-team-qa; skillKindForMember() does the dispatch and loadSkillContext() takes { vars, ownerId } while still accepting a bare variable table.
- Clean-env web E2E: three members in one project received reviewer / executor / QA respectively, and {{GOAL}} rendered the real goal in a project that carries one.
- 304 tests pass / 1 skipped.
文渊阁 0.4.86
文渊阁 0.4.86
Rolling release (0.4.85–0.4.86), see CHANGELOG.md.
- The core skill's frontmatter now matches its body: description and whenToUse describe the read-only reviewer PMO instead of the retired engineering-discipline text that the skill catalog was still showing.
- {{GOAL}} is rendered on the skill-tool path as well: list() carries the cwd with each candidate, get() resolves the owning project (exact, longest prefix, then the single-project case, ignoring case and separators) and fills GOAL/PROJECT/WORKSPACE.
- 302 tests pass / 1 skipped.
文渊阁 0.4.85
文渊阁 0.4.85
Rolling release (0.4.84–0.4.85), see CHANGELOG.md.
- skills/ai-team-core/SKILL.md is now the read-only "review and navigate" PMO prompt: verify what the child claims, check it against the goal anchor, hand back exactly one next step, and answer STATUS: CONTINUE | DONE | NEED_HUMAN.
- {{GOAL}} is actually rendered now. renderSkillVars() fills GOAL/PROJECT/MEMBER/WORKSPACE when the core skill is injected at activation; the goal comes from the ledger's projects[id].goal, and an unfilled goal says so instead of leaving a blank line. Unknown keys stay literal rather than being blanked.
- 300 tests pass / 1 skipped.
文渊阁 0.4.84
文渊阁 0.4.84
Rolling release (0.4.83–0.4.84), see CHANGELOG.md.
- DSH 0.2.2-rc.2 dropped SubagentRuntime.list(); the five sites that read the provider name from it got undefined and every activation failed with E_RUNTIME_UNAVAILABLE. A new resolver trusts configuration first, then list() on older hosts, then verifies candidates through getProvider() (spawn is the dsh-base default), and all five call sites use it.
- New subagentProviderName config for hosts that name their provider differently.
- Recovery: boot reconciliation now also revives members that failed on runtime unavailability, and POST /ai-team/api/members/retry ({"all":true} for every failure) rebuilds them on demand, budgeted like the rest.
- 299 tests pass / 1 skipped; clean-env web E2E shows activation reaching running and a failed member revived by the endpoint.
文渊阁 0.4.83
文渊阁 0.4.83
Rolling release (0.4.82–0.4.83), see CHANGELOG.md.
- A turn whose tool-call arguments were truncated (MALFORMED_RESPONSE) is now retried once instead of leaving the member stuck: the same session is woken with an instruction to re-issue the call as one compact JSON line and to write long content to disk.
- Retries carry their own budget (three per ten minutes, separate from session rebuilds) and log member.malformed.retry.suppressed.fail when exhausted; cancellations, rate limits and max-tokens are never treated this way.
- 295 tests pass / 1 skipped.
文渊阁 0.4.82
文渊阁 0.4.82
Rolling release (0.4.81–0.4.82), see CHANGELOG.md.
- An empty reasoning selector now explains itself: dsh-llm-pi-ai derives a route's levels from the model entry's reasoningEfforts, so a custom model id has none until the provider declares them. The hint names that setting in both locales.
- ok:false from /model-efforts is treated as an error instead of "this model has no levels".
- Removed two dead lines left over from an earlier refactor.
- 294 tests pass / 1 skipped.
文渊阁 0.4.81
文渊阁 0.4.81
Rolling release (0.4.80–0.4.81), see CHANGELOG.md.
- Members can be configured with a reasoning level (issue #4): new GET /ai-team/api/model-efforts resolves a route's real levels through llm.resolveModelInfo, and the member profile, add-member and people-pool dialogs all offer it next to provider/model.
- model/selection now records reasoningEffort — a resumed session used to fall back to the model default (max at creation, high after the plugin's own selection append).
- Changing only the level does not rebuild the session.
- 294 tests pass / 1 skipped; clean-env web E2E shows max on both the initial and the post-restart resume headers.
文渊阁 0.4.79
文渊阁 0.4.79
Rolling release (0.4.78–0.4.79), see CHANGELOG.md.
- Provider probe now distinguishes "host has no list()" (unknown → proceed, real errors surface) from "no provider registered" (empty → 503): fixes constant 503 on member activation with desktop DSH 0.2.2-rc.2, where SubagentRuntime.list() was removed (issue #1).
- Silent wake skips are now visible: deduped wake.no-provider / subagents.introspect-missing diagnostics.
- Shipped ai-team-core skill: permanent-activation principle (任何任务立即开工) from 0.4.78.
- 291 tests pass / 1 skipped; clean-env web E2E on rc.1 shows no regression.