Charles Yao and Claude Opus 4.8
ef255c4dde
copilot: Edit service wiring + create_edit_session + merged registry
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-23 02:27:55 -07:00
Charles Yao and Claude Opus 4.8
f668959ece
copilot: CopilotContext Edit fields + serde defaults
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-23 01:29:17 -07:00
Charles Yao and Claude 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 Yao and Claude 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 Yao
b3b4776e95
feat(workflow-copilot): opt-in per-intent canvas-event emission through apply_repair
2026-08-22 10:57:37 -07:00
Charles Yao and Claude 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 and Claude Opus 4.8
18e45a1964
feat(workflow-copilot): diff_graphs real before/after graph diff
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 10:34:43 -07:00
Charles Yao
df584c7221
feat(workflow-copilot): canned node-default-config registry for Build's 4 node types
2026-08-22 10:28:44 -07:00
Charles Yao and Claude Opus 4.8
59b781ac50
feat(workflow-copilot): apply_insert_between graph mutation
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 10:22:44 -07:00
Charles Yao and Claude Opus 4.8
5c950b1a9a
feat(workflow-copilot): apply_connect graph mutation
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 10:15:45 -07:00
Charles Yao
5006a34226
feat(workflow-copilot): apply_delete_node graph mutation
2026-08-22 10:08:58 -07:00
Charles Yao and Claude Opus 4.8
0097f7d2b1
fix(workflow-copilot): ruff-clean create_node tests + explicit-position sentinel + deepcopy config
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 10:04:19 -07:00
Charles Yao and Claude Opus 4.8
7a8e27c06d
feat(workflow-copilot): apply_create_node graph mutation
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 09:54:58 -07:00
Charles Yao and Claude Opus 4.8
1e3578d341
feat(workflow-copilot): document + enforce MutationIntent's per-op arg contract
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 09:48:05 -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 Yao
d089a84da7
refactor(workflow-copilot): re-express Fix conversation items onto the card vocabulary
2026-08-22 00:48:03 -07:00
Charles Yao
fd01a6cfe8
feat(workflow-copilot): data-driven SessionView.actions + action_id endpoint acceptance
2026-08-22 00:32:11 -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 and Claude Opus 4.8
72c171b63c
feat(copilot): record the failed Dify run as a CopilotRun on session create
...
create_fix_session now treats failed_run_id as the Dify workflow-run id and
records it as an immutable original-failed CopilotRun, pointing
fc.failed_run_id at that row so the async diagnose can resolve it. Closes the
FE->diagnose gap for a live Fix flow.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:46:53 -07:00
Charles Yao and Claude Opus 4.8
086186a579
fix(copilot): close SSE subscription even if snapshot frame is interrupted
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:46:53 -07:00
Charles Yao
925491fac4
feat(copilot): SSE stream route (snapshot-first + heartbeat)
2026-08-18 21:45:07 -07:00
Charles Yao
6431d146dc
feat(copilot): service wiring + view-serialize + error-map helpers
2026-08-18 21:45:07 -07:00
Charles Yao
9d982be3d0
feat(copilot): pluggable CopilotAgent factory (P3c seam)
2026-08-18 21:45:07 -07:00
Charles Yao
48419e3f69
feat(copilot): copilot session usecase + dispatch
2026-08-18 21:45:06 -07:00
Charles Yao and Claude Opus 4.8
a7db7d36f1
feat(copilot): session progress bus over the broadcast channel
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:45:06 -07:00
Charles Yao
043df4e6dc
fix(copilot): prefix-serialize lock-release eval key + prefix regression test
2026-08-18 21:45:06 -07:00
Charles Yao
639235de98
feat(copilot): cross-process session advance lock
2026-08-18 21:45:06 -07:00
Charles Yao and Claude Opus 4.8
f889a97032
feat(copilot): SQL repository — checkpoints, runs, test-inputs, conversation
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:45:06 -07:00
Charles Yao
2ca01cc802
feat(copilot): SQL repository — sessions + version-CAS
...
Add SqlCopilotRepository implementing the Repository Protocol's session
lifecycle (create_session/get_session) and compare_and_advance as a real
DB-level version-CAS: a single UPDATE ... WHERE version=base_version, with
rowcount==0 disambiguated into NotFoundError (missing session) vs
ConflictError (stale version). A UNIQUE(session_id, seq) collision on
conversation items during compare_and_advance is caught and mapped to
ConflictError, making the DB the seq authority. Remaining Repository
methods (checkpoints/runs/test-inputs/list_conversation) are stubbed with
NotImplementedError, deferred to Task 5.
Tested against SQLite in-memory: create/get round-trip, CAS version bump,
stale-version conflict leaving the row unchanged, missing-session
NotFoundError, and duplicate-seq ConflictError.
2026-08-18 21:45:06 -07:00
Charles Yao
0c4eefba1b
feat(copilot): FixContext JSON (de)serialization
2026-08-18 21:45:06 -07:00
Charles Yao and Claude Opus 4.8
3ec6c8990d
fix(copilot): adapter review fixes — node_outputs test, tighter apply assert, publish audit fields, no-op apply short-circuit
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:45:05 -07:00
Charles Yao
ef2ed808fd
feat(copilot): WorkflowService-backed DifyPort adapter
...
Implements WorkflowServiceDifyPort, the real DifyPort adapter that wires
the pure P1 domain and Task 1-3 helpers to WorkflowService,
AppGenerateService, and the node-execution repository. Each method opens
its own session, resolves account/app via the identity helpers, and
mutates the draft graph client-side (no server-side patch primitive)
before writing it back with graph_only=True/sync_agent_bindings=False.
Pins the publish workflow_id+commit gotcha and the hash-mismatch
re-mapping. Confirmed via mocked-service unit tests and a runtime_checkable
isinstance(..., DifyPort) check.
2026-08-18 21:45:05 -07:00
Charles Yao
5a93bec706
feat(copilot): actor→account resolution + app loading with tenant guard
2026-08-18 21:45:05 -07:00
Charles Yao and Claude Opus 4.8
388d3a949b
feat(copilot): pure run-result mapping
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-18 21:45:05 -07:00
Charles Yao
535788f1c1
feat(copilot): pure set_node_config graph mutation
2026-08-18 21:45:05 -07:00