qwen-code/.gitignore
顾盼 44b80da0db
feat(memory): confirm auto-generated skills before persisting (#5616)
* feat(memory): add memory.autoSkillConfirm setting schema

* feat(memory): add Config.getAutoSkillConfirmEnabled()

* feat(memory): wire memory.autoSkillConfirm through cli/acp/desktop settings

* feat(memory): add pending-skills staging helpers

* feat(memory): stage auto-skills for confirmation in runSkillReview

* feat(memory): pass autoSkillConfirm flag from client to skill review

* feat(memory): skill-review subscriptions + accept/reject pending APIs

* feat(cli): add skill-review dialog state to UI context

* feat(cli): add SkillReviewDialog component

* feat(cli): render SkillReviewDialog from DialogManager

* feat(cli): wire skill-review subscription and idle dialog routing

* feat(cli): show pending auto-skill review hint in footer

* feat(cli): add autoSkillConfirm toggle to /memory dialog

* docs(memory): document memory.autoSkillConfirm setting

* fix(cli): focus and Ctrl+C-close the skill-review dialog

* fix(memory): address review on auto-skill confirmation

- stage only newly-created skills, never agent-edited pre-existing ones, so
  Discard can't delete a skill the user already confirmed
- re-read pendingSkills after the await in resolvePendingSkill so concurrent
  Keep-all/Discard-all removes every entry, not just the last
- surface accept/reject fs failures (try/catch + log + .catch) instead of
  silently swallowing them
- remount SkillReviewDialog per task via key so its snapshot never goes stale
  across consecutive skill-review batches
- skip redundant skillReviewPending updates with a signature compare
- remove the unreachable openSkillReviewDialog action
- add debug logging to the pending-skills module
- ignore .qwen/pending-skills/ explicitly in .gitignore

* fix(memory): address round 2 review on auto-skill confirmation

- acceptPendingSkill: when the staged dir is gone, no-op only if the skill is
  already in the skills root; otherwise throw so resolvePendingSkill keeps it
  pending and logs, preventing silent data loss
- fall back to the agent's systemMessage for progress text when staging yields
  zero pending (a pre-existing-skill edit is still a durable change)
- log the no-task / no-target early returns in resolvePendingSkill
- replace internal tracker references in an AppContainer comment

* fix(memory): harden auto-skill confirmation for multi-batch and edge cases

- parseDescription: keep an empty description empty instead of spilling onto
  the next YAML line
- namespace staged dirs under the task id so a later same-named batch can't
  clobber a still-deferred earlier one
- track Esc-dismissed batches in a Set (not a single value) and only mark a
  batch dismissed on Esc, so a partially-failed Keep-all can reopen for the
  unresolved skills
- document the in-place updateRecord invariant the accept/reject race fix
  relies on
- add the missing license header to pending-skills.test.ts

* fix(memory): strip quoted descriptions; Ctrl+C defers skill-review dialog

- parseDescription: strip a matching pair of surrounding quotes so a
  `description: "..."` frontmatter value isn't rendered with literal quotes
- useDialogClose: Ctrl+C on the skill-review dialog now calls
  dismissSkillReviewDialog (records the batch as dismissed) instead of plain
  close, matching Esc — otherwise the idle effect immediately reopened it

---------

Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>
2026-06-25 00:47:16 +00:00

117 lines
2.5 KiB
Text

# API keys and secrets
.env
.env~
# gemini-cli settings
# We want to keep the .gemini in the root of the repo and ignore any .gemini
# in subdirectories. In our root .gemini we want to allow for version control
# for subcommands.
**/.gemini/
!/.gemini/
.gemini/*
!.gemini/config.yaml
!.gemini/commands/
# Note: .qwen-clipboard/ is NOT in gitignore so Gemini can access pasted images
# Dependency directory
node_modules
bower_components
package-lock.json
# Editors
.idea
*.iml
.cursor
.qoder
.claude
.codex
# Qwen Code Configs
.qwen/*
!.qwen/commands/
!.qwen/commands/**
!.qwen/skills/
!.qwen/skills/**
# Re-ignore auto-generated skills (created by the managed-skill-extractor
# agent with the mandatory `auto-skill-` directory prefix). Git's last-rule-
# wins semantics keep hand-authored project skills tracked while excluding
# these transient, session-specific directories. The `auto-skill-` prefix is
# reserved for auto-generated skills — do not hand-author a project skill with
# this prefix, or its directory will be ignored here.
.qwen/skills/auto-skill-*/
# Staging area for auto-skills awaiting confirmation (memory.autoSkillConfirm).
# Already covered by `.qwen/*` above since it's never re-included, but listed
# explicitly alongside auto-skill-*/ so the intent is obvious.
.qwen/pending-skills/
!.qwen/agents/
!.qwen/agents/**
# OS metadata
.DS_Store
Thumbs.db
# TypeScript build info files
*.tsbuildinfo
# Ignore built ts files
dist
packages/audio-capture/build/
packages/audio-capture/prebuilds/
# Docker folder to help skip auth refreshes
.docker
bundle
# Test report files
junit.xml
packages/*/coverage/
# PR body draft
pr_body.md
# Generated files
packages/cli/src/generated/
packages/core/src/generated/
packages/web-templates/src/generated/
.integration-tests/
packages/vscode-ide-companion/*.vsix
logs/
.repro-runs/
# GHA credentials
gha-creds-*.json
# Log files
patch_output.log
# docs build
docs-site/.next
# content is a symlink to ../docs
docs-site/content
# python cache
__pycache__/
integration-tests/concurrent-runner/output/
integration-tests/concurrent-runner/task-*
integration-tests/terminal-capture/scenarios/screenshots/
# Test-built worker artifact (fzfWorkerHandle.test.ts builds this on-the-fly)
packages/core/src/utils/filesearch/fzfWorker.js
# storybook
*storybook.log
storybook-static
# Dev symlink: qc-helper bundled skill docs (created by scripts/dev.js)
packages/core/src/skills/bundled/qc-helper/docs
tmp/
# code graph skills
.venv
.codegraph
.qwen/computer-use/installed.json
.playwright-mcp/