David Kaya and Copilot
41e74c2fa9
feat(workflows): add sub-workflow backend support
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-05 19:31:56 +02:00
David Kaya and Copilot
19a764d297
feat(workflows): Phase 1 backend — WorkflowDefinition model, persistence, IPC, sidecar execution
...
Introduce WorkflowDefinition as a first-class entity alongside PatternDefinition.
Shared domain:
- src/shared/domain/workflow.ts: new WorkflowDefinition, WorkflowGraph,
WorkflowNode/Edge/Config types, normalization, TS-side validation, and
buildWorkflowExecutionPattern (synthetic pattern bridge for session plumbing)
- workspace.ts: add workflows[] and selectedWorkflowId
- session.ts: add optional workflowId to SessionRecord
- runTimeline.ts: add optional workflowId/workflowName to run records
- sessionLibrary.ts: workflow-aware session search
IPC / main process:
- contracts/channels.ts, contracts/ipc.ts: workflow CRUD channels
- preload/index.ts: expose saveWorkflow, deleteWorkflow, createWorkflowSession
- ipc/registerIpcHandlers.ts: register workflow handlers
- persistence/workspaceRepository.ts: load/save/normalize workflows
- AryxAppService.ts: saveWorkflow, deleteWorkflow, createWorkflowSession,
resolveSessionExecutionDefinition, workflow-aware turn/run plumbing
Sidecar protocol:
- contracts/sidecar.ts: ValidateWorkflowCommand, WorkflowValidationEvent,
optional workflow on RunTurnCommand
- sidecarProcess.ts: validate-workflow command dispatch and event handling
- Contracts/ProtocolModels.cs: workflow DTOs and validate-workflow DTOs
- Services/SidecarProtocolHost.cs: validate-workflow command handler
- Services/CopilotWorkflowRunner.cs: workflow-aware build and checkpoint path
- Services/WorkflowValidator.cs: graph validation (connectivity, start/end,
fan-out/in arity, path reachability)
- Services/WorkflowRunner.cs: WorkflowDefinitionDto -> Agent Framework Workflow
builder (direct, fan-out, fan-in edges; agent executor binding)
Project: bump both csproj from net9.0 to net10.0
Tests:
- tests/shared/workflow.test.ts: TS workflow validation and pattern synthesis
- tests/main/appServiceWorkflow.test.ts: saveWorkflow / createWorkflowSession
- tests/Aryx.AgentHost.Tests/SidecarProtocolHostTests.cs: ValidateWorkflowCommand
- Fix two stale workspace fixtures missing workflows field
Validation: tsc clean, bun test 367/367 pass, dotnet test 244/244 pass, bun run build succeeds.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-05 17:29:03 +02:00
David Kaya and Copilot
423d45fa1b
fix: use active agent for streaming author fallback
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-01 19:40:46 +02:00
David Kaya and Copilot
13bcc44f1a
feat: add handoff workflow checkpoint recovery
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-01 19:28:05 +02:00
David Kaya and Copilot
11b36827f5
feat: surface workflow diagnostics
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-01 18:50:56 +02:00
David Kaya and Copilot
e956f8ea6c
feat: emit tool-call file previews
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-29 23:55:25 +02:00
David Kaya and Copilot
1fbfdbbac4
fix: suppress noisy hook lifecycle events
...
Stop forwarding hook lifecycle events when a project has no configured
.github/hooks/*.json commands so the UI only receives meaningful hook
activity. Also expose the configured-hook state on the bundle, cover the
suppression wiring with tests, and document the updated event semantics.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 14:05:10 +01:00
David Kaya and Copilot
f1fa52f9c3
feat: full Copilot SDK feature parity — custom agents, hooks, image input, skills, steering, session persistence
...
Backend (sidecar):
- Extended ProtocolModels with DTOs for custom agents, hooks, skills,
infinite sessions, session lifecycle, and 9 new event types
- Added CopilotManagedSessionIds for stable SDK session ID mapping
- Added CopilotSessionManager/ICopilotSessionManager for session lifecycle
- Added CopilotSessionHooks for hook registration
- Added CopilotMessageOptionsMetadata for mid-turn steering
- Extended CopilotAgentBundle to wire custom agents, hooks, skills,
infinite sessions, and stable session IDs
- Extended CopilotTurnExecutionState to project 13 new SDK event types
- Widened ITurnWorkflowRunner callback to accept SidecarEventDto
- Added list/delete/disconnect session commands to SidecarProtocolHost
- Added AryxCopilotAgentMessageOptionsTests (14 new tests, 142 total)
Frontend (renderer + main + shared):
- Added ChatMessageAttachment type and helpers (attachment.ts)
- Extended sidecar contracts with MessageMode, 3 new command types,
9 new event types, and agent/session config DTOs
- Extended SessionEventRecord with 6 new event kinds and ~20 fields
- Added PatternAgentCopilotConfig to pattern domain
- Added attachments support to ChatMessageRecord
- Updated sidecar client with session lifecycle methods and
turn-scoped event routing via onTurnScopedEvent callback
- Updated main process: handleTurnScopedEvent(), deleteSession(),
steering bypass for mid-turn messages, attachment passthrough
- Added deleteSession IPC handler and preload binding
- Added TurnEventLog state tracker with format/apply/prune helpers
- ChatPane: always-enabled composer, steering indicator, attachment
picker with preview, image thumbnails in message history,
context-usage bar, amber steer mode for send button
- ActivityPanel: turn events section with sub-agent, hook, skill,
and compaction event rendering
- Sidebar: delete session action in context menu
- App.tsx: wired sessionUsage, turnEventLogs, and deleteSession
Documentation:
- AGENTS.md: added glob safety rule for node_modules
- README.md: added steering, image input, and richer observability
- ARCHITECTURE.md: added turn-scoped events, steering, and attachments
- Website: added steering and image input feature cards, updated
live visibility and session cards
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 12:28:20 +01:00
David Kaya and Copilot
f04e3b9dcc
feat: cache same-turn approval selections
...
Add an AlwaysApprove flag to resolve-approval commands and cache
approved tool keys for the current request so repeated runtime
permissions are auto-approved immediately within the same turn.
The cache is cleared when the turn finishes to avoid leaking across
future requests.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-27 21:24:55 +01:00
David Kaya
85a9327f65
fix: surface handoff specialist activity\n\nQueue per-agent thinking updates from synchronous Copilot SDK session\nevents, flush them through the workflow runner, and promote handoff\ntargets to thinking immediately after handoff activity is emitted.\nThis fixes the UI case where downstream agents stayed on 'No status\nyet' during handoff patterns.\n\nAlso add targeted handoff diagnostics and regression tests.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 20:49:52 +01:00
David Kaya and Copilot
192c28f721
feat: surface MCP OAuth sidecar events
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-27 19:01:46 +01:00
David Kaya and Copilot
380e402512
feat: add backend plan mode checkpoints
...
Add backend support for plan-mode turn shaping and exit-plan review
checkpoints. Run-turn commands now accept an interaction mode,
plan-mode prompt guidance tells agents to produce a plan and call
exit_plan_mode, and the sidecar emits a structured
exit-plan-mode-requested event when the SDK raises that session event.
For now the backend intentionally treats exit_plan_mode as a turn
boundary and graceful-degradation review checkpoint. The current
Agent Framework GitHubCopilotAgent wrapper does not expose a clean way
to bridge the live CopilotSession back into same-turn exit-plan
resolution, so that follow-up remains documented for the frontend and a
future backend slice.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-26 23:29:32 +01:00
David Kaya and Copilot
2ae4bd01b4
feat: add ask_user support to sidecar
...
Implement the Copilot SDK user input round-trip in the backend:
- add user-input-requested and resolve-user-input protocol DTOs
- add a CopilotUserInputCoordinator that mirrors approval flow with
pending TaskCompletionSource state and explicit resolution
- wire SessionConfig.OnUserInputRequest through CopilotAgentBundle
and CopilotWorkflowRunner
- extend SidecarProtocolHost to emit user input events, accept
resolve-user-input commands, and filter ask_user from runtime
approval tools
- add regression tests for the new coordinator and protocol flow
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-26 17:34:49 +01:00
David Kaya and Copilot
1edd3aed55
refactor: rename sidecar host to Aryx
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-26 00:14:12 +01:00