-
Notifications
You must be signed in to change notification settings - Fork 247
docs: add Copilot CLI to all documentation #653
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,7 +13,7 @@ This repo contains the CLI for Entire. | |
| - `entire/`: Main CLI entry point | ||
| - `entire/cli`: CLI utilities and helpers | ||
| - `entire/cli/commands`: actual command implementations | ||
| - `entire/cli/agent`: agent implementations (Claude Code, Gemini CLI, OpenCode, Cursor) - see [Agent Integration Checklist](docs/architecture/agent-integration-checklist.md) and [Agent Implementation Guide](docs/architecture/agent-guide.md) | ||
| - `entire/cli/agent`: agent implementations (Claude Code, Gemini CLI, OpenCode, Cursor, Copilot CLI) - see [Agent Integration Checklist](docs/architecture/agent-integration-checklist.md) and [Agent Implementation Guide](docs/architecture/agent-guide.md) | ||
| - `entire/cli/strategy`: strategy implementation (manual-commit) - see section below | ||
| - `entire/cli/checkpoint`: checkpoint storage abstractions (temporary and committed) | ||
| - `entire/cli/session`: session state management | ||
|
|
@@ -72,16 +72,18 @@ mise run test:e2e [filter] # All agents, filtered | |
| mise run test:e2e --agent claude-code [filter] # Claude Code only | ||
| mise run test:e2e --agent gemini-cli [filter] # Gemini CLI only | ||
| mise run test:e2e --agent opencode [filter] # OpenCode only | ||
| mise run test:e2e --agent copilot-cli [filter] # Copilot CLI only | ||
| mise run test:e2e --agent cursor [filter] # Cursor only | ||
| ``` | ||
|
|
||
| E2E tests: | ||
|
|
||
| - Use the `//go:build e2e` build tag | ||
| - Located in `e2e/tests/` | ||
| - See [`e2e/README.md`](e2e/README.md) for full documentation (structure, debugging, adding agents) | ||
| - Test real agent interactions (Claude Code, Gemini CLI, OpenCode, Cursor, or Vogon creating files, committing, etc.) | ||
| - Test real agent interactions (Claude Code, Gemini CLI, OpenCode, Cursor, Copilot CLI, or Vogon creating files, committing, etc.) | ||
| - Validate checkpoint scenarios documented in `docs/architecture/checkpoint-scenarios.md` | ||
| - Support multiple agents via `E2E_AGENT` env var (`claude-code`, `gemini`, `opencode`, `cursor`, `vogon`) | ||
| - Support multiple agents via `E2E_AGENT` env var (`claude-code`, `gemini`, `opencode`, `cursor`, `copilot-cli`, `vogon`) | ||
|
Comment on lines
+84
to
+86
|
||
|
|
||
| **Environment variables:** | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -118,7 +118,7 @@ Each line has: `type`, `data`, `id` (UUID), `timestamp` (ISO 8601), `parentId` | |||||
|
|
||||||
| The `assistant.message` entries have a `toolRequests` array with tool call IDs. After each tool executes, a `tool.execution_complete` event is emitted with `toolTelemetry.properties.filePaths`, where `filePaths` is a string containing a JSON array of file paths modified by that tool call. The `TranscriptAnalyzer` implementation parses this `filePaths` property to extract modified files for checkpoint metadata. | ||||||
|
|
||||||
| **Note:** Token usage is NOT available in the Copilot CLI JSONL format. The transcript events do not include input/output token counts or cost information, so `TokenCalculator` is not implemented. | ||||||
| **Token usage:** Extracted via `TokenCalculator` from `session.shutdown` events, which contain aggregate `modelMetrics` with per-model `inputTokens`, `outputTokens`, `cacheReadTokens`, `cacheWriteTokens`, and `requests.count`. Mid-session checkpoints use per-message `outputTokens` fallback from `assistant.message` events. **Timing constraint:** Copilot CLI writes `session.shutdown` AFTER all hooks (including `sessionEnd`) return — hooks are synchronous/blocking. This means in-hook token extraction can only use the per-message fallback. The authoritative aggregate is captured at condensation time (commit/push), when the framework re-reads the full transcript and `session.shutdown` is present. Condensation also backfills `state.TokenUsage` so the session JSON reflects the authoritative totals after the first commit. | ||||||
|
||||||
| **Token usage:** Extracted via `TokenCalculator` from `session.shutdown` events, which contain aggregate `modelMetrics` with per-model `inputTokens`, `outputTokens`, `cacheReadTokens`, `cacheWriteTokens`, and `requests.count`. Mid-session checkpoints use per-message `outputTokens` fallback from `assistant.message` events. **Timing constraint:** Copilot CLI writes `session.shutdown` AFTER all hooks (including `sessionEnd`) return — hooks are synchronous/blocking. This means in-hook token extraction can only use the per-message fallback. The authoritative aggregate is captured at condensation time (commit/push), when the framework re-reads the full transcript and `session.shutdown` is present. Condensation also backfills `state.TokenUsage` so the session JSON reflects the authoritative totals after the first commit. | |
| **Token usage:** Currently not supported for the Copilot CLI agent. While `session.shutdown` events include aggregate `modelMetrics` (for example, `inputTokens`, `outputTokens`, `cacheReadTokens`, `cacheWriteTokens`, and `requests.count`), the `copilotcli` integration does not yet implement `agent.TokenCalculator` / `CalculateTokenUsage`, and token usage values are not computed or stored in `state.TokenUsage`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
--agentvalue for Cursor E2E runs appears incorrect here. The E2E agent registry usescursor-cli(seee2e/agents/cursor_cli.go), somise run test:e2e --agent cursorwon’t match the current filter/registration.