Conversation
Restore the provider streaming that #1004 took out to land on released code. This reverts 68425d6: the Anthropic streaming driver, model, stream mapper and fopen() transport, the vendored streaming classes and the SDK overlay's streaming feature, the default streaming driver in Prompt_Model_Client, the "cannot stream" transcript notice, and the streaming docs, hooks and tests. This depends on WordPress/php-ai-client#255. Once it is merged and released, re-vendor the streaming classes from that release before merging. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## feat/ai-workspace #1083 +/- ##
=======================================================
- Coverage 83.87% 83.73% -0.15%
- Complexity 3737 3917 +180
=======================================================
Files 148 155 +7
Lines 14352 14817 +465
=======================================================
+ Hits 12038 12407 +369
- Misses 2314 2410 +96
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
✅ WordPress Plugin Check Report
📊 ReportAll checks passed! No errors or warnings found. 🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check |
Bring in the fix that leaves unsigned thinking out of replayed conversations (225802b). Prompt_Model_Client conflicted: keep both imports, and filter unsigned thought parts first, then hand the round to the default streaming driver. The streaming model signs the thinking it captures, so its thought parts pass through the filter unchanged. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
The E2E failure on shard 1/3 ( What happens: the Abilities Explorer search box is debounced. The test fills "Reader Fixture", clicks Refresh, then hovers the "Assistant Reader Fixture" row right away. On a slow runner the hover lands while the unfiltered list is still showing (y=585 in the trace). The filter then applies, the table re-renders with 2 rows, the target row moves up, and the pointer ends up over "Withheld Reader Fixture". The row actions hide again, so the click fails with It fails the same way at e2e9360, and Reproduced locally: it passes at normal speed. With Chrome CPU throttled 6x ( Fix: wait until the search has applied before hovering a row: --- a/tests/e2e/utils/abilities-explorer.js
+++ b/tests/e2e/utils/abilities-explorer.js
+/**
+ * Searches the list by ability label and waits until only matching rows show.
+ *
+ * The search input is debounced, so the unfiltered rows stay on screen for a
+ * moment. Hovering a row then is unsafe: the table re-renders under the pointer
+ * and the row's actions hide again before they can be clicked.
+ *
+ * @param {Object} page The page.
+ * @param {string} text Text in the label of every matching row.
+ */
+const searchLabel = async ( page, text ) => {
+ await search( page, text );
+ await expect( dataRows( page ).filter( { hasNotText: text } ) ).toHaveCount(
+ 0
+ );
+};
Happy to open this as a PR against |
What?
Follow up to #1004. Depends on WordPress/php-ai-client#255.
Brings back token-by-token provider streaming for the AI Workspace. #1004 took it out so the workspace can merge on released code; this PR is a single commit that reverts that removal.
Why?
Streaming depends on WordPress/php-ai-client#255, which is not merged or released. Until now #1004 carried a vendored copy of that PR's streaming classes, which made an unreleased upstream change a blocker for the whole workspace. Splitting it out lets #1004 land with every reply arriving whole, and lets streaming follow once the PHP AI Client ships it. Streaming support in the PHP AI Client is one of the goals on the WordPress 7.2 roadmap.
How?
This reverts 68425d6 ("answer every turn buffered until the PHP AI Client streams") and restores:
fopen()transport underincludes/Experiments/AI_Workspace/Streaming/, with their tests;streamingfeature;Prompt_Model_Client, the "cannot stream" transcript notice, and the streaming docs, hooks and changelog lines.The resulting tree is identical to
feat/ai-workspacebefore the split (e2e9360).Before merging: once #255 is merged and released, re-vendor the streaming classes from that release rather than from the PR head, and check the
getStream/isStreamguards inSDK_Overlay. Streaming remains Anthropic-only; other providers keep the buffered path.Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Splitting provider streaming out of #1004 into this revert, and writing this description.
Testing Instructions
This PR's tree is identical to
feat/ai-workspaceat e2e9360. On that tree:npm run build,npm run typecheck,npm run lint:js,npm run lint:phpandnpm run lint:php:stanpassed.npm run test:phppassed: 2,049 tests, 0 failures.ai-workspace.spec.js,ai-workspace-tools.spec.tsandai-workspace-handoff.spec.ts.To try streaming manually, activate the Anthropic provider with a key, open Tools > AI Workspace and send a turn; the reply should appear as it is generated.
Changelog Entry
🤖 Generated with Claude Code