@tacuchi/agent-workflow-cli 19.0.0 → 19.2.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 (231) hide show
  1. package/README.md +2 -2
  2. package/dist/adapters/node-file-system.js +4 -4
  3. package/dist/adapters/node-file-system.js.map +1 -1
  4. package/dist/application/branch-resolver.d.ts +1 -1
  5. package/dist/application/branch-resolver.js +1 -1
  6. package/dist/application/check-branch-service.js +0 -1
  7. package/dist/application/check-branch-service.js.map +1 -1
  8. package/dist/application/checkpoint/state-reader.js +2 -2
  9. package/dist/application/checkpoint/state-reader.js.map +1 -1
  10. package/dist/application/checkpoint-service.d.ts +4 -4
  11. package/dist/application/checkpoint-service.d.ts.map +1 -1
  12. package/dist/application/checkpoint-service.js +4 -6
  13. package/dist/application/checkpoint-service.js.map +1 -1
  14. package/dist/application/git-flow-service.js +2 -2
  15. package/dist/application/git-flow-service.js.map +1 -1
  16. package/dist/application/humanize-es.d.ts.map +1 -1
  17. package/dist/application/humanize-es.js +0 -1
  18. package/dist/application/humanize-es.js.map +1 -1
  19. package/dist/application/markdown.d.ts.map +1 -1
  20. package/dist/application/markdown.js +0 -4
  21. package/dist/application/markdown.js.map +1 -1
  22. package/dist/application/mcp-dbhub-launcher.js +1 -1
  23. package/dist/application/mcp-dbhub-launcher.js.map +1 -1
  24. package/dist/application/mcp-host-paths.d.ts +8 -8
  25. package/dist/application/mcp-host-paths.js +8 -8
  26. package/dist/application/mcp-host-reader.js +2 -2
  27. package/dist/application/mcp-host-reader.js.map +1 -1
  28. package/dist/application/mcp-host-writer.js +3 -3
  29. package/dist/application/mcp-host-writer.js.map +1 -1
  30. package/dist/application/mcp-test-connection-service.d.ts +4 -4
  31. package/dist/application/mcp-test-connection-service.d.ts.map +1 -1
  32. package/dist/application/mcp-test-connection-service.js +6 -6
  33. package/dist/application/mcp-test-connection-service.js.map +1 -1
  34. package/dist/application/mcp-warp-postinstall-hint.js +4 -4
  35. package/dist/application/mcp-warp-postinstall-hint.js.map +1 -1
  36. package/dist/application/multiroot/claude.js +3 -3
  37. package/dist/application/multiroot/claude.js.map +1 -1
  38. package/dist/application/multiroot/warp.d.ts.map +1 -1
  39. package/dist/application/multiroot/warp.js +0 -1
  40. package/dist/application/multiroot/warp.js.map +1 -1
  41. package/dist/application/parsers/project-block.js +0 -2
  42. package/dist/application/parsers/project-block.js.map +1 -1
  43. package/dist/application/plugin-doctor-service.js +5 -5
  44. package/dist/application/plugin-doctor-service.js.map +1 -1
  45. package/dist/application/project-md-upsert-service.d.ts +4 -4
  46. package/dist/application/project-md-upsert-service.d.ts.map +1 -1
  47. package/dist/application/project-md-upsert-service.js +1 -1
  48. package/dist/application/project-md-upsert-service.js.map +1 -1
  49. package/dist/application/project-tab-data.d.ts +25 -25
  50. package/dist/application/project-tab-data.d.ts.map +1 -1
  51. package/dist/application/project-tab-data.js +24 -34
  52. package/dist/application/project-tab-data.js.map +1 -1
  53. package/dist/application/release-data/artifacts.js +2 -2
  54. package/dist/application/release-data/artifacts.js.map +1 -1
  55. package/dist/application/release-data/sessions.js +1 -1
  56. package/dist/application/release-data/sessions.js.map +1 -1
  57. package/dist/application/render/project-block.js +6 -6
  58. package/dist/application/render/project-block.js.map +1 -1
  59. package/dist/application/self/clean-legacy.d.ts +1 -0
  60. package/dist/application/self/clean-legacy.d.ts.map +1 -1
  61. package/dist/application/self/clean-legacy.js +6 -2
  62. package/dist/application/self/clean-legacy.js.map +1 -1
  63. package/dist/application/self/detect-hosts.js +5 -5
  64. package/dist/application/self/detect-hosts.js.map +1 -1
  65. package/dist/application/self/install-hooks.d.ts.map +1 -1
  66. package/dist/application/self/install-hooks.js +0 -1
  67. package/dist/application/self/install-hooks.js.map +1 -1
  68. package/dist/application/self/install-plugin-skills-git.js +3 -3
  69. package/dist/application/self/install-plugin-skills-git.js.map +1 -1
  70. package/dist/application/self/install-plugin-skills.js +4 -4
  71. package/dist/application/self/install-plugin-skills.js.map +1 -1
  72. package/dist/application/self/install-skill.d.ts +18 -1
  73. package/dist/application/self/install-skill.d.ts.map +1 -1
  74. package/dist/application/self/install-skill.js +81 -19
  75. package/dist/application/self/install-skill.js.map +1 -1
  76. package/dist/application/self/install-targets.d.ts +2 -0
  77. package/dist/application/self/install-targets.d.ts.map +1 -1
  78. package/dist/application/self/install-targets.js +30 -1
  79. package/dist/application/self/install-targets.js.map +1 -1
  80. package/dist/application/self/skills-manager.d.ts +34 -24
  81. package/dist/application/self/skills-manager.d.ts.map +1 -1
  82. package/dist/application/self/skills-manager.js +151 -110
  83. package/dist/application/self/skills-manager.js.map +1 -1
  84. package/dist/application/self/skills-registry.d.ts +10 -10
  85. package/dist/application/self/skills-registry.d.ts.map +1 -1
  86. package/dist/application/self/skills-registry.js +12 -12
  87. package/dist/application/self/skills-registry.js.map +1 -1
  88. package/dist/application/self/uninstall.d.ts +1 -0
  89. package/dist/application/self/uninstall.d.ts.map +1 -1
  90. package/dist/application/self/uninstall.js +38 -13
  91. package/dist/application/self/uninstall.js.map +1 -1
  92. package/dist/application/session-resolver.d.ts +1 -1
  93. package/dist/application/session-resolver.d.ts.map +1 -1
  94. package/dist/application/source-launch-scripts-service.js +0 -3
  95. package/dist/application/source-launch-scripts-service.js.map +1 -1
  96. package/dist/application/source-remove-service.d.ts +7 -7
  97. package/dist/application/source-remove-service.js +13 -13
  98. package/dist/application/source-remove-service.js.map +1 -1
  99. package/dist/application/templates/session.d.ts +2 -2
  100. package/dist/application/templates/session.d.ts.map +1 -1
  101. package/dist/application/templates/session.js +2 -6
  102. package/dist/application/templates/session.js.map +1 -1
  103. package/dist/application/terminal-launch.d.ts +1 -1
  104. package/dist/application/terminal-launch.js +1 -1
  105. package/dist/application/visibility-doctor-service.js +4 -4
  106. package/dist/application/visibility-doctor-service.js.map +1 -1
  107. package/dist/application/workspace-init-service.d.ts +1 -1
  108. package/dist/application/workspace-init-service.d.ts.map +1 -1
  109. package/dist/application/workspace-init-service.js +0 -3
  110. package/dist/application/workspace-init-service.js.map +1 -1
  111. package/dist/cli/commands/check-branch.js +1 -1
  112. package/dist/cli/commands/check-branch.js.map +1 -1
  113. package/dist/cli/commands/mcp.d.ts +1 -1
  114. package/dist/cli/commands/mcp.d.ts.map +1 -1
  115. package/dist/cli/commands/mcp.js +4 -4
  116. package/dist/cli/commands/mcp.js.map +1 -1
  117. package/dist/cli/commands/release-data.js +1 -1
  118. package/dist/cli/main.js +5 -5
  119. package/dist/cli/main.js.map +1 -1
  120. package/dist/cli/parser.d.ts.map +1 -1
  121. package/dist/cli/parser.js +1 -3
  122. package/dist/cli/parser.js.map +1 -1
  123. package/dist/cli/parsers/fuentes.js +3 -3
  124. package/dist/cli/parsers/fuentes.js.map +1 -1
  125. package/dist/cli/tui/app.d.ts +1 -1
  126. package/dist/cli/tui/app.d.ts.map +1 -1
  127. package/dist/cli/tui/app.js +36 -36
  128. package/dist/cli/tui/app.js.map +1 -1
  129. package/dist/cli/tui/components/detail-panel.d.ts +8 -7
  130. package/dist/cli/tui/components/detail-panel.d.ts.map +1 -1
  131. package/dist/cli/tui/components/detail-panel.js +11 -11
  132. package/dist/cli/tui/components/detail-panel.js.map +1 -1
  133. package/dist/cli/tui/components/focus-row.d.ts +10 -10
  134. package/dist/cli/tui/components/focus-row.d.ts.map +1 -1
  135. package/dist/cli/tui/components/focus-row.js +10 -10
  136. package/dist/cli/tui/components/focus-row.js.map +1 -1
  137. package/dist/cli/tui/components/home-footer.d.ts +1 -1
  138. package/dist/cli/tui/components/home-footer.d.ts.map +1 -1
  139. package/dist/cli/tui/components/home-header.js +4 -4
  140. package/dist/cli/tui/components/host-admin-section.d.ts.map +1 -1
  141. package/dist/cli/tui/components/host-admin-section.js +6 -7
  142. package/dist/cli/tui/components/host-admin-section.js.map +1 -1
  143. package/dist/cli/tui/components/list-row.d.ts +2 -2
  144. package/dist/cli/tui/components/list-row.js +10 -10
  145. package/dist/cli/tui/components/list-row.js.map +1 -1
  146. package/dist/cli/tui/components/notification-banner.d.ts +8 -7
  147. package/dist/cli/tui/components/notification-banner.d.ts.map +1 -1
  148. package/dist/cli/tui/components/notification-banner.js +9 -8
  149. package/dist/cli/tui/components/notification-banner.js.map +1 -1
  150. package/dist/cli/tui/components/notification-stack.d.ts +6 -6
  151. package/dist/cli/tui/components/notification-stack.d.ts.map +1 -1
  152. package/dist/cli/tui/components/notification-stack.js +5 -5
  153. package/dist/cli/tui/components/page-head.d.ts +5 -5
  154. package/dist/cli/tui/components/page-head.d.ts.map +1 -1
  155. package/dist/cli/tui/components/screen-frame.d.ts.map +1 -1
  156. package/dist/cli/tui/components/screen-frame.js +6 -5
  157. package/dist/cli/tui/components/screen-frame.js.map +1 -1
  158. package/dist/cli/tui/components/tab-bar.d.ts +5 -5
  159. package/dist/cli/tui/components/tab-bar.d.ts.map +1 -1
  160. package/dist/cli/tui/components/tab-bar.js +3 -3
  161. package/dist/cli/tui/components/tabs-config.d.ts +1 -1
  162. package/dist/cli/tui/components/tabs-config.d.ts.map +1 -1
  163. package/dist/cli/tui/components/tabs-config.js +3 -6
  164. package/dist/cli/tui/components/tabs-config.js.map +1 -1
  165. package/dist/cli/tui/components/workspace-init-alias.d.ts +2 -2
  166. package/dist/cli/tui/components/workspace-init-alias.d.ts.map +1 -1
  167. package/dist/cli/tui/components/workspace-init-alias.js +6 -6
  168. package/dist/cli/tui/components/workspace-init-alias.js.map +1 -1
  169. package/dist/cli/tui/components/workspace-init-form.js +3 -3
  170. package/dist/cli/tui/components/workspace-init-form.js.map +1 -1
  171. package/dist/cli/tui/data/recommended-skills.js +11 -11
  172. package/dist/cli/tui/data/recommended-skills.js.map +1 -1
  173. package/dist/cli/tui/data/workflow-content.js +11 -11
  174. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  175. package/dist/cli/tui/hosts.d.ts +5 -5
  176. package/dist/cli/tui/hosts.d.ts.map +1 -1
  177. package/dist/cli/tui/hosts.js +7 -9
  178. package/dist/cli/tui/hosts.js.map +1 -1
  179. package/dist/cli/tui/notification-center.d.ts +11 -11
  180. package/dist/cli/tui/notification-center.d.ts.map +1 -1
  181. package/dist/cli/tui/notification-center.js +3 -3
  182. package/dist/cli/tui/notification-center.js.map +1 -1
  183. package/dist/cli/tui/row-width.d.ts +9 -10
  184. package/dist/cli/tui/row-width.d.ts.map +1 -1
  185. package/dist/cli/tui/row-width.js +9 -10
  186. package/dist/cli/tui/row-width.js.map +1 -1
  187. package/dist/cli/tui/run.d.ts.map +1 -1
  188. package/dist/cli/tui/run.js +13 -12
  189. package/dist/cli/tui/run.js.map +1 -1
  190. package/dist/cli/tui/tabs/config-tab.d.ts +1 -1
  191. package/dist/cli/tui/tabs/config-tab.d.ts.map +1 -1
  192. package/dist/cli/tui/tabs/config-tab.js +6 -6
  193. package/dist/cli/tui/tabs/config-tab.js.map +1 -1
  194. package/dist/cli/tui/tabs/mcp-tab.js +8 -8
  195. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  196. package/dist/cli/tui/tabs/project-tab.js +38 -37
  197. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  198. package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
  199. package/dist/cli/tui/tabs/skills-tab.js +30 -26
  200. package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
  201. package/dist/cli/tui/tabs/status-tab.d.ts +4 -4
  202. package/dist/cli/tui/tabs/status-tab.d.ts.map +1 -1
  203. package/dist/cli/tui/tabs/status-tab.js +7 -7
  204. package/dist/cli/tui/tabs/status-tab.js.map +1 -1
  205. package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
  206. package/dist/cli/tui/tabs/workflow-tab.js +4 -5
  207. package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
  208. package/dist/cli/tui/theme.d.ts +3 -2
  209. package/dist/cli/tui/theme.d.ts.map +1 -1
  210. package/dist/cli/tui/theme.js +23 -22
  211. package/dist/cli/tui/theme.js.map +1 -1
  212. package/dist/cli/tui/tui-prefs.d.ts +3 -3
  213. package/dist/cli/tui/tui-prefs.d.ts.map +1 -1
  214. package/dist/cli/tui/tui-prefs.js +5 -5
  215. package/dist/cli/tui/tui-prefs.js.map +1 -1
  216. package/dist/cli/tui/use-list-cursor.d.ts +1 -1
  217. package/dist/cli/tui/use-list-cursor.d.ts.map +1 -1
  218. package/dist/cli/tui/use-list-cursor.js +2 -2
  219. package/dist/cli/tui/use-list-cursor.js.map +1 -1
  220. package/dist/cli/tui/use-terminal-size.js +5 -5
  221. package/dist/cli/tui/use-terminal-size.js.map +1 -1
  222. package/dist/domain/harnesses.d.ts.map +1 -1
  223. package/dist/domain/harnesses.js +11 -2
  224. package/dist/domain/harnesses.js.map +1 -1
  225. package/dist/domain/mcp-entry.js +3 -3
  226. package/dist/domain/mcp-entry.js.map +1 -1
  227. package/dist/domain/session.d.ts +2 -3
  228. package/dist/domain/session.d.ts.map +1 -1
  229. package/dist/domain/types.d.ts +2 -2
  230. package/package.json +2 -2
  231. package/skills/w/harness/HARNESS.md +1 -1
