Commit Graph
27 Commits
Author SHA1 Message Date
twwu ffc2f267d0 fix(builder): unify native test streaming and controls
Observe Builder commands and native tests on one session stream. Reconnect to the retained Run without submitting another test.

Use Stop and Resume for task control during native tests and keep approval details available. Allow retained local sandbox bindings to be checked without reading restricted ancestor directories.

Refs: ENG-1448
2026-11-09 20:18:12 +08:00
twwu 45ca55e266 fix(builder): align backend contracts and fixtures with main CI 2026-11-03 14:53:59 +08:00
Charles Yao de2028bd92 fix(builder): correlate Fix decision receipts with action transport IDs 2026-11-01 00:48:52 -07:00
Charles Yao 99de1f14b6 fix(builder): document correlated Fix recovery error responses 2026-11-01 00:11:09 -07:00
Charles Yao 9b3f60c18e fix(builder): expose correlated read-only Fix control receipts 2026-11-01 00:01:15 -07:00
Charles Yao ae0e57163e feat(builder): preserve task continuity and confirm Fix switches 2026-10-30 23:13:09 -07:00
Charles Yao f2939c341d feat(builder): add workspace cognition policy and scoped planning materials 2026-10-29 19:41:42 -07:00
Charles Yao 251c6c6937 feat(builder): add independent task stop and resume HTTP controls 2026-10-23 16:11:31 -07:00
Charles Yao 186deb854d feat(builder): unify native test controls with session actions 2026-10-22 19:19:47 -07:00
Charles Yao e48b9dc182 fix(builder): keep native test observation live through settlement 2026-10-22 02:35:46 -07:00
Charles Yao aeefe548ff Replace remaining dynamic runtime access with explicit capabilities 2026-10-20 17:41:17 -07:00
Charles Yao 231e423431 Integrate validated Builder backend testing and CI repairs
Track backend integration, Ruff cleanup and migration reconciliation in ENG-1271. Retain required copy contracts without implementing frontend interactions.
2026-10-20 15:40:06 -07:00
twwu 89504b7dce refactor(builder): localize fixed copy on the frontend
Move fixed copy into the difyBuilder i18n namespace and resolve scene IDs
using reply_language. Preserve dynamic streaming, historical receipts,
and submitted values.

Show fixed replies immediately with a short transition, detect language
before initial progress, and retire new notices and recovery messages.
Keep recovery and publication validation in place.

Update generated contracts and regression coverage, including progress
snapshot and execution context expectations and test type annotations.
2026-10-14 17:10:20 +08:00
twwu 802ed06a37 fix(builder): restore session progress after reconnect
Restore cumulative worker progress before live SSE updates and recover missed terminal state on idle heartbeats. Keep submitted interactions hidden while the command runs and record reconnect state in trace exports.
2026-10-14 16:50:00 +08:00
Charles Yao c76d89f143 Fix Builder confirmed Tool consent recovery and SQL ownership 2026-10-11 23:22:35 -07:00
Charles YaoandClaude Opus 5.5 2c117b67eb feat: expose explicit native Tool consent APIs
Add authenticated prepare/confirm/execute/status routes for one explicit
native Tool consent with strict request DTOs, public receipt/disclosure
responses, sanitized refusals, a typed 403 union and a fixed 400 for
non-JSON bodies. Execute uses the existing confirmed dispatch coordinator.
Regenerate the dify-builder console contracts (also carrying the Task 6
TestResultCard fields that were not yet regenerated).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:52:55 -07:00
Wu Tianwei b3e3540c43 refactor: improve Dify Builder session UX (#42760) 2026-09-24 15:18:32 +08:00
Charles YaoandClaude Opus 5 aa2b4fe4ab feat(dify-builder): name apps from their prompt, and turn gate actions into card options
Two App Builder spec changes that share the Builder session contract.

Naming (spec N1-N3): an app created from the homepage prompt is no longer named
by the user. core/dify_builder/naming.py cuts the prompt's opening clause at
create time -- instant and infallible, since it runs inside POST /apps -- and
CreateAppPayload.name becomes optional alongside a new prompt field. The Builder
then refines that name once during goal analysis, where a model and the detected
reply language are already in hand, so the judgement calls that are
English-shaped in pure Python (dropping an imperative lead-in, spotting a
contentless prompt) work in any language. Plan approval freezes the name.

Card options: SessionView gains a Decision carrying the gate's choice as options
inside the card plus a fixed confirm/cancel pair, replacing a button row whose
shape changed at every state. Option ids are the old action ids untouched, so
resolve_action_kind and the per-state legality check are unchanged, and
SessionView.actions keeps being populated -- the deployed web client goes on
working until it reads decision instead.

The regenerated console OpenAPI doc also picks up ErrorCard.diagnostics, missed
when cc9ca8b1dd landed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 17:55:38 -07:00
twwu 4893c5e621 refactor(dify-builder): separate reasoning from execution progress 2026-09-04 13:43:16 +08:00
twwu eb25c2d8ee feat(dify-builder): add live progress and conversation streaming 2026-09-04 10:16:50 +08:00
twwu 3eacff14a6 feat: add typed SSE interactions to Dify Builder 2026-09-03 08:48:23 +08:00
Charles YaoandClaude Opus 4.8 9fe2e2a3fa feat(dify-builder): response_mode streaming returns SSE on create/action/message POSTs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 22:18:42 -07:00
twwu 22be55af5f feat: redesign app builder fix flow 2026-08-31 18:18:30 +08:00
Charles YaoandClaude Opus 4.8 c73dcc7720 fix(dify_builder): final review fixes — wiring test, stop char-split, ping log, lint sweep
- test_wiring.py: expected dict was missing SessionView's new `model` field
- model_resolver.normalize_completion_params: a string `stop` was being
  char-split into a list of letters instead of wrapped in a single-element
  list; added a regression test
- controllers/console/dify_builder._ping: log the exception server-side
  before returning the ok:false envelope
- ruff-clean the slice's new/extended test files (ARG001/ARG002/ARG005 via
  precise noqa, PT018 compound-assert splits, E306, E501) with no change
  to test behavior or assertion meaning

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 22:51:27 -07:00
Charles YaoandClaude Opus 4.8 affe84777a feat(dify-builder): agent ping endpoint for live LLM connectivity
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 22:51:27 -07:00
Charles YaoandClaude Opus 4.8 f5815c8723 feat(dify-builder): accept + validate + stamp model_config on create
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 22:51:27 -07:00
Charles YaoandClaude Opus 4.8 7e83264330 refactor: rename Workflow Copilot → Dify Builder
Project rename across api/ + web/: modules, symbols, routes
(/console/api/dify-builder/*), feature flag (DIFY_BUILDER_ENABLED),
Celery queue/tasks, the 7 DB tables (via migration df1b0114de40),
and regenerated contract artifacts. Behavior unchanged; 430 tests green,
ruff clean. Branch renamed feat/copilot-py-backend → dify-builder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 11:18:35 -07:00