Commit Graph
840 Commits
Author SHA1 Message Date
Charles YaoandClaude Opus 4.8 606cff1964 copilot: Edit test_affected_paths + review + reverted handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 02:17:26 -07:00
Charles YaoandClaude Opus 4.8 5287d579d9 copilot: Edit plan_approval (the edit) + apply_changes handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 02:07:26 -07:00
Charles YaoandClaude Opus 4.8 17dd777a29 copilot: Edit capability_check + impact_analysis handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 01:53:47 -07:00
Charles YaoandClaude Opus 4.8 529e1626df test(copilot): FakeEditDifyPort pre-seeded graph fake
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 01:44:10 -07:00
Charles YaoandClaude Opus 4.8 dddf6b16fd copilot: canned Edit cognition on PlaceholderAgent + CopilotAgent Edit methods
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 01:37:06 -07:00
Charles YaoandClaude Opus 4.8 8f39028fda copilot: make handle_plan_approval idempotent on loop-back rebuilds
continue_adjusting/revert/retry_after_revert all return to
build.initial_plan without resetting the already-built graph. Re-walking
find_resources -> confirm_resources -> approve_plan then re-emits the same
fixed create_node/connect intents, and the second apply_repair raised
ValueError on the colliding node id, dead-ending the session at
build.plan_approval.

Fix: before applying, read the current draft graph and drop any
create_node whose node_id already exists or connect whose (from, to) edge
already exists, so a re-approve after a loop-back is a no-op apply_repair
rather than a crash. built_node_ids is still set from the full 4-node set
regardless of what was actually applied this pass.

Adds an end-to-end loop test via the real Runner covering both the
continue_adjusting and retry_after_revert paths, asserting the session
reaches build.execution with the graph still at 4 nodes / 3 edges.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 23:45:45 -07:00
Charles YaoandClaude Opus 4.8 a2a308fe58 copilot: full Build-flow acceptance + Build service-table tests
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 23:03:52 -07:00
Charles YaoandClaude Opus 4.8 747441ee55 copilot: Build publish + governance_feedback + reverted handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 22:45:07 -07:00
Charles YaoandClaude Opus 4.8 b6e857b931 copilot: Build test_and_repair (canned) + review handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 22:34:52 -07:00
Charles YaoandClaude Opus 4.8 ed4db951e6 copilot: Build resource_recommendation + plan_approval (the build) + execution
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 22:17:56 -07:00
Charles YaoandClaude Opus 4.8 2ed1a5b42a copilot: strengthen Build goal_analysis merge test discrimination
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 22:07:25 -07:00
Charles YaoandClaude Opus 4.8 3204c31b06 copilot: Build goal_analysis + initial_plan handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 22:00:12 -07:00
Charles YaoandClaude Opus 4.8 25b897353d copilot: Build session bootstrap + capability_check handler + merged registry
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 21:49:48 -07:00
Charles YaoandClaude Opus 4.8 d0f6b09319 copilot: canned Build cognition on PlaceholderAgent + CopilotAgent Build methods
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 21:35:59 -07:00
Charles YaoandClaude Opus 4.8 4be0e77ade copilot: rename FixContext -> CopilotContext + additive Build fields
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 21:24:48 -07:00
Charles YaoandClaude Opus 4.8 32077736ba test(workflow-copilot): widen _StubDifyPort.apply_repair with on_canvas param
Completes Slice 1 Task 9's 'widen all DifyPort implementers' invariant — the
whole-branch review caught this third conformance stub that the per-task
reviews (aware of only WorkflowServiceDifyPort + FakeDifyPort) missed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 11:13:05 -07:00
Charles Yao b3b4776e95 feat(workflow-copilot): opt-in per-intent canvas-event emission through apply_repair 2026-08-22 10:57:37 -07:00
Charles YaoandClaude Opus 4.8 c8c1a7052d feat(workflow-copilot): apply_repair dispatches all 5 verbs + real graph diff feeds change_set
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 10:46:12 -07:00
Charles Yao f9b38f9be0 fix(workflow-copilot): reachable reject at approval gate, client-only-action guard, contract doc fixes 2026-08-22 01:55:17 -07:00
Charles YaoandClaude Opus 4.8 7b2e975c5f feat(workflow-copilot): typed contract schemas (TS + JSON) with lockstep check
Add contract_gen.py: a pure, deterministic generator that discovers every
StrEnum/dataclass/card defined in contract.py (plus EntryMode,
ConversationItem, and SessionView) via introspection and emits the checked-in
contract_schema.json (JSON Schema draft 2020-12) and
web/.../contract/types.ts. The discriminated ConversationItem union is built
from _Card.__subclasses__(), one oneOf/union branch per card kind.

