Commit Graph
21 Commits
Author SHA1 Message Date
ZiyaZhang 30dafd2106 Merge feat/creation-recommendations into plugin recommendation experiment
Takes the card packages' new names and master up to e115cc98d65. The plugin
recommendation packages and their bundle rows now name
@deepseek-ai/dsh-action-cards and @deepseek-ai/dsh-client-ui-action-cards;
generated catalogs are regenerated, and both card Web fixtures record the
renamed bundles in their skills' plugin catalogs.
2026-10-22 20:58:11 -07:00
ZiyaZhang b62dfa2d63 feat(experimental): invite to plugin cards only from the accepted call's result
The model sometimes wrote the skill's invitation sentence without calling
propose_action, so users read "click below" with no card. The plugin kind
now registers its invitation, which only an accepted call's result carries:
"Card shown below your answer. Do not restate it. End with at most one short
invitation in the user’s language to click Enable below; do not say the
plugin is already on." The skill drops its invitation sentence and says the
call's result tells how to end the answer. A test runs a real turn and checks
that the accepted result carries the invitation and a refused call does not;
the plugin Web fixture is refreshed for the new skill and result text.
2026-10-22 09:04:47 -07:00
ZiyaZhang 38c05d24b2 fix(experimental): confirm unconfirmed plugin cards before Not now
An enable cut off by a plugin reload can still land. The kind now uses the
shared reconcile step: before every action on an unconfirmed card, including
Not now, it checks the profile and records enabled when the plugin is on, so
the card is not dismissed or enabled again.
2026-10-22 08:17:48 -07:00
ZiyaZhang cb425d1384 fix(experimental): settle plugin cards from what enabling reports
- An enable that a plugin reload cuts off records unconfirmed; the card
  offers a retry and Not now, and a retry that finds the plugin on records
  enabled because this card's change landed.
- A rejected profile change records failed with operation-error and keeps
  the retry instead of failing the click; overridden and cancelled are gone
  because enabling a bundle only reports applied, restart-required or failed.
- A refused or lost catalog lookup keeps Not now and offers Try again, with
  separate copy for each; a settled card keeps its outcome after its plugin
  leaves the catalog. Only the clicked button shows Working, the details
  label is interpolated, and the reason and description stay its
  accessible description.
- The Host entry exports its inject list, so the configuration catalog lists
  its services; the skill keeps its rules without the examples.
- With both experiment bundles on, the shared action-card rows cannot be
  switched or configured on the Plugins page; the READMEs say so and a
  Loader test pins it while the bundles still switch.
- The unused intent fixture is removed and the evaluation set expects a
  create_personalized_page card for the counter.
2026-10-22 08:13:22 -07:00
ZiyaZhang fcb7340be1 refactor(experimental): register plugin recommendations as an action card kind
Plugin recommendations now proposes through the shared propose_action tool
instead of a dsh-action answer block. The Host registers the
enable_official_plugin kind with the action card service: the
official-plugins skill, details holding the plugin name, the Enable verb
with global access, and the enabled, already-enabled and failed phases,
whose data carries the application outcome and the management error code.
The package drops its own projection, Remote act, status notice and
persisted record; it keeps the describe Remote for card text. The bundle
inserts the shared card rows beside its own, as Personalized pages does.
The browser half registers a card body in the shared frame that keeps the
catalog text cache, the reserved loading lines, the single details target
and the Enable and Not now footer. The skill's submission section now asks
for one propose_action call.
2026-10-22 07:18:05 -07:00
ZiyaZhang 0bc0e53173 feat(experimental): route capability questions to the official-plugin skill
The official-plugins catalog entry now also triggers when the user asks how
to do or use something in this app, asks whether it can do something, or says
a capability is missing, and names tools, automation, access, badges and
signatures besides the earlier categories. At 495 characters it stays within
the skill catalog's 500-character limit; the previous 535-character entry lost
its exclusions to truncation. The Web replay fixture records the new catalog
line.
2026-10-22 03:13:23 -07:00
ZiyaZhang a02bf55577 fix(experimental): port the page card fixes to plugin recommendations
The recommendation projection skips the events a forked Session inherits,
records the turn that admitted each proposal and publishes the proposals in
its client view. Card actions and descriptions look proposals and decisions up
by own keys only, so inherited member names such as toString are unknown ids.
The card reads its proposal from the projection view by turn and appears once
that turn ends for any reason; the answer parser and the hidden conversation
node are removed.
2026-10-22 03:11:07 -07:00
ZiyaZhang 2eb1b89cac refactor(experimental): share the dsh-action parser and drop the cross-experiment coupling
The fenced-block parser moves to the zero-dependency package
@deepseek-ai/dsh-util-action-block, which the client bundle inlines;
Personalized pages and Plugin recommendations both read answers through
it and no longer import or edit each other. Personalized pages yields:
a page block in an answer or turn that also carries another action's
block is logged but never offered, and a later other-action block
retracts this turn's undecided page card. Plugin recommendations never
yields and keeps one plugin card per turn of its own.
2026-10-21 13:08:06 -07:00
ZiyaZhang 50be7d37c9 feat(experimental): recommend official plugins through dsh-action answer blocks
Replaces list_official_plugins, suggest_plugin and the routing prompt
section with the official-plugins skill, whose load appends the live
catalog, and an enable_official_plugin block at the end of the answer.
The card reads catalog text from the Host, Enable goes through the plugin
manager, and each outcome reaches the model as a status notice on the
next request. Adds the queuedMessageLimit option, en/zh/ja card copy and
a re-recorded persistence change and Web replay.
2026-10-21 10:50:48 -07:00
ZiyaZhang 1df9e40786 fix(experimental): avoid repeated discovery and honor declined recommendations 2026-10-20 05:11:51 -07:00
ZiyaZhang 7802f06d17 refactor(experimental): compose recommendation remote and reuse current catalog 2026-10-20 04:48:47 -07:00
ZiyaZhang 03ff1010b6 fix(experimental): allow optional reusable-page suggestions 2026-10-20 02:05:22 -07:00
ZiyaZhang 558d22481e fix: select one plugin recommendation before proposing 2026-10-20 01:14:35 -07:00
ZiyaZhang 5eba1ec929 fix: guide capability discovery with scenario descriptions 2026-10-19 22:07:28 -07:00
ZiyaZhang 8145f4c05d fix(plugin-recommendations): settle actions safely across HMR and replay 2026-10-19 21:32:36 -07:00
ZiyaZhang 6c7f45624f fix(plugin-recommendations): preserve explicit execution limits after enabling 2026-10-19 11:38:56 -07:00
ZiyaZhang 96300fb946 fix: keep activation continuation within requested scope 2026-10-19 11:17:28 -07:00
ZiyaZhang 4c864e4ae5 fix: enforce standalone recommendation turn limit 2026-10-19 11:13:07 -07:00
ZiyaZhang b207844a53 Clarify recommendation intent boundaries and add real-model cases 2026-10-19 09:46:01 -07:00
ZiyaZhang fbe725a798 fix(plugin-recommendations): explain automatic hot activation 2026-10-19 08:49:42 -07:00
ZiyaZhang facceb8be9 feat(experimental): recommend official plugins after completed answers 2026-10-19 07:46:24 -07:00