@armadra/agent 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -32
- package/CHANGELOG.zh-CN.md +56 -49
- package/README.md +162 -204
- package/README.zh-CN.md +150 -199
- package/dist/acp.d.ts +1 -1
- package/dist/acp.js +1 -1
- package/dist/agent/limits.d.ts +1 -1
- package/dist/agent/limits.js +1 -1
- package/dist/agent/loop-guard.d.ts +1 -1
- package/dist/agent/loop-guard.js +1 -1
- package/dist/agent/prompt-rules.d.ts +1 -1
- package/dist/agent/prompt-rules.js +1 -1
- package/dist/agent/reminders.d.ts +1 -1
- package/dist/agent/reminders.js +1 -1
- package/dist/agent/session-cache-key.d.ts +1 -1
- package/dist/agent/session-cache-key.js +1 -1
- package/dist/agent/session-extensions.d.ts +1 -1
- package/dist/agent/session-extensions.js +1 -1
- package/dist/agent/session-images.d.ts +1 -1
- package/dist/agent/session-images.js +1 -1
- package/dist/agent/session-plan.d.ts +1 -1
- package/dist/agent/session-plan.js +1 -1
- package/dist/agent/session-rewind.d.ts +1 -1
- package/dist/agent/session-rewind.js +1 -1
- package/dist/agent/session-settings.d.ts +1 -1
- package/dist/agent/session-settings.js +1 -1
- package/dist/agent/session-subagent.d.ts +1 -1
- package/dist/agent/session-subagent.js +1 -1
- package/dist/agent/session-telemetry.d.ts +1 -1
- package/dist/agent/session-telemetry.js +1 -1
- package/dist/agent/session-trace-writer.d.ts +1 -1
- package/dist/agent/session-trace-writer.js +1 -1
- package/dist/agent/session.js +1 -1
- package/dist/agent/subagent-background.d.ts +1 -1
- package/dist/agent/subagent-background.js +1 -1
- package/dist/agent/subagent-direct.d.ts +1 -1
- package/dist/agent/subagent-direct.js +1 -1
- package/dist/agent/subagent-fork.d.ts +1 -1
- package/dist/agent/subagent-fork.js +1 -1
- package/dist/agent/subagent-registry.d.ts +1 -1
- package/dist/agent/subagent-registry.js +1 -1
- package/dist/agent/system-prompt.js +1 -1
- package/dist/agent/tool-availability.d.ts +1 -1
- package/dist/agent/tool-availability.js +1 -1
- package/dist/agent/types-w5.d.ts +2 -2
- package/dist/agent/types-w5.js +1 -1
- package/dist/agent/types-w6.d.ts +1 -1
- package/dist/agent/types-w6.js +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/worktree.d.ts +1 -1
- package/dist/agent/worktree.js +1 -1
- package/dist/agents/builtin.d.ts +1 -1
- package/dist/agents/builtin.js +1 -1
- package/dist/agents/catalog.d.ts +1 -1
- package/dist/agents/catalog.js +1 -1
- package/dist/agents/discover.d.ts +1 -1
- package/dist/agents/discover.js +1 -1
- package/dist/agents/external.d.ts +1 -1
- package/dist/agents/external.js +1 -1
- package/dist/agents/parse.d.ts +1 -1
- package/dist/agents/parse.js +1 -1
- package/dist/agents/result.d.ts +1 -1
- package/dist/agents/result.js +2 -2
- package/dist/agents/task-record.d.ts +3 -3
- package/dist/agents/task-record.js +2 -2
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.js +1 -1
- package/dist/ai/apis/anthropic-compat.d.ts +2 -2
- package/dist/ai/apis/anthropic-compat.js +2 -2
- package/dist/ai/apis/cache-params.d.ts +1 -1
- package/dist/ai/apis/cache-params.js +1 -1
- package/dist/ai/apis/chatgpt-backend.d.ts +1 -1
- package/dist/ai/apis/chatgpt-backend.js +1 -1
- package/dist/ai/apis/chatgpt-rate-limits.d.ts +1 -1
- package/dist/ai/apis/chatgpt-rate-limits.js +1 -1
- package/dist/ai/apis/max-tokens.d.ts +1 -1
- package/dist/ai/apis/max-tokens.js +1 -1
- package/dist/ai/apis/shared.d.ts +1 -1
- package/dist/ai/apis/shared.js +1 -1
- package/dist/ai/image-intern.d.ts +2 -2
- package/dist/ai/image-intern.js +1 -1
- package/dist/ai/image-limits.d.ts +1 -1
- package/dist/ai/image-limits.js +1 -1
- package/dist/ai/json-body.d.ts +1 -1
- package/dist/ai/json-body.js +1 -1
- package/dist/ai/providers/builtin.d.ts +2 -2
- package/dist/ai/providers/builtin.js +4 -4
- package/dist/ai/providers/catalog.d.ts +2 -2
- package/dist/ai/providers/catalog.js +1 -1
- package/dist/ai/providers/channels.d.ts +1 -1
- package/dist/ai/providers/channels.js +1 -1
- package/dist/ai/providers/enrich.d.ts +1 -1
- package/dist/ai/providers/enrich.js +1 -1
- package/dist/ai/providers/models-dev-cache.d.ts +1 -1
- package/dist/ai/providers/models-dev-cache.js +1 -1
- package/dist/ai/providers/models-dev-data.d.ts +1 -1
- package/dist/ai/providers/models-dev-data.js +1 -1
- package/dist/ai/providers/models-dev-snapshot.d.ts +1 -1
- package/dist/ai/providers/models-dev-snapshot.js +1 -1
- package/dist/ai/providers/models-dev.d.ts +4 -4
- package/dist/ai/providers/models-dev.js +3 -3
- package/dist/ai/types.d.ts +2 -2
- package/dist/ai/types.js +1 -1
- package/dist/auth/chatgpt/cli.d.ts +1 -1
- package/dist/auth/chatgpt/cli.js +1 -1
- package/dist/auth/chatgpt/host-id.d.ts +1 -1
- package/dist/auth/chatgpt/host-id.js +1 -1
- package/dist/auth/chatgpt/login.d.ts +1 -1
- package/dist/auth/chatgpt/login.js +1 -1
- package/dist/auth/chatgpt/presets.d.ts +1 -1
- package/dist/auth/chatgpt/presets.js +1 -1
- package/dist/auth/oauth/callback-server.d.ts +1 -1
- package/dist/auth/oauth/callback-server.js +1 -1
- package/dist/auth/oauth/flows.d.ts +1 -1
- package/dist/auth/oauth/flows.js +1 -1
- package/dist/auth/oauth/oidc.d.ts +1 -1
- package/dist/auth/oauth/oidc.js +1 -1
- package/dist/auth/oauth/pkce.d.ts +1 -1
- package/dist/auth/oauth/pkce.js +1 -1
- package/dist/auth/oauth/refresh.d.ts +1 -1
- package/dist/auth/oauth/refresh.js +1 -1
- package/dist/auth/oauth/token-client.d.ts +1 -1
- package/dist/auth/oauth/token-client.js +1 -1
- package/dist/auth/oauth/token-store.d.ts +1 -1
- package/dist/auth/oauth/token-store.js +1 -1
- package/dist/auth/testing/fake-oauth.d.ts +1 -1
- package/dist/auth/testing/fake-oauth.js +1 -1
- package/dist/bundle/ama.cjs +24 -24
- package/dist/checkpoints/blobs.d.ts +1 -1
- package/dist/checkpoints/blobs.js +1 -1
- package/dist/checkpoints/gc.d.ts +1 -1
- package/dist/checkpoints/gc.js +1 -1
- package/dist/checkpoints/git-head.d.ts +1 -1
- package/dist/checkpoints/git-head.js +1 -1
- package/dist/checkpoints/index.d.ts +1 -1
- package/dist/checkpoints/index.js +1 -1
- package/dist/checkpoints/replay.d.ts +1 -1
- package/dist/checkpoints/replay.js +1 -1
- package/dist/checkpoints/restore.d.ts +1 -1
- package/dist/checkpoints/restore.js +1 -1
- package/dist/checkpoints/settings.d.ts +1 -1
- package/dist/checkpoints/settings.js +1 -1
- package/dist/checkpoints/shadow-git.d.ts +1 -1
- package/dist/checkpoints/shadow-git.js +1 -1
- package/dist/checkpoints/shadow-restore.d.ts +1 -1
- package/dist/checkpoints/shadow-restore.js +1 -1
- package/dist/checkpoints/tracker.d.ts +1 -1
- package/dist/checkpoints/tracker.js +1 -1
- package/dist/checkpoints/types.d.ts +1 -1
- package/dist/checkpoints/types.js +1 -1
- package/dist/cli/args.d.ts +2 -2
- package/dist/cli/args.js +1 -1
- package/dist/cli/bootstrap.js +1 -1
- package/dist/cli/choice-prompt.d.ts +1 -1
- package/dist/cli/choice-prompt.js +1 -1
- package/dist/cli/codemode-notice.d.ts +1 -1
- package/dist/cli/codemode-notice.js +1 -1
- package/dist/cli/compose-agents.d.ts +1 -1
- package/dist/cli/compose-agents.js +1 -1
- package/dist/cli/compose-extensions.d.ts +1 -1
- package/dist/cli/compose-extensions.js +1 -1
- package/dist/cli/compose-memory.d.ts +1 -1
- package/dist/cli/compose-memory.js +1 -1
- package/dist/cli/compose-providers.d.ts +1 -1
- package/dist/cli/compose-providers.js +1 -1
- package/dist/cli/compose-request.d.ts +1 -1
- package/dist/cli/compose-request.js +1 -1
- package/dist/cli/from-prompt.d.ts +1 -1
- package/dist/cli/from-prompt.js +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.js +1 -1
- package/dist/cli/subcommands/auth.d.ts +1 -1
- package/dist/cli/subcommands/auth.js +1 -1
- package/dist/cli/subcommands/config-set.d.ts +1 -1
- package/dist/cli/subcommands/config-set.js +1 -1
- package/dist/cli/subcommands/doctor.js +1 -1
- package/dist/cli/subcommands/init.d.ts +1 -1
- package/dist/cli/subcommands/init.js +1 -1
- package/dist/cli/subcommands/memory.d.ts +1 -1
- package/dist/cli/subcommands/memory.js +1 -1
- package/dist/cli/subcommands/models.js +1 -1
- package/dist/cli/subcommands/providers-list.d.ts +1 -1
- package/dist/cli/subcommands/providers-list.js +1 -1
- package/dist/cli/subcommands/providers-plan.d.ts +1 -1
- package/dist/cli/subcommands/providers-plan.js +1 -1
- package/dist/cli/subcommands/providers.d.ts +1 -1
- package/dist/cli/subcommands/providers.js +1 -1
- package/dist/cli/subcommands/sessions-export.d.ts +1 -1
- package/dist/cli/subcommands/sessions-export.js +1 -1
- package/dist/cli/subcommands/sessions-trace.d.ts +1 -1
- package/dist/cli/subcommands/sessions-trace.js +1 -1
- package/dist/cli/subcommands/sessions.d.ts +1 -1
- package/dist/cli/subcommands/sessions.js +1 -1
- package/dist/cli/subcommands/stats.d.ts +1 -1
- package/dist/cli/subcommands/stats.js +1 -1
- package/dist/codemode/capability.d.ts +1 -1
- package/dist/codemode/capability.js +1 -1
- package/dist/codemode/host-side.d.ts +2 -2
- package/dist/codemode/host-side.js +2 -2
- package/dist/compaction/image-budget.d.ts +1 -1
- package/dist/compaction/image-budget.js +1 -1
- package/dist/config/edit.d.ts +1 -1
- package/dist/config/edit.js +1 -1
- package/dist/config/init.d.ts +1 -1
- package/dist/config/init.js +1 -1
- package/dist/config/json-schema.d.ts +2 -2
- package/dist/config/json-schema.js +2 -2
- package/dist/config/schema-w5.d.ts +1 -1
- package/dist/config/schema-w5.js +1 -1
- package/dist/config/schema-w6.d.ts +1 -1
- package/dist/config/schema-w6.js +1 -1
- package/dist/config/settings-registry.d.ts +1 -1
- package/dist/config/settings-registry.js +1 -1
- package/dist/config/types-w5.d.ts +2 -2
- package/dist/config/types-w5.js +2 -2
- package/dist/config/types-w6.d.ts +5 -5
- package/dist/config/types-w6.js +1 -1
- package/dist/config/types.d.ts +6 -6
- package/dist/config/types.js +1 -1
- package/dist/drivers/acp/client.d.ts +1 -1
- package/dist/drivers/acp/client.js +1 -1
- package/dist/drivers/acp/driver.d.ts +1 -1
- package/dist/drivers/acp/driver.js +1 -1
- package/dist/drivers/acp/testing/fake-agent.d.ts +1 -1
- package/dist/drivers/acp/testing/fake-agent.js +1 -1
- package/dist/drivers/acp/types.d.ts +1 -1
- package/dist/drivers/acp/types.js +1 -1
- package/dist/drivers/agents.d.ts +1 -1
- package/dist/drivers/agents.js +1 -1
- package/dist/drivers/base.d.ts +1 -1
- package/dist/drivers/base.js +1 -1
- package/dist/drivers/catalog.d.ts +1 -1
- package/dist/drivers/catalog.js +1 -1
- package/dist/drivers/env.d.ts +1 -1
- package/dist/drivers/env.js +1 -1
- package/dist/drivers/host-runners.d.ts +1 -1
- package/dist/drivers/host-runners.js +1 -1
- package/dist/drivers/jsonrpc.d.ts +1 -1
- package/dist/drivers/jsonrpc.js +1 -1
- package/dist/drivers/native/claude-normalize.d.ts +1 -1
- package/dist/drivers/native/claude-normalize.js +1 -1
- package/dist/drivers/native/claude-stream.d.ts +1 -1
- package/dist/drivers/native/claude-stream.js +1 -1
- package/dist/drivers/native/codex-app-server.d.ts +1 -1
- package/dist/drivers/native/codex-app-server.js +1 -1
- package/dist/drivers/native/codex-normalize.d.ts +1 -1
- package/dist/drivers/native/codex-normalize.js +1 -1
- package/dist/drivers/native/oneshot.d.ts +1 -1
- package/dist/drivers/native/oneshot.js +1 -1
- package/dist/drivers/permissions.d.ts +1 -1
- package/dist/drivers/permissions.js +1 -1
- package/dist/drivers/pids.d.ts +1 -1
- package/dist/drivers/pids.js +1 -1
- package/dist/drivers/pool.d.ts +1 -1
- package/dist/drivers/pool.js +1 -1
- package/dist/drivers/probe.d.ts +1 -1
- package/dist/drivers/probe.js +1 -1
- package/dist/drivers/process.d.ts +1 -1
- package/dist/drivers/process.js +1 -1
- package/dist/drivers/runner.d.ts +1 -1
- package/dist/drivers/runner.js +1 -1
- package/dist/drivers/store.d.ts +1 -1
- package/dist/drivers/store.js +1 -1
- package/dist/drivers/types.d.ts +1 -1
- package/dist/drivers/types.js +1 -1
- package/dist/git/info.d.ts +1 -1
- package/dist/git/info.js +1 -1
- package/dist/host/api-impl.d.ts +1 -1
- package/dist/host/api-impl.js +1 -1
- package/dist/host/types.d.ts +2 -2
- package/dist/i18n/catalog.d.ts +2 -2
- package/dist/i18n/catalog.js +2 -2
- package/dist/i18n/format.d.ts +1 -1
- package/dist/i18n/format.js +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/messages/acp.d.ts +1 -1
- package/dist/i18n/messages/acp.js +1 -1
- package/dist/i18n/messages/agents.d.ts +1 -1
- package/dist/i18n/messages/agents.js +1 -1
- package/dist/i18n/messages/approval.d.ts +1 -1
- package/dist/i18n/messages/approval.js +1 -1
- package/dist/i18n/messages/auth.d.ts +1 -1
- package/dist/i18n/messages/auth.js +1 -1
- package/dist/i18n/messages/cli.d.ts +1 -1
- package/dist/i18n/messages/cli.js +1 -1
- package/dist/i18n/messages/config-keys.js +12 -12
- package/dist/i18n/messages/config.d.ts +1 -1
- package/dist/i18n/messages/config.js +3 -3
- package/dist/i18n/messages/drivers.d.ts +1 -1
- package/dist/i18n/messages/drivers.js +1 -1
- package/dist/i18n/messages/errors.d.ts +1 -1
- package/dist/i18n/messages/errors.js +1 -1
- package/dist/i18n/messages/interactive-line.d.ts +1 -1
- package/dist/i18n/messages/interactive-line.js +1 -1
- package/dist/i18n/messages/interactive-startup.d.ts +1 -1
- package/dist/i18n/messages/interactive-startup.js +1 -1
- package/dist/i18n/messages/interactive-view.d.ts +1 -1
- package/dist/i18n/messages/interactive-view.js +1 -1
- package/dist/i18n/messages/interactive.d.ts +1 -1
- package/dist/i18n/messages/interactive.js +1 -1
- package/dist/i18n/messages/memory.d.ts +1 -1
- package/dist/i18n/messages/memory.js +1 -1
- package/dist/i18n/messages/panels.d.ts +1 -1
- package/dist/i18n/messages/panels.js +1 -1
- package/dist/i18n/messages/permissions.d.ts +1 -1
- package/dist/i18n/messages/permissions.js +1 -1
- package/dist/i18n/messages/plan.d.ts +1 -1
- package/dist/i18n/messages/plan.js +1 -1
- package/dist/i18n/messages/print.d.ts +2 -2
- package/dist/i18n/messages/print.js +2 -2
- package/dist/i18n/messages/report-context.d.ts +1 -1
- package/dist/i18n/messages/report-context.js +1 -1
- package/dist/i18n/messages/report.d.ts +1 -1
- package/dist/i18n/messages/report.js +1 -1
- package/dist/i18n/messages/rewind.d.ts +1 -1
- package/dist/i18n/messages/rewind.js +1 -1
- package/dist/i18n/messages/session.d.ts +1 -1
- package/dist/i18n/messages/session.js +1 -1
- package/dist/i18n/messages/settings.d.ts +1 -1
- package/dist/i18n/messages/settings.js +1 -1
- package/dist/i18n/messages/subcommands.d.ts +1 -1
- package/dist/i18n/messages/subcommands.js +1 -1
- package/dist/i18n/messages/trace.d.ts +1 -1
- package/dist/i18n/messages/trace.js +1 -1
- package/dist/i18n/types.d.ts +1 -1
- package/dist/i18n/types.js +1 -1
- package/dist/memory/frontmatter.d.ts +1 -1
- package/dist/memory/frontmatter.js +1 -1
- package/dist/memory/index.d.ts +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/lock.d.ts +1 -1
- package/dist/memory/lock.js +1 -1
- package/dist/memory/paths.d.ts +1 -1
- package/dist/memory/paths.js +1 -1
- package/dist/memory/runtime.d.ts +1 -1
- package/dist/memory/runtime.js +1 -1
- package/dist/memory/secrets.d.ts +1 -1
- package/dist/memory/secrets.js +1 -1
- package/dist/memory/section.d.ts +1 -1
- package/dist/memory/section.js +1 -1
- package/dist/memory/store.d.ts +1 -1
- package/dist/memory/store.js +1 -1
- package/dist/memory/tool.d.ts +1 -1
- package/dist/memory/tool.js +1 -1
- package/dist/modes/acp/acp-auth-gate.d.ts +1 -1
- package/dist/modes/acp/acp-auth-gate.js +1 -1
- package/dist/modes/acp/acp-config.d.ts +1 -1
- package/dist/modes/acp/acp-config.js +1 -1
- package/dist/modes/acp/acp-connection.d.ts +1 -1
- package/dist/modes/acp/acp-connection.js +1 -1
- package/dist/modes/acp/acp-events.d.ts +1 -1
- package/dist/modes/acp/acp-events.js +1 -1
- package/dist/modes/acp/acp-mode.d.ts +1 -1
- package/dist/modes/acp/acp-mode.js +1 -1
- package/dist/modes/acp/acp-server.d.ts +2 -2
- package/dist/modes/acp/acp-server.js +2 -2
- package/dist/modes/acp/acp-sessions.d.ts +2 -2
- package/dist/modes/acp/acp-sessions.js +2 -2
- package/dist/modes/acp/acp-tool-text.d.ts +1 -1
- package/dist/modes/acp/acp-tool-text.js +1 -1
- package/dist/modes/commands-core.js +1 -1
- package/dist/modes/image-input.d.ts +1 -1
- package/dist/modes/image-input.js +1 -1
- package/dist/modes/interactive/agent-bar.d.ts +1 -1
- package/dist/modes/interactive/agent-bar.js +1 -1
- package/dist/modes/interactive/agent-transcript.d.ts +1 -1
- package/dist/modes/interactive/agent-transcript.js +1 -1
- package/dist/modes/interactive/agent-view.d.ts +1 -1
- package/dist/modes/interactive/agent-view.js +1 -1
- package/dist/modes/interactive/approval-dock.d.ts +1 -1
- package/dist/modes/interactive/approval-dock.js +1 -1
- package/dist/modes/interactive/config-panel.d.ts +1 -1
- package/dist/modes/interactive/config-panel.js +1 -1
- package/dist/modes/interactive/config-ui.d.ts +1 -1
- package/dist/modes/interactive/config-ui.js +1 -1
- package/dist/modes/interactive/memory-panel.d.ts +1 -1
- package/dist/modes/interactive/memory-panel.js +1 -1
- package/dist/modes/interactive/plan-command.d.ts +1 -1
- package/dist/modes/interactive/plan-command.js +1 -1
- package/dist/modes/interactive/plan-dialog.d.ts +1 -1
- package/dist/modes/interactive/plan-dialog.js +1 -1
- package/dist/modes/interactive/plan-flow.d.ts +1 -1
- package/dist/modes/interactive/plan-flow.js +1 -1
- package/dist/modes/interactive/subagent-view.d.ts +1 -1
- package/dist/modes/interactive/subagent-view.js +1 -1
- package/dist/modes/interactive/task-background.d.ts +1 -1
- package/dist/modes/interactive/task-background.js +1 -1
- package/dist/modes/interactive/trace-view.d.ts +1 -1
- package/dist/modes/interactive/trace-view.js +1 -1
- package/dist/modes/print/json-event.d.ts +1 -1
- package/dist/modes/print/json-event.js +2 -2
- package/dist/modes/print/print-mode.d.ts +1 -1
- package/dist/modes/print/print-mode.js +1 -1
- package/dist/modes/print/search-hint.d.ts +1 -1
- package/dist/modes/print/search-hint.js +1 -1
- package/dist/modes/rpc/commands.js +2 -2
- package/dist/permissions/auto-safe.d.ts +1 -1
- package/dist/permissions/auto-safe.js +1 -1
- package/dist/permissions/bypass.d.ts +1 -1
- package/dist/permissions/bypass.js +1 -1
- package/dist/permissions/classifier.d.ts +1 -1
- package/dist/permissions/classifier.js +1 -1
- package/dist/permissions/memory-class.d.ts +1 -1
- package/dist/permissions/memory-class.js +1 -1
- package/dist/permissions/pipeline.d.ts +2 -2
- package/dist/permissions/pipeline.js +2 -2
- package/dist/permissions/protected.d.ts +1 -1
- package/dist/permissions/protected.js +1 -1
- package/dist/permissions/readonly-bash.d.ts +1 -1
- package/dist/permissions/readonly-bash.js +1 -1
- package/dist/permissions/types.d.ts +2 -2
- package/dist/plan/done-markers.d.ts +1 -1
- package/dist/plan/done-markers.js +1 -1
- package/dist/plan/extract.d.ts +1 -1
- package/dist/plan/extract.js +1 -1
- package/dist/plan/prompts.d.ts +1 -1
- package/dist/plan/prompts.js +1 -1
- package/dist/plan/store.d.ts +1 -1
- package/dist/plan/store.js +1 -1
- package/dist/rpc.d.ts +3 -3
- package/dist/rpc.js +3 -3
- package/dist/sandbox/bash.d.ts +1 -1
- package/dist/sandbox/bash.js +1 -1
- package/dist/sandbox/detect.d.ts +1 -1
- package/dist/sandbox/detect.js +1 -1
- package/dist/sandbox/index.d.ts +1 -1
- package/dist/sandbox/index.js +1 -1
- package/dist/sandbox/profile.d.ts +1 -1
- package/dist/sandbox/profile.js +1 -1
- package/dist/sandbox/wrap.d.ts +1 -1
- package/dist/sandbox/wrap.js +1 -1
- package/dist/sdk.d.ts +3 -3
- package/dist/sdk.js +2 -2
- package/dist/session/line-reader.d.ts +1 -1
- package/dist/session/line-reader.js +1 -1
- package/dist/session/list.d.ts +1 -1
- package/dist/session/list.js +1 -1
- package/dist/session/migrate.d.ts +1 -1
- package/dist/session/migrate.js +1 -1
- package/dist/session/store.d.ts +1 -1
- package/dist/session/store.js +1 -1
- package/dist/skills/builtin.js +2 -2
- package/dist/tools/background-jobs.d.ts +1 -1
- package/dist/tools/background-jobs.js +1 -1
- package/dist/tools/clipboard-image.d.ts +1 -1
- package/dist/tools/clipboard-image.js +1 -1
- package/dist/tools/edit.d.ts +1 -1
- package/dist/tools/edit.js +1 -1
- package/dist/tools/grep.d.ts +1 -1
- package/dist/tools/grep.js +1 -1
- package/dist/tools/image-resize.d.ts +1 -1
- package/dist/tools/image-resize.js +1 -1
- package/dist/tools/read-lines.d.ts +1 -1
- package/dist/tools/read-lines.js +1 -1
- package/dist/tools/read.d.ts +1 -1
- package/dist/tools/read.js +1 -1
- package/dist/tools/task-ctl.d.ts +1 -1
- package/dist/tools/task-ctl.js +1 -1
- package/dist/tools/task.d.ts +2 -2
- package/dist/tools/task.js +2 -2
- package/dist/tools/types.d.ts +3 -3
- package/dist/tools/types.js +1 -1
- package/dist/trace/build.d.ts +1 -1
- package/dist/trace/build.js +1 -1
- package/dist/trace/detail.d.ts +1 -1
- package/dist/trace/detail.js +1 -1
- package/dist/trace/flatten.d.ts +1 -1
- package/dist/trace/flatten.js +1 -1
- package/dist/trace/format.d.ts +1 -1
- package/dist/trace/format.js +1 -1
- package/dist/trace/html-template.d.ts +1 -1
- package/dist/trace/html-template.js +1 -1
- package/dist/trace/html.d.ts +1 -1
- package/dist/trace/html.js +1 -1
- package/dist/trace/query-session.d.ts +1 -1
- package/dist/trace/query-session.js +1 -1
- package/dist/trace/query.d.ts +1 -1
- package/dist/trace/query.js +1 -1
- package/dist/trace/types.d.ts +1 -1
- package/dist/trace/types.js +1 -1
- package/dist/tui/components/settings-list.d.ts +1 -1
- package/dist/tui/components/settings-list.js +1 -1
- package/docs/README.md +85 -0
- package/docs/assets/ama-wordmark-dark.svg +37 -0
- package/docs/assets/ama-wordmark-light.svg +37 -0
- package/docs/en/README.md +39 -0
- package/docs/en/{permissions.md → guides/permissions.md} +14 -14
- package/docs/en/{providers.md → guides/providers.md} +6 -6
- package/docs/en/{sessions.md → guides/sessions.md} +6 -6
- package/docs/en/{tui.md → guides/tui.md} +15 -15
- package/docs/en/{acp.md → reference/acp.md} +6 -6
- package/docs/en/{host-api.md → reference/host-api.md} +7 -7
- package/docs/en/{rpc.md → reference/rpc.md} +13 -13
- package/docs/{agents.md → guides/agents.md} +13 -13
- package/docs/{codemode.md → guides/codemode.md} +3 -3
- package/docs/{hooks.md → guides/hooks.md} +2 -2
- package/docs/guides/i18n.md +93 -0
- package/docs/{memory.md → guides/memory.md} +1 -1
- package/docs/{permissions.md → guides/permissions.md} +2 -2
- package/docs/{plan.md → guides/plan.md} +4 -4
- package/docs/{providers.md → guides/providers.md} +4 -4
- package/docs/{sessions.md → guides/sessions.md} +5 -5
- package/docs/{tui.md → guides/tui.md} +8 -8
- package/docs/{acp.md → reference/acp.md} +5 -5
- package/docs/{host-api.md → reference/host-api.md} +4 -4
- package/docs/{rpc.md → reference/rpc.md} +11 -11
- package/docs/{session-format.md → reference/session-format.md} +7 -7
- package/package.json +12 -23
- package/docs/rewind-plan.md +0 -181
- package/docs/tui-design.md +0 -764
- /package/docs/{sandbox.md → guides/sandbox.md} +0 -0
package/docs/rewind-plan.md
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# 检查点与回滚:设计与实施计划
|
|
2
|
-
|
|
3
|
-
> 状态:实施设计(2026-10-02)。基线:`main` = `95c0435`(0.4.0)。
|
|
4
|
-
> 设计依据:`docs/design.md` §8 会话树、§9 压缩、§9.1 缓存保证、§13 SDK / RPC;对照同类终端 Agent 的检查点实现(只借鉴行为与边界,不复制代码)。
|
|
5
|
-
> 路径相对仓库根;`[RW-x]` 为本计划的批次编号(§6)。
|
|
6
|
-
|
|
7
|
-
## §0 结论
|
|
8
|
-
|
|
9
|
-
| # | 决定 | 理由 |
|
|
10
|
-
| --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
|
|
11
|
-
| D1 | 回滚 = 「对话」与「代码」两件事,入口 `/rewind` 与空闲时双击 Esc;选项:对话 + 代码 / 仅对话 / 仅代码 / 从这里摘要 / 摘要到这里 / 取消 | 两者独立才能覆盖「代码写坏了但对话想留」「对话跑偏了但代码要留」 |
|
|
12
|
-
| D2 | 检查点粒度 = 开启新回合的用户消息;运行中插话(steer)与排队消息并入当前回合,不单独建 | 回合是用户能理解的最小单位 |
|
|
13
|
-
| D3 | 代码跟踪 edit / write(含 codemode 内层调用、task 子会话)改过的文件;每次发新回合按**当前磁盘状态**重拍已跟踪文件,所以 bash 或手动对已跟踪文件的改动也会被收进下一个检查点 | bash 任意改动不可完整追踪;已跟踪文件这样处理就不会漏 |
|
|
14
|
-
| D4 | 备份按内容 sha256 存全局目录,多会话、多检查点共用;会话文件只记哈希 | 同内容只存一份;fork 不用迁移备份 |
|
|
15
|
-
| D5 | 恢复前做冲突检测:磁盘内容既不等于 ama 最后写入的、也不等于最近检查点的 → 冲突,缺省跳过并列出,`onConflict: "overwrite"` 才覆盖 | 不冲掉用户在回合外的手动修改 |
|
|
16
|
-
| D6 | git 状态不动;检查点记 HEAD,回滚时 HEAD 变了只提示并给命令 | `reset` 类操作风险高,交给用户 |
|
|
17
|
-
| D7 | 对话回滚复用会话树(`navigate` 换叶子),被离开的分支留在文件里 | 现有能力,零迁移 |
|
|
18
|
-
| D8 | 回滚后上下文只发新路径,前缀逐字节不变,缓存照常命中;需要告诉模型的事(文件与对话不一致)以 `custom_message` 追加在末尾 | §9.1 前缀稳定 |
|
|
19
|
-
| D9 | `影子 git` 模式(能覆盖 bash 改动)作为可选 `checkpoints.mode: "shadow-git"`,缺省关,最后一批做 | 大仓库慢、依赖 git,不适合作缺省 |
|
|
20
|
-
|
|
21
|
-
## §1 数据模型
|
|
22
|
-
|
|
23
|
-
### §1.1 备份存储
|
|
24
|
-
|
|
25
|
-
- 目录:`<dataDir>/file-history/blobs/<sha256 前 2 位>/<sha256 全长>`,内容为文件原字节(不压缩、不改换行与 BOM);先写 `<name>.tmp-<pid>` 再 rename,已存在即跳过。
|
|
26
|
-
- 不备份:超过 `checkpoints.maxFileBytes`(缺省 5 MiB)的文件、非普通文件。记录里标 `skipped: "too_large" | "not_regular"`,回滚时报告「无法恢复」。
|
|
27
|
-
- 内存会话(无会话文件)不建检查点,`/rewind` 只提供「仅对话」。
|
|
28
|
-
|
|
29
|
-
### §1.2 会话条目(均为 `custom`,不进上下文,不影响前缀)
|
|
30
|
-
|
|
31
|
-
```ts
|
|
32
|
-
// customType "ama.checkpoint":新回合的用户消息条目追加之后立即追加
|
|
33
|
-
interface CheckpointData {
|
|
34
|
-
v: 1;
|
|
35
|
-
userEntryId: string; // 这个检查点属于哪条用户消息(「这条消息发出前」的状态)
|
|
36
|
-
files: Record<string, FileRecord>; // 全部已跟踪文件;键 = cwd 内相对路径(/ 分隔),cwd 外为绝对路径
|
|
37
|
-
git?: { head: string; branch?: string }; // 直接读 .git/HEAD(含 worktree 的 gitdir 文件),不起 git 进程
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// customType "ama.checkpoint-track":回合中途第一次碰某文件时追加,补进本回合的检查点
|
|
41
|
-
interface CheckpointTrackData {
|
|
42
|
-
v: 1;
|
|
43
|
-
userEntryId: string;
|
|
44
|
-
path: string;
|
|
45
|
-
record: FileRecord;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
interface FileRecord {
|
|
49
|
-
blob: string | null; // sha256;null = 当时文件不存在(回滚时删除)
|
|
50
|
-
mode?: number; // 普通文件的权限位
|
|
51
|
-
size?: number;
|
|
52
|
-
realParentDir?: string; // 记录时父目录的 realpath(恢复时校验没被移动)
|
|
53
|
-
skipped?: "too_large" | "not_regular";
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
- 读取:按文件顺序重放全会话(不限活动分支)的两类条目,得到 `Map<userEntryId, CheckpointData>`;`checkpoint-track` 并入对应检查点。
|
|
58
|
-
- 每个文件的第一条记录(最早的 `blob`)永久保留,作为「找不到更近记录时」的回退。
|
|
59
|
-
|
|
60
|
-
### §1.3 运行时状态(`src/checkpoints/tracker.ts`)
|
|
61
|
-
|
|
62
|
-
- `trackedFiles: Set<string>`、最近检查点、`lastWritten: Map<路径, sha256>`(ama 最后一次写入后的内容哈希,用于冲突检测;只在内存,恢复会话后以最近检查点为准)。
|
|
63
|
-
- 检查点上限 `checkpoints.keep`(缺省 100):超出时较早检查点不再列为回滚点;备份由 GC 清理(§1.4)。
|
|
64
|
-
|
|
65
|
-
### §1.4 清理
|
|
66
|
-
|
|
67
|
-
- `ama sessions prune` 与删除会话时:标记 —— 扫描所有会话文件里的 `ama.checkpoint*` 引用;清除 —— 删除未被引用且 mtime 超过 1 天的 blob。
|
|
68
|
-
- `ama doctor` 显示 file-history 占用。
|
|
69
|
-
|
|
70
|
-
## §2 时机
|
|
71
|
-
|
|
72
|
-
| 时机 | 动作 |
|
|
73
|
-
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
74
|
-
| 新回合用户消息落盘后(`runPrompt`,steer / 排队并入的不算) | 对每个已跟踪文件:lstat → 不存在记 `null`;size / mode 与上一条记录一致且 mtime 不晚于记录时间 → 沿用;否则读内容算 sha256,等于上一条则沿用,不等则写 blob。追加 `ama.checkpoint` |
|
|
75
|
-
| edit / write 写文件**之前**(`ctx.checkpoint?.beforeWrite(abs)`) | 文件在任何检查点里都没出现过 → 备份当前内容(不存在记 `null`),追加 `ama.checkpoint-track`,加入 `trackedFiles`;出现过则什么都不做 |
|
|
76
|
-
| edit / write 写文件**之后**(`ctx.checkpoint?.afterWrite(abs, bytes)`) | 记 `lastWritten` |
|
|
77
|
-
| task 子会话 | 子会话的 `ctx.checkpoint` 指向父会话的 tracker,记到父会话当前回合 |
|
|
78
|
-
| codemode 内层调用 | 走同一工具上下文,天然覆盖 |
|
|
79
|
-
|
|
80
|
-
`beforeWrite` 失败(磁盘满、权限)只记 warn,不阻止写入(与对照实现一致:检查点是辅助,不能让编辑失败)。
|
|
81
|
-
|
|
82
|
-
## §3 回滚
|
|
83
|
-
|
|
84
|
-
### §3.1 API(`AgentSession`,SDK 同名,RPC 见 §5)
|
|
85
|
-
|
|
86
|
-
类型见 `src/checkpoints/types.ts`(`RewindPoint`、`RewindRequest`、`RewindResult`、`CodeRestoreResult`):
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
rewindPoints(): RewindPoint[]; // 活动路径上的新回合用户消息,从旧到新
|
|
90
|
-
rewind(request: RewindRequest): Promise<RewindResult>;
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
`dryRun` 的 `code` 字段给出将恢复的文件与 `insertions / deletions`,界面的每行统计与确认预览都用它(懒计算,只对选中项)。
|
|
94
|
-
|
|
95
|
-
- 运行中调用抛 `AmaError("busy")`。全部失败且无一恢复 → `AmaError("rewind_failed", "没有文件被恢复…")`。
|
|
96
|
-
|
|
97
|
-
### §3.2 恢复代码(`src/checkpoints/restore.ts`)
|
|
98
|
-
|
|
99
|
-
对每个已跟踪文件,取目标检查点里的记录,没有则取该文件最早的记录:
|
|
100
|
-
|
|
101
|
-
1. 记录 `skipped` → 报告 `too_large` / `not_regular`。
|
|
102
|
-
2. 当前内容与记录相同 → 跳过(不计入)。
|
|
103
|
-
3. 冲突检测:当前 sha256 ∉ {`lastWritten`,最近检查点的记录} → 冲突;`skip` 时列入 `conflicts` 不动。
|
|
104
|
-
4. 安全检查(不通过 → `skipped`):目标是符号链接 / 非普通文件 / `nlink > 1`;父目录 realpath ≠ `realParentDir`。
|
|
105
|
-
5. `blob: null` → 删除文件(只删普通文件)。
|
|
106
|
-
6. 否则写回:Windows 以外用 `O_NOFOLLOW` 打开目标,`fstat` 与路径 `lstat` 的 dev / ino 一致才写;清空后写入 blob 内容,恢复 `mode`;目标不存在时按需创建父目录(再次校验父目录)。
|
|
107
|
-
7. 被恢复 / 删除的文件从 `readFiles` 移除(模型再改前必须重新 read)。
|
|
108
|
-
|
|
109
|
-
`dryRun` 只做 1–4 并用行级 diff 计 `insertions / deletions`(复用 `tools/edit` 的 diff 实现)。
|
|
110
|
-
|
|
111
|
-
### §3.3 回滚对话(`src/agent/session-rewind.ts`)
|
|
112
|
-
|
|
113
|
-
1. `navigate(userEntry.parentId)`(已有:换叶子、重载消息、`cache.onContextChanged()`)。
|
|
114
|
-
2. `readFiles` 按新路径重算:路径上成功的 read 工具调用的绝对路径(不跨分支保留)。
|
|
115
|
-
3. 返回 `draft`:原消息文本与图片,交互界面回填输入框。
|
|
116
|
-
4. 模型、思考级别、权限模式保持当前(文档写明)。
|
|
117
|
-
|
|
118
|
-
### §3.4 文件与对话不一致时告诉模型
|
|
119
|
-
|
|
120
|
-
- 仅对话:若有已跟踪文件当前内容 ≠ 目标检查点 → 下一次提示前追加 `custom_message{customType:"ama.rewind-note"}`:「回滚到较早的对话,但以下文件保留了之后的修改:…(最多 20 个,其余计数)」。
|
|
121
|
-
- 仅代码:追加「以下文件已恢复到第 N 条消息之前的状态:…」。
|
|
122
|
-
- 对话 + 代码:两边一致,不追加。
|
|
123
|
-
- 该条目在回滚落点之后、下一条用户消息之前,只追加在末尾,不改前缀。
|
|
124
|
-
|
|
125
|
-
### §3.5 摘要两项
|
|
126
|
-
|
|
127
|
-
- 「从这里摘要」= `navigate(parentId, { summarize: true })`(已有 `branch_summary`,走会话前缀续写),并回填原消息。
|
|
128
|
-
- 「摘要到这里」= 以所选用户消息为切点做一次档二压缩(`compaction` 条目的 `firstKeptEntryId` = 该消息),之后的消息原样保留,停在末尾。可附说明(`instructions`)。
|
|
129
|
-
|
|
130
|
-
### §3.6 中断即撤回
|
|
131
|
-
|
|
132
|
-
运行中 Esc 中断,且本回合还没有任何 assistant 文本 / 工具调用、输入框为空 → 自动 `rewind(当前回合, "conversation")` 并回填原消息(配置 `ui.restoreOnCancel`,缺省 true)。
|
|
133
|
-
|
|
134
|
-
## §4 交互
|
|
135
|
-
|
|
136
|
-
- 空闲且输入框为空:双击 Esc(间隔 ≤ 800 ms,第一次提示「再按 Esc 回滚」)打开回滚列表;输入框有字:双击 Esc 清空输入并存进输入历史(↑ 可取回),第一次提示「再按 Esc 清空」。运行中 Esc 仍为中断。
|
|
137
|
-
- 列表:活动路径上的用户消息,最近在下、缺省选中最后一条;高亮行右侧显示 `N 文件 +x −y` / `无代码改动`(对高亮项做 dryRun,结果缓存)。
|
|
138
|
-
- 选中后:确认面板(左竖条样式,复用 `/session` 面板),显示消息原文与时间、选项(有代码改动才出现两个「恢复代码」项;两个摘要项可在行内输入说明)、预览(「将恢复 N 个文件 +x −y」/「代码不变」/ 冲突与跳过清单)、git HEAD 变化提示(附 `git log --oneline <记录>..HEAD` 与 `git reset --soft <记录>` 两条命令,不执行)。
|
|
139
|
-
- 结果通知:`已恢复 N 个文件,跳过 M 个(原因…)`。
|
|
140
|
-
- line 模式:`/rewind` 列编号;`/rewind <n> [both|conversation|code]`。
|
|
141
|
-
- 文案进 i18n 风格的现有中文常量;字形走主题 glyphs(ASCII 可用)。
|
|
142
|
-
|
|
143
|
-
## §5 RPC / SDK / Hook / 配置
|
|
144
|
-
|
|
145
|
-
- RPC:`get_rewind_points` → `{ points }`;`rewind { entryId, mode, dryRun?, onConflict? }` → `RewindResult`;事件 `session_rewound { entryId, mode, restored, deleted, conflicts, skipped }`。写进 `docs/rpc.md`。
|
|
146
|
-
- SDK:`session.rewindPoints()`、`session.rewind()`。
|
|
147
|
-
- Hook:新增命令式事件 `PostRewind`(payload `{ entryId, mode, files }`,不可阻止);`docs/hooks.md` 同步。
|
|
148
|
-
- 配置(`key-docs.ts` 每项要说明与缺省值):
|
|
149
|
-
- `checkpoints.mode`: `"tools"`(缺省)/ `"shadow-git"` / `"off"`;`AMA_CHECKPOINTS=off` 覆盖。
|
|
150
|
-
- `checkpoints.maxFileBytes`: 5 242 880。
|
|
151
|
-
- `checkpoints.keep`: 100。
|
|
152
|
-
- `ui.restoreOnCancel`: true。
|
|
153
|
-
|
|
154
|
-
## §6 影子 git(`checkpoints.mode: "shadow-git"`)[RW-D]
|
|
155
|
-
|
|
156
|
-
- 仓库:`<dataDir>/file-history/shadow/<sha256(cwd) 前 16>/`(`--git-dir`),`--work-tree=cwd`;尊重 cwd 的 `.gitignore` 与 `info/exclude`,额外排除 `.git`。
|
|
157
|
-
- 每个新回合:`git add -A` + `write-tree` + `commit-tree`,提交 id 记进 `CheckpointData.shadowCommit`(契约里预留可选字段)。
|
|
158
|
-
- 护栏:cwd 下文件数 > 20 000 或单次快照 > 3 s → 本会话降级为 `tools` 并提示;需要 `git` 在 PATH。
|
|
159
|
-
- 恢复:只处理目标提交与「当前工作区快照」之间的差异文件,逐个按 §3.2 的冲突与安全检查写回或删除;不碰 `.gitignore` 掉的文件。
|
|
160
|
-
- 与 `tools` 模式并存:edit / write 的跟踪照常(冲突检测仍以它为准)。
|
|
161
|
-
|
|
162
|
-
## §7 缓存与上下文
|
|
163
|
-
|
|
164
|
-
- 回滚后第一次请求:system + tools + 落点之前的消息与回滚前发过的请求逐字节相同 → 有效期内命中;`onContextChanged()` 使这次请求成为重置点(不做未命中归因、保温作废),与现状一致。
|
|
165
|
-
- `ama.checkpoint*` 是 `custom`,不进上下文;`ama.rewind-note` 是 `custom_message`,只出现在新落点之后。
|
|
166
|
-
- 测试:回滚前后请求体前缀逐字节比较(`src/agent/session-rewind.test.ts`)。
|
|
167
|
-
|
|
168
|
-
## §8 批次与文件所有权
|
|
169
|
-
|
|
170
|
-
契约 PR(本计划所在 PR)先合入:`src/checkpoints/types.ts`、`ToolContext.checkpoint?`。配置 `checkpoints.*` 归 RW-A,`ui.restoreOnCancel` 与 `PostRewind` 归 RW-B(各自同步 `config/{types,schema,json-schema,key-docs}.ts` 与 `hooks/types.ts`)。之后:
|
|
171
|
-
|
|
172
|
-
| 批次 | 内容 | 文件所有权 | 依赖 | 验收 |
|
|
173
|
-
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
174
|
-
| RW-A 检查点核心 | blob 存储、tracker、条目重放、恢复与安全检查、冲突检测、dry-run diff、GC、doctor 占用;edit / write 调 `ctx.checkpoint` | `src/checkpoints/**`(除 types.ts)、`src/tools/{edit,write}.ts` 的两处调用、`src/cli/subcommands/{sessions,doctor}.ts` 的 GC / 占用 | 契约 | 单测覆盖 §3.2 每条分支(符号链接、硬链接、父目录移动、删除、新建、冲突 skip / overwrite、too_large);三平台 CI 绿(Windows 无 O_NOFOLLOW 分支) |
|
|
175
|
-
| RW-B 会话与接口 | `session-rewind.ts`(编排、readFiles 重算、rewind-note、摘要两项、中断即撤回)、检查点接线(runPrompt 后建检查点、子会话指向父 tracker)、RPC / SDK / `PostRewind` / 文档 | `src/agent/session-rewind.ts`(新)、`src/agent/{session,session-run,session-tools,session-subagent}.ts` 的接线、`src/modes/rpc/**`、`src/sdk.ts`、`src/hooks/**` 的事件、`docs/{rpc,hooks,sessions}.md` | 契约;RW-A 的实现可先用内存桩,合入顺序 A → B | fake 供应商端到端:edit 两个文件 → rewind both → 文件与对话都回到之前、readFiles 不含被恢复文件、下一请求前缀逐字节不变;仅对话 / 仅代码各自的 note;子会话编辑可回滚;中断即撤回 |
|
|
176
|
-
| RW-C 交互界面 | 双击 Esc、回滚列表、确认面板、预览、git 提示、结果通知、line 模式 `/rewind` | `src/modes/interactive/**`、`src/modes/commands-core.ts`、`docs/tui.md` | RW-B | 帧黄金:列表、面板(有 / 无代码改动、冲突、git 提示)、ASCII;tmux 手测双击 Esc 两种行为 |
|
|
177
|
-
| RW-D 影子 git | §6 | `src/checkpoints/shadow-git.ts`(新)及其测试 | RW-A | 临时 git 仓库里 bash 改动可回滚;护栏降级;无 git 时提示 |
|
|
178
|
-
|
|
179
|
-
- A 与 B 并行开发(B 用桩),A 先合;C 与 D 在 B / A 合入后并行。
|
|
180
|
-
- 每个文件 ≤ 600 行(`src/agent/session.ts` 已 600 行,新逻辑放 `session-rewind.ts`)。
|
|
181
|
-
- 每批次细粒度提交、一个 PR、CI 绿后由主会话合并(merge commit);不发版。
|