@rpamis/comet 0.4.0-beta.4 → 0.4.0-beta.5

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 (183) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +5 -1
  3. package/assets/manifest.json +1 -1
  4. package/assets/skills/comet/SKILL.md +30 -28
  5. package/assets/skills/comet/reference/auto-transition.md +1 -1
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +6 -4
  7. package/assets/skills/comet/reference/context-recovery.md +2 -2
  8. package/assets/skills/comet/reference/decision-point.md +11 -0
  9. package/assets/skills/comet/reference/subagent-dispatch.md +6 -5
  10. package/assets/skills/comet/rules/comet-phase-guard.en.md +23 -28
  11. package/assets/skills/comet/rules/comet-phase-guard.md +22 -28
  12. package/assets/skills/comet/scripts/comet-runtime.mjs +185 -56
  13. package/assets/skills/comet-any/SKILL.md +1 -1
  14. package/assets/skills/comet-any/reference/authored-zone-example.md +10 -5
  15. package/assets/skills/comet-any/reference/subagents/pause-points-author.md +14 -11
  16. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -0
  17. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  18. package/assets/skills/comet-archive/SKILL.md +34 -13
  19. package/assets/skills/comet-build/SKILL.md +23 -21
  20. package/assets/skills/comet-design/SKILL.md +23 -22
  21. package/assets/skills/comet-hotfix/SKILL.md +35 -34
  22. package/assets/skills/comet-open/SKILL.md +97 -58
  23. package/assets/skills/comet-tweak/SKILL.md +21 -18
  24. package/assets/skills/comet-verify/SKILL.md +35 -59
  25. package/assets/skills-zh/comet/SKILL.md +30 -28
  26. package/assets/skills-zh/comet/reference/auto-transition.md +1 -1
  27. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +6 -4
  28. package/assets/skills-zh/comet/reference/context-recovery.md +2 -2
  29. package/assets/skills-zh/comet/reference/decision-point.md +11 -0
  30. package/assets/skills-zh/comet/reference/subagent-dispatch.md +6 -5
  31. package/assets/skills-zh/comet-any/SKILL.md +1 -1
  32. package/assets/skills-zh/comet-any/reference/authored-zone-example.md +10 -5
  33. package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +14 -12
  34. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -0
  35. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  36. package/assets/skills-zh/comet-archive/SKILL.md +34 -13
  37. package/assets/skills-zh/comet-build/SKILL.md +23 -21
  38. package/assets/skills-zh/comet-design/SKILL.md +23 -22
  39. package/assets/skills-zh/comet-hotfix/SKILL.md +34 -33
  40. package/assets/skills-zh/comet-open/SKILL.md +96 -57
  41. package/assets/skills-zh/comet-tweak/SKILL.md +20 -17
  42. package/assets/skills-zh/comet-verify/SKILL.md +35 -59
  43. package/dist/app/commands/doctor.d.ts.map +1 -1
  44. package/dist/app/commands/doctor.js +62 -15
  45. package/dist/app/commands/doctor.js.map +1 -1
  46. package/dist/app/commands/init.d.ts +1 -1
  47. package/dist/app/commands/init.d.ts.map +1 -1
  48. package/dist/app/commands/init.js +58 -14
  49. package/dist/app/commands/init.js.map +1 -1
  50. package/dist/app/commands/uninstall.d.ts +3 -0
  51. package/dist/app/commands/uninstall.d.ts.map +1 -1
  52. package/dist/app/commands/uninstall.js +70 -36
  53. package/dist/app/commands/uninstall.js.map +1 -1
  54. package/dist/app/commands/update.d.ts.map +1 -1
  55. package/dist/app/commands/update.js +213 -34
  56. package/dist/app/commands/update.js.map +1 -1
  57. package/dist/domains/bundle/bundle-platform.d.ts +1 -0
  58. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
  59. package/dist/domains/bundle/bundle-platform.js +6 -2
  60. package/dist/domains/bundle/bundle-platform.js.map +1 -1
  61. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
  62. package/dist/domains/comet-classic/classic-guard.js +15 -11
  63. package/dist/domains/comet-classic/classic-guard.js.map +1 -1
  64. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
  65. package/dist/domains/comet-classic/classic-hook-guard.js +113 -19
  66. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
  67. package/dist/domains/comet-classic/classic-resolver.js +1 -1
  68. package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
  69. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
  70. package/dist/domains/comet-classic/classic-state-command.js +22 -13
  71. package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
  72. package/dist/domains/comet-classic/classic-state.d.ts +3 -2
  73. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
  74. package/dist/domains/comet-classic/classic-state.js +13 -1
  75. package/dist/domains/comet-classic/classic-state.js.map +1 -1
  76. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
  77. package/dist/domains/comet-classic/classic-transitions.js +16 -2
  78. package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
  79. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
  80. package/dist/domains/comet-classic/classic-validate-command.js +7 -1
  81. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
  82. package/dist/domains/dashboard/web/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  83. package/dist/domains/dashboard/web/assets/arc-TGVUG2WN.js +1 -0
  84. package/dist/domains/dashboard/web/assets/architectureDiagram-3BPJPVTR-ASHmiHoP.js +36 -0
  85. package/dist/domains/dashboard/web/assets/blockDiagram-GPEHLZMM-CwASxBKe.js +132 -0
  86. package/dist/domains/dashboard/web/assets/c4Diagram-AAUBKEIU-BU8z_WNk.js +10 -0
  87. package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +1 -0
  88. package/dist/domains/dashboard/web/assets/chunk-2J33WTMH-CBGlUx4_.js +1 -0
  89. package/dist/domains/dashboard/web/assets/chunk-4BX2VUAB-CS-iGcFz.js +1 -0
  90. package/dist/domains/dashboard/web/assets/chunk-55IACEB6-BUtCVJat.js +1 -0
  91. package/dist/domains/dashboard/web/assets/chunk-727SXJPM-C94tj_pf.js +206 -0
  92. package/dist/domains/dashboard/web/assets/chunk-AQP2D5EJ-BFOKcpdG.js +231 -0
  93. package/dist/domains/dashboard/web/assets/chunk-FMBD7UC4-Dmx8B-st.js +15 -0
  94. package/dist/domains/dashboard/web/assets/chunk-ND2GUHAM-DYV00CNn.js +1 -0
  95. package/dist/domains/dashboard/web/assets/chunk-QZHKN3VN-DMJJyQnw.js +1 -0
  96. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +1 -0
  97. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +1 -0
  98. package/dist/domains/dashboard/web/assets/cose-bilkent-S5V4N54A-P4nE2rea.js +1 -0
  99. package/dist/domains/dashboard/web/assets/cynefin-VYW2F7L2-C-R1HXDv.js +166 -0
  100. package/dist/domains/dashboard/web/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
  101. package/dist/domains/dashboard/web/assets/dagre-BM42HDAG-BH8d-C9z.js +4 -0
  102. package/dist/domains/dashboard/web/assets/defaultLocale-DX6XiGOO.js +1 -0
  103. package/dist/domains/dashboard/web/assets/diagram-2AECGRRQ-DpXTgQIH.js +43 -0
  104. package/dist/domains/dashboard/web/assets/diagram-5GNKFQAL-DSiFJzSw.js +10 -0
  105. package/dist/domains/dashboard/web/assets/diagram-KO2AKTUF-DULMkben.js +3 -0
  106. package/dist/domains/dashboard/web/assets/diagram-LMA3HP47-Pi8m_NO9.js +24 -0
  107. package/dist/domains/dashboard/web/assets/diagram-OG6HWLK6-BSe6bCWm.js +24 -0
  108. package/dist/domains/dashboard/web/assets/erDiagram-TEJ5UH35-zb-FEcbq.js +85 -0
  109. package/dist/domains/dashboard/web/assets/flowDiagram-I6XJVG4X-Dr-Gk0z2.js +162 -0
  110. package/dist/domains/dashboard/web/assets/ganttDiagram-6RSMTGT7-qs6Zb2A6.js +292 -0
  111. package/dist/domains/dashboard/web/assets/gitGraphDiagram-PVQCEYII-BQ314orT.js +106 -0
  112. package/dist/domains/dashboard/web/assets/graph--OzhPTMs.js +1 -0
  113. package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +1 -0
  114. package/dist/domains/dashboard/web/assets/index-DlSYK56b.js +139 -0
  115. package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +24 -0
  116. package/dist/domains/dashboard/web/assets/index-QO0z6F4w.js +10 -0
  117. package/dist/domains/dashboard/web/assets/infoDiagram-5YYISTIA-O0bQp98A.js +2 -0
  118. package/dist/domains/dashboard/web/assets/init-Gi6I4Gst.js +1 -0
  119. package/dist/domains/dashboard/web/assets/ishikawaDiagram-YF4QCWOH-BPC7wbKh.js +70 -0
  120. package/dist/domains/dashboard/web/assets/journeyDiagram-JHISSGLW-ohViOd4b.js +139 -0
  121. package/dist/domains/dashboard/web/assets/kanban-definition-UN3LZRKU-CHleNdbG.js +89 -0
  122. package/dist/domains/dashboard/web/assets/katex-HP8lGamR.js +257 -0
  123. package/dist/domains/dashboard/web/assets/layout-SsrduOYp.js +1 -0
  124. package/dist/domains/dashboard/web/assets/linear-CyqiW--Q.js +1 -0
  125. package/dist/domains/dashboard/web/assets/marked.esm-DECB3bxB.js +64 -0
  126. package/dist/domains/dashboard/web/assets/mermaid.core-qS9XvtaK.js +301 -0
  127. package/dist/domains/dashboard/web/assets/mindmap-definition-RKZ34NQL-oaGkqO9l.js +96 -0
  128. package/dist/domains/dashboard/web/assets/ordinal-Cboi1Yqb.js +1 -0
  129. package/dist/domains/dashboard/web/assets/pieDiagram-4H26LBE5-CPcB-AFh.js +30 -0
  130. package/dist/domains/dashboard/web/assets/purify.es-VaSPOPhr.js +3 -0
  131. package/dist/domains/dashboard/web/assets/quadrantDiagram-W4KKPZXB-LFy52Qtj.js +7 -0
  132. package/dist/domains/dashboard/web/assets/requirementDiagram-4Y6WPE33-BdjeaYP_.js +84 -0
  133. package/dist/domains/dashboard/web/assets/sankeyDiagram-5OEKKPKP-DDJ4styL.js +40 -0
  134. package/dist/domains/dashboard/web/assets/sequenceDiagram-3UESZ5HK-BL5bFNoz.js +162 -0
  135. package/dist/domains/dashboard/web/assets/stateDiagram-AJRCARHV-BNUfikui.js +1 -0
  136. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +1 -0
  137. package/dist/domains/dashboard/web/assets/timeline-definition-PNZ67QCA--ps2uu6L.js +120 -0
  138. package/dist/domains/dashboard/web/assets/vennDiagram-CIIHVFJN-C2q8q26c.js +34 -0
  139. package/dist/domains/dashboard/web/assets/wardleyDiagram-YWT4CUSO-BUH9gXqd.js +78 -0
  140. package/dist/domains/dashboard/web/assets/xychartDiagram-2RQKCTM6-B-DielEy.js +7 -0
  141. package/dist/domains/dashboard/web/index.html +16 -16
  142. package/dist/domains/factory/package.d.ts.map +1 -1
  143. package/dist/domains/factory/package.js +20 -6
  144. package/dist/domains/factory/package.js.map +1 -1
  145. package/dist/domains/integrations/openspec.d.ts +4 -1
  146. package/dist/domains/integrations/openspec.d.ts.map +1 -1
  147. package/dist/domains/integrations/openspec.js +56 -4
  148. package/dist/domains/integrations/openspec.js.map +1 -1
  149. package/dist/domains/skill/json-object.d.ts +13 -0
  150. package/dist/domains/skill/json-object.d.ts.map +1 -0
  151. package/dist/domains/skill/json-object.js +24 -0
  152. package/dist/domains/skill/json-object.js.map +1 -0
  153. package/dist/domains/skill/platform-inspect.d.ts +9 -0
  154. package/dist/domains/skill/platform-inspect.d.ts.map +1 -0
  155. package/dist/domains/skill/platform-inspect.js +149 -0
  156. package/dist/domains/skill/platform-inspect.js.map +1 -0
  157. package/dist/domains/skill/platform-install.d.ts +16 -6
  158. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  159. package/dist/domains/skill/platform-install.js +277 -144
  160. package/dist/domains/skill/platform-install.js.map +1 -1
  161. package/dist/domains/skill/uninstall.d.ts.map +1 -1
  162. package/dist/domains/skill/uninstall.js +204 -141
  163. package/dist/domains/skill/uninstall.js.map +1 -1
  164. package/dist/platform/fs/file-system.d.ts +3 -3
  165. package/dist/platform/fs/file-system.d.ts.map +1 -1
  166. package/dist/platform/fs/file-system.js +21 -11
  167. package/dist/platform/fs/file-system.js.map +1 -1
  168. package/dist/platform/install/platforms.d.ts +4 -0
  169. package/dist/platform/install/platforms.d.ts.map +1 -1
  170. package/dist/platform/install/platforms.js +2 -0
  171. package/dist/platform/install/platforms.js.map +1 -1
  172. package/dist/platform/install/project-registry.d.ts +1 -0
  173. package/dist/platform/install/project-registry.d.ts.map +1 -1
  174. package/dist/platform/install/project-registry.js +9 -1
  175. package/dist/platform/install/project-registry.js.map +1 -1
  176. package/dist/platform/install/skill-root-owner.d.ts +15 -0
  177. package/dist/platform/install/skill-root-owner.d.ts.map +1 -0
  178. package/dist/platform/install/skill-root-owner.js +68 -0
  179. package/dist/platform/install/skill-root-owner.js.map +1 -0
  180. package/package.json +6 -1
  181. package/dist/domains/dashboard/web/assets/index-CIvN-PL8.js +0 -22
  182. package/dist/domains/dashboard/web/assets/index-DcyRPBnT.css +0 -1
  183. package/eval/.env +0 -28
