@chinhae/atw-cli 0.6.0 → 0.7.0

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.
Files changed (241) hide show
  1. package/README.md +128 -451
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +24 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/commands/channel/adapters/claude.d.ts +44 -2
  6. package/dist/commands/channel/adapters/claude.d.ts.map +1 -1
  7. package/dist/commands/channel/adapters/claude.js +124 -23
  8. package/dist/commands/channel/adapters/claude.js.map +1 -1
  9. package/dist/commands/channel/adapters/codex.d.ts +36 -6
  10. package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
  11. package/dist/commands/channel/adapters/codex.js +150 -10
  12. package/dist/commands/channel/adapters/codex.js.map +1 -1
  13. package/dist/commands/channel/adapters/index.d.ts +33 -4
  14. package/dist/commands/channel/adapters/index.d.ts.map +1 -1
  15. package/dist/commands/channel/adapters/index.js +159 -6
  16. package/dist/commands/channel/adapters/index.js.map +1 -1
  17. package/dist/commands/channel/adapters/omp.d.ts +106 -0
  18. package/dist/commands/channel/adapters/omp.d.ts.map +1 -0
  19. package/dist/commands/channel/adapters/omp.js +405 -0
  20. package/dist/commands/channel/adapters/omp.js.map +1 -0
  21. package/dist/commands/channel/adapters/pi.d.ts +123 -0
  22. package/dist/commands/channel/adapters/pi.d.ts.map +1 -0
  23. package/dist/commands/channel/adapters/pi.js +387 -0
  24. package/dist/commands/channel/adapters/pi.js.map +1 -0
  25. package/dist/commands/channel/adapters/types.d.ts +16 -0
  26. package/dist/commands/channel/adapters/types.d.ts.map +1 -1
  27. package/dist/commands/channel/agent-loader.d.ts +1 -0
  28. package/dist/commands/channel/agent-loader.d.ts.map +1 -1
  29. package/dist/commands/channel/agent-loader.js +45 -5
  30. package/dist/commands/channel/agent-loader.js.map +1 -1
  31. package/dist/commands/channel/dev-parse-trace.d.ts +1 -1
  32. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -1
  33. package/dist/commands/channel/dev-parse-trace.js +25 -2
  34. package/dist/commands/channel/dev-parse-trace.js.map +1 -1
  35. package/dist/commands/channel/index.d.ts.map +1 -1
  36. package/dist/commands/channel/index.js +44 -12
  37. package/dist/commands/channel/index.js.map +1 -1
  38. package/dist/commands/channel/run.d.ts +39 -2
  39. package/dist/commands/channel/run.d.ts.map +1 -1
  40. package/dist/commands/channel/run.js +227 -68
  41. package/dist/commands/channel/run.js.map +1 -1
  42. package/dist/commands/channel/spawn.d.ts +7 -2
  43. package/dist/commands/channel/spawn.d.ts.map +1 -1
  44. package/dist/commands/channel/spawn.js +35 -1
  45. package/dist/commands/channel/spawn.js.map +1 -1
  46. package/dist/commands/channel/store/events.d.ts +2 -2
  47. package/dist/commands/channel/store/events.d.ts.map +1 -1
  48. package/dist/commands/channel/store/events.js +1 -1
  49. package/dist/commands/channel/store/events.js.map +1 -1
  50. package/dist/commands/channel/supervisor/shutdown.d.ts +2 -0
  51. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -1
  52. package/dist/commands/channel/supervisor/shutdown.js +6 -1
  53. package/dist/commands/channel/supervisor/shutdown.js.map +1 -1
  54. package/dist/commands/channel/supervisor.d.ts +2 -2
  55. package/dist/commands/channel/supervisor.d.ts.map +1 -1
  56. package/dist/commands/channel/supervisor.js +26 -3
  57. package/dist/commands/channel/supervisor.js.map +1 -1
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +6 -1
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/commands/mem.d.ts +2 -1
  62. package/dist/commands/mem.d.ts.map +1 -1
  63. package/dist/commands/mem.js +162 -13
  64. package/dist/commands/mem.js.map +1 -1
  65. package/dist/commands/mode.d.ts.map +1 -1
  66. package/dist/commands/mode.js +5 -3
  67. package/dist/commands/mode.js.map +1 -1
  68. package/dist/commands/uninstall.d.ts +5 -3
  69. package/dist/commands/uninstall.d.ts.map +1 -1
  70. package/dist/commands/uninstall.js +40 -16
  71. package/dist/commands/uninstall.js.map +1 -1
  72. package/dist/commands/update.d.ts +34 -0
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +209 -11
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/commands/verify.d.ts +18 -0
  77. package/dist/commands/verify.d.ts.map +1 -0
  78. package/dist/commands/verify.js +75 -0
  79. package/dist/commands/verify.js.map +1 -0
  80. package/dist/configurators/index.d.ts.map +1 -1
  81. package/dist/configurators/index.js +3 -2
  82. package/dist/configurators/index.js.map +1 -1
  83. package/dist/configurators/omp.d.ts +22 -0
  84. package/dist/configurators/omp.d.ts.map +1 -1
  85. package/dist/configurators/omp.js +101 -2
  86. package/dist/configurators/omp.js.map +1 -1
  87. package/dist/configurators/shared.d.ts.map +1 -1
  88. package/dist/configurators/shared.js +39 -7
  89. package/dist/configurators/shared.js.map +1 -1
  90. package/dist/configurators/workflow.d.ts.map +1 -1
  91. package/dist/configurators/workflow.js +5 -1
  92. package/dist/configurators/workflow.js.map +1 -1
  93. package/dist/constants/paths.d.ts +4 -0
  94. package/dist/constants/paths.d.ts.map +1 -1
  95. package/dist/constants/paths.js +4 -0
  96. package/dist/constants/paths.js.map +1 -1
  97. package/dist/migrations/manifests/0.7.0.json +1378 -0
  98. package/dist/templates/atw/definition-of-done.md +65 -0
  99. package/dist/templates/atw/gitignore.txt +7 -0
  100. package/dist/templates/atw/index.d.ts +11 -0
  101. package/dist/templates/atw/index.d.ts.map +1 -1
  102. package/dist/templates/atw/index.js +22 -0
  103. package/dist/templates/atw/index.js.map +1 -1
  104. package/dist/templates/atw/scripts/common/active_task.py +2 -2
  105. package/dist/templates/atw/scripts/common/workflow_phase.py +33 -0
  106. package/dist/templates/atw/scripts/cross_model_review.py +3312 -0
  107. package/dist/templates/atw/scripts/decision_log.py +2002 -0
  108. package/dist/templates/atw/scripts/floor_guard.py +642 -0
  109. package/dist/templates/atw/scripts/task.py +25 -6
  110. package/dist/templates/atw/scripts/tickets.py +480 -10
  111. package/dist/templates/atw/workflow-general.md +6 -1
  112. package/dist/templates/atw/workflow.md +346 -26
  113. package/dist/templates/claude/settings.json +12 -0
  114. package/dist/templates/codex/hooks/session-start.py +2 -2
  115. package/dist/templates/common/bundled-skills/atw-askme/SKILL.md +1 -1
  116. package/dist/templates/common/bundled-skills/atw-askme-with-docs/SKILL.md +1 -1
  117. package/dist/templates/common/bundled-skills/atw-channel/SKILL.md +5 -2
  118. package/dist/templates/common/bundled-skills/atw-channel/references/command-reference.md +44 -5
  119. package/dist/templates/common/bundled-skills/atw-channel/references/progress-debugging.md +9 -0
  120. package/dist/templates/common/bundled-skills/atw-channel/references/workers.md +48 -4
  121. package/dist/templates/common/bundled-skills/atw-code-review/SKILL.md +78 -3
  122. package/dist/templates/common/bundled-skills/atw-codebase-design/SKILL.md +2 -2
  123. package/dist/templates/common/bundled-skills/atw-codebase-design/{DESIGN-IT-TWICE.md → design-it-twice.md} +3 -3
  124. package/dist/templates/common/bundled-skills/atw-cross-model-review/SKILL.md +361 -0
  125. package/dist/templates/common/bundled-skills/atw-cross-model-review/agents/openai.yaml +5 -0
  126. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/four-tiers.md +42 -0
  127. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/log-review-questions.md +38 -0
  128. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/questions.md +54 -0
  129. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/recheck-questions.md +42 -0
  130. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/report-format.md +22 -0
  131. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/SKILL.md +13 -2
  132. package/dist/templates/common/bundled-skills/atw-domain-modeling/SKILL.md +2 -2
  133. package/dist/templates/common/bundled-skills/atw-handoff/SKILL.md +1 -1
  134. package/dist/templates/common/bundled-skills/atw-implement/SKILL.md +37 -1
  135. package/dist/templates/common/bundled-skills/atw-implement-all/SKILL.md +219 -24
  136. package/dist/templates/common/bundled-skills/atw-implement-spec/SKILL.md +237 -18
  137. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/SKILL.md +2 -2
  138. package/dist/templates/common/bundled-skills/atw-init-repo/SKILL.md +1 -1
  139. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw-local.md +7 -1
  140. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw.md +7 -1
  141. package/dist/templates/common/bundled-skills/atw-map/SKILL.md +1 -1
  142. package/dist/templates/common/bundled-skills/atw-meta/SKILL.md +1 -1
  143. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/add-project-local-conventions.md +4 -3
  144. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-skills-or-commands.md +21 -16
  145. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-task-lifecycle.md +1 -1
  146. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/overview.md +1 -0
  147. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/task-system.md +2 -1
  148. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/hooks-and-settings.md +1 -0
  149. package/dist/templates/common/bundled-skills/atw-noob-mode/SKILL.md +1 -1
  150. package/dist/templates/common/bundled-skills/atw-performance/SKILL.md +134 -0
  151. package/dist/templates/common/bundled-skills/atw-performance/agents/openai.yaml +3 -0
  152. package/dist/templates/common/bundled-skills/atw-performance/references/optimization-patterns.md +250 -0
  153. package/dist/templates/common/bundled-skills/atw-performance/references/performance-checklist.md +238 -0
  154. package/dist/templates/common/bundled-skills/atw-performance/references/performance-optimization.md +264 -0
  155. package/dist/templates/common/bundled-skills/atw-prototype/SKILL.md +3 -3
  156. package/dist/templates/common/bundled-skills/atw-prototype/{LOGIC.md → logic.md} +1 -1
  157. package/dist/templates/common/bundled-skills/atw-prototype/references/design-direction.md +1 -1
  158. package/dist/templates/common/bundled-skills/atw-prototype/references/style-explorer.md +1 -1
  159. package/dist/templates/common/bundled-skills/atw-prototype/{UI.md → ui.md} +4 -4
  160. package/dist/templates/common/bundled-skills/atw-reflect/SKILL.md +77 -0
  161. package/dist/templates/common/bundled-skills/atw-reflect/agents/openai.yaml +5 -0
  162. package/dist/templates/common/bundled-skills/atw-reflect/references/divergent-reviewer.md +38 -0
  163. package/dist/templates/common/bundled-skills/atw-reflect/references/judgment-reviewer.md +37 -0
  164. package/dist/templates/common/bundled-skills/atw-reflect/references/synthesizer.md +63 -0
  165. package/dist/templates/common/bundled-skills/atw-reflect/references/tooling-reviewer.md +48 -0
  166. package/dist/templates/common/bundled-skills/atw-security/SKILL.md +248 -0
  167. package/dist/templates/common/bundled-skills/atw-security/agents/openai.yaml +3 -0
  168. package/dist/templates/common/bundled-skills/atw-security/references/hardening-patterns.md +324 -0
  169. package/dist/templates/common/bundled-skills/atw-security/references/security-checklist.md +248 -0
  170. package/dist/templates/common/bundled-skills/atw-session-insight/SKILL.md +1 -1
  171. package/dist/templates/common/bundled-skills/atw-session-insight/references/cli-quick-reference.md +11 -2
  172. package/dist/templates/common/bundled-skills/atw-spec/SKILL.md +1 -1
  173. package/dist/templates/common/bundled-skills/atw-tdd/SKILL.md +25 -0
  174. package/dist/templates/common/bundled-skills/atw-tickets/SKILL.md +1 -1
  175. package/dist/templates/common/bundled-skills/atw-triage/SKILL.md +5 -5
  176. package/dist/templates/common/bundled-skills/atw-ui/SKILL.md +54 -1
  177. package/dist/templates/common/bundled-skills/atw-ui/references/accessibility-checklist.md +160 -0
  178. package/dist/templates/common/bundled-skills/atw-verify-skill/SKILL.md +58 -0
  179. package/dist/templates/common/bundled-skills/atw-verify-skill/agents/openai.yaml +5 -0
  180. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/README.md +47 -0
  181. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/create-note.md +39 -0
  182. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/search.md +45 -0
  183. package/dist/templates/common/bundled-skills/atw-verify-skill/references/generate.md +107 -0
  184. package/dist/templates/common/bundled-skills/atw-verify-skill/references/health-check.md +100 -0
  185. package/dist/templates/common/bundled-skills/atw-verify-skill/references/verify-skill-template.md +99 -0
  186. package/dist/templates/common/bundled-skills/atw-what-happened/SKILL.md +49 -0
  187. package/dist/templates/common/bundled-skills/atw-what-happened/agents/openai.yaml +5 -0
  188. package/dist/templates/common/commands/finish-work.md +10 -1
  189. package/dist/templates/common/commands/start.md +3 -1
  190. package/dist/templates/common/skills/update-spec.md +40 -4
  191. package/dist/templates/copilot/hooks/session-start.py +2 -2
  192. package/dist/templates/dsh/DSH.md +2 -2
  193. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +10 -0
  194. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +10 -0
  195. package/dist/templates/omp/config.yml +15 -0
  196. package/dist/templates/omp/extensions/atw/index.ts.txt +135 -18
  197. package/dist/templates/omp/index.d.ts +1 -0
  198. package/dist/templates/omp/index.d.ts.map +1 -1
  199. package/dist/templates/omp/index.js +3 -0
  200. package/dist/templates/omp/index.js.map +1 -1
  201. package/dist/templates/opencode/lib/session-utils.js +4 -2
  202. package/dist/templates/opencode/plugins/inject-workflow-state.js +5 -1
  203. package/dist/templates/pi/extensions/atw/index.ts.txt +80 -7
  204. package/dist/templates/shared-hooks/index.d.ts +8 -1
  205. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  206. package/dist/templates/shared-hooks/index.js +8 -0
  207. package/dist/templates/shared-hooks/index.js.map +1 -1
  208. package/dist/templates/shared-hooks/inject-workflow-state.py +131 -14
  209. package/dist/templates/shared-hooks/session-start.py +4 -2
  210. package/dist/templates/shared-hooks/show-notice.py +135 -0
  211. package/dist/templates/snow/SNOW.md +1 -1
  212. package/dist/utils/initialized.d.ts +9 -0
  213. package/dist/utils/initialized.d.ts.map +1 -0
  214. package/dist/utils/initialized.js +24 -0
  215. package/dist/utils/initialized.js.map +1 -0
  216. package/dist/utils/managed-removal.d.ts +2 -0
  217. package/dist/utils/managed-removal.d.ts.map +1 -1
  218. package/dist/utils/managed-removal.js +23 -3
  219. package/dist/utils/managed-removal.js.map +1 -1
  220. package/dist/utils/optional-skills.d.ts +2 -0
  221. package/dist/utils/optional-skills.d.ts.map +1 -1
  222. package/dist/utils/optional-skills.js +1 -1
  223. package/dist/utils/optional-skills.js.map +1 -1
  224. package/dist/utils/template-hash.d.ts.map +1 -1
  225. package/dist/utils/template-hash.js +3 -0
  226. package/dist/utils/template-hash.js.map +1 -1
  227. package/dist/utils/uninstall-scrubbers.d.ts +10 -0
  228. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  229. package/dist/utils/uninstall-scrubbers.js +50 -0
  230. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  231. package/dist/utils/verify-entries.d.ts +51 -0
  232. package/dist/utils/verify-entries.d.ts.map +1 -0
  233. package/dist/utils/verify-entries.js +399 -0
  234. package/dist/utils/verify-entries.js.map +1 -0
  235. package/package.json +2 -2
  236. /package/dist/templates/common/bundled-skills/atw-codebase-design/{DEEPENING.md → deepening.md} +0 -0
  237. /package/dist/templates/common/bundled-skills/atw-domain-modeling/{ADR-FORMAT.md → adr-format.md} +0 -0
  238. /package/dist/templates/common/bundled-skills/atw-domain-modeling/{GLOSSARY-FORMAT.md → glossary-format.md} +0 -0
  239. /package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/{HTML-REPORT.md → html-report.md} +0 -0
  240. /package/dist/templates/common/bundled-skills/atw-triage/{AGENT-BRIEF.md → agent-brief.md} +0 -0
  241. /package/dist/templates/common/bundled-skills/atw-triage/{OUT-OF-SCOPE.md → out-of-scope.md} +0 -0
