feat(agent-core-v2): bundle multiple skill activations into one prompt submission - #2934
feat(agent-core-v2): bundle multiple skill activations into one prompt submission#2934chengluyu wants to merge 4 commits into
Conversation
Add IAgentSkillService.promptWithSkills: one or more skill activations are validated up front (an unknown or empty submission rejects with no side effects), recorded with a shared submissionId, and enqueued ahead of the prompt through the prompt queue's messagesBefore support, so the whole group materializes atomically as a single turn. Undo cuts, the transcript projection, and the undo precheck treat the group as one unit (stopping at the next anchor even when submission ids collide); hook-result messages are skipped like injections during those walks. Submit hooks run against every message of the group, and user-slash skill activations count as user-submitted content for the UserPromptSubmit hook's origin filter. Surface it through the contract layers: protocol gains submissionId on the user / skill_activation origins and on the skill.activated event (kap-server zod mirrored), klient exposes agentSkillContract.promptWithSkills with parity assertions, and the SDK grows session.promptWithSkills — implemented on the v2 engine and rejecting loudly on the deprecated v1 engine, which is otherwise untouched.
🦋 Changeset detectedLatest commit: 0878ad6 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
@codex review |
commit: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f2e0814ef1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…sions - Validate that promptWithSkills receives at least one skill, enforced in the engine and as a non-empty constraint in the klient wire schema. - Restore the released versions and changelog sections for agent-core-v2, klient, and node-sdk that the branch cut had reverted. - Move statement-level narration into the owning file headers per the package comment conventions. - Align the hook-result undo tests with the reachable record ordering (hook results are recorded before the group materializes).
…ompt message Replace the submissionId-correlated message group with a single bundled user message: the rendered skill blocks precede the caller's parts in the content, and every activation's metadata rides the prompt origin's new skillActivations field. The bundle is one anchor by construction, so undo needs no group-cutting logic and the messagesBefore prompt seam disappears; the submit hook fires once per submission. skill.activated still fires per skill (transient ops, live-only); resume rebuilds the per-skill view from the prompt origin. Contract chain (protocol, kap-server, klient, node-sdk) drops submissionId accordingly.
|
Refactored the implementation approach based on design review feedback. The previous revision correlated a group of messages (activations + prompt) via a shared The new revision bundles the activations into the prompt's own user message: rendered skill blocks precede the caller's parts in the content, and per-skill metadata rides What stayed the same: up-front validation with zero side effects, per-skill Also addressed in the fixup commit: restored released package versions/changelogs, moved statement-level comments into file headers, reject @codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b6603a1662
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ojections - The transcript cold rebuild expands a bundled prompt's origin skillActivations back into per-skill markers (the live path already projects them from skill.activated events). - turn.started.prompt, the session title excerpt source, and the fork lastPrompt now derive from the caller's own parts, excluding the rendered skill blocks the engine prepends to the bundled content. - Drop the redundant undefined unions from the new origin fields. - Move the activateSkill test narration into the file header.
|
All review threads addressed in 0878ad6 (+ the earlier 14b851d fixup):
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Related Issue
Resolve #1736
Problem
The client can only explicitly activate one skill per prompt. This is the first of two stacked PRs: it adds the engine-side capability for submitting one prompt together with multiple skill activations. A follow-up PR wires it up in the TUI.
What changed
Engine (
packages/agent-core-v2) —IAgentSkillService.promptWithSkills({ input, skills }):activationId/skillName/skillArgs?/skillType?/skillPath?/skillSource?) rides the prompt origin's newskillActivationsfield.skill.activatedstill fires per skill (transient, live-only ops); on resume the per-skill view is rebuilt from the prompt origin./skillactivation is untouched.Contract chain
packages/protocol:UserPromptOrigin.skillActivations+BundledSkillActivation(zod schemas; mirrored in kap-server'sevents-zod.ts).packages/klient:agentSkillContract.promptWithSkills(non-emptyskillsvia.min(1)) + facade method + parity assertions +PromptWithSkillsInputexport.packages/node-sdk:Session.promptWithSkills(input, skills)on the v2 session; the v1 base class throwsnot_implemented(v1 is being deprecated and is intentionally untouched).No changes to
packages/agent-core(v1). No TUI changes — those come in the follow-up PR stacked on this one.Verification
tsc --noEmiton agent-core-v2pnpm run lint: 0 errorsChecklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.