@@ -1,10 +1,13 @@
1
1
  import { type InstallScope } from '../../platform/install/detect.js';
2
+ import { type ProjectRegistryTarget } from '../../platform/install/project-registry.js';
2
3
  interface UninstallOptions {
3
4
  json?: boolean;
4
5
  scope?: InstallScope;
5
6
  force?: boolean;
6
7
  allProjects?: boolean;
7
8
  currentProject?: boolean;
9
+ recoverProjectCleanup?: boolean;
10
+ recoveryTargets?: ProjectRegistryTarget[];
8
11
  }
9
12
  export declare function uninstallCommand(targetPath: string, options?: UninstallOptions): Promise<void>;
10
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../app/commands/uninstall.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAiBjF,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqWD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiDf"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../app/commands/uninstall.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAUjF,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,4CAA4C,CAAC;AAGpD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC3C;AA6YD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA0Df"}
@@ -1,11 +1,28 @@
1
1
  import path from 'path';
2
2
  import { checkbox, select } from '@inquirer/prompts';
3
3
  import { getBaseDir } from '../../platform/install/detect.js';
4
- import { getPlatformSkillsDir } from '../../platform/install/platforms.js';
4
+ import { PLATFORMS, getPlatformSkillsDir } from '../../platform/install/platforms.js';
5
5
  import { removeCometSkillsForPlatform, removeCometRulesForPlatform, removeCometHooksForPlatform, removeWorkingDirs, removeCometProjectInstructions, } from '../../domains/skill/uninstall.js';