@@ -1,20 +1,22 @@
1
- // Motor de skills sueltas (modelo skills.sh): canónica en ~/.agents/skills/<n>
2
- // (el ancla del estándar abierto que escanean los hosts no-Claude) + réplica en
3
- // ~/.claude/skills/<n> vía symlink, con fallback a copia (Windows sin links).
1
+ // Standalone-skills engine (skills.sh model): canonical copy in
2
+ // ~/.agents/skills/<n> (the open-standard anchor that non-Claude hosts scan)
3
+ // + replica in ~/.claude/skills/<n> via symlink, with a copy fallback
4
+ // (Windows without links).
4
5
  //
5
- // El registro user-level (skills-registry.ts) es la fuente de verdad de QUÉ
6
- // administra este motor. Guards de ownership (el motor escribe bajo el HOME
7
- // real del usuario, donde también viven el bundle `w`, skills de plugins y
8
- // skills manuales):
9
- // - toda operación exige nombre registrado (SKILL_NOT_REGISTERED);
10
- // - la canónica solo se crea/borra si este motor la materializó — señal:
11
- // `installedAt` en el registro (SKILL_NAME_COLLISION al chocar con un dir
12
- // ajeno; en uninstall/remove el dir ajeno se conserva con warning);
13
- // - la réplica de Claude es nuestra solo si es un symlink QUE APUNTA a la
14
- // canónica o un dir con mode:"copy" registrado (FOREIGN_REPLICA si no), y
15
- // se verifica ANTES de mutar nada;
16
- // - un registro ilegible (warning del read) aborta toda mutación: jamás se
17
- // reescribe por encima de entradas que no se pudieron leer.
6
+ // The user-level registry (skills-registry.ts) is the source of truth for WHAT
7
+ // this engine manages. Ownership guards (the engine writes under the user's
8
+ // real HOME, which also hosts the `w` bundle, plugin skills and manual
9
+ // skills):
10
+ // - every operation requires a registered name (SKILL_NOT_REGISTERED);
11
+ // - the canonical dir is only created/deleted if this engine materialized it
12
+ // — signal: `installedAt` in the registry (SKILL_NAME_COLLISION when
13
+ // colliding with a foreign dir; on uninstall/remove the foreign dir is
14
+ // preserved with a warning);
15
+ // - the Claude replica is ours only if it is a symlink THAT POINTS AT the
16
+ // canonical or a dir with registered mode:"copy" (FOREIGN_REPLICA
17
+ // otherwise), verified BEFORE mutating anything;
18
+ // - an unreadable registry (read warning) aborts every mutation: never
19
+ // rewrite over entries that could not be read.
18
20
  import { readFile, readdir, readlink, rename } from "node:fs/promises";
