Commit Graph

9962 Commits

Author SHA1 Message Date
Tianyi Cui
21c380be52 docs(agent-notes): archive superseded dsh entrypoint decision 2026-08-08 14:21:42 +08:00
Tianyi Cui
f32aa54aeb feat(cli)!: make dsh run the headless entrypoint 2026-08-08 14:21:42 +08:00
Yichen Jiang
f50521ac4c Merge pull request #2002 from deepseek-harness/feature/issue-1470-skill-invoke
feat(skill): deterministic user-explicit skill invocation at the pre-step gesture boundary
2026-08-08 14:17:52 +08:00
Tianyi Cui
02d81f8178 Merge pull request #1974 from deepseek-harness/worktree/retire-fixmes-20260807
cleanup: retire FIXMEs without private repository links
2026-08-08 14:14:14 +08:00
Tianyi Cui
cc407a2672 Merge pull request #1982 from deepseek-harness/worktree/dedupe-issue-lifecycle-reviews-20260808
cleanup: skip redundant Issue lifecycle ready runs
2026-08-08 14:04:57 +08:00
Yichen Jiang
18dee248a6 Merge remote-tracking branch 'origin/master' into feature/issue-1470-skill-invoke
# Conflicts:
#	docs/module-graph.md
2026-08-08 14:03:29 +08:00
Yichen Jiang
ed492077a5 test(tool-skill): cover reject passthrough and non-text block scanning 2026-08-08 14:03:03 +08:00
Tianyi Cui
67a92226cf Merge pull request #961 from deepseek-harness/worktree/stable-snapshot-message-ids-20260730
fix(snapshot): retain unchanged message IDs
2026-08-08 14:01:07 +08:00
Yichen Jiang
7f138f3f5c test(examples): re-record catalog stitch sentence in agent-spine inline snapshot 2026-08-08 13:52:47 +08:00
Yichen Jiang
2b6836a6fe fix(vendor): widen include's writeTask for exactOptionalPropertyTypes
The debounced writer assigns undefined on flush, which a plain optional
NodeJS.Timeout rejects under exactOptionalPropertyTypes; the error had
been masked by stale build state until a residue cleanup invalidated it.
Logged as local modification 14 in the vendor manifest.
2026-08-08 13:16:27 +08:00
Yichen Jiang
0d53752c49 refactor(host)!: retire the skill.invoke RPC for the gesture boundary
Invocation is an ordinary session.prompt again: the pre-step gesture
boundary makes it deterministic host-side for every front end, so the
dedicated RPC (handler, wire schema, error codes, client face, fixtures)
and ui-skill's claim machinery are net deletions. The menu keeps decision
21 exactly — a pick lands literal /name text — plus the user-only marker
from skill.list's modelInvocable flag.
2026-08-08 13:15:52 +08:00
Yichen Jiang
c08fa27e5c feat(tool-skill): inject user-invoked skills at the pre-step gesture boundary
A whitespace-bounded /name token anywhere in a claimed user message,
naming a user-invocable skill in the workspace directory, now injects that
skill's renderSkillContent as instructions context appended after every
other injection of the step — the same agent/pre-step seam the catalog,
workspace instructions, and the runtime snapshot ride. Closed-set matching
mirrors the command registry (a miss stays plain prose), only user-source
messages are scanned, the policy check runs on the loaded definition, and
this is the sole entry point for disable-model-invocation skills. The
catalog's no-reload sentence now names the gesture boundary.
2026-08-08 13:14:49 +08:00
imccyu
0284e9c0b6 Merge pull request #1997 from deepseek-harness/feat/tsbuild2
build: order Host-generated Remote contracts before Client compilation
2026-08-08 12:53:01 +08:00
imccyu
8fc9032d71 test: refresh translation prompt snapshot 2026-08-08 12:36:50 +08:00
imccyu
863abcb427 build: enforce split project reference faces 2026-08-08 12:25:41 +08:00
imccyu
d85d0806cd fix(build): align Client build metadata 2026-08-08 12:02:58 +08:00
imccyu
2a7c1175be fix(docs): keep doc typecheck on Host sources 2026-08-08 11:52:18 +08:00
Yichen Jiang
7750789c8e docs: regenerate the module graph for the dsh-skill llm dependency 2026-08-08 11:32:28 +08:00
Yichen Jiang
31ed85900d fix(client): review fixes for invocation rendering and turn boundaries
The user-turn predicate (opensUserTurn) unifies the three parallel
consumers a new node kind silently missed — produced-files turn reset,
retry liveness, own-words force-scroll — so a skill invocation behaves as
the turn opener it is. The menu marker resolves through ctx.locale.bind
instead of a hand-rolled snapshot lookup; the dead legacy <skill> render
arm goes with the removal cut; command-over-skill name precedence is now
documented at the matchEnter seam; and the emptied replacement catalog
keeps the no-reload sentence, with the never-published residual recorded
in the Agent Note.
2026-08-08 11:30:16 +08:00
Yichen Jiang
c4c2355b50 fix(host): harden skill.invoke at the enforcement boundary
Review fixes: recheck isUserInvocable on the loaded definition (list and
get collect independently, so a provider change between them could swap in
a user-disabled body — the skill-tool execute template's second check);
thread the carrier signal through the lookup and refuse an abandoned
caller's turn as cancelled; fold lookup/loader failures into the
structured internal error the list face already uses; refuse cwd-less
sessions with the skill.list stance; and reject blank trailing text at the
wire schema instead of relying on client trimming.
2026-08-08 11:30:14 +08:00
Yichen Jiang
69bd00ae76 chore(web): register the skill-user-invoke scenario in both typecheck planes
The web app project excludes every e2e file (they are host-plane programs)
and tsconfig.host.json includes them one by one; the new scenario joins
both lists so it keeps typecheck coverage without dragging host sources
into the client project.
2026-08-08 10:28:30 +08:00
imccyu
8865548ee2 docs: explain generated Remote build order 2026-08-08 04:20:39 +08:00
imccyu
9c3d5725a5 build: order Host and Client compilation faces 2026-08-08 04:20:39 +08:00
Tianyi Cui
de93253b14 docs: refresh module graph 2026-08-08 02:18:40 +08:00
Tianyi Cui
8982d714cb fix(snapshot): harden message id retention 2026-08-08 02:15:44 +08:00
Tianyi Cui
bb03934465 Merge origin/master into worktree/retire-fixmes-20260807 2026-08-08 01:53:03 +08:00
Yichen Jiang
3584d8e088 docs(skill): document the user-explicit invocation path
Bilingual README updates for the four touched packages (ui-skill's claim
flow and deterministic-injection model experience, the apiproxy skills
domain, the shared renderSkillContent seam export, the catalog stitch
sentence), the implemented Agent Note triplet recording the decision and
its peer-product evidence, and the regenerated catalogs/graphs.
2026-08-08 01:52:43 +08:00
Yichen Jiang
db146f0eba refactor(host): share the turn-start route refusal between prompt and skill.invoke
turnAgentFor owns the addressed-agent resolution and the model-unavailable
refusal both turn-starting methods repeat; the duplication gate flagged the
copied block.
2026-08-08 01:52:42 +08:00
Tianyi Cui
eba4df1e86 cleanup: skip redundant Issue lifecycle ready runs 2026-08-08 01:50:48 +08:00
Tianyi Cui
fa31f27865 Merge remote-tracking branch 'refs/remotes/origin/master' into worktree/retarget-pr961-20260808 2026-08-08 01:50:00 +08:00
Tianyi Cui
a29f55881e Merge remote-tracking branch 'refs/remotes/origin/master' into worktree/retarget-pr961-20260808
# Conflicts:
#	.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md
#	apps/web/tests/scaffold.ts
#	examples/tui-agent/tests/tui.snapshot.ts
#	packages/support/acp-snapshot/README.i18n.yaml
#	packages/support/acp-snapshot/README.md
#	packages/support/acp-snapshot/README.zh.md
2026-08-08 01:49:04 +08:00
Tianyi Cui
8158a0e63a Merge pull request #1979 from deepseek-harness/worktree/derive-compaction-replay-1971
test(snapshot): derive compaction replay from persisted summaries
2026-08-08 01:44:11 +08:00
Tianyi Cui
95c01e6e61 cleanup: reject private issue shorthand 2026-08-08 01:40:14 +08:00
Yichen Jiang
74ba0b532e chore: sync the lockfile for the dsh-skill llm dependency 2026-08-08 01:33:56 +08:00
Tianyi Cui
e46b082fee test(snapshot): derive compaction replay from logs 2026-08-08 01:32:27 +08:00
Yichen Jiang
0fb474f672 test(web): cover user-only skill invocation end to end
The policy scenario now expects the user-only quadrant in the menu with
its marker (riding the description — the hint field is claim-state ghost
text, which the menu never renders), and a new skill-user-invoke scenario
drives /name args through the composer against the real host: the claim
lands skill.invoke, the transcript shows the dedicated card with the
collapsed <skill_content> body, and a paced replay answers the injected
turn deterministically.
2026-08-08 01:27:25 +08:00
Tianyi Cui
6d09c315b9 cleanup: remove private repository references 2026-08-08 01:10:57 +08:00
Yichen Jiang
011e3e4e63 feat(client): render user skill invocations as dedicated transcript cards
A user/message carrying the skill-invocation source materializes as its
own conversation node (name/args lifted off the source metadata, never
re-parsed from the body) and renders as a right-aligned bubble: the /name
chip plus the user's trailing text, with the injected <skill_content>
collapsed behind a disclosure. A record with an unreadable name degrades
to the injected-context row.
2026-08-08 01:05:08 +08:00
Yichen Jiang
56e9e61749 feat(ui-skill): claim slash skill references into skill.invoke
A menu pick or an entered /name line now claims the composer into an
args-tolerant skill.invoke transaction instead of shipping the literal
text and hoping the model loads the skill. This gives every user-invocable
skill a deterministic entry point — including disable-model-invocation
skills the catalog never shows the model (issue #1470). Candidates carry
a user-only hint, and the unreached legacy <skill> reference codec is
removed (decision 21 removal cut).
2026-08-08 00:59:55 +08:00
Yichen Jiang
cc0f6e11b9 feat(tool-skill): teach the catalog about user-explicit skill injection
Both catalog renderings now tell the model that a directly invoked skill
arrives as an inline <skill_content> block to follow without re-loading it
through the skill tool — the seam rule that keeps the user-explicit path
and the model-autonomous path from double-injecting one skill.
2026-08-08 00:55:37 +08:00
Yichen Jiang
85422f44dc feat(host): user-invocable skill listing and skill.invoke injection RPC
skill.list now serves every user-invocable skill and carries modelInvocable
so menus can mark user-only entries; the old model-and-user intersection
hid disable-model-invocation skills from their only legitimate entry point
(issue #1470). skill.invoke enforces user-invocation policy at the host
boundary, renders the canonical <skill_content> body, and injects it as a
user-role message carrying the skill-invocation source before starting a
turn. The connection fixture mirrors both faces for client tests.
2026-08-08 00:51:24 +08:00
Tianyi Cui
3d1e4d31e1 Merge origin/master into worktree/retire-fixmes-20260807 2026-08-08 00:49:58 +08:00
Tianyi Cui
a29a0a4773 Merge pull request #1547 from deepseek-harness/claude/unified-environment-credentials-c8841a
feat(config): rank every configuration source and bound what a discovered file may set
2026-08-08 00:43:42 +08:00
Yichen Jiang
62c308f415 feat(skill): share renderSkillContent and declare the skill-invocation message source
The model-facing <skill_content> rendering moves from dsh-tool-skill to the
dsh-skill seam so the skill tool result and the upcoming user-explicit
invocation injection share one canonical shape. The seam also declares the
skill-invocation MessageSource kind that injection will stamp on its
user-role messages.
2026-08-08 00:40:06 +08:00
Tianyi Cui
510976351c test(telemetry): restore expression-tag coverage 2026-08-08 00:34:42 +08:00
Tianyi Cui
a8a12ffc23 cleanup: replace FIXMEs with tracked issues 2026-08-08 00:04:55 +08:00
Tianyi Cui
b166b837d8 Merge origin/master at bc7849b97b 2026-08-07 23:57:47 +08:00
Tianyi Cui
f00f45e3f9 Merge origin/master at f1402327fa 2026-08-07 23:57:23 +08:00
Tianyi Cui
698d65de2d Merge pull request #1965 from deepseek-harness/worktree/archive-agent-notes-aggressive-20260807
docs(notes): aggressively archive low-value records
2026-08-07 23:53:34 +08:00
Tianyi Cui
8315bfdc1f fix(notes): address archive review findings 2026-08-07 23:45:28 +08:00