@tacuchi/agent-workflow-cli 21.10.1 → 21.11.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 (29) hide show
  1. package/dist/application/dev-bootstrap-dsn-service.js +45 -35
  2. package/dist/application/dev-bootstrap-dsn-service.js.map +1 -1
  3. package/dist/application/docs-canon-service.js +68 -0
  4. package/dist/application/docs-canon-service.js.map +1 -0
  5. package/dist/application/dsn-reader-service.js +53 -2
  6. package/dist/application/dsn-reader-service.js.map +1 -1
  7. package/dist/application/mcp-dbhub-launcher.js +193 -34
  8. package/dist/application/mcp-dbhub-launcher.js.map +1 -1
  9. package/dist/application/mcp-doctor-service.js +13 -4
  10. package/dist/application/mcp-doctor-service.js.map +1 -1
  11. package/dist/application/mcp-test-connection-service.js +5 -11
  12. package/dist/application/mcp-test-connection-service.js.map +1 -1
  13. package/dist/application/visibility-doctor-service.js +89 -49
  14. package/dist/application/visibility-doctor-service.js.map +1 -1
  15. package/dist/application/workspace-migrate/apply.js +57 -0
  16. package/dist/application/workspace-migrate/apply.js.map +1 -0
  17. package/dist/application/workspace-migrate/markers.js +177 -0
  18. package/dist/application/workspace-migrate/markers.js.map +1 -0
  19. package/dist/application/workspace-migrate/plan.js +171 -0
  20. package/dist/application/workspace-migrate/plan.js.map +1 -0
  21. package/dist/application/workspace-migrate/preview.js +111 -0
  22. package/dist/application/workspace-migrate/preview.js.map +1 -0
  23. package/dist/cli/commands/unknown-flags.js +51 -0
  24. package/dist/cli/commands/unknown-flags.js.map +1 -0
  25. package/dist/cli/commands/visibility.js +105 -16
  26. package/dist/cli/commands/visibility.js.map +1 -1
  27. package/dist/cli/commands/workspace-migrate.js +70 -0
  28. package/dist/cli/commands/workspace-migrate.js.map +1 -0
  29. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-doctor-service.js","sourceRoot":"","sources":["../../src/application/mcp-doctor-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAIL,aAAa,EACb,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAwBxD,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,KAAmB,EACnB,KAAqB;IAErB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM;QACnD,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;QACrE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;QACvE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;QACrE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;KAChE,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAClB,GAAY,EACZ,IAAa,EACb,QAAqB,EACrB,QAAgB,EAChB,GAAwC,EACxC,KAA6B,EAC7B,OAA2C;IAE3C,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3F,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,MAAM;QACX,OAAO,EAAE,UAAU;KACpB,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;YACzD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa;YAClD,MAAM,EAAE,UAAU;gBAChB,CAAC,CAAC,sBAAsB,KAAK,CAAC,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE;gBAC3D,CAAC,CAAC,kCAAkC,QAAQ,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;YACjD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,KAAK,CAAC,IAAI,qBAAqB,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE;SAC/E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YACxD,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,YAAY,KAAK,CAAC,IAAI,iDAAiD;SAChF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QACvD,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,IAAI,KAAK,MAAM;YACjB,CAAC,CAAC;gBACE,MAAM,EACJ,qFAAqF;aACxF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,QAAyC,EACzC,KAAuC;IAEvC,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"mcp-doctor-service.js","sourceRoot":"","sources":["../../src/application/mcp-doctor-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAIL,aAAa,EACb,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAwBxD,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,KAAmB,EACnB,KAAqB;IAErB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM;QACnD,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;QACrE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;QACvE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;QACrE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;KAChE,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAClB,GAAY,EACZ,IAAa,EACb,QAAqB,EACrB,QAAgB,EAChB,GAAwC,EACxC,KAA6B,EAC7B,OAA2C;IAE3C,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjE,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,8EAA8E;IAC9E,oCAAoC;IACpC,MAAM,UAAU,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1F,MAAM,WAAW,GACf,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,WAAW,KAAK,SAAS,CAAC;IAE7C,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,MAAM;QACX,OAAO,EAAE,UAAU;KACpB,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;YACzD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa;YAClD,MAAM,EAAE,UAAU;gBAChB,CAAC,CAAC,sBAAsB,KAAK,CAAC,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE;gBAC3D,CAAC,CAAC,kCAAkC,QAAQ,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;YACjD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,KAAK,CAAC,IAAI,qBAAqB,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE;SAC/E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YACxD,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,YAAY,KAAK,CAAC,IAAI,iDAAiD;SAChF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QACvD,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,IAAI,KAAK,MAAM;YACjB,CAAC,CAAC;gBACE,MAAM,EACJ,qFAAqF;aACxF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,QAAyC,EACzC,KAAuC;IAEvC,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // fatal errors (it sits waiting for MCP input on stdio), the connection is
4
4
  // considered valid. If dbhub fails quickly with stderr, the test fails with the detail.
5
5
  import { spawn } from "node:child_process";
6
- import { readBootstrapDsn } from "./dsn-reader-service.js";
6
+ import { resolveDsnFromCandidates } from "./dsn-reader-service.js";
7
7
  export async function testMcpConnection(input) {
8
8
  const resolved = resolveDsnString(input);
9
9
  if (!resolved) {
@@ -16,16 +16,10 @@ export async function testMcpConnection(input) {
16
16
  return spawnDbhub(resolved.dsn, resolved.source, input);
17
17
  }
18
18
  function resolveDsnString(input) {
19
- const fromEnv = input.env[input.dsnVar];
20
- if (fromEnv && fromEnv.length > 0) {
21
- return { dsn: fromEnv, source: "env" };
22
- }
23
- const bootstrap = readBootstrapDsn(input.paths);
24
- const fromFile = bootstrap.values[input.dsnVar];
25
- if (fromFile && fromFile.length > 0) {
26
- return { dsn: fromFile, source: "dsn.env" };
27
- }
28
- return null;
19
+ // The tester is given the exact variable name to probe (the caller already
20
+ // picked it), so it hands the shared resolver a single candidate — unlike the
21
+ // launcher, which derives the organisation-prefix alternatives.
22
+ return resolveDsnFromCandidates([input.dsnVar], input.env, input.paths);
29
23
  }
30
24
  function spawnDbhub(dsn, source, input) {
31
25
  const timeoutMs = input.timeoutMs ?? 5000;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-test-connection-service.js","sourceRoot":"","sources":["../../src/application/mcp-test-connection-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-test-connection-service.js","sourceRoot":"","sources":["../../src/application/mcp-test-connection-service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
- import { homedir } from "node:os";
3
2
  import { join, resolve } from "node:path";
4
3
  import { readWorkspaceBlock } from "./parsers/project-block.js";
4
+ /** A host whose registered paths live in exactly one file. */
5
+ function oneTarget(file) {
6
+ return { primary: file, all: [file] };
7
+ }
5
8
  export async function runVisibilityDoctor(fs, env, paths, input) {
6
9
  const workspace = input.workspace ? resolve(input.workspace) : resolve(env.cwd());
7
10
  const declared = await readDeclaredFuentes(fs, paths, workspace);
@@ -12,7 +15,10 @@ export async function runVisibilityDoctor(fs, env, paths, input) {
12
15
  ];
13
16
  const globalReports = [];
14
17
  if (input.global) {
15
- const home = homedir();
18
+ // Home comes from the injected EnvPort, like the workspace does: reading
19
+ // node:os directly made the global scope unobservable from a test, which is
20
+ // the half of the doctor that touches files outside the workspace.
21
+ const home = env.homeDir();
16
22
  globalReports.push(inspectClaudeGlobal(home, declared), inspectCodexGlobal(home, declared));
17
23
  }
18
24
  return {
@@ -28,61 +34,58 @@ async function readDeclaredFuentes(fs, paths, workspace) {
28
34
  }
29
35
  function inspectClaude(scopeDir, declared, scope) {
30
36
  const claudeDir = join(scopeDir, ".claude");
31
- const target = join(claudeDir, "settings.json");
32
- const localTarget = join(claudeDir, "settings.local.json");
37
+ // The file a fix has to create when neither settings file exists yet.
38
+ const canonical = join(claudeDir, "settings.json");
33
39
  if (declared === null) {
34
- return baseNoBlock("claude", scope, target);
40
+ return baseNoBlock("claude", scope, oneTarget(canonical));
35
41
  }
36
42
  // Claude Code reads settings.json and settings.local.json (local takes precedence);
37
43
  // the doctor merges additionalDirectories from both to avoid false negatives
38
44
  // when the paths live in the .local file (the per-machine, gitignored convention).
39
- if (!existsSync(target) && !existsSync(localTarget)) {
40
- return {
41
- host: "claude",
42
- scope,
43
- target,
44
- declared_paths: declared,
45
- registered_paths: [],
46
- missing: [...declared],
47
- extra: [],
48
- status: declared.length === 0 ? "ok" : "no-settings",
49
- ...(declared.length > 0 ? { detail: `Falta ${target} o settings.local.json` } : {}),
50
- };
45
+ const read = readClaudeAdditionalDirsMerged(claudeDir);
46
+ if (!read.found) {
47
+ return noSettingsReport("claude", scope, oneTarget(canonical), declared, `Falta ${canonical} o settings.local.json`);
51
48
  }
52
- const registered = readClaudeAdditionalDirsMerged(claudeDir);
53
- return diffReport("claude", scope, target, declared, registered);
49
+ return diffReport("claude", scope, read.targets, declared, read.paths);
54
50
  }
55
51
  function inspectCodex(scopeDir, declared, scope) {
56
52
  const target = join(scopeDir, ".codex", "config.toml");
53
+ const targets = oneTarget(target);
57
54
  if (declared === null) {
58
- return baseNoBlock("codex", scope, target);
55
+ return baseNoBlock("codex", scope, targets);
59
56
  }
60
57
  if (!existsSync(target)) {
61
- return {
62
- host: "codex",
63
- scope,
64
- target,
65
- declared_paths: declared,
66
- registered_paths: [],
67
- missing: [...declared],
68
- extra: [],
69
- status: declared.length === 0 ? "ok" : "no-settings",
70
- ...(declared.length > 0 ? { detail: `Falta ${target}` } : {}),
71
- };
58
+ return noSettingsReport("codex", scope, targets, declared, `Falta ${target}`);
72
59
  }
73
60
  const registered = readCodexWritableRoots(target);
74
- return diffReport("codex", scope, target, declared, registered);
61
+ return diffReport("codex", scope, targets, declared, registered);
75
62
  }
76
63
  function inspectClaudeGlobal(home, declared) {
77
64
  const claudeDir = join(home, ".claude");
78
- const target = join(claudeDir, "settings.json");
79
- const registered = readClaudeAdditionalDirsMerged(claudeDir);
80
- return globalPollutionReport("claude", target, declared ?? [], registered);
65
+ const read = readClaudeAdditionalDirsMerged(claudeDir);
66
+ const targets = read.found ? read.targets : oneTarget(join(claudeDir, "settings.json"));
67
+ const registered = read.found ? read.paths : [];
68
+ return globalPollutionReport("claude", targets, declared ?? [], registered);
81
69
  }
82
70
  function inspectCodexGlobal(home, declared) {
83
71
  const target = join(home, ".codex", "config.toml");
84
72
  const registered = existsSync(target) ? readCodexWritableRoots(target) : [];
85
- return globalPollutionReport("codex", target, declared ?? [], registered);
73
+ return globalPollutionReport("codex", oneTarget(target), declared ?? [], registered);
74
+ }
75
+ /** Declared sources with no host config file to compare them against. */
76
+ function noSettingsReport(host, scope, targets, declared, detail) {
77
+ return {
78
+ host,
79
+ scope,
80
+ target: targets.primary,
81
+ targets: targets.all,
82
+ declared_paths: declared,
83
+ registered_paths: [],
84
+ missing: [...declared],
85
+ extra: [],
86
+ status: declared.length === 0 ? "ok" : "no-settings",
87
+ ...(declared.length > 0 ? { detail } : {}),
88
+ };
86
89
  }
87
90
  function inspectWarp(_scopeDir, _declared, scope) {
88
91
  // Warp Terminal does not have a workspace additionalDirectories concept.
@@ -92,6 +95,7 @@ function inspectWarp(_scopeDir, _declared, scope) {
92
95
  host: "warp",
93
96
  scope,
94
97
  target,
98
+ targets: [target],
95
99
  declared_paths: [],
96
100
  registered_paths: [],
97
101
  missing: [],
@@ -100,7 +104,9 @@ function inspectWarp(_scopeDir, _declared, scope) {
100
104
  detail: "Warp Terminal does not require workspace path registration (noop)",
101
105
  };
102
106
  }
103
- function diffReport(host, scope, target, declared, registered) {
107
+ function diffReport(host, scope, targets, declared, rawRegistered) {
108
+ const registered = dedupeRegistered(rawRegistered);
109
+ const where = describeTargets(targets);
104
110
  const declaredSet = new Set(declared.map(normalize));
105
111
  const registeredSet = new Set(registered.map(normalize));
106
112
  const missing = declared.filter((p) => !registeredSet.has(normalize(p)));
@@ -113,7 +119,8 @@ function diffReport(host, scope, target, declared, registered) {
113
119
  return {
114
120
  host,
115
121
  scope,
116
- target,
122
+ target: targets.primary,
123
+ targets: targets.all,
117
124
  declared_paths: declared,
118
125
  registered_paths: registered,
119
126
  missing,
@@ -122,20 +129,22 @@ function diffReport(host, scope, target, declared, registered) {
122
129
  ...(status !== "ok"
123
130
  ? {
124
131
  detail: status === "missing-paths"
125
- ? `${missing.length} path(s) declarado(s) no registrado(s) en ${target}`
132
+ ? `${missing.length} path(s) declarado(s) no registrado(s) en ${where}`
126
133
  : `${extra.length} path(s) registrado(s) que no son fuentes declaradas`,
127
134
  }
128
135
  : {}),
129
136
  };
130
137
  }
131
- function globalPollutionReport(host, target, declared, registered) {
138
+ function globalPollutionReport(host, targets, declared, rawRegistered) {
139
+ const registered = dedupeRegistered(rawRegistered);
132
140
  const declaredSet = new Set(declared.map(normalize));
133
141
  const polluted = registered.filter((p) => declaredSet.has(normalize(p)));
134
142
  const status = polluted.length > 0 ? "global-pollution" : "ok";
135
143
  return {
136
144
  host,
137
145
  scope: "global",
138
- target,
146
+ target: targets.primary,
147
+ targets: targets.all,
139
148
  declared_paths: declared,
140
149
  registered_paths: registered,
141
150
  missing: [],
@@ -143,16 +152,35 @@ function globalPollutionReport(host, target, declared, registered) {
143
152
  status,
144
153
  ...(polluted.length > 0
145
154
  ? {
146
- detail: `${polluted.length} path(s) del hub también en ${target}. Sugerencia: 'agent-workflow detach-multiroot --global --from-sources'`,
155
+ detail: `${polluted.length} path(s) del hub también en ${describeTargets(targets)}. Sugerencia: 'agent-workflow detach-multiroot --global --from-sources'`,
147
156
  }
148
157
  : {}),
149
158
  };
150
159
  }
151
- function baseNoBlock(host, scope, target) {
160
+ /**
161
+ * One registration per path, first occurrence wins.
162
+ *
163
+ * The same directory declared in settings.json AND in settings.local.json is ONE
164
+ * registration, not two. Dedup is by the RAW string and not by `normalize`:
165
+ * `registered_paths` is a literal inventory of what the config files contain —
166
+ * the strings a person has to delete by hand — so two spellings of the same
167
+ * directory stay two entries. `normalize` governs only the comparison against
168
+ * the declared sources, which is where the two spellings already collapse; that
169
+ * is also why this cannot change `missing`/`extra` beyond dropping exact repeats.
170
+ */
171
+ function dedupeRegistered(registered) {
172
+ return [...new Set(registered)];
173
+ }
174
+ /** Every file the report was actually read from, for the user-facing message. */
175
+ function describeTargets(targets) {
176
+ return targets.all.join(" + ");
177
+ }
178
+ function baseNoBlock(host, scope, targets) {
152
179
  return {
153
180
  host,
154
181
  scope,
155
- target,
182
+ target: targets.primary,
183
+ targets: targets.all,
156
184
  declared_paths: [],
157
185
  registered_paths: [],
158
186
  missing: [],
@@ -161,15 +189,27 @@ function baseNoBlock(host, scope, target) {
161
189
  detail: "<NS>-PROJECT no encontrado o sin fuentes en CLAUDE.md/AGENTS.md",
162
190
  };
163
191
  }
164
- /** Merges additionalDirectories from settings.json + settings.local.json (Claude Code reads both). */
192
+ /**
193
+ * Merges additionalDirectories from settings.json + settings.local.json (Claude
194
+ * Code reads both) and says WHICH of the two it actually read.
195
+ *
196
+ * Reporting the merge without its provenance is what let the doctor answer `ok`
197
+ * while pointing at a settings.json that does not exist.
198
+ */
165
199
  function readClaudeAdditionalDirsMerged(claudeDir) {
166
- const out = [];
200
+ const files = [];
201
+ const paths = [];
167
202
  for (const fname of ["settings.json", "settings.local.json"]) {
168
203
  const file = join(claudeDir, fname);
169
- if (existsSync(file))
170
- out.push(...readClaudeAdditionalDirs(file));
204
+ if (!existsSync(file))
205
+ continue;
206
+ files.push(file);
207
+ paths.push(...readClaudeAdditionalDirs(file));
171
208
  }
172
- return out;
209
+ const [primary, ...rest] = files;
210
+ if (primary === undefined)
211
+ return { found: false };
212
+ return { found: true, targets: { primary, all: [primary, ...rest] }, paths };
173
213
  }
174
214
  function readClaudeAdditionalDirs(file) {
175
215
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"visibility-doctor-service.js","sourceRoot":"","sources":["../../src/application/visibility-doctor-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visibility-doctor-service.js","sourceRoot":"","sources":["../../src/application/visibility-doctor-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Applying the migration: the plan is RE-derived inside the workspace lock and
3
+ * the writes come from that derivation, never from the one a person read.
4
+ *
5
+ * The preview is read-only and can be minutes old; the workspace it described
6
+ * may have gained a session, a row or an edited hub file since. Re-deriving
7
+ * under the lock is what makes "what you approved" and "what happens" the same
8
+ * decision instead of two — the same reason the retirement commands recompute
9
+ * theirs before converging.
10
+ */
11
+ import { upsertHistoryRow } from "../history-update-service.js";
12
+ import { withCwdLock } from "../lock-service.js";
13
+ import { planWorkspaceMigration, sentinelPath, } from "./plan.js";
14
+ export async function applyWorkspaceMigration(fs, paths) {
15
+ return withCwdLock(fs, paths, async () => {
16
+ const plan = await planWorkspaceMigration(fs, paths);
17
+ await writePlan(fs, paths, plan);
18
+ return summarize(plan);
19
+ });
20
+ }
21
+ async function writePlan(fs, paths, plan) {
22
+ for (const hub of plan.markers) {
23
+ await fs.writeText(hub.path, hub.text);
24
+ }
25
+ for (const seed of plan.sentinels) {
26
+ // Empty, byte for byte what `session-close` writes: the sentinel says
27
+ // "closed" by EXISTING, and giving it content here would be redesigning it.
28
+ // The date the record holds is what the preview reports; nothing reads — or
29
+ // writes — a modification time to decide a session's state.
30
+ await fs.writeText(sentinelPath(seed), "");
31
+ }
32
+ for (const seed of plan.rows) {
33
+ // The lock-free primitive: this function already holds the workspace lock,
34
+ // and the public command would take it again.
35
+ await upsertHistoryRow(fs, paths, {
36
+ code: seed.code,
37
+ sesionName: seed.name,
38
+ // Unsaid when the session never declared one, so the newborn row takes
39
+ // the record's own default instead of a date invented here.
40
+ ...(seed.date !== null ? { date: seed.date } : {}),
41
+ state: seed.state,
42
+ });
43
+ }
44
+ }
45
+ function summarize(plan) {
46
+ return {
47
+ workspace: plan.workspace,
48
+ markers_renamed: plan.markers.map((hub) => hub.path),
49
+ duplicates_dropped: plan.markers.filter((h) => h.drops_duplicate).map((hub) => hub.path),
50
+ sentinels_seeded: plan.sentinels.map((seed) => seed.folder),
51
+ rows_seeded: plan.rows.map((seed) => seed.folder),
52
+ rows_dated_today: plan.rows.filter((s) => s.date === null).map((seed) => seed.folder),
53
+ conflicts: plan.conflicts,
54
+ next_correlative: plan.next_correlative,
55
+ };
56
+ }
57
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/application/workspace-migrate/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAGL,sBAAsB,EACtB,YAAY,GACb,MAAM,WAAW,CAAC;AA6BnB,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAkB,EAClB,KAAmB;IAEnB,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,EAAkB,EAClB,KAAmB,EACnB,IAA4B;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,sEAAsE;QACtE,4EAA4E;QAC5E,4EAA4E;QAC5E,4DAA4D;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,2EAA2E;QAC3E,8CAA8C;QAC9C,MAAM,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,uEAAuE;YACvE,4DAA4D;YAC5D,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAA4B;IAC7C,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACpD,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QACxF,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACjD,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACrF,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * The project block of a hub whose markers were stamped by an older namespace.
3
+ *
4
+ * The markers are DERIVED from the namespace (`<NS>-PROJECT-START`), so a hub
5
+ * created while this tool was called `agent-workflow` wears
6
+ * `AGENT-WORKFLOW-PROJECT-*` and the CLI running as `workflow` does not
7
+ * recognize it. Nothing fails loudly: the writer finds no current markers and
8
+ * APPENDS a second block, and from then on the CLI reads the block it just
9
+ * created — sources it never learned, branches nobody declared — while every
10
+ * declaration the workspace ever made sits untouched a few lines above.
11
+ * Renaming the markers is what makes the rich block the one that answers.
12
+ */
13
+ import { join } from "node:path";
14
+ import { parseProjectBlock, } from "../parsers/project-block.js";
15
+ /** The hub files, in the order `readWorkspaceBlock` consults them. */
16
+ const HUB_FILES = ["CLAUDE.md", "AGENTS.md"];
17
+ /**
18
+ * Any project block, whatever namespace stamped it.
19
+ *
20
+ * Deliberately not a list of known-legacy prefixes: the marker is a function of
21
+ * the namespace, so the set of "old" ones is open and a hardcoded list would go
22
+ * stale the next time the tool is renamed. What the block wears is read off the
23
+ * file; what it should wear comes from the running namespace.
24
+ */
25
+ const BLOCK_START = /<!--\s*([A-Z0-9_-]+)-PROJECT-START\s*-->/;
26
+ const EVERY_BLOCK_START = new RegExp(BLOCK_START.source, "g");
27
+ function markersFor(prefix) {
28
+ return {
29
+ start: `<!-- ${prefix}-PROJECT-START -->`,
30
+ end: `<!-- ${prefix}-PROJECT-END -->`,
31
+ };
32
+ }
33
+ /** Every hub file that exists under `root`, with its bytes. */
34
+ export async function readHubFiles(fs, root) {
35
+ const hubs = [];
36
+ for (const name of HUB_FILES) {
37
+ const path = join(root, name);
38
+ if (!(await fs.exists(path)))
39
+ continue;
40
+ hubs.push({ path, text: await fs.readText(path) });
41
+ }
42
+ return hubs;
43
+ }
44
+ /**
45
+ * What this file needs, if anything: rename its block, or refuse to touch it.
46
+ *
47
+ * Pure on purpose — the decision is a function of the bytes and of the running
48
+ * namespace, and nothing else. Reading the file is the caller's I/O.
49
+ */
50
+ export function planHubMarkers(path, text, current) {
51
+ const currentPrefix = prefixOf(current.start);
52
+ const prefixes = blockPrefixes(text);
53
+ const foreign = prefixes.filter((prefix) => prefix !== currentPrefix);
54
+ const outdated = foreign[0];
55
+ if (outdated === undefined)
56
+ return { kind: "nothing" };
57
+ if (foreign.length > 1) {
58
+ return refuse("marcadores_ambiguos", `${path} lleva ${foreign.length} bloques de namespaces distintos (${foreign.join(", ")}): cuál es el vigente lo decide una persona`);
59
+ }
60
+ const from = markersFor(outdated);
61
+ const adopted = parseProjectBlock(text, from);
62
+ if (adopted === null) {
63
+ return refuse("bloque_ilegible", `el bloque ${outdated} de ${path} no se pudo parsear`);
64
+ }
65
+ if (!prefixes.includes(currentPrefix)) {
66
+ return rewriteOf(path, outdated, currentPrefix, false, renameMarkers(text, from, current));
67
+ }
68
+ // The block the CLI appended when it could not find the current markers. It is
69
+ // usually the empty shell of a workspace that had already declared everything
70
+ // above it — but "usually" is not a licence to delete, so what it declares is
71
+ // compared before it goes.
72
+ const duplicate = parseProjectBlock(text, current);
73
+ const extra = duplicate === null ? [] : extraDeclarations(duplicate, adopted);
74
+ if (extra.length > 0) {
75
+ return refuse("duplicado_con_contenido", `el bloque ${currentPrefix} de ${path} declara lo que el bloque ${outdated} no tiene (${extra.join("; ")}): fusionalos a mano y reintentá`);
76
+ }
77
+ const dropped = dropBlock(text, current);
78
+ return rewriteOf(path, outdated, currentPrefix, true, renameMarkers(dropped, from, current));
79
+ }
80
+ function rewriteOf(path, from, to, dropsDuplicate, text) {
81
+ return { kind: "rewrite", rewrite: { path, from, to, drops_duplicate: dropsDuplicate, text } };
82
+ }
83
+ function refuse(reason, detail) {
84
+ return { kind: "refused", refusal: { reason, detail } };
85
+ }
86
+ /** `<!-- WORKFLOW-PROJECT-START -->` → `WORKFLOW`. */
87
+ function prefixOf(startMarker) {
88
+ return BLOCK_START.exec(startMarker)?.[1] ?? "";
89
+ }
90
+ /** Namespace prefixes of every COMPLETE block the text carries, in order, deduped. */
91
+ function blockPrefixes(text) {
92
+ const found = [];
93
+ for (const match of text.matchAll(EVERY_BLOCK_START)) {
94
+ const prefix = match[1];
95
+ if (prefix === undefined || found.includes(prefix))
96
+ continue;
97
+ // A start without its end is not a block: cutting or renaming half of one
98
+ // would leave the file worse than it was found.
99
+ if (!text.includes(markersFor(prefix).end))
100
+ continue;
101
+ found.push(prefix);
102
+ }
103
+ return found;
104
+ }
105
+ /**
106
+ * Rename in place: the content between the markers is not re-rendered.
107
+ *
108
+ * Re-rendering through `renderProjectBlock` would round-trip the block through
109
+ * the parser and hand back only what the parser understands — every line it
110
+ * does not model (a note, a section this version never learned) would be gone.
111
+ * A rename touches two lines and nothing else.
112
+ */
113
+ function renameMarkers(text, from, to) {
114
+ return text.replaceAll(from.start, to.start).replaceAll(from.end, to.end);
115
+ }
116
+ /** Cut a whole block out, leaving one blank line where it used to separate two. */
117
+ function dropBlock(text, markers) {
118
+ const start = text.indexOf(markers.start);
119
+ const end = text.indexOf(markers.end, start);
120
+ if (start < 0 || end < 0)
121
+ return text;
122
+ const head = text.slice(0, start).replace(/\n+$/, "");
123
+ const tail = text.slice(end + markers.end.length).replace(/^\n+/, "");
124
+ if (head === "")
125
+ return tail;
126
+ if (tail === "")
127
+ return `${head}\n`;
128
+ return `${head}\n\n${tail}`;
129
+ }
130
+ /**
131
+ * What the appended block declares that the adopted one does not.
132
+ *
133
+ * Empty means dropping it loses nothing, which is the only condition under
134
+ * which it gets dropped. `last_activity` is deliberately not compared: it is a
135
+ * timestamp the writer stamps on every write, not something a workspace
136
+ * declared, and the appended block always carries the fresher one.
137
+ */
138
+ function extraDeclarations(candidate, adopted) {
139
+ const extra = [];
140
+ if (isDeclared(candidate.proyecto) && candidate.proyecto !== adopted.proyecto) {
141
+ extra.push(`Proyecto: ${firstLine(candidate.proyecto)}`);
142
+ }
143
+ for (const fuente of candidate.fuentes) {
144
+ const same = adopted.fuentes.some((f) => f.alias === fuente.alias && f.path === fuente.path);
145
+ if (!same)
146
+ extra.push(`Fuente: ${fuente.alias} → ${fuente.path}`);
147
+ }
148
+ extra.push(...extraEntries("Stack", candidate.stack, adopted.stack));
149
+ extra.push(...extraEntries("Rama por defecto", candidate.default_branches, adopted.default_branches));
150
+ extra.push(...extraEntries("Rama de trabajo", candidate.working_branches, adopted.working_branches));
151
+ extra.push(...extraEntries("Rama QA", candidate.qa_branches, adopted.qa_branches));
152
+ return extra;
153
+ }
154
+ function extraEntries(label, candidate, adopted) {
155
+ const known = new Map(Object.entries(adopted));
156
+ const extra = [];
157
+ for (const [key, value] of Object.entries(candidate)) {
158
+ if (typeof value !== "string" || value.length === 0)
159
+ continue;
160
+ if (known.get(key) === value)
161
+ continue;
162
+ extra.push(`${label} ${key}: ${value}`);
163
+ }
164
+ return extra;
165
+ }
166
+ /**
167
+ * A `## Proyecto` somebody wrote, as opposed to the placeholder the renderer
168
+ * emits when nobody has (`_Describe el proyecto aquí…_`).
169
+ */
170
+ function isDeclared(proyecto) {
171
+ const text = proyecto.trim();
172
+ return text.length > 0 && !(text.startsWith("_") && text.endsWith("_"));
173
+ }
174
+ function firstLine(text) {
175
+ return text.trim().split("\n")[0] ?? text;
176
+ }
177
+ //# sourceMappingURL=markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../../src/application/workspace-migrate/markers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAGL,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,sEAAsE;AACtE,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,0CAA0C,CAAC;AAC/D,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9D,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO;QACL,KAAK,EAAE,QAAQ,MAAM,oBAAoB;QACzC,GAAG,EAAE,QAAQ,MAAM,kBAAkB;KACtC,CAAC;AACJ,CAAC;AA8BD,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAkB,EAClB,IAAY;IAEZ,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,IAAY,EACZ,OAA4B;IAE5B,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CACX,qBAAqB,EACrB,GAAG,IAAI,UAAU,OAAO,CAAC,MAAM,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CACpI,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,iBAAiB,EAAE,aAAa,QAAQ,OAAO,IAAI,qBAAqB,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,2BAA2B;IAC3B,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CACX,yBAAyB,EACzB,aAAa,aAAa,OAAO,IAAI,6BAA6B,QAAQ,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAC3I,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,SAAS,CAChB,IAAY,EACZ,IAAY,EACZ,EAAU,EACV,cAAuB,EACvB,IAAY;IAEZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,MAAM,CAAC,MAAkC,EAAE,MAAc;IAChE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,sDAAsD;AACtD,SAAS,QAAQ,CAAC,WAAmB;IACnC,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAC7D,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;YAAE,SAAS;QACrD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,IAAyB,EAAE,EAAuB;IACrF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,mFAAmF;AACnF,SAAS,SAAS,CAAC,IAAY,EAAE,OAA4B;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IACpC,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,SAA6B,EAAE,OAA2B;IACnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CACR,GAAG,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAC1F,CAAC;IACF,KAAK,CAAC,IAAI,CACR,GAAG,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CACzF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAE,OAAe;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC9D,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK;YAAE,SAAS;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC"}