19
21
  import { mkdtemp, rm } from "node:fs/promises";
20
22
  import { tmpdir } from "node:os";
@@ -23,7 +25,7 @@ import { gitClone } from "./install-plugin-skills-git.js";
23
25
  import { copyDir, hasValidFrontmatter } from "./install-plugin-skills.js";
24
26
  import { COMMAND_SKILL_PREFIX, LEGACY_SKILL_NAMES, SKILL_DIR_NAME } from "./install-skill.js";
25
27
  import { isValidSkillName, readSkillsRegistry, readSkillsShLockSources, writeSkillsRegistry, } from "./skills-registry.js";
26
- // skills/<categoría>/<skill> (mattpocock/skills) cabe en 3 niveles bajo la raíz.
28
+ // skills/<category>/<skill> (mattpocock/skills) fits within 3 levels below the root.
27
29
  const MAX_SCAN_DEPTH = 3;
28
30
  export function canonicalSkillsRoot(home) {
29
31
  return join(home, ".agents", "skills");
@@ -31,17 +33,29 @@ export function canonicalSkillsRoot(home) {
31
33
  export function claudeReplicaRoot(home) {
32
34
  return join(home, ".claude", "skills");
33
35
  }
36
+ export function geminiReplicaRoot(home) {
37
+ return join(home, ".gemini", "skills");
38
+ }
39
+ // Ownership marker for COPY replicas (counterpart of the symlink, which
40
+ // authenticates by pointing at our canonical): without it, a same-named real
41
+ // dir from another origin would be indistinguishable from our copy and
42
+ // teardown/reinstall could clobber it.
43
+ export const REPLICA_MARKER_FILENAME = ".aw-replica";
44
+ const REPLICA_HOSTS = [
45
+ { key: "claude", root: claudeReplicaRoot, preferSymlink: true },
46
+ { key: "gemini", root: geminiReplicaRoot, preferSymlink: false },
47
+ ];
34
48
  /**
35
- * Normaliza la fuente del usuario: URL git (con `#ref`), atajo `owner/repo`
36
- * (→ GitHub) o path local absoluto. Paths relativos se rechazan a propósito:
37
- * el registro debe poder resolverse desde cualquier cwd futuro.
49
+ * Normalizes the user's source: git URL (with `#ref`), `owner/repo` shorthand
50
+ * (→ GitHub) or absolute local path. Relative paths are rejected on purpose:
51
+ * the registry must resolve from any future cwd.
38
52
  */
39
53
  export function resolveSkillSource(raw, ref) {
40
54
  const trimmed = raw.trim();
41
55
  if (trimmed.length === 0)
42
56
  return { error: "la fuente no puede estar vacía" };
43
- // file:// cuenta como git (clone por transporte local) — permite registrar
44
- // repos locales CON historial, a diferencia del path plano.
57
+ // file:// counts as git (clone over local transport) — lets users register
58
+ // local repos WITH history, unlike a plain path.
45
59
  if (/^(https?:\/\/|git@|ssh:\/\/|file:\/\/)/.test(trimmed)) {
46
60
  const hashIdx = trimmed.indexOf("#");
47
61
  const url = hashIdx >= 0 ? trimmed.slice(0, hashIdx) : trimmed;
@@ -50,8 +64,8 @@ export function resolveSkillSource(raw, ref) {
50
64
  }
51
65
  if (isAbsolute(trimmed))
52
66
  return { kind: "local", path: trimmed };
53
- // El atajo GitHub exige segmentos que arranquen alfanuméricos: "./x" o "../x"
54
- // son paths relativos (rechazados), no owner/repo.
67
+ // The GitHub shorthand requires segments starting alphanumeric: "./x" or
68
+ // "../x" are relative paths (rejected), not owner/repo.
55
69
  if (/^[A-Za-z0-9][\w.-]*\/[A-Za-z0-9][\w.-]*$/.test(trimmed)) {
56
70
  return { kind: "git", url: `https://github.com/${trimmed}.git`, ...(ref ? { ref } : {}) };
57
71
  }
@@ -67,14 +81,14 @@ async function isSkillDir(dir) {
67
81
  return false;
68
82
  }
69
83
  }
70
- /** `name:` del frontmatter el nombre real de la skill cuando la fuente ES un
71
- * skill-dir (el basename de un clone temporal es aleatorio, jamás sirve). */
84
+ /** Frontmatter `name:` — the skill's real name when the source IS a skill dir
85
+ * (the basename of a temp clone is random, never usable). */
72
86
  function frontmatterName(content) {
73
87
  const block = content.match(/^---[ \t]*\r?\n([\s\S]*?)\r?\n---/)?.[1] ?? "";
74
88
  return block.match(/^name:\s*(\S[^\r\n]*)/m)?.[1]?.trim() ?? null;
75
89
  }
76
- /** Walk acotado: skills anidadas hasta skills/<categoría>/<skill>; salta
77
- * dot-dirs, node_modules y symlinks (Dirent de link no es isDirectory). */
90
+ /** Bounded walk: nested skills up to skills/<category>/<skill>; skips
91
+ * dot-dirs, node_modules and symlinks (a link's Dirent is not isDirectory). */
78
92
  async function walkSkillDirs(dir, depth) {
79
93
  if (depth >= MAX_SCAN_DEPTH)
80
94
  return [];
@@ -101,8 +115,8 @@ async function walkSkillDirs(dir, depth) {
101
115
  }
102
116
  return out;
103
117
  }
104
- /** Skill dirs de una fuente: el dir mismo (si ES una skill, nombrado por su
105
- * frontmatter) o el árbol; nombres duplicados o inválidos se descartan. */
118
+ /** Skill dirs of a source: the dir itself (if it IS a skill, named by its
119
+ * frontmatter) or the tree; duplicate or invalid names are discarded. */
106
120
  async function collectCandidates(dir) {
107
121
  if (await isSkillDir(dir)) {
108
122
  const content = await readFile(join(dir, "SKILL.md"), "utf8");
@@ -118,7 +132,7 @@ async function collectCandidates(dir) {
118
132
  }
119
133
  return [...byName.values()];
120
134
  }
121
- /** Trae la fuente a un dir legible y lista sus skills (clone temp si es git). */
135
+ /** Brings the source into a readable dir and lists its skills (temp clone for git). */
122
136
  async function fetchSourceCandidates(resolved, ctx) {
123
137
  if (resolved.kind === "local") {
124
138
  if (!(await ctx.fs.exists(resolved.path))) {
@@ -139,8 +153,8 @@ async function fetchSourceCandidates(resolved, ctx) {
139
153
  }
140
154
  return { candidates: await collectCandidates(temp), cleanup };
141
155
  }
142
- /** Lectura previa a una mutación: un registro ilegible ABORTAla primera
143
- * escritura tras un read fallido pisaría todas las entradas previas. */
156
+ /** Read preceding a mutation: an unreadable registry ABORTSthe first write
157
+ * after a failed read would clobber every prior entry. */
144
158
  async function readRegistryForWrite(ctx) {
145
159
  const read = await readSkillsRegistry(ctx);
146
160
  if (read.warning) {
@@ -151,8 +165,8 @@ async function readRegistryForWrite(ctx) {
151
165
  }
152
166
  return { registry: read.registry };
153
167
  }
154
- /** Inspección sin efectos: lista las skills de una fuente para que el wizard
155
- * muestre picker + warning de terceros ANTES de registrar nada. */
168
+ /** Side-effect-free inspection: lists a source's skills so the wizard can show
169
+ * the picker + third-party warning BEFORE registering anything. */
156
170
  export async function probeSkillSource(ctx, input) {
157
171
  const resolved = resolveSkillSource(input.source, input.ref);
158
172
  if ("error" in resolved)
@@ -203,14 +217,14 @@ export async function registerSkill(ctx, input) {
203
217
  if (registry.skills[picked.name]) {
204
218
  return fail("SKILL_ALREADY_REGISTERED", `'${picked.name}' ya está registrada (fuente: ${registry.skills[picked.name]?.source})`);
205
219
  }
206
- // `w-*` es el namespace de los wrappers sintetizados del bundle
207
- // (install-skill.ts) — registrar una suelta ahí la dejaría a merced del
208
- // sweep de install/uninstall en los mismos roots.
220
+ // `w-*` is the namespace of the bundle's synthesized wrappers
221
+ // (install-skill.ts) — registering a standalone skill there would leave it
222
+ // at the mercy of the install/uninstall sweep over the same roots.
209
223
  if (picked.name.startsWith(COMMAND_SKILL_PREFIX)) {
210
224
  return fail("RESERVED_SKILL_PREFIX", `'${picked.name}' usa el prefijo reservado '${COMMAND_SKILL_PREFIX}' (wrappers del bundle) — elegí otro nombre`);
211
225
  }
212
- // Guard de ownership: un dir canónico existente NO registrado es de otro
213
- // (bundle `w`, skill de plugin, instalación manual) — nunca lo adoptamos.
226
+ // Ownership guard: an existing UNregistered canonical dir belongs to someone
227
+ // else (`w` bundle, plugin skill, manual install) — we never adopt it.
214
228
  const canonical = join(canonicalSkillsRoot(ctx.env.homeDir()), picked.name);
215
229
  if (await ctx.fs.exists(canonical)) {
216
230
  return fail("SKILL_NAME_COLLISION", `ya existe ${canonical} y no está en el registro de sueltas — elegí otro nombre o resolvé la colisión a mano`);
@@ -266,11 +280,15 @@ export async function installSkill(ctx, name, opts = { refetch: true }) {
266
280
  return notRegistered(name);
267
281
  const home = ctx.env.homeDir();
268
282
  const canonical = join(canonicalSkillsRoot(home), name);
269
- // Pre-flight ANTES de mutar nada: réplica ajena o colisión de canónica
270
- // abortan sin tocar la instalación previa ni el dir ajeno.
271
- const replicaState = await inspectReplica(ctx, name, entry.mode);
272
- if (replicaState === "foreign") {
273
- return fail("FOREIGN_REPLICA", `ya existe ${join(claudeReplicaRoot(home), name)} y no lo creó este manager — resolvé la colisión a mano`);
283
+ // Pre-flight BEFORE mutating anything: a foreign replica (on any host) or a
284
+ // canonical collision aborts without touching the prior install or the foreign dir.
285
+ const replicaStates = new Map();
286
+ for (const host of REPLICA_HOSTS) {
287
+ const state = await inspectReplica(ctx, name, entry.mode, host);
288
+ if (state === "foreign") {
289
+ return fail("FOREIGN_REPLICA", `ya existe ${join(host.root(home), name)} y no lo creó este manager — resolvé la colisión a mano`);
290
+ }
291
+ replicaStates.set(host.key, state);
274
292
  }
275
293
  if (opts.refetch && !entry.installedAt && (await ctx.fs.exists(canonical))) {
276
294
  return fail("SKILL_NAME_COLLISION", `ya existe ${canonical} y este manager no lo materializó — resolvé la colisión a mano`);
@@ -297,20 +315,27 @@ export async function installSkill(ctx, name, opts = { refetch: true }) {
297
315
  }
298
316
  }
299
317
  else if (!entry.installedAt || !(await ctx.fs.exists(canonical))) {
300
- // Reinstall exige que ESTE manager haya materializado la canónica: sin
301
- // installedAt, un dir homónimo existente es ajeno y no se replica.
318
+ // Reinstall requires THIS manager to have materialized the canonical dir:
319
+ // without installedAt, an existing same-named dir is foreign and is not replicated.
302
320
  return fail("SKILL_NOT_INSTALLED", `'${name}' no está instalada (no existe ${canonical} materializada por este manager); usá Install/Update`);
303
321
  }
304
- const replica = await replicateToClaude(ctx, name, replicaState);
305
- // Re-leer antes de escribir: el clone puede tardar y otra invocación pudo
306
- // tocar el registro en el medio — nunca escribir un snapshot viejo.
322
+ const replicas = [];
323
+ for (const host of REPLICA_HOSTS) {
324
+ replicas.push(await replicateToHost(ctx, name, replicaStates.get(host.key) ?? "absent", host));
325
+ }
326
+ // The registered mode is still the Claude replica's (the primary one): the
327
+ // TUI's "(copy)" badge flags ITS degradation (Windows without symlinks);
328
+ // the gemini copy is by-design and authenticates via marker, not mode.
329
+ const claudeReplica = replicas[0] ?? { path: canonical, mode: "symlink" };
330
+ // Re-read before writing: the clone can take a while and another invocation
331
+ // may have touched the registry in between — never write a stale snapshot.
307
332
  const fresh = await readRegistryForWrite(ctx);
308
333
  if ("error" in fresh)
309
334
  return fail(fresh.code, fresh.error);
310
335
  const current = fresh.registry.skills[name] ?? entry;
311
336
  fresh.registry.skills[name] = {
312
337
  ...current,
313
- mode: replica.mode,
338
+ mode: claudeReplica.mode,
314
339
  ...(opts.refetch ? { installedAt: new Date().toISOString() } : {}),
315
340
  };
316
341
  await writeSkillsRegistry(ctx, fresh.registry);
@@ -320,19 +345,22 @@ export async function installSkill(ctx, name, opts = { refetch: true }) {
320
345
  status: opts.refetch ? "installed" : "reinstalled",
321
346
  name,
322
347
  canonical,
323
- replica: replica.path,
324
- mode: replica.mode,
325
- summary: `Skill '${name}' materializada en ${canonical} (réplica Claude: ${replica.mode}).`,
348
+ replica: claudeReplica.path,
349
+ mode: claudeReplica.mode,
350
+ replicas: replicas.map((r) => ({ host: r.host, path: r.path, mode: r.mode })),
351
+ summary: `Skill '${name}' materializada en ${canonical} (réplicas: ${replicas
352
+ .map((r) => `${r.host} ${r.mode}`)
353
+ .join(" · ")}).`,
326
354
  },
327
355
  exitCode: 0,
328
356
  };
329
357
  }
330
- /** Reinstall: repara canónicaréplica sin tocar la fuente (offline-safe). */
358
+ /** Reinstall: repairs canonicalreplica without touching the source (offline-safe). */
331
359
  export async function reinstallSkill(ctx, name) {
332
360
  return installSkill(ctx, name, { refetch: false });
333
361
  }
334
- /** Update: re-fetch del ref registrado; solo fuentes git. Staging+swap: un fallo
335
- * de fetch deja la instalación previa intacta. */
362
+ /** Update: re-fetches the registered ref; git sources only. Staging+swap: a
363
+ * fetch failure leaves the prior install intact. */
336
364
  export async function updateSkill(ctx, name) {
337
365
  const read = await readRegistryForWrite(ctx);
338
366
  if ("error" in read)
@@ -404,9 +432,9 @@ export async function removeSkill(ctx, name) {
404
432
  exitCode: 0,
405
433
  };
406
434
  }
407
- /** Lista única para la TUI: registradas (instaladas o no) + canónicas fuera del
408
- * registro (`unmanaged`) + semilla no registrada. Orden: installed → unmanaged
409
- * → registered → recommended; alfabético dentro de cada grupo. */
435
+ /** Single list for the TUI: registered (installed or not) + canonicals outside
436
+ * the registry (`unmanaged`) + unregistered seed. Order: installed → unmanaged
437
+ * → registered → recommended; alphabetical within each group. */
410
438
  export async function listSkills(ctx, seed) {
411
439
  const { registry, warning } = await readSkillsRegistry(ctx);
412
440
  const home = ctx.env.homeDir();
@@ -415,6 +443,7 @@ export async function listSkills(ctx, seed) {
415
443
  for (const [name, entry] of Object.entries(registry.skills)) {
416
444
  const canonical = await ctx.fs.exists(join(canonicalSkillsRoot(home), name));
417
445
  const replica = (await ctx.fs.lstat(join(claudeReplicaRoot(home), name))) !== null;
446
+ const gemini = (await ctx.fs.lstat(join(geminiReplicaRoot(home), name))) !== null;
418
447
  const description = seedByName.get(name)?.description;
419
448
  items.push({
420
449
  name,
@@ -424,16 +453,17 @@ export async function listSkills(ctx, seed) {
424
453
  ...(entry.installedAt ? { installedAt: entry.installedAt } : {}),
425
454
  ...(description ? { description } : {}),
426
455
  status: canonical ? "installed" : "registered",
427
- replicas: { agents: canonical, claude: replica },
456
+ replicas: { agents: canonical, claude: replica, gemini },
428
457
  });
429
458
  }
430
- // Canónicas fuera del registro (skills.sh, manuales): visibles como
431
- // `unmanaged` para que la tab refleje TODO el ancla, sin volverlas operables
432
- // (guard de ownership intacto). La fuente sale del lock de skills.sh si la
433
- // conoce; "" cuando nadie la sabe. Excluidos: el bundle `w` y su namespace
434
- // `w-*` sintetizadas (skill-as-command) + nombres legacy (los administra [Workflows], no son
435
- // "de otro"). Con registro ILEGIBLE no se clasifica nada: podrían ser del
436
- // motor y quedarían mal etiquetadas como ajenas.
459
+ // Canonicals outside the registry (skills.sh, manual): shown as `unmanaged`
460
+ // so the tab reflects the WHOLE anchor, without making them operable
461
+ // (ownership guard intact). The source comes from the skills.sh lock when it
462
+ // knows it; "" when nobody does. Excluded: the `w` bundle and its
463
+ // synthesized `w-*` namespace (skill-as-command) + legacy names (managed by
464
+ // [Workflows], not "someone else's"). With an UNREADABLE registry nothing is
465
+ // classified: entries could belong to this engine and would be mislabeled as
466
+ // foreign.
437
467
  const bundleOwned = new Set([SKILL_DIR_NAME, ...LEGACY_SKILL_NAMES]);
438
468
  const unmanaged = new Set();
439
469
  const root = canonicalSkillsRoot(home);
@@ -441,8 +471,8 @@ export async function listSkills(ctx, seed) {
441
471
  try {
442
472
  const lockSources = await readSkillsShLockSources(ctx);
443
473
  for (const entry of await ctx.fs.list(root)) {
444
- // Un symlink-a-dir se tipa "other" (Dirent no lo resuelve); solo se
445
- // descartan files — isSkillDir lee A TRAVÉS del link y decide.
474
+ // A symlink-to-dir is typed "other" (Dirent does not resolve it); only
475
+ // files are discarded — isSkillDir reads THROUGH the link and decides.
446
476
  if (entry.type === "file" || entry.name.startsWith("."))
447
477
  continue;
448
478
  if (bundleOwned.has(entry.name) || entry.name.startsWith(COMMAND_SKILL_PREFIX))
@@ -453,25 +483,26 @@ export async function listSkills(ctx, seed) {
453
483
  continue;
454
484
  unmanaged.add(entry.name);
455
485
  const replica = (await ctx.fs.lstat(join(claudeReplicaRoot(home), entry.name))) !== null;
486
+ const gemini = (await ctx.fs.lstat(join(geminiReplicaRoot(home), entry.name))) !== null;
456
487
  items.push({
457
488
  name: entry.name,
458
489
  source: lockSources[entry.name] ?? "",
459
490
  status: "unmanaged",
460
- replicas: { agents: true, claude: replica },
491
+ replicas: { agents: true, claude: replica, gemini },
461
492
  });
462
493
  }
463
494
  }
464
495
  catch {
465
- // Ancla ausente o ilegible (p.ej. permisos): el scan es best-effort —
466
- // las administradas ya están listadas; jamás vaciamos la tab por esto.
496
+ // Anchor absent or unreadable (e.g. permissions): the scan is best-effort —
497
+ // managed skills are already listed; never empty the tab over this.
467
498
  }
468
499
  }
469
500
  for (const s of seed) {
470
501
  if (Object.hasOwn(registry.skills, s.name) || unmanaged.has(s.name))
471
502
  continue;
472
- // Canónica homónima que el scan no listó (frontmatter inválido, file,
473
- // registro ilegible): ofrecer Install garantiza SKILL_NAME_COLLISION —
474
- // mejor no ofrecer la semilla.
503
+ // Same-named canonical the scan did not list (invalid frontmatter, file,
504
+ // unreadable registry): offering Install guarantees SKILL_NAME_COLLISION —
505
+ // better not to offer the seed.
475
506
  if (await ctx.fs.exists(join(root, s.name)))
476
507
  continue;
477
508
  items.push({
@@ -479,7 +510,7 @@ export async function listSkills(ctx, seed) {
479
510
  source: s.source,
480
511
  description: s.description,
481
512
  status: "recommended",
482
- replicas: { agents: false, claude: false },
513
+ replicas: { agents: false, claude: false, gemini: false },
483
514
  });
484
515
  }
485
516
  const rank = {
@@ -490,11 +521,11 @@ export async function listSkills(ctx, seed) {
490
521
  };
491
522
  return items.sort((a, b) => rank[a.status] - rank[b.status] || a.name.localeCompare(b.name));
492
523
  }
493
- // --- internos ---
524
+ // --- internals ---
494
525
  /**
495
- * Copia src a un staging oculto y lo intercambia con la canónica; el .bak solo
496
- * se descarta cuando el swap completóun fallo restaura el estado previo.
497
- * `renameFn` es inyectable para poder testear la rama de restore.
526
+ * Copies src into a hidden staging dir and swaps it with the canonical one;
527
+ * the .bak is only discarded once the swap completeda failure restores the
528
+ * previous state. `renameFn` is injectable to test the restore branch.
498
529
  */
499
530
  export async function materializeCanonical(ctx, srcDir, canonical, name, renameFn = rename) {
500
531
  const root = canonicalSkillsRoot(ctx.env.homeDir());
@@ -522,12 +553,14 @@ export async function materializeCanonical(ctx, srcDir, canonical, name, renameF
522
553
  await ctx.fs.remove(staging);
523
554
  }
524
555
  }
525
- /** Ownership de la réplica: nuestra solo si es un symlink que apunta a NUESTRA
526
- * canónica, o un dir real con mode:"copy" registrado. Un symlink del usuario
527
- * hacia otro lado es ajeno jamás se re-apunta. */
528
- async function inspectReplica(ctx, name, registeredMode) {
556
+ /** Replica ownership on a host: ours only if it is a symlink pointing at OUR
557
+ * canonical, a real dir with the `.aw-replica` marker, or legacy
558
+ * (pre-marker copies, Windows) a real dir with registered mode:"copy". A
559
+ * user's symlink pointing elsewhere is foreign — never re-pointed. */
560
+ async function inspectReplica(ctx, name, registeredMode, host) {
529
561
  const home = ctx.env.homeDir();
530
- const replica = join(claudeReplicaRoot(home), name);
562
+ const replicaRoot = host.root(home);
563
+ const replica = join(replicaRoot, name);
531
564
  const existing = await ctx.fs.lstat(replica);
532
565
  if (!existing)
533
566
  return "absent";
@@ -535,45 +568,53 @@ async function inspectReplica(ctx, name, registeredMode) {
535
568
  try {
536
569
  const target = await readlink(replica);
537
570
  const canonical = join(canonicalSkillsRoot(home), name);
538
- return resolve(join(claudeReplicaRoot(home)), target) === resolve(canonical)
539
- ? "ours"
540
- : "foreign";
571
+ return resolve(replicaRoot, target) === resolve(canonical) ? "ours" : "foreign";
541
572
  }
542
573
  catch {
543
574
  return "foreign";
544
575
  }
545
576
  }
546
- return registeredMode === "copy" ? "ours" : "foreign";
577
+ if (await ctx.fs.exists(join(replica, REPLICA_MARKER_FILENAME)))
578
+ return "ours";
579
+ // Legacy: pre-marker copies on the claude host authenticated only via the
580
+ // registered mode.
581
+ return host.key === "claude" && registeredMode === "copy" ? "ours" : "foreign";
547
582
  }
548
- /** Materializa la réplica (el pre-flight ya garantizó que no es ajena). */
549
- async function replicateToClaude(ctx, name, state) {
583
+ /** Materializes the replica on a host (pre-flight already ensured it is not foreign). */
584
+ async function replicateToHost(ctx, name, state, host) {
550
585
  const home = ctx.env.homeDir();
551
586
  const canonical = join(canonicalSkillsRoot(home), name);
552
- const replica = join(claudeReplicaRoot(home), name);
587
+ const replicaRoot = host.root(home);
588
+ const replica = join(replicaRoot, name);
553
589
  if (state === "ours")
554
590
  await ctx.fs.remove(replica);
555
- await ctx.fs.mkdirp(claudeReplicaRoot(home));
556
- try {
557
- await ctx.fs.symlink(canonical, replica);
558
- return { path: replica, mode: "symlink" };
559
- }
560
- catch {
561
- // Sin symlinks (Windows sin Developer Mode / EPERM) → copia real.
562
- await copyDir(canonical, replica);
563
- return { path: replica, mode: "copy" };
591
+ await ctx.fs.mkdirp(replicaRoot);
592
+ if (host.preferSymlink) {
593
+ try {
594
+ await ctx.fs.symlink(canonical, replica);
595
+ return { host: host.key, path: replica, mode: "symlink" };
596
+ }
597
+ catch {
598
+ // No symlinks (Windows without Developer Mode / EPERM) → real copy.
599
+ }
564
600
  }
601
+ await copyDir(canonical, replica);
602
+ await ctx.fs.writeText(join(replica, REPLICA_MARKER_FILENAME), `${canonical}\n`);
603
+ return { host: host.key, path: replica, mode: "copy" };
565
604
  }
566
- /** Desmonta réplica y canónica respetando ownership; devuelve warning si algo
567
- * ajeno homónimo se conservó. */
605
+ /** Tears down replicas and the canonical dir respecting ownership; returns a
606
+ * warning if a same-named foreign dir was preserved. */
568
607
  async function teardownSkill(ctx, name, entry) {
569
608
  const home = ctx.env.homeDir();
570
609
  const warnings = [];
571
- const replica = join(claudeReplicaRoot(home), name);
572
- const replicaState = await inspectReplica(ctx, name, entry.mode);
573
- if (replicaState === "ours")
574
- await ctx.fs.remove(replica);
575
- else if (replicaState === "foreign") {
576
- warnings.push(`se conservó ${replica}: existe pero no lo creó este manager`);
610
+ for (const host of REPLICA_HOSTS) {
611
+ const replica = join(host.root(home), name);
612
+ const replicaState = await inspectReplica(ctx, name, entry.mode, host);
613
+ if (replicaState === "ours")
614
+ await ctx.fs.remove(replica);
615
+ else if (replicaState === "foreign") {
616
+ warnings.push(`se conservó ${replica}: existe pero no lo creó este manager`);
617
+ }
577
618
  }
578
619
  const canonical = join(canonicalSkillsRoot(home), name);
579
620
  if (entry.installedAt) {
@@ -1 +1 @@
1
- {"version":3,"file":"skills-manager.js","sourceRoot":"","sources":["../../../src/application/self/skills-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills-manager.js","sourceRoot":"","sources":["../../../src/application/self/skills-manager.ts"],"names":[],"mappings":"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"}