6
6
  import { detectInstalledCometTargets } from './update.js';
7
- import { listProjectRegistryEntries, removeProjectInstallation, upsertProjectInstallation, } from '../../platform/install/project-registry.js';
7
+ import { listProjectRegistryEntries, findProjectRegistryEntry, removeProjectInstallation, upsertProjectInstallation, } from '../../platform/install/project-registry.js';
8
8
  import { assertProjectScopeOptions, resolveProjectScopeMode } from './project-scope-selection.js';
9
+ function mergeCleanupTargets(detectedTargets, recoveryTargets, recoverProjectCleanup) {
10
+ const targets = [...detectedTargets];
11
+ if (!recoverProjectCleanup)
12
+ return targets;
13
+ const seen = new Set(targets.map((target) => `${target.scope}:${target.platform.id}`));
14
+ for (const recoveryTarget of recoveryTargets) {
15
+ const platform = PLATFORMS.find((candidate) => candidate.id === recoveryTarget.platform);
16
+ if (!platform)
17
+ continue;
18
+ const key = `project:${platform.id}`;
19
+ if (seen.has(key))
20
+ continue;
21
+ seen.add(key);
22
+ targets.push({ scope: 'project', platform, language: recoveryTarget.language });
23
+ }
24
+ return targets;
25
+ }
9
26
  function currentProjectJson(result) {
10
27
  return {
11
28
  targets: result?.targets.map((r) => ({
@@ -31,20 +48,26 @@ function currentProjectJson(result) {
31
48
  };
32
49
  }
33
50
  async function uninstallSingleProject(projectPath, options = {}, log) {
34
- const targets = await detectInstalledCometTargets(projectPath, {
51
+ const detectedTargets = await detectInstalledCometTargets(projectPath, {
35
52
  scopes: options.scope ? [options.scope] : undefined,
36
53
  respectDetectionPaths: options.scope === undefined,
37
54
  });
38
- if (targets.length === 0) {
55
+ const targets = mergeCleanupTargets(detectedTargets, options.recoveryTargets ?? [], options.recoverProjectCleanup === true);
56
+ if (targets.length === 0 && !options.recoverProjectCleanup) {
39
57
  return null;
40
58
  }
41
59
  const scopeLabel = (scope) => scope === 'global' ? 'global' : `project (${projectPath})`;
42
- log(' Found Comet installations on the following targets:\n');
43
- for (const target of targets) {
44
- const skillsDir = getPlatformSkillsDir(target.platform, target.scope);
45
- const prefix = target.scope === 'global' ? '~/' : '';
46
- log(` ${target.platform.name} (${scopeLabel(target.scope)})`);
47
- log(` Path: ${prefix}${skillsDir}/skills/`);
60
+ if (targets.length > 0) {
61
+ log(' Found Comet installations on the following targets:\n');
62
+ for (const target of targets) {
63
+ const skillsDir = getPlatformSkillsDir(target.platform, target.scope);
64
+ const prefix = target.scope === 'global' ? '~/' : '';
65
+ log(` ${target.platform.name} (${scopeLabel(target.scope)})`);
66
+ log(` Path: ${prefix}${skillsDir}/skills/`);
67
+ }
68
+ }
69
+ else {
70
+ log(' Found an indexed project with follow-on cleanup still pending.\n');
48
71
  }
49
72
  let selectedTargets = targets;
50
73
  if (!options.force && !options.json) {
@@ -87,23 +110,23 @@ async function uninstallSingleProject(projectPath, options = {}, log) {
87
110
  let projectInstructionsRemoved = 0;
88
111
  for (const target of selectedTargets) {
89
112
  const baseDir = getBaseDir(target.scope, projectPath);
90
- const skillsResult = await removeCometSkillsForPlatform(baseDir, target.platform, target.scope);
91
- totalSkills += skillsResult.removed;
92
- totalFailures += skillsResult.failed;
93
- const rulesResult = skillsResult.failed === 0
94
- ? await removeCometRulesForPlatform(baseDir, target.platform, target.scope)
95
- : { removed: 0, failed: 0 };
96
- totalRules += rulesResult.removed;
97
- totalFailures += rulesResult.failed;
98
113
  let hooksRemoved = 0;
99
114
  let hooksFailed = 0;
100
- if (skillsResult.failed === 0 && target.platform.supportsHooks) {
115
+ if (target.platform.supportsHooks) {
101
116
  const hooksResult = await removeCometHooksForPlatform(baseDir, target.platform, target.scope);
102
117
  hooksRemoved = hooksResult.removed;
103
118
  hooksFailed = hooksResult.failed;
104
119
  totalHooks += hooksResult.removed;
105
120
  totalFailures += hooksResult.failed;
106
121
  }
122
+ const rulesResult = await removeCometRulesForPlatform(baseDir, target.platform, target.scope);
123
+ totalRules += rulesResult.removed;
124
+ totalFailures += rulesResult.failed;
125
+ const skillsResult = hooksFailed === 0 && rulesResult.failed === 0
126
+ ? await removeCometSkillsForPlatform(baseDir, target.platform, target.scope)
127
+ : { removed: 0, failed: 0 };
128
+ totalSkills += skillsResult.removed;
129
+ totalFailures += skillsResult.failed;
107
130
  log(` ${target.platform.name} (${target.scope}): ${skillsResult.removed} skills, ${rulesResult.removed} rules, ${hooksRemoved} hooks removed`);
108
131
  if (skillsResult.failed + rulesResult.failed + hooksFailed > 0) {
109
132
  log(` ${target.platform.name} (${target.scope}): cleanup failed; uninstall incomplete and follow-on cleanup skipped`);
@@ -122,7 +145,7 @@ async function uninstallSingleProject(projectPath, options = {}, log) {
122
145
  });
123
146
  }
124
147
  let workingDirsRemoved = 0;
125
- const hasProjectScope = selectedTargets.some((t) => t.scope === 'project');
148
+ const hasProjectScope = options.recoverProjectCleanup === true || selectedTargets.some((t) => t.scope === 'project');
126
149
  if (hasProjectScope && totalFailures === 0) {
127
150
  const removeResult = await removeCometProjectInstructions(projectPath);
128
151
  projectInstructionsRemoved = removeResult.removed;
@@ -133,12 +156,17 @@ async function uninstallSingleProject(projectPath, options = {}, log) {
133
156
  if (hasProjectScope && totalFailures === 0) {
134
157
  const dirsResult = await removeWorkingDirs(projectPath);
135
158
  workingDirsRemoved = dirsResult.removed;
159
+ totalFailures += dirsResult.failed;
136
160
  if (workingDirsRemoved > 0) {
137
161
  log(` Working directories: ${workingDirsRemoved} removed`);
138
162
  }
163
+ if (dirsResult.failed > 0) {
164
+ log(` Working directories: cleanup failed (${dirsResult.failed})`);
165
+ }
139
166
  }
140
167
  return {
141
168
  projectPath,
169
+ projectScopeProcessed: hasProjectScope,
142
170
  targets: results,
143
171
  workingDirsRemoved,
144
172
  projectInstructionsRemoved,
@@ -152,7 +180,7 @@ async function uninstallSingleProject(projectPath, options = {}, log) {
152
180
  };
153
181
  }
154
182
  async function refreshRegistryAfterProjectUninstall(result) {
155
- if (!result?.targets.some((target) => target.scope === 'project'))
183
+ if (!result?.projectScopeProcessed)
156
184
  return;
157
185
  if (result.summary.totalFailures > 0)
158
186
  return;
@@ -167,23 +195,16 @@ async function uninstallAllIndexedProjects(options, log) {
167
195
  const registryProjects = await listProjectRegistryEntries({ strict: true });
168
196
  const results = [];
169
197
  const runnableProjects = [];
170
- let staleRemoved = 0;
171
- for (const project of registryProjects) {
172
- const projectPath = project.path;
198
+ const staleRemoved = 0;
199
+ for (const registryProject of registryProjects) {
200
+ const projectPath = registryProject.path;
173
201
  try {
174
202
  const targets = await detectInstalledCometTargets(projectPath, { scopes: ['project'] });
175
203
  if (targets.length === 0) {
176
- if (await removeProjectInstallation(projectPath))
177
- staleRemoved++;
178
- results.push({
179
- projectPath,
180
- status: 'skipped',
181
- reason: 'no project-scope Comet install detected',
182
- targets: [],
183
- });
204
+ runnableProjects.push({ projectPath, targets, registryProject });
184
205
  continue;
185
206
  }
186
- runnableProjects.push({ projectPath, targets });
207
+ runnableProjects.push({ projectPath, targets, registryProject });
187
208
  }
188
209
  catch (error) {
189
210
  results.push({
@@ -213,9 +234,17 @@ async function uninstallAllIndexedProjects(options, log) {
213
234
  }
214
235
  }
215
236
  for (const project of runnableProjects) {
216
- const { projectPath, targets } = project;
237
+ const { projectPath, targets, registryProject } = project;
217
238
  try {
218
- const result = await uninstallSingleProject(projectPath, { ...options, scope: 'project', allProjects: false, currentProject: true, force: true }, log);
239
+ const result = await uninstallSingleProject(projectPath, {
240
+ ...options,
241
+ scope: 'project',
242
+ allProjects: false,
243
+ currentProject: true,
244
+ force: true,
245
+ recoverProjectCleanup: true,
246
+ recoveryTargets: registryProject.lastTargets,
247
+ }, log);
219
248
  await refreshRegistryAfterProjectUninstall(result);
220
249
  results.push({
221
250
  projectPath,
@@ -277,7 +306,12 @@ export async function uninstallCommand(targetPath, options = {}) {
277
306
  await uninstallAllIndexedProjects(options, log);
278
307
  return;
279
308
  }
280
- const result = await uninstallSingleProject(projectPath, options, log);
309
+ const registeredProject = await findProjectRegistryEntry(projectPath, registryProjects);
310
+ const result = await uninstallSingleProject(projectPath, {
311
+ ...options,
312
+ recoverProjectCleanup: Boolean(registeredProject) && options.scope !== 'global',
313
+ recoveryTargets: registeredProject?.lastTargets,
314
+ }, log);
281
315
  if (!result) {
282
316
  if (options.json) {
283
317
  console.log(JSON.stringify(currentProjectJson(result), null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../app/commands/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../app/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../app/commands/update.ts"],"names":[],"mappings":"AAkBA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,qCAAqC,CAAC;AAY7C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAK,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAMnD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAkBjC,UAAU,oBAAoB;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAiDD,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA0ED,iBAAe,4BAA4B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,iBAAe,2BAA2B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyBjC;AAOD,iBAAe,uBAAuB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,SAAyE,GACnF,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAIzD;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED,iBAAS,wBAAwB,CAC/B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,EACzB,WAAW,GAAE,WAAoB,GAChC,MAAM,CAMR;AAshBD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,GACzB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../app/commands/update.ts"],"names":[],"mappings":"AAkBA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,qCAAqC,CAAC;AAY7C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAK,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAMnD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAkBjC,UAAU,oBAAoB;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAuFD,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA0ED,iBAAe,4BAA4B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,iBAAe,2BAA2B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAsBjC;AAOD,iBAAe,uBAAuB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,SAAyE,GACnF,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAIzD;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED,iBAAS,wBAAwB,CAC/B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,EACzB,WAAW,GAAE,WAAoB,GAChC,MAAM,CAMR;AA+sBD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,GACzB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
@@ -10,8 +10,8 @@ import { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHook
10
10
  import { removeLegacyCometSkillsForPlatform } from '../../domains/skill/uninstall.js';
11
11
  import { installCometProjectInstructions } from '../../domains/skill/project-instructions.js';
12
12
  import { LANGUAGES } from '../../domains/skill/languages.js';
13
- import { PLATFORMS, getPlatformSkillsDir, getPlatformSkillsDirs, } from '../../platform/install/platforms.js';
14
- import { hasPlatformDetectionPath } from '../../platform/install/detect.js';
13
+ import { getPlatformSkillsDir, getPlatformSkillsDirs, } from '../../platform/install/platforms.js';
14
+ import { resolveCanonicalSkillRootOwners } from '../../platform/install/skill-root-owner.js';
15
15
  import { listProjectRegistryEntries, removeProjectInstallation, upsertProjectInstallation, } from '../../platform/install/project-registry.js';
16
16
  import { hasCodegraphProjectIndex, installCodegraph, } from '../../domains/integrations/codegraph.js';
17
17
  import { printVersionInfo } from '../../platform/version/version.js';
@@ -108,11 +108,10 @@ async function detectInstalledCometTargets(projectPath, options = {}) {
108
108
  const targets = [];
109
109
  for (const scope of scopes) {
110
110
  const baseDir = getScopedBaseDir(scope, projectPath, options.globalBaseDir);
111
- for (const platform of PLATFORMS) {
112
- if (options.respectDetectionPaths !== false &&
113
- !(await hasPlatformDetectionPath(baseDir, platform))) {
114
- continue;
115
- }
111
+ const owners = await resolveCanonicalSkillRootOwners(baseDir, scope, {
112
+ respectDetectionPaths: options.respectDetectionPaths,
113
+ });
114
+ for (const { platform } of owners) {
116
115
  if (!(await hasLocalCometSkills(baseDir, platform, scope)))
117
116
  continue;
118
117
  targets.push({
@@ -210,9 +209,11 @@ async function promptCodegraphInstall(lang) {
210
209
  }
211
210
  function currentProjectJson(result) {
212
211
  return {
212
+ status: hasComponentFailures(result) ? 'incomplete' : 'complete',
213
213
  npm: result.npm,
214
214
  skills: {
215
215
  totalCopied: result.skills.totalCopied,
216
+ totalFailed: result.skills.totalFailed,
216
217
  cleanupFailed: result.skills.cleanupFailed,
217
218
  installMode: result.skills.installMode,
218
219
  targets: result.skills.targets,
@@ -223,6 +224,77 @@ function currentProjectJson(result) {
223
224
  codegraph: result.codegraph,
224
225
  };
225
226
  }
227
+ function hasComponentFailures(result) {
228
+ return (result.skills.totalFailed > 0 ||
229
+ result.skills.cleanupFailed > 0 ||
230
+ result.rules.totalFailed > 0 ||
231
+ result.hooks.totalFailed > 0);
232
+ }
233
+ function componentFailureReason(result) {
234
+ const reasons = [];
235
+ if (result.skills.totalFailed > 0) {
236
+ reasons.push(`Skill update failed (${result.skills.totalFailed})`);
237
+ }
238
+ if (result.rules.totalFailed > 0) {
239
+ reasons.push(`Rule update failed (${result.rules.totalFailed})`);
240
+ }
241
+ if (result.hooks.totalFailed > 0) {
242
+ reasons.push(`Hook update failed (${result.hooks.totalFailed})`);
243
+ }
244
+ if (result.skills.cleanupFailed > 0) {
245
+ reasons.push(`legacy Skill cleanup failed (${result.skills.cleanupFailed})`);
246
+ }
247
+ return reasons.join('; ');
248
+ }
249
+ function collectComponentFailures(result) {
250
+ const skillFailures = result.skills.targets.flatMap((target) => {
251
+ const failed = target.failed + target.cleanupFailed;
252
+ if (failed === 0 || !target.reason)
253
+ return [];
254
+ return [
255
+ {
256
+ scope: target.scope,
257
+ platform: target.platform,
258
+ platformName: target.platformName,
259
+ component: 'Skill',
260
+ status: 'failed',
261
+ failed,
262
+ reason: target.reason,
263
+ },
264
+ ];
265
+ });
266
+ const ruleFailures = result.rules.targets.flatMap((target) => {
267
+ if (target.failed === 0 || !target.reason)
268
+ return [];
269
+ return [
270
+ {
271
+ scope: target.scope,
272
+ platform: target.platform,
273
+ platformName: target.platformName,
274
+ component: 'Rule',
275
+ status: 'failed',
276
+ failed: target.failed,
277
+ reason: target.reason,
278
+ },
279
+ ];
280
+ });
281
+ const hookFailures = result.hooks.targets.flatMap((target) => {
282
+ if (target.failed === 0 || !target.reason)
283
+ return [];
284
+ return [
285
+ {
286
+ scope: target.scope,
287
+ platform: target.platform,
288
+ platformName: target.platformName,
289
+ component: 'Hook',
290
+ status: 'failed',
291
+ failed: target.failed,
292
+ reason: target.reason,
293
+ },
294
+ ];
295
+ });
296
+ return [...skillFailures, ...ruleFailures, ...hookFailures];
297
+ }
226
298
  function summarizeTargets(targets) {
227
299
  return targets.map((target) => ({
228
300
  scope: target.scope,
@@ -287,9 +359,9 @@ async function updateSingleProject(projectPath, options, log) {
287
359
  status: npmStatus,
288
360
  command: options.skipNpm || skipRepeatedGlobalNpm ? null : formatNpmUpdateCommand(packageScope),
289
361
  },
290
- skills: { totalCopied: 0, cleanupFailed: 0, targets: [] },
291
- rules: { totalCopied: 0 },
292
- hooks: { totalInstalled: 0 },
362
+ skills: { totalCopied: 0, totalFailed: 0, cleanupFailed: 0, targets: [] },
363
+ rules: { totalCopied: 0, totalFailed: 0, targets: [] },
364
+ hooks: { totalInstalled: 0, totalFailed: 0, targets: [] },
293
365
  projectInstructions: { updated: 0 },
294
366
  codegraph: 'skipped',
295
367
  };
@@ -305,11 +377,16 @@ async function updateSingleProject(projectPath, options, log) {
305
377
  }
306
378
  log(`\n ${t(lang, 'copyingSkillsFiles')} ${(await getManifestSkills()).length} skill files...\n`);
307
379
  let totalCopied = 0;
380
+ let totalFailed = 0;
308
381
  let totalCleanupFailed = 0;
309
382
  let totalRulesCopied = 0;
383
+ let totalRulesFailed = 0;
310
384
  let totalHooksInstalled = 0;
385
+ let totalHooksFailed = 0;
311
386
  let projectInstructionsUpdated = 0;
312
387
  const targetResults = [];
388
+ const ruleTargetResults = [];
389
+ const hookTargetResults = [];
313
390
  for (const target of targets) {
314
391
  const baseDir = getBaseDir(target.scope, projectPath);
315
392
  const languageId = resolveTargetLanguage(options.language, target.language);
@@ -320,6 +397,7 @@ async function updateSingleProject(projectPath, options, log) {
320
397
  : { removed: 0, failed: 0 };
321
398
  totalCleanupFailed += cleanupResult.failed;
322
399
  totalCopied += copied;
400
+ totalFailed += failed;
323
401
  targetResults.push({
324
402
  scope: target.scope,
325
403
  platform: target.platform.id,
@@ -328,6 +406,12 @@ async function updateSingleProject(projectPath, options, log) {
328
406
  source: languageSkillsDir,
329
407
  copied,
330
408
  skipped,
409
+ failed,
410
+ reason: failed > 0
411
+ ? `${failed} Skill file(s) failed to install`
412
+ : cleanupResult.failed > 0
413
+ ? `legacy Skill cleanup failed (${cleanupResult.failed})`
414
+ : undefined,
331
415
  cleanupFailed: cleanupResult.failed,
332
416
  command: formatSkillUpdateCommand(target.scope, target.platform, languageSkillsDir, installMode),
333
417
  });
@@ -335,30 +419,103 @@ async function updateSingleProject(projectPath, options, log) {
335
419
  if (cleanupResult.failed > 0) {
336
420
  log(` ${target.platform.name} (${target.scope}): legacy Skill cleanup failed; update incomplete`);
337
421
  }
422
+ if (failed > 0) {
423
+ const dependencyReason = 'skipped because Skill installation failed';
424
+ ruleTargetResults.push({
425
+ scope: target.scope,
426
+ platform: target.platform.id,
427
+ platformName: target.platform.name,
428
+ copied: 0,
429
+ skipped: 0,
430
+ failed: 0,
431
+ status: 'skipped',
432
+ reason: dependencyReason,
433
+ });
434
+ hookTargetResults.push({
435
+ scope: target.scope,
436
+ platform: target.platform.id,
437
+ platformName: target.platform.name,
438
+ failed: 0,
439
+ status: 'skipped',
440
+ reason: dependencyReason,
441
+ });
442
+ continue;
443
+ }
338
444
  try {
339
- const { copied: ruleCopied } = await copyCometRulesForPlatform(baseDir, target.platform, true, languageId, target.scope);
340
- totalRulesCopied += ruleCopied;
341
- if (ruleCopied > 0) {
342
- log(` Comet rules -> ${target.platform.name}: ${ruleCopied} ${t(lang, 'rulesUpdated')}`);
445
+ const ruleResult = await copyCometRulesForPlatform(baseDir, target.platform, true, languageId, target.scope);
446
+ totalRulesCopied += ruleResult.copied;
447
+ totalRulesFailed += ruleResult.failed;
448
+ const ruleStatus = ruleResult.failed > 0 ? 'failed' : ruleResult.copied > 0 ? 'copied' : 'skipped';
449
+ const ruleReason = ruleResult.failed > 0
450
+ ? `${ruleResult.failed} Rule file(s) failed to install`
451
+ : !target.platform.rulesDir || !target.platform.rulesFormat
452
+ ? 'platform does not support rules'
453
+ : undefined;
454
+ ruleTargetResults.push({
455
+ scope: target.scope,
456
+ platform: target.platform.id,
457
+ platformName: target.platform.name,
458
+ ...ruleResult,
459
+ status: ruleStatus,
460
+ reason: ruleReason,
461
+ });
462
+ if (ruleResult.copied > 0) {
463
+ log(` Comet rules -> ${target.platform.name}: ${ruleResult.copied} ${t(lang, 'rulesUpdated')}`);
464
+ }
465
+ if (ruleResult.failed > 0) {
466
+ log(` Comet rules -> ${target.platform.name}: ${t(lang, 'rulesFailed')} (${ruleReason})`);
343
467
  }
344
468
  }
345
469
  catch (err) {
346
- log(` Comet rules -> ${target.platform.name}: ${t(lang, 'rulesFailed')} (${err.message})`);
470
+ totalRulesFailed++;
471
+ const reason = err.message;
472
+ ruleTargetResults.push({
473
+ scope: target.scope,
474
+ platform: target.platform.id,
475
+ platformName: target.platform.name,
476
+ copied: 0,
477
+ skipped: 0,
478
+ failed: 1,
479
+ status: 'failed',
480
+ reason,
481
+ });
482
+ log(` Comet rules -> ${target.platform.name}: ${t(lang, 'rulesFailed')} (${reason})`);
347
483
  }
348
- if (target.platform.supportsHooks) {
349
- try {
350
- const { installed, reason } = await installCometHooksForPlatform(baseDir, target.platform, target.scope);
351
- if (installed) {
352
- totalHooksInstalled++;
353
- log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksUpdated')}`);
354
- }
355
- else if (reason) {
356
- log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksSkipped')} (${reason})`);
357
- }
484
+ try {
485
+ const { status, reason } = await installCometHooksForPlatform(baseDir, target.platform, target.scope);
486
+ const hookFailed = status === 'failed' ? 1 : 0;
487
+ totalHooksFailed += hookFailed;
488
+ hookTargetResults.push({
489
+ scope: target.scope,
490
+ platform: target.platform.id,
491
+ platformName: target.platform.name,
492
+ failed: hookFailed,
493
+ status,
494
+ reason,
495
+ });
496
+ if (status === 'installed') {
497
+ totalHooksInstalled++;
498
+ log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksUpdated')}`);
358
499
  }
359
- catch (err) {
360
- log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksFailed')} (${err.message})`);
500
+ else if (status === 'failed') {
501
+ log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksFailed')} (${reason})`);
361
502
  }
503
+ else if (reason && target.platform.supportsHooks) {
504
+ log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksSkipped')} (${reason})`);
505
+ }
506
+ }
507
+ catch (err) {
508
+ totalHooksFailed++;
509
+ const reason = err.message;
510
+ hookTargetResults.push({
511
+ scope: target.scope,
512
+ platform: target.platform.id,
513
+ platformName: target.platform.name,
514
+ failed: 1,
515
+ status: 'failed',
516
+ reason,
517
+ });
518
+ log(` Comet hooks -> ${target.platform.name}: ${t(lang, 'hooksFailed')} (${reason})`);
362
519
  }
363
520
  }
364
521
  for (const scope of ['project', 'global']) {
@@ -419,12 +576,21 @@ async function updateSingleProject(projectPath, options, log) {
419
576
  },
420
577
  skills: {
421
578
  totalCopied,
579
+ totalFailed,
422
580
  cleanupFailed: totalCleanupFailed,
423
581
  installMode,
424
582
  targets: targetResults,
425
583
  },
426
- rules: { totalCopied: totalRulesCopied },
427
- hooks: { totalInstalled: totalHooksInstalled },
584
+ rules: {
585
+ totalCopied: totalRulesCopied,
586
+ totalFailed: totalRulesFailed,
587
+ targets: ruleTargetResults,
588
+ },
589
+ hooks: {
590
+ totalInstalled: totalHooksInstalled,
591
+ totalFailed: totalHooksFailed,
592
+ targets: hookTargetResults,
593
+ },
428
594
  projectInstructions: { updated: projectInstructionsUpdated },
429
595
  codegraph: codegraphStatus,
430
596
  };
@@ -439,11 +605,23 @@ function logSingleProjectSummary(result, options, log) {
439
605
  if (result.skills.cleanupFailed > 0) {
440
606
  log(` Skill cleanup failures: ${result.skills.cleanupFailed} (update incomplete)`);
441
607
  }
608
+ if (result.skills.totalFailed > 0) {
609
+ log(` Skill failures: ${result.skills.totalFailed} (update incomplete)`);
610
+ }
611
+ if (result.rules.totalFailed > 0) {
612
+ log(` Rule failures: ${result.rules.totalFailed} (update incomplete)`);
613
+ }
614
+ if (result.hooks.totalFailed > 0) {
615
+ log(` Hook failures: ${result.hooks.totalFailed} (update incomplete)`);
616
+ }
617
+ for (const failure of collectComponentFailures(result)) {
618
+ log(` ${failure.platformName} (${failure.scope}) ${failure.component}: ${failure.status} (${failure.failed}) - ${failure.reason}`);
619
+ }
442
620
  log(` ${t(lang, 'summaryCodegraph')} ${result.codegraph}`);
443
621
  log(` ${t(lang, 'summaryScope')} ${scopes}`);
444
622
  log(` ${t(lang, 'summaryLanguage')} ${languages}`);
445
- if (result.skills.cleanupFailed > 0) {
446
- log(`\n Update incomplete. Canonical Skills were installed, but legacy cleanup failed.\n`);
623
+ if (hasComponentFailures(result)) {
624
+ log(`\n Update incomplete. ${componentFailureReason(result)}.\n`);
447
625
  }
448
626
  else {
449
627
  log(`\n ${t(lang, 'updateComplete')}\n`);
@@ -528,12 +706,13 @@ async function updateAllIndexedProjects(registryProjects, options, log) {
528
706
  });
529
707
  continue;
530
708
  }
531
- if (result.skills.cleanupFailed > 0) {
709
+ if (hasComponentFailures(result)) {
532
710
  results.push({
533
711
  projectPath,
534
712
  status: 'failed',
535
- reason: `legacy Skill cleanup failed (${result.skills.cleanupFailed})`,
713
+ reason: componentFailureReason(result),
536
714
  targets: summarizeUpdatedTargets(result.skills.targets),
715
+ failures: collectComponentFailures(result),
537
716
  });
538
717
  continue;
539
718
  }
@@ -601,7 +780,7 @@ export async function updateCommand(targetPath, options = {}) {
601
780
  log(`\n ${t(lang, 'noInstallsFound')}\n`);
602
781
  return;
603
782
  }
604
- if (result.skills.cleanupFailed === 0) {
783
+ if (!hasComponentFailures(result)) {
605
784
  await upsertUpdatedProjectTargets(projectPath, result);
606
785
  }
607
786
  if (options.json) {