@@ -160,13 +160,13 @@ def _resolve_active_task(root: Path, input_data: dict):
160
160
 
161
161
  def get_active_task(
162
162
  root: Path, input_data: dict
163
- ) -> tuple[str, str, str] | None:
163
+ ) -> tuple[str, str, str, Path] | None:
164
164
  """Return active task data, a task-record error, or no task pointer.
165
165
 
166
- ``(task_id, "task_error", source)`` is distinct from ``None``: a session
167
- pointer can exist even when its task record is missing or unreadable, and
168
- that state needs a diagnostic breadcrumb rather than the normal ``no_task``
169
- prompt.
166
+ ``(task_id, "task_error", source, task_dir)`` is distinct from ``None``: a
167
+ session pointer can exist even when its task record is missing or
168
+ unreadable, and that state needs a diagnostic breadcrumb rather than the
169
+ normal ``no_task`` prompt.
170
170
  """
171
171
  active = _resolve_active_task(root, input_data)
172
172
  if not active.task_path:
@@ -176,23 +176,23 @@ def get_active_task(
176
176
  if not task_dir.is_absolute():
177
177
  task_dir = root / task_dir
178
178
  if active.stale:
179
- return task_dir.name, f"stale_{active.source_type}", active.source
179
+ return task_dir.name, f"stale_{active.source_type}", active.source, task_dir
180
180
 
181
181
  task_json = task_dir / "task.json"
182
182
  if not task_json.is_file():
183
- return task_dir.name, "task_error", active.source
183
+ return task_dir.name, "task_error", active.source, task_dir
184
184
  try:
185
185
  data = json.loads(task_json.read_text(encoding="utf-8"))
186
186
  except (json.JSONDecodeError, OSError):
187
- return task_dir.name, "task_error", active.source
187
+ return task_dir.name, "task_error", active.source, task_dir
188
188
  if not isinstance(data, dict):
189
- return task_dir.name, "task_error", active.source
189
+ return task_dir.name, "task_error", active.source, task_dir
190
190
 
191
191
  task_id = data.get("id") or task_dir.name
192
192
  status = data.get("status", "")
193
193
  if not isinstance(status, str) or not status:
194
- return task_dir.name, "task_error", active.source
195
- return task_id, status, active.source
194
+ return task_dir.name, "task_error", active.source, task_dir
195
+ return task_id, status, active.source, task_dir
196
196
 
197
197
 
198
198
  # ---------------------------------------------------------------------------
@@ -359,12 +359,80 @@ def resolve_breadcrumb_key(
359
359
  return status
360
360
 
361
361
 
362
+ # 决定日志提醒:pi、omp 扩展里的 DECISION_LOG_REMINDER 与这里逐字相同。
363
+ DECISION_LOG_REMINDER = (
364
+ "This task has a decision log: keep recording it at key points with "
365
+ "`python3 ./.atw/scripts/decision_log.py`; in this conversation, the "
366
+ "start row (`decision_log.py start`) goes in just before the first row you "
367
+ "log — `add` and the other writing commands write it first when it is "
368
+ "missing, so a conversation with nothing to log writes none; read the last "
369
+ "rows they print, and when another conversation wrote in between they "
370
+ "write only the start row and stop: read it, then run the same command "
371
+ "again."
372
+ )
373
+ # accept 阶段另加归档那一行的提醒,接在「Once accepted, run task.py archive」之后;pi、omp 扩展同名常量逐字相同
374
+ DECISION_LOG_ARCHIVE_REMINDER = (
375
+ "This task has a decision log: once accepted, after the acceptance row "
376
+ "and before `task.py archive`, log one row for the archive "
377
+ "(`decision_log.py add`); it goes into the archive commit with the task."
378
+ )
379
+ # 用户问进度、要汇报时怎么拼(prd L 节):implement、accept 有日志时都出,紧挨在 DECISION_LOG_REMINDER 之前;pi、omp 扩展同名常量逐字相同
380
+ DECISION_LOG_REPORT_REMINDER = (
381
+ "This task has a decision log: when the user asks how things stand or for "
382
+ "a report (汇报一下, 现在什么情况, what's the status, report), rebuild it "
383
+ "from the task directory in four blocks — "
384
+ "`python3 ./.atw/scripts/decision_log.py pending --report` prints the "
385
+ "draft; post it in plain words, keep the plain-words lines it carries "
386
+ "with noob mode on, and fill in what it marks. This is the task's report, "
387
+ "not `atw-what-happened`: that skill only the user starts, and it tells "
388
+ "what changed in this chat since their last message."
389
+ )
390
+ # 没绑任务时问进度、要汇报(工单 27):.atw/tasks/ 下有任务带日志时出;pi、omp 扩展同名常量逐字相同
391
+ DECISION_LOG_NO_TASK_REPORT_REMINDER = (
392
+ "No task is current, but some task under `.atw/tasks/` has a decision "
393
+ "log: when the user asks how things stand or for a report (汇报一下, "
394
+ "现在什么情况, what's the status, report), rebuild it from that task's "
395
+ "directory in four blocks — list the active tasks with "
396
+ "`python3 ./.atw/scripts/task.py list` and see which of their directories "
397
+ "hold a `decision-log.md` (if the user named the task or said enough to "
398
+ "tell which one, take that one; if not, only one, take it; several, ask "
399
+ "the user which), then `python3 ./.atw/scripts/decision_log.py pending "
400
+ "--report --task-dir <dir>` prints the draft; post it in plain words, "
401
+ "keep the plain-words lines it carries with noob mode on, and fill in what "
402
+ "it marks. This is the task's report, not `atw-what-happened`: that skill "
403
+ "only the user starts, and it tells what changed in this chat since their "
404
+ "last message."
405
+ )
406
+ DECISION_LOG_STATUSES = ("implement", "accept")
407
+
408
+
409
+ def has_decision_log(status: str, task_dir: Path) -> bool:
410
+ """Whether the breadcrumb carries DECISION_LOG_REMINDER: an implement or
411
+ accept task whose directory holds ``decision-log.md``. Planning stages
412
+ never do — their decisions are the user's and live in prd.md and tickets.
413
+ """
414
+ return status in DECISION_LOG_STATUSES and (task_dir / "decision-log.md").is_file()
415
+
416
+
417
+ def any_task_has_decision_log(root: Path) -> bool:
418
+ """Whether a task directly under ``.atw/tasks/`` holds a ``decision-log.md``
419
+ file. One level only, so archived tasks never count; cheap enough to run
420
+ every turn.
421
+ """
422
+ try:
423
+ return any((d / "decision-log.md").is_file() for d in (root / ".atw" / "tasks").iterdir())
424
+ except OSError:
425
+ return False
426
+
427
+
362
428
  def build_breadcrumb(
363
429
  task_id: Optional[str],
364
430
  status: str,
365
431
  templates: dict[str, str],
366
432
  source: str | None = None,
367
433
  breadcrumb_key: str | None = None,
434
+ task_has_log: bool = False,
435
+ repo_has_task_log: bool = False,
368
436
  ) -> str:
369
437
  """Build the <workflow-state>...</workflow-state> block.
370
438
 
@@ -372,6 +440,14 @@ def build_breadcrumb(
372
440
  - Unknown status (no tag, or workflow.md missing) → generic
373
441
  "Refer to workflow.md for current step." line
374
442
  - `no_task` pseudo-status (task_id is None) → header omits task info
443
+ - ``task_has_log`` (the current task carries its decision log, see
444
+ ``has_decision_log``) →
445
+ DECISION_LOG_REMINDER as the block's last line,
446
+ DECISION_LOG_REPORT_REMINDER just before it, and in accept
447
+ DECISION_LOG_ARCHIVE_REMINDER before that
448
+ - ``repo_has_task_log`` (no current task, but some task under
449
+ ``.atw/tasks/`` has a decision log) →
450
+ DECISION_LOG_NO_TASK_REPORT_REMINDER as the block's last line
375
451
  """
376
452
  lookup_key = breadcrumb_key or status
377
453
  body = templates.get(lookup_key)
@@ -379,10 +455,38 @@ def build_breadcrumb(
379
455
  body = templates.get(status)
380
456
  if body is None:
381
457
  body = "Refer to workflow.md for current step."
458
+ if repo_has_task_log:
459
+ body = f"{body}\n{DECISION_LOG_NO_TASK_REPORT_REMINDER}"
460
+ if task_has_log:
461
+ if status == "accept":
462
+ body = f"{body}\n{DECISION_LOG_ARCHIVE_REMINDER}"
463
+ body = f"{body}\n{DECISION_LOG_REPORT_REMINDER}\n{DECISION_LOG_REMINDER}"
382
464
  header = f"Status: {status}" if task_id is None else f"Task: {task_id} ({status})"
383
465
  return f"<workflow-state>\n{header}\n{body}\n</workflow-state>"
384
466
 
385
467
 
468
+ def _select_platform_blocks(root: Path, body: str, platform: str | None, config: dict) -> str:
469
+ """Keep only this platform's `[Platform]` block in a breadcrumb body.
470
+
471
+ The accept breadcrumb gives the cross-model review input once per tool;
472
+ a host handed all of them has picked another tool's form. A platform
473
+ with no block of its own gets every line (each names its tool). An
474
+ install whose scripts predate the helper gets the body unchanged.
475
+ """
476
+ scripts_dir = root / ".atw" / "scripts"
477
+ if str(scripts_dir) not in sys.path:
478
+ sys.path.insert(0, str(scripts_dir))
479
+ try:
480
+ from common.workflow_phase import ( # type: ignore[import-not-found]
481
+ resolve_effective_platform,
482
+ select_platform_blocks,
483
+ )
484
+ except Exception:
485
+ return body
486
+ effective = resolve_effective_platform(platform, config) if platform else None
487
+ return select_platform_blocks(body, effective)
488
+
489
+
386
490
  def _is_general_project(root: Path) -> bool:
387
491
  """Whether this is a `general` project, as `common.config` reads the mode.
388
492
 
@@ -473,20 +577,33 @@ def main() -> int:
473
577
 
474
578
  templates = load_breadcrumbs(root)
475
579
  platform = _detect_platform(data)
580
+ templates = {
581
+ key: _select_platform_blocks(root, body, platform, config)
582
+ for key, body in templates.items()
583
+ }
476
584
  task = get_active_task(root, data)
477
585
  if task is None:
478
586
  # No active task — still emit a breadcrumb nudging AI toward
479
587
  # atw-brainstorm + task.py create when user describes real work.
480
588
  no_task_key = resolve_breadcrumb_key("no_task", platform, config)
481
589
  breadcrumb = build_breadcrumb(
482
- None, "no_task", templates, breadcrumb_key=no_task_key
590
+ None,
591
+ "no_task",
592
+ templates,
593
+ breadcrumb_key=no_task_key,
594
+ repo_has_task_log=any_task_has_decision_log(root),
483
595
  )
484
596
  else:
485
- task_id, status, source = task
597
+ task_id, status, source, task_dir = task
486
598
  status_key = resolve_breadcrumb_key(status, platform, config)
487
599
  source_for_breadcrumb = None if platform == "codex" else source
488
600
  breadcrumb = build_breadcrumb(
489
- task_id, status, templates, source_for_breadcrumb, breadcrumb_key=status_key
601
+ task_id,
602
+ status,
603
+ templates,
604
+ source_for_breadcrumb,
605
+ breadcrumb_key=status_key,
606
+ task_has_log=has_decision_log(status, task_dir),
490
607
  )
491
608
  if platform == "codex":
492
609
  parts: list[str] = []
@@ -454,8 +454,10 @@ def _get_task_status(atw_dir: Path, input_data: dict, general: bool = False) ->
454
454
  )
455
455
  return (
456
456
  "Status: NO ACTIVE TASK\n"
457
- "Next-Action: Classify the current turn before creating any ATW task. "
458
- "Simple conversation / small task asks only whether this turn should create an ATW task. "
457
+ "Next-Action: If the request is about a task that already exists — the user names it, or asks to continue or accept and only one open task fits — make it this session's task first, as the no-task breadcrumb says; do not ask whether to create a new one. "
458
+ "Otherwise classify the current turn before creating any ATW task. "
459
+ "Simple conversation / small task asks whether this turn should create an ATW task. "
460
+ "In that ask, say what each answer means: without a task there is no requirements document (`prd.md`) and no formal acceptance (each requirement checked with evidence, the user signs off); a task adds writing the requirements, the user confirming the spec, implementing against it, and that acceptance before archiving. "
459
461
  "Complex task asks whether task creation and planning are allowed."
460
462
  )
461
463
 
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env python3
2
+ """ATW start-notice hook (Claude Code PostToolUse, matcher ``Bash``).
3
+
4
+ Claude Code 2.1.302 as the host rewrote the paragraph that
5
+ ``cross_model_review.py afk-notice`` / ``prepare`` / ``prepare-log`` print
6
+ as ``notice`` instead of posting it word for word, however the skills put it
7
+ (task decision-log-afk tickets 20, 23, 28, 26). So the script also writes the
8
+ paragraph to ``.atw/.runtime/hook-notice.json``, and this hook, right after
9
+ one of those commands ends, hands it to Claude Code as ``systemMessage``:
10
+ Claude Code shows that to the user itself, the model never sees it. An
11
+ ``additionalContext`` line tells the model the paragraph has been shown, so it
12
+ does not post it again.
13
+
14
+ Verified on Claude Code 2.1.302 (``claude -p --output-format stream-json
15
+ --verbose``): the message arrives as ``{"type":"system","subtype":
16
+ "informational","content":"PostToolUse:Bash says: <text>"}`` (every line of
17
+ the text gets that prefix), the session record keeps it as an
18
+ ``attachment`` of type ``hook_system_message`` with the text unchanged, and the
19
+ model, asked to quote any hook message it saw, saw none.
20
+
21
+ The file is shown once and then removed. Nothing is printed when the command
22
+ is not one of the three, when the file was written by another of them, when
23
+ it was written in another conversation (its ``session`` is the ATW context key
24
+ ``resolve_context_key`` gave the script; this hook computes the same key from
25
+ its own input — when either side has none, it is shown as before), when there
26
+ is no file, outside an ATW project, or with ATW hooks turned off.
27
+
28
+ Claude Code caps ``systemMessage`` at 10,000 characters and replaces a longer
29
+ one with a file path and a 2,000-character preview. A paragraph over
30
+ ``SHOW_LIMIT`` is therefore not shown at all: ``additionalContext`` tells the
31
+ model to post it itself, word for word.
32
+
33
+ The command names in ``COMMAND_RE`` are the script's ``NOTICE_COMMANDS``:
34
+ change one, change the other.
35
+ """
36
+ from __future__ import annotations
37
+
38
+ import json
39
+ import os
40
+ import re
41
+ import sys
42
+ from pathlib import Path
43
+ from typing import Optional
44
+
45
+ NOTICE_FILE = Path(".atw") / ".runtime" / "hook-notice.json"
46
+ # Claude Code 的上限是 10,000 字,留出余量
47
+ SHOW_LIMIT = 8000
48
+ COMMAND_RE = re.compile(r"cross_model_review\.py['\"]?\s+(afk-notice|prepare-log|prepare)(?![\w-])")
49
+ SHOWN = (
50
+ "ATW: Claude Code has just shown the user the `notice` that `cross_model_review.py {command}` printed "
51
+ "({which}), word for word, as a message of its own. Do not post it again and do not reword it; "
52
+ "go on with the next step."
53
+ )
54
+ TOO_LONG = (
55
+ "ATW: the `notice` that `cross_model_review.py {command}` printed ({which}) is too long for Claude Code "
56
+ "to show whole ({length} characters, over {limit}), so it was not shown. Post it yourself, word for word, "
57
+ "as a message of its own, as the skill says."
58
+ )
59
+
60
+
61
+ def find_atw_root(start: Path) -> Optional[Path]:
62
+ cur = start.resolve()
63
+ for d in (cur, *cur.parents):
64
+ if (d / ".atw").is_dir():
65
+ return d
66
+ return None
67
+
68
+
69
+ def _context_key(root: Path, data: dict) -> Optional[str]:
70
+ """ATW's own key for this conversation, the same way the script got it."""
71
+ scripts_dir = root / ".atw" / "scripts"
72
+ if str(scripts_dir) not in sys.path:
73
+ sys.path.insert(0, str(scripts_dir))
74
+ try:
75
+ from common.active_task import resolve_context_key # type: ignore[import-not-found]
76
+ except ImportError:
77
+ return None
78
+ return resolve_context_key(data, platform="claude")
79
+
80
+
81
+ def main() -> int:
82
+ if os.environ.get("ATW_HOOKS") == "0" or os.environ.get("ATW_DISABLE_HOOKS") == "1":
83
+ return 0
84
+ try:
85
+ # 按字节读、输出全用 ASCII 转义:Windows 上的默认编码碰不到中文
86
+ data = json.loads(sys.stdin.buffer.read().decode("utf-8", errors="replace"))
87
+ except (ValueError, OSError):
88
+ return 0
89
+ if not isinstance(data, dict) or data.get("tool_name") != "Bash":
90
+ return 0
91
+ tool_input = data.get("tool_input")
92
+ command = tool_input.get("command") if isinstance(tool_input, dict) else None
93
+ match = COMMAND_RE.search(command) if isinstance(command, str) else None
94
+ if match is None:
95
+ return 0
96
+ cwd = data.get("cwd")
97
+ root = find_atw_root(Path(cwd) if isinstance(cwd, str) and cwd else Path.cwd())
98
+ if root is None:
99
+ return 0
100
+ path = root / NOTICE_FILE
101
+ try:
102
+ saved = json.loads(path.read_text(encoding="utf-8"))
103
+ except (OSError, ValueError):
104
+ return 0
105
+ if not isinstance(saved, dict) or saved.get("command") != match.group(1):
106
+ return 0
107
+ text = saved.get("text")
108
+ if not isinstance(text, str) or not text:
109
+ return 0
110
+ written_in = saved.get("session")
111
+ here = _context_key(root, data) if written_in else None
112
+ if written_in and here and written_in != here:
113
+ # 别的对话写的:留给它,不在这里显示
114
+ return 0
115
+ path.unlink(missing_ok=True)
116
+ command_name = match.group(1)
117
+ which = {"zh": "the Chinese paragraph", "en": "the English paragraph"}.get(
118
+ saved.get("lang"), "both the Chinese and the English paragraph"
119
+ )
120
+ if len(text) > SHOW_LIMIT:
121
+ out: dict = {"hookSpecificOutput": {
122
+ "hookEventName": "PostToolUse",
123
+ "additionalContext": TOO_LONG.format(command=command_name, which=which, length=len(text), limit=SHOW_LIMIT),
124
+ }}
125
+ else:
126
+ out = {"systemMessage": text, "hookSpecificOutput": {
127
+ "hookEventName": "PostToolUse",
128
+ "additionalContext": SHOWN.format(command=command_name, which=which),
129
+ }}
130
+ print(json.dumps(out))
131
+ return 0
132
+
133
+
134
+ if __name__ == "__main__":
135
+ sys.exit(main())
@@ -50,7 +50,7 @@ the AI do the rest. There are no prompt commands to run and no project agents.
50
50
 
51
51
  | Capability | Status |
52
52
  | ------------------------------------------ | ---------------------------------------------------------------------------- |
53
- | Skills (`.snow/skills/atw-*/SKILL.md`) | Works — the six skills of `general` mode |
53
+ | Skills (`.snow/skills/atw-*/SKILL.md`) | Works — the seven skills of `general` mode |
54
54
  | Context hooks (`.snow/hooks/`) | Inject model context via stdout JSON + write `.snow/log/atw-context.txt` |
55
55
  | Prompt commands, project agents | None in `general` mode |
56
56
 
@@ -0,0 +1,9 @@
1
+ /** `.atw/` 里归用户、卸载后仍留着的条目。只剩它们时项目不算装了 ATW。 */
2
+ export declare const ATW_ENTRIES_KEPT_BY_UNINSTALL: readonly string[];
3
+ /**
4
+ * 项目里装没装 ATW:`.atw/` 存在,且不是只剩卸载后留下的用户条目。
5
+ * 不看 `.atw/.version`——早期版本装的项目可能没有它;空的 `.atw/` 照旧算装过
6
+ * (由各命令自己报清单缺失)。
7
+ */
8
+ export declare function isAtwInitialized(cwd: string): boolean;
9
+ //# sourceMappingURL=initialized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialized.d.ts","sourceRoot":"","sources":["../../src/utils/initialized.ts"],"names":[],"mappings":"AAKA,8CAA8C;AAC9C,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAE1D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWrD"}
@@ -0,0 +1,24 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { DIR_NAMES } from "../constants/paths.js";
4
+ /** `.atw/` 里归用户、卸载后仍留着的条目。只剩它们时项目不算装了 ATW。 */
5
+ export const ATW_ENTRIES_KEPT_BY_UNINSTALL = [
6
+ DIR_NAMES.SKILL_NOTES,
7
+ ];
8
+ /**
9
+ * 项目里装没装 ATW:`.atw/` 存在,且不是只剩卸载后留下的用户条目。
10
+ * 不看 `.atw/.version`——早期版本装的项目可能没有它;空的 `.atw/` 照旧算装过
11
+ * (由各命令自己报清单缺失)。
12
+ */
13
+ export function isAtwInitialized(cwd) {
14
+ let entries;
15
+ try {
16
+ entries = fs.readdirSync(path.join(cwd, DIR_NAMES.WORKFLOW));
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ return (entries.length === 0 ||
22
+ entries.some((entry) => !ATW_ENTRIES_KEPT_BY_UNINSTALL.includes(entry)));
23
+ }
24
+ //# sourceMappingURL=initialized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialized.js","sourceRoot":"","sources":["../../src/utils/initialized.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,SAAS,CAAC,WAAW;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACxE,CAAC;AACJ,CAAC"}
@@ -30,6 +30,8 @@ export interface ManagedRemovalPlan {
30
30
  deletions: PlannedDeletion[];
31
31
  modifications: PlannedModification[];
32
32
  removeAtwDir: boolean;
33
+ /** `.atw/` 里归用户、卸载留着的条目(磁盘上有的);非空时 `.atw/` 只删其余条目。 */
34
+ keptAtwEntries: string[];
33
35
  allPosixPaths: string[];
34
36
  }
35
37
  export interface BuildManagedRemovalPlanOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"managed-removal.d.ts","sourceRoot":"","sources":["../../src/utils/managed-removal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAUzB,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAOlC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,KAAK,WAAW,CAAC;CAC1E;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAO/D;AAsBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAwBnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAmE1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,GAAE,8BAAmC,GAC3C,kBAAkB,CA6DpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,kBAAkB,GACvB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CA+DtE"}
1
+ {"version":3,"file":"managed-removal.d.ts","sourceRoot":"","sources":["../../src/utils/managed-removal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAWzB,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAOlC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,KAAK,WAAW,CAAC;CAC1E;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAO/D;AAsBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAwBnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAqE1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,GAAE,8BAAmC,GAC3C,kBAAkB,CAgEpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,kBAAkB,GACvB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAyEtE"}
@@ -8,9 +8,10 @@
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import { DIR_NAMES, FILE_NAMES } from "../constants/paths.js";
11
+ import { ATW_ENTRIES_KEPT_BY_UNINSTALL } from "./initialized.js";
11
12
  import { ALL_MANAGED_DIRS } from "../configurators/index.js";
12
13
  import { COPILOT_INSTRUCTIONS_BLOCK_END, COPILOT_INSTRUCTIONS_BLOCK_START, COPILOT_INSTRUCTIONS_PATH, } from "../templates/copilot/index.js";
13
- import { scrubCodexConfigToml, scrubHooksJson, scrubManagedMarkdownBlock, scrubOpencodePackageJson, scrubPiSettings, } from "./uninstall-scrubbers.js";
14
+ import { scrubCodexConfigToml, scrubHooksJson, scrubManagedMarkdownBlock, scrubOpencodePackageJson, scrubPiSettings, scrubOmpConfigYml, } from "./uninstall-scrubbers.js";
14
15
  import { cleanupEmptyDirs, ATW_BLOCK_END, ATW_BLOCK_START, } from "./managed-paths.js";
15
16
  /** A safe lstat that distinguishes an absent path from a filesystem error. */
16
17
  export function lstatIfPresent(absPath) {
@@ -124,6 +125,11 @@ export function buildStructuredFileSpecs() {
124
125
  reason: "Remove atw project_doc_fallback_filenames and notes",
125
126
  scrub: (content) => scrubCodexConfigToml(content),
126
127
  },
128
+ {
129
+ posixPath: ".omp/config.yml",
130
+ reason: "Remove atw task.eager, tools.outputMaxColumns and their notes; preserve user settings",
131
+ scrub: (content) => scrubOmpConfigYml(content),
132
+ },
127
133
  {
128
134
  posixPath: COPILOT_INSTRUCTIONS_PATH,
129
135
  reason: "Remove ATW Copilot guidance; preserve repo instructions",
@@ -194,6 +200,7 @@ export function buildManagedRemovalPlan(cwd, hashes, options = {}) {
194
200
  deletions,
195
201
  modifications,
196
202
  removeAtwDir: true,
203
+ keptAtwEntries: ATW_ENTRIES_KEPT_BY_UNINSTALL.filter((entry) => lstatIfPresent(path.join(cwd, DIR_NAMES.WORKFLOW, entry))),
197
204
  allPosixPaths,
198
205
  };
199
206
  }
@@ -225,8 +232,21 @@ export function executeManagedRemovalPlan(cwd, plan) {
225
232
  if (plan.removeAtwDir) {
226
233
  const atwDir = path.join(cwd, DIR_NAMES.WORKFLOW);
227
234
  if (lstatIfPresent(atwDir)) {
228
- fs.rmSync(atwDir, { recursive: true, force: true });
229
- deletedDirs += 1;
235
+ if (plan.keptAtwEntries.length > 0) {
236
+ // skill 附加说明归用户,卸载不碰:只删 .atw/ 里的其余条目。
237
+ for (const entry of fs.readdirSync(atwDir)) {
238
+ if (plan.keptAtwEntries.includes(entry))
239
+ continue;
240
+ const entryPath = path.join(atwDir, entry);
241
+ if (lstatIfPresent(entryPath)?.isDirectory())
242
+ deletedDirs += 1;
243
+ fs.rmSync(entryPath, { recursive: true, force: true });
244
+ }
245
+ }
246
+ else {
247
+ fs.rmSync(atwDir, { recursive: true, force: true });
248
+ deletedDirs += 1;
249
+ }
230
250
  }
231
251
  }
232
252
  for (const dirPosix of deletedDirCandidates) {
@@ -1 +1 @@
1
- {"version":3,"file":"managed-removal.js","sourceRoot":"","sources":["../../src/utils/managed-removal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-removal.js","sourceRoot":"","sources":["../../src/utils/managed-removal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAsC5B,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB,EAAE,OAAe;IAC/D,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAiB;IAC3D,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC9D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IACE,QAAQ,CAAC,IAAI,CACX,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CACzE,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,SAAiB;IAEjB,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACrD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5C,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAyB;QAClC,GACE;YACE,uBAAuB;YACvB,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,sBAAsB;YACtB,mBAAmB;YACnB,kBAAkB;SAErB,CAAC,GAAG,CACH,CAAC,SAAS,EAAsB,EAAE,CAAC,CAAC;YAClC,SAAS;YACT,MAAM,EAAE,uCAAuC;YAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAC/B,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SAClD,CAAC,CACH;QACD,GAAI,CAAC,oBAAoB,EAAE,4BAA4B,CAAW,CAAC,GAAG,CACpE,CAAC,SAAS,EAAsB,EAAE,CAAC,CAAC;YAClC,SAAS;YACT,MAAM,EAAE,uCAAuC;YAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAC/B,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC;SAChD,CAAC,CACH;QACD;YACE,SAAS,EAAE,wBAAwB;YACnC,MAAM,EAAE,qDAAqD;YAC7D,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC;SACtD;QACD;YACE,SAAS,EAAE,mBAAmB;YAC9B,MAAM,EACJ,kEAAkE;YACpE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;SAC7C;QACD;YACE,SAAS,EAAE,oBAAoB;YAC/B,MAAM,EAAE,qDAAqD;YAC7D,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC;SAClD;QACD;YACE,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EACJ,uFAAuF;YACzF,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC/C;QACD;YACE,SAAS,EAAE,yBAAyB;YACpC,MAAM,EAAE,yDAAyD;YACjE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,yBAAyB,CACvB,OAAO,EACP,gCAAgC,EAChC,8BAA8B,CAC/B;SACJ;QACD;YACE,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,MAAM,EAAE,qDAAqD;YAC7D,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,yBAAyB,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC;SACrE;KACF,CAAC;IAEF,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,MAA8B,EAC9B,UAA0C,EAAE;IAE5C,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,aAAa,GAA0B,EAAE,CAAC;IAEhD,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW;YACjC,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,CAAC,IAAI,CAAC;gBACb,SAAS;gBACT,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACvE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAClD,IACE,OAAO,CAAC,WAAW;YACnB,CAAC,MAAM,CAAC,UAAU;YAClB,MAAM,CAAC,OAAO,KAAK,OAAO,EAC1B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,8DAA8D,SAAS,EAAE,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC;gBACjB,SAAS;gBACT,OAAO;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,aAAa;QACb,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7D,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAC1D;QACD,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,IAAwB;IAExB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpE,aAAa,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,OAAO;YAAE,SAAS;QAC/B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,YAAY,IAAI,CAAC,CAAC;YAClB,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;IACH,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,sCAAsC;gBACtC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,SAAS;oBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3C,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE;wBAAE,WAAW,IAAI,CAAC,CAAC;oBAC/D,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,WAAW,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE,CAAC;QAC5C,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,EAAE;YAAE,SAAS;QAClD,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,GAAG,gBAAgB,CAAC;SAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,QAAQ,CAAC;SAC3C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClC,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC/C,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClB,WAAW,IAAI,CAAC,CAAC;YAEjB,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjD,OAAO,WAAW,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM;gBACrC,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAClD,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACxB,WAAW,IAAI,CAAC,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACtD,CAAC"}
@@ -16,6 +16,8 @@
16
16
  * install is never touched.
17
17
  */
18
18
  export declare const OPTIONAL_SKILLS_INDEX_URL = "https://raw.githubusercontent.com/LFT-OXY/oxy-Tools/main/index.json";
19
+ /** `name` becomes a directory name; nothing that could leave the skill root. */
20
+ export declare const SKILL_NAME_RE: RegExp;
19
21
  export interface OptionalSkill {
20
22
  /** Directory name the skill is installed under. */
21
23
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"optional-skills.d.ts","sourceRoot":"","sources":["../../src/utils/optional-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,eAAO,MAAM,yBAAyB,wEACiC,CAAC;AAcxE,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CACrC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAgBpE;AAUD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAuBxE;AAYD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnE;AAqBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,cAAc,CAAC,mBAAmB,CAAC,CAoFrC"}
1
+ {"version":3,"file":"optional-skills.d.ts","sourceRoot":"","sources":["../../src/utils/optional-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,eAAO,MAAM,yBAAyB,wEACiC,CAAC;AAWxE,gFAAgF;AAChF,eAAO,MAAM,aAAa,QAAiC,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CACrC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAgBpE;AAUD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAuBxE;AAYD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnE;AAqBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,cAAc,CAAC,mBAAmB,CAAC,CAoFrC"}
@@ -34,7 +34,7 @@ const RECORD_FILE = ".optional-skills.json";
34
34
  */
35
35
  const SKILL_DOWNLOAD_MS = 300_000;
36
36
  /** `name` becomes a directory name; nothing that could leave the skill root. */
37
- const SKILL_NAME_RE = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
37
+ export const SKILL_NAME_RE = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
38
38
  function isRecord(value) {
39
39
  return typeof value === "object" && value !== null && !Array.isArray(value);
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"optional-skills.js","sourceRoot":"","sources":["../../src/utils/optional-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optional-skills.js","sourceRoot":"","sources":["../../src/utils/optional-skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-hash.d.ts","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB5D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAmCtD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAsBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAST;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtB;AAoCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQnE;AAkCD,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAyDR"}
1
+ {"version":3,"file":"template-hash.d.ts","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB5D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAmCtD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAsBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAST;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtB;AAuCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQnE;AAkCD,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAyDR"}