test_contract.py gains a lockstep test that byte-compares a fresh
generate() call against the checked-in files (guards drift/hand-edits) and a
jsonschema.validate test that proves the generated schema is itself valid
and accepts a real SessionView instance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 01:10:47 -07:00
Charles Yao d089a84da7 refactor(workflow-copilot): re-express Fix conversation items onto the card vocabulary 2026-08-22 00:48:03 -07:00
Charles Yao 55752cd435 feat(workflow-copilot): 17-kind card vocabulary + submit payload types 2026-08-22 00:00:46 -07:00
Charles Yao 5a098f89d4 fix(workflow-copilot): _run_status reports COMPLETE for Build/Edit terminal states 2026-08-21 23:49:45 -07:00
Charles Yao eb1ee3981a feat(workflow-copilot): Action/CheckpointRef + SessionView entry_mode/phase/actions/checkpoint 2026-08-21 23:36:53 -07:00
Charles Yao 6bceb1be62 feat(workflow-copilot): contract enums + Build/Edit PcState sets 2026-08-21 23:24:13 -07:00
Charles YaoandClaude Opus 4.8 4e73fb566b test(copilot): full fix-flow engine acceptance on fakes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:05 -07:00
Charles Yao 6d4e9dd59b feat(copilot): port canned placeholder agent 2026-08-18 21:45:05 -07:00
Charles YaoandClaude Opus 4.8 0bd9b1f94a feat(copilot): port checklist handlers + merged fix registry
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:05 -07:00
Charles YaoandClaude Opus 4.8 37008011e2 feat(copilot): port run-fix handlers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:04 -07:00
Charles YaoandClaude Opus 4.8 04f350d2e5 feat(copilot): port runner with version-CAS advance
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:04 -07:00
Charles YaoandClaude Opus 4.8 aa6eb92ac6 test(copilot): in-memory repository/dify/agent fakes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:04 -07:00
Charles YaoandClaude Opus 4.8 95f2a11023 feat(copilot): port ports, value types, errors
Port dify-enterprise/server/pkg/enterprise/biz/copilot/{ports,errors}.go to
api/core/workflow_copilot as pure Python.

- errors.py: ConflictError, NotFoundError, BusyError (Exception subclasses,
  replacing Go's sentinel error values).
- models.py: add Diagnosis, Risk, MutationIntent, ChangeSet, NodeEvent,
  ApplyResult value dataclasses (Go: ports.go); tighten FixContext.diagnosis/
  staged_repair/risk/change_set from Any to these real types now that they
  live in the same module (avoids a models<->ports import cycle).
- ports.py: CopilotAgent / DifyPort / Repository as @runtime_checkable
  Protocols, snake_case methods per the port plan; DifyPort methods take
  actor: Actor instead of Go's ForwardAuth.
- test_ports.py: constructs each value type, asserts trivial stubs satisfy
  each Protocol via isinstance, and checks the error types.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:45:04 -07:00
Charles Yao 1b98b0fb29 feat(copilot): port domain models 2026-08-18 21:45:04 -07:00
Charles Yao d779b1629a feat(copilot): port PcState machine to api/core/workflow_copilot 2026-08-18 21:45:04 -07:00
zyssyz123 c38fb16efa fix(agent): retain usage for incomplete runs (#40937) 2026-08-18 13:11:22 +00:00
Asuka Minato 4f81005662 test: migrate app runtime sessions and ORM models to SQLite (#40590) 2026-08-18 12:27:32 +00:00
Asuka Minato f2dfa462e1 test: migrate agent runtime sessions and ORM models to SQLite (#40587) 2026-08-18 12:26:58 +00:00
Asuka Minato beecf5730a test: migrate telemetry and core entity ORM models to SQLite (#40574) 2026-08-18 12:25:42 +00:00
Asuka Minatoandautofix-ci[bot] eeda983b17 test: migrate service boundary sessions and ORM models to SQLite (#40533)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-08-18 12:23:33 +00:00
Asuka Minato 5fde1d096e test: eliminate remaining whole config mocks (#40855) 2026-08-18 12:01:49 +00:00
Asuka Minato 3bcd97b643 test: scope plugin and datasource config overrides (#40854) 2026-08-18 12:01:29 +00:00
Asuka Minato 20fdbcf36f test: centralize enterprise config overrides (#40853) 2026-08-18 12:01:01 +00:00
zyssyz123 5a0a12cb44 fix: preserve Agent tool-generated file outputs (#40917) 2026-08-18 05:59:43 +00:00
蓝破碎半圆/破碎蓝调 ba5e7d76fd fix: accept legacy plugin daemon list responses (#38265) 2026-08-18 04:11:49 +00:00
Harsh KashyapandHarsh Kashyap ca32e87683 fix(api): bound connect phase to 5.0s in two api/core/ outbound timeouts (#40807)
Co-authored-by: Harsh Kashyap <Harsh23Kashyap@users.noreply.github.com>
2026-08-18 03:38:59 +00:00
mesrop2008 50d6c19ef4 fix(api): clear stale cancellation signals when resuming a paused workflow (#40905) 2026-08-18 02:27:43 +00:00
Asuka Minato 3f0a9c5060 test: migrate RAG indexing sessions and ORM models to SQLite (#40513) 2026-08-17 12:13:02 +00:00
Asuka Minato ce1aed8df5 test: migrate RAG pipeline sessions and ORM models to SQLite (#40511) 2026-08-17 12:12:46 +00:00
盐粒 Yanli 2aaac4dadb feat(dify-agent): enforce signed upload size limits (#40883) 2026-08-17 11:59:42 +00:00
盐粒 Yanli a679ee5644 fix(dify-agent): preserve snapshots for failed and cancelled runs (#40876) 2026-08-17 10:11:22 +00:00