@imolko/ultra-agent 0.1.2-beta → 1.0.0-beta

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 (31) hide show
  1. package/bin/cli.js +0 -0
  2. package/dist-node/materializer.d.ts.map +1 -1
  3. package/dist-node/materializer.js +2 -1
  4. package/dist-node/materializer.js.map +1 -1
  5. package/dist-node/payload.d.ts +18 -4
  6. package/dist-node/payload.d.ts.map +1 -1
  7. package/dist-node/payload.js +27 -6
  8. package/dist-node/payload.js.map +1 -1
  9. package/dist-node/ship/ship.tracker.d.ts.map +1 -1
  10. package/dist-node/ship/ship.tracker.js +12 -11
  11. package/dist-node/ship/ship.tracker.js.map +1 -1
  12. package/docs/adr/ADR-0000-proceso-y-formato-de-adrs.md +2 -2
  13. package/docs/adr/foundational/A-042-formato-documentos-issue-tracker.md +1 -0
  14. package/docs/adr/foundational/A-052-distribucion-metodologia-paquete-versionado.md +1 -1
  15. package/eslint/index.mjs +67 -7
  16. package/package.json +13 -4
  17. package/pi/extensions/qa-guardrail/README.md +6 -2
  18. package/pi/extensions/qa-guardrail/selection.ts +41 -7
  19. package/scripts/adr-gate/links.mjs +59 -0
  20. package/scripts/adr-gate/registry.mjs +155 -0
  21. package/scripts/adr-gate/report.mjs +21 -0
  22. package/scripts/adr-gate/rules/enlaces.mjs +33 -0
  23. package/scripts/adr-gate/rules/frontmatter.mjs +126 -0
  24. package/scripts/adr-gate/rules/hardcoded.mjs +63 -0
  25. package/scripts/adr-gate/rules/indices.mjs +100 -0
  26. package/scripts/adr-gate/rules/jerarquia.mjs +102 -0
  27. package/scripts/adr-gate/text.mjs +263 -0
  28. package/scripts/ensure-bin-exec.mjs +21 -0
  29. package/scripts/verify-adr-consistency.mjs +71 -0
  30. package/skills/writing-for-agents/references/adrs.md +2 -2
  31. package/scripts/verify-adr-consistency.py +0 -250
package/bin/cli.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"materializer.d.ts","sourceRoot":"","sources":["../src/materializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,EAKL,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,yBAAyB,EAG1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,CAAC;AAE7D,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAIzD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,UAAW,SAAQ,KAAK;aACP,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;CAO5C;AA+BD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAY5E;AA0DD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAYrE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,CA2CtG;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAoBnE"}
1
+ {"version":3,"file":"materializer.d.ts","sourceRoot":"","sources":["../src/materializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,EAKL,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,yBAAyB,EAG1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,CAAC;AAE7D,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAIzD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,UAAW,SAAQ,KAAK;aACP,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;CAO5C;AA+BD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAe5E;AA0DD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAYrE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,CA2CtG;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAoBnE"}
@@ -61,7 +61,8 @@ function walk(dir) {
61
61
  /** Recorre el árbol del paquete y devuelve los archivos a espejar. */
62
62
  function collectPayload(packageRoot, version) {
63
63
  const adrFiles = walk((0, node_path_1.join)(packageRoot, "docs", "adr")).map((f) => `docs/adr/${f}`);
64
- const candidates = [...adrFiles, payload_1.GATE_RELATIVE_PATH];
64
+ const gateModules = walk((0, node_path_1.join)(packageRoot, payload_1.GATE_MODULES_RELATIVE_DIR)).map((f) => `${payload_1.GATE_MODULES_RELATIVE_DIR}/${f}`);
65
+ const candidates = [...adrFiles, payload_1.GATE_RELATIVE_PATH, ...gateModules];
65
66
  const files = [];
66
67
  for (const relativePath of (0, payload_1.selectPayloadFiles)(candidates)) {
67
68
  const abs = (0, node_path_1.join)(packageRoot, relativePath);
@@ -1 +1 @@
1
- {"version":3,"file":"materializer.js","sourceRoot":"","sources":["../src/materializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"materializer.js","sourceRoot":"","sources":["../src/materializer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA2GH,wCAeC;AA0DD,0BAYC;AAED,wBA2CC;AAED,wBAoBC;AAjQD,qCAQiB;AACjB,yCAA0C;AAC1C,yCAOoB;AAQX,uGAVP,iCAAsB,OAUO;AAP/B,+CAIuB;AAGU,0GAN/B,uCAAyB,OAM+B;AAF1D,uCAA8F;AAI9F,sEAAsE;AACzD,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAmC3C,MAAa,UAAW,SAAQ,KAAK;IACnC,YAA4B,KAAe;QACzC,KAAK,CACH,2EAA2E;YACzE,6DAA6D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CACtF,CAAC;QAJwB,UAAK,GAAL,KAAK,CAAU;QAKzC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AARD,gCAQC;AAED,iFAAiF;AAEjF,SAAS,YAAY,CAAC,GAAW,EAAE,OAAe;IAChD,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAA,uBAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,EAAU;IAC3C,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAA,sBAAY,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,sEAAsE;AACtE,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAEhF,sEAAsE;AACtE,SAAgB,cAAc,CAAC,WAAmB,EAAE,OAAe;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAA,gBAAI,EAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAA,gBAAI,EAAC,WAAW,EAAE,mCAAyB,CAAC,CAAC,CAAC,GAAG,CACxE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mCAAyB,IAAI,CAAC,EAAE,CAC3C,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,EAAE,4BAAkB,EAAE,GAAG,WAAW,CAAC,CAAC;IAErE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,YAAY,IAAI,IAAA,4BAAkB,EAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAA,sBAAY,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,gFAAgF;AAEhF,SAAS,aAAa,CAAC,IAAY,EAAE,OAAgB;IACnD,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,IAAA,wBAAa,EAAC,OAAO,CAAC,KAAK,CAAC;KACpC,CAAC;IACF,YAAY,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,iCAAsB,CAAC,EAAE,IAAA,4BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,iCAAsB,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,IAAA,wBAAa,EAAC,IAAA,sBAAY,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAe;IACjD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAa,EAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAA,sBAAY,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,uCAAyB,CAAC,CAAC;IAClD,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACnC,YAAY,CAAC,GAAG,EAAE,IAAA,8BAAgB,GAAE,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAA,oCAAsB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAElF,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,KAAK,EAAE,CAAC;IACvH,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACvD,CAAC;AAED,gFAAgF;AAEhF,SAAgB,OAAO,CAAC,IAAY,EAAE,OAAgB;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,YAAY,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAgB,EAAE,UAA+B,EAAE;IACtF,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/C,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAA,qBAAU,EAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC;gBAAE,WAAW,CAAC,GAAG,EAAE,IAAA,gBAAI,EAAC,IAAI,EAAE,4BAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,wBAAa,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAA,qBAAU,EAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,YAAY,CAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC;YAAE,IAAA,gBAAM,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY,EAAE,OAAgB;IACnD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrH,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAA,qBAAU,EAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnE,MAAM,SAAS,GAAG,IAAA,qBAAU,EAAC,IAAA,wBAAa,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,KAAK;QACL,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC;AACJ,CAAC"}
@@ -6,8 +6,16 @@
6
6
  * Funciones puras: reciben una lista de rutas relativas al paquete y devuelven la
7
7
  * lista de archivos a espejar, sin E/S.
8
8
  */
9
- /** Ruta relativa del gate de consistencia dentro del paquete (y del consumidor). */
10
- export declare const GATE_RELATIVE_PATH = "scripts/verify-adr-consistency.py";
9
+ /**
10
+ * Ruta relativa del gate de consistencia dentro del paquete (y del consumidor).
11
+ * Se ejecuta con Node, el runtime que el paquete garantiza.
12
+ */
13
+ export declare const GATE_RELATIVE_PATH = "scripts/verify-adr-consistency.mjs";
14
+ /**
15
+ * Directorio de los módulos internos del gate. El gate los importa con rutas
16
+ * relativas, así que el payload los espeja junto al ejecutable.
17
+ */
18
+ export declare const GATE_MODULES_RELATIVE_DIR = "scripts/adr-gate";
11
19
  /**
12
20
  * ¿Es un archivo del registro ADR canónico (tier A/T/P o ADR-0000 o índice raíz)?
13
21
  * Cualquier otro `.md` en la raíz de `docs/adr/` es tier de proyecto y queda
@@ -16,8 +24,14 @@ export declare const GATE_RELATIVE_PATH = "scripts/verify-adr-consistency.py";
16
24
  */
17
25
  export declare function isCanonicalAdr(relativePath: string): boolean;
18
26
  /**
19
- * Devuelve la lista de archivos a espejar (ADRs canónicos + gate), ordenada.
20
- * Excluye el tier de proyecto y cualquier archivo que no sea payload.
27
+ * ¿Es el ejecutable del gate o uno de sus módulos internos?
28
+ * @param {string} relativePath Ruta relativa ya normalizada.
29
+ * @returns {boolean}
30
+ */
31
+ export declare function isGateFile(relativePath: string): boolean;
32
+ /**
33
+ * Devuelve la lista de archivos a espejar (ADRs canónicos + gate + módulos),
34
+ * ordenada. Excluye el tier de proyecto y cualquier archivo que no sea payload.
21
35
  */
22
36
  export declare function selectPayloadFiles(files: string[]): string[];
23
37
  //# sourceMappingURL=payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,sCAAsC,CAAC;AAQtE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAY5D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAM5D"}
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,uCAAuC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAQ5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAY5D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAM5D"}
@@ -8,11 +8,20 @@
8
8
  * lista de archivos a espejar, sin E/S.
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.GATE_RELATIVE_PATH = void 0;
11
+ exports.GATE_MODULES_RELATIVE_DIR = exports.GATE_RELATIVE_PATH = void 0;
12
12
  exports.isCanonicalAdr = isCanonicalAdr;
13
+ exports.isGateFile = isGateFile;
13
14
  exports.selectPayloadFiles = selectPayloadFiles;
14
- /** Ruta relativa del gate de consistencia dentro del paquete (y del consumidor). */
15
- exports.GATE_RELATIVE_PATH = "scripts/verify-adr-consistency.py";
15
+ /**
16
+ * Ruta relativa del gate de consistencia dentro del paquete (y del consumidor).
17
+ * Se ejecuta con Node, el runtime que el paquete garantiza.
18
+ */
19
+ exports.GATE_RELATIVE_PATH = "scripts/verify-adr-consistency.mjs";
20
+ /**
21
+ * Directorio de los módulos internos del gate. El gate los importa con rutas
22
+ * relativas, así que el payload los espeja junto al ejecutable.
23
+ */
24
+ exports.GATE_MODULES_RELATIVE_DIR = "scripts/adr-gate";
16
25
  const TIER_DIRS = ["foundational", "typescript", "python"];
17
26
  function normalize(path) {
18
27
  return path.replace(/\\/g, "/");
@@ -37,13 +46,25 @@ function isCanonicalAdr(relativePath) {
37
46
  return false;
38
47
  }
39
48
  /**
40
- * Devuelve la lista de archivos a espejar (ADRs canónicos + gate), ordenada.
41
- * Excluye el tier de proyecto y cualquier archivo que no sea payload.
49
+ * ¿Es el ejecutable del gate o uno de sus módulos internos?
50
+ * @param {string} relativePath Ruta relativa ya normalizada.
51
+ * @returns {boolean}
52
+ */
53
+ function isGateFile(relativePath) {
54
+ return (relativePath === exports.GATE_RELATIVE_PATH ||
55
+ (relativePath.startsWith(`${exports.GATE_MODULES_RELATIVE_DIR}/`) &&
56
+ relativePath.endsWith(".mjs") &&
57
+ !relativePath.endsWith(".test.mjs") &&
58
+ !relativePath.endsWith(".spec.mjs")));
59
+ }
60
+ /**
61
+ * Devuelve la lista de archivos a espejar (ADRs canónicos + gate + módulos),
62
+ * ordenada. Excluye el tier de proyecto y cualquier archivo que no sea payload.
42
63
  */
43
64
  function selectPayloadFiles(files) {
44
65
  const selected = files.filter((file) => {
45
66
  const path = normalize(file);
46
- return isCanonicalAdr(path) || path === exports.GATE_RELATIVE_PATH;
67
+ return isCanonicalAdr(path) || isGateFile(path);
47
68
  });
48
69
  return selected.sort();
49
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"payload.js","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiBH,wCAYC;AAMD,gDAMC;AAvCD,oFAAoF;AACvE,QAAA,kBAAkB,GAAG,mCAAmC,CAAC;AAEtE,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE3D,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,YAAoB;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAe;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,0BAAkB,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA0BH,wCAYC;AAOD,gCAQC;AAMD,gDAMC;AA/DD;;;GAGG;AACU,QAAA,kBAAkB,GAAG,oCAAoC,CAAC;AAEvE;;;GAGG;AACU,QAAA,yBAAyB,GAAG,kBAAkB,CAAC;AAE5D,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE3D,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,YAAoB;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,YAAoB;IAC7C,OAAO,CACL,YAAY,KAAK,0BAAkB;QACnC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,iCAAyB,GAAG,CAAC;YACvD,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YACnC,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAe;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ship.tracker.d.ts","sourceRoot":"","sources":["../../src/ship/ship.tracker.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,QAAQ,cAAc,CAAC;AAMpC,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAO3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAUhD;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAM/C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,wBAAgB,cAAc,IAAI,MAAM,CAYvC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAS3C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,CAgBpF;AAID,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB7D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAgB,GAAG,OAAO,CAqB9F;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAM7C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAgB,GAAG,KAAK,GAAG,IAAI,CAa9G;AAID,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQvC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAM3F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
1
+ {"version":3,"file":"ship.tracker.d.ts","sourceRoot":"","sources":["../../src/ship/ship.tracker.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,QAAQ,cAAc,CAAC;AAMpC,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAO3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAUhD;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAM/C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,wBAAgB,cAAc,IAAI,MAAM,CAYvC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAS3C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,CAgBpF;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAgB,GAAG,OAAO,CAiB9F;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAM7C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAgB,GAAG,KAAK,GAAG,IAAI,CAa9G;AAID,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQvC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAM3F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
@@ -133,30 +133,31 @@ function getLinkedChildren(projectEncoded, parentIid) {
133
133
  });
134
134
  }
135
135
  // ── Frontier (deterministic; the orchestrator owns it) ────────────────────────
136
+ const BLOCKER_SECTION_NAMES = ["bloqueado por", "blocked by"];
136
137
  function extractBlockers(description) {
137
138
  const lines = description.split("\n");
138
139
  let inBlockerSection = false;
139
140
  const refs = [];
140
141
  for (const line of lines) {
141
- if (line.startsWith("# Bloqueado por")) {
142
- inBlockerSection = true;
142
+ const heading = line.match(/^#{1,6}\s+(.*)$/);
143
+ if (heading) {
144
+ if (inBlockerSection)
145
+ break;
146
+ if (BLOCKER_SECTION_NAMES.includes(heading[1].trim().toLowerCase())) {
147
+ inBlockerSection = true;
148
+ }
143
149
  continue;
144
150
  }
145
- if (inBlockerSection) {
146
- if (line.startsWith("#"))
147
- break;
148
- const match = line.match(/#(\d+)/);
149
- if (match)
150
- refs.push(parseInt(match[1], 10));
151
+ if (!inBlockerSection)
152
+ continue;
153
+ for (const match of line.matchAll(/#(\d+)/g)) {
154
+ refs.push(parseInt(match[1], 10));
151
155
  }
152
156
  }
153
157
  return [...new Set(refs)];
154
158
  }
155
159
  function isBlocked(issue, fetchIssue = getIssue) {
156
160
  const blockers = extractBlockers(issue.description);
157
- if (issue.description.toLowerCase().includes("ninguno - puede iniciarse")) {
158
- return false;
159
- }
160
161
  if (blockers.length === 0)
161
162
  return false;
162
163
  for (const ref of blockers) {
@@ -1 +1 @@
1
- {"version":3,"file":"ship.tracker.js","sourceRoot":"","sources":["../../src/ship/ship.tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ship.tracker.js","sourceRoot":"","sources":["../../src/ship/ship.tracker.ts"],"names":[],"mappings":"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"}
@@ -78,10 +78,10 @@ Los ADRs fundacionales (A-XXX) se agrupan en fases narrativas; el orden y el agr
78
78
 
79
79
  ### Gate de consistencia
80
80
 
81
- La consistencia del registro se verifica con [`scripts/verify-adr-consistency.py`](../../scripts/verify-adr-consistency.py), un script de solo lectura que se ejecuta desde la raíz del repositorio:
81
+ La consistencia del registro se verifica con [`scripts/verify-adr-consistency.mjs`](../../scripts/verify-adr-consistency.mjs), un script de solo lectura que se ejecuta con Node —el runtime que el paquete garantiza ([A-052](./foundational/A-052-distribucion-metodologia-paquete-versionado.md) §2)— desde la raíz del repositorio:
82
82
 
83
83
  ```bash
84
- python3 scripts/verify-adr-consistency.py
84
+ node scripts/verify-adr-consistency.mjs
85
85
  ```
86
86
 
87
87
  El gate valida **cinco reglas** y debe salir con código `0` y cero violaciones:
@@ -45,6 +45,7 @@ Una sola copia canónica aquí; los skills las apuntan en lugar de duplicarlas:
45
45
  - Las secciones son **Header 1** (`# Nombre de sección`).
46
46
  - Las secciones van seguidas, delimitadas solo por sus títulos.
47
47
  - El título de sección es solo el nombre de la sección.
48
+ - `# Bloqueado por` es el título canónico de la sección de bloqueos; `# Blocked by` es la forma aceptada por `ship` ([A-039](./A-039-pipeline-ship-issues-hijos-spec.md)) para repos con `issue_language: en`.
48
49
  - El texto es texto plano.
49
50
  - Todo el texto en el idioma del repo (`issue_language`, [A-052](./A-052-distribucion-metodologia-paquete-versionado.md)).
50
51
  - Markup del tracker (`tracker_cli`, [A-052](./A-052-distribucion-metodologia-paquete-versionado.md)).
@@ -19,7 +19,7 @@ El formato de los skills ya es el estándar Agent Skills, agnóstico al harness,
19
19
  Distribuir la metodología como un **paquete npm versionado por suscripción**: `@imolko/ultra-agent`. El consumidor instala una versión, la actualiza subiendo de versión y nunca edita el contenido canónico.
20
20
 
21
21
  1. **Modelo de suscripción.** El conjunto canónico es de solo lectura en el repositorio consumidor. El consumidor añade sus propios artefactos —skills de proyecto y ADRs de su tier de proyecto— en ubicaciones que el instalador nunca toca. La regla es **«extender, no editar»**: si el consumidor disiente de una decisión canónica, escribe su propio skill o ADR en su espacio, no modifica el canónico.
22
- 2. **Límite de contenido.** Se distribuye solo la metodología: los tiers A, T y P, el meta-ADR `ADR-0000`, el gate de consistencia, los skills canónicos, las extensiones de pi y el **preset de lint** que materializa las reglas ejecutables del tier A — los guardrails aplicables ([A-045](./A-045-guardrails-aplicables-no-directrices.md)) y las reglas estructurales de costura y errores ([A-053](./A-053-errores-compartidos-entre-features-dos-hogares-por-capa.md), [A-054](./A-054-contrato-costura-driver-port-raw-data-canal-error.md)) —. Los ADRs del tier de proyecto de cada consumidor (prefijo `PJ-`) no forman parte del paquete.
22
+ 2. **Límite de contenido.** Se distribuye solo la metodología: los tiers A, T y P, el meta-ADR `ADR-0000`, el gate de consistencia, los skills canónicos, las extensiones de pi y el **preset de lint** que materializa las reglas ejecutables del tier A — los guardrails aplicables ([A-045](./A-045-guardrails-aplicables-no-directrices.md)) y las reglas estructurales de costura y errores ([A-053](./A-053-errores-compartidos-entre-features-dos-hogares-por-capa.md), [A-054](./A-054-contrato-costura-driver-port-raw-data-canal-error.md)) —. Los ADRs del tier de proyecto de cada consumidor (prefijo `PJ-`) no forman parte del paquete. El **gate de consistencia** corre sobre **Node**, el runtime que la distribución garantiza: el paquete llega por `npx` a un repositorio TypeScript y ninguna decisión metodológica aporta Python; el gate corre, por tanto, sobre el runtime del paquete.
23
23
  3. **Espejo de ADRs.** El instalador copia los tiers A, T y P en el `adr_dir` del consumidor como archivos de solo lectura. La actualización reconcilia el espejo y nunca toca el tier de proyecto ni los READMEs de dominio del consumidor.
24
24
  4. **Mecanismo.** Un CLI —`npx @imolko/ultra-agent install | update | status`— materializa el conjunto en las ubicaciones de descubrimiento de cada harness y registra un manifiesto de versión para poder reconciliar después.
25
25
  5. **Deriva.** Si el consumidor edita un archivo espejado, `update` falla en voz alta ([A-007](./A-007-data-contract-fail-fast.md)) y solo se resuelve con `--reset`, que respalda antes de sobrescribir. No existe `--keep`: conservar una edición del espejo viola el modelo de solo lectura.
package/eslint/index.mjs CHANGED
@@ -47,11 +47,19 @@ import boundaries from "eslint-plugin-boundaries";
47
47
  /** Archivos que el preset cubre por defecto. */
48
48
  export const PRESET_FILES = ["**/*.{ts,tsx,js,mjs,cjs}"];
49
49
 
50
- /** Carpetas y archivos que el preset ignora por defecto. */
50
+ /**
51
+ * Carpetas y archivos que el preset ignora por defecto.
52
+ *
53
+ * Los patrones son relativos al directorio del `eslint.config.*` que invoca el
54
+ * preset (flat config): `build/**` ancla `build/` a la raíz y no oculta un
55
+ * workspace de dominio llamado `build` (p. ej. `domain/build/**`). Los ignores
56
+ * de artefactos que sí pueden aparecer anidados (`dist`, `coverage`,
57
+ * `node_modules`) conservan el doble glob a propósito (A-001, A-045/A-046).
58
+ */
51
59
  export const PRESET_IGNORES = [
52
60
  "**/node_modules/**",
53
61
  "**/dist/**",
54
- "**/build/**",
62
+ "build/**",
55
63
  "**/coverage/**",
56
64
  "temp-*/**",
57
65
  ".ultra-reporter/**",
@@ -443,10 +451,54 @@ const LAYER_DEPENDENCY_POLICIES = [
443
451
  },
444
452
  ];
445
453
 
446
- const LAYER_DEPENDENCIES_OPTIONS = {
447
- default: "disallow",
448
- policies: LAYER_DEPENDENCY_POLICIES,
449
- };
454
+ const LAYER_DEPENDENCIES_DEFAULT = "disallow";
455
+
456
+ /**
457
+ * Valida las policies extra del consumidor. El hook es aditivo: la matriz
458
+ * canónica de `LAYER_DEPENDENCY_POLICIES` se evalúa **después** de las policies
459
+ * del consumidor, así que la canónica sigue vigente sin reescribirse,
460
+ * `default: "disallow"` sigue gobernando lo no declarado y una policy extra no
461
+ * puede retirar un permiso canónico. Extender no puede contradecir A-001/A-026:
462
+ * si la matriz canónica parece equivocada, se reporta upstream en lugar de
463
+ * compensarla desde el consumidor.
464
+ *
465
+ * @param {unknown} policies
466
+ * @returns {Array<Record<string, unknown>>}
467
+ */
468
+ function requirePolicies(policies) {
469
+ if (policies === undefined) {
470
+ return [];
471
+ }
472
+ if (
473
+ !Array.isArray(policies) ||
474
+ policies.some(
475
+ (policy) =>
476
+ typeof policy !== "object" || policy === null || Array.isArray(policy),
477
+ )
478
+ ) {
479
+ throw new Error(
480
+ "El preset @imolko/ultra-agent/eslint espera `policies` como array de objetos de política de `eslint-plugin-boundaries`.",
481
+ );
482
+ }
483
+ return policies;
484
+ }
485
+
486
+ /**
487
+ * Compone las opciones de `boundaries/dependencies`: las policies extra del
488
+ * consumidor primero y la matriz canónica después. `eslint-plugin-boundaries`
489
+ * aplica *last-match-wins*, así que poner la canónica al final garantiza que el
490
+ * hook solo pueda ganar permisos: una policy extra con `disallow` nunca anula
491
+ * una arista que la matriz permite (A-052: extender, no editar).
492
+ *
493
+ * @param {Array<Record<string, unknown>>} extra
494
+ * @returns {{ default: string, policies: unknown[] }}
495
+ */
496
+ function layerDependenciesOptions(extra) {
497
+ return {
498
+ default: LAYER_DEPENDENCIES_DEFAULT,
499
+ policies: [...extra, ...LAYER_DEPENDENCY_POLICIES],
500
+ };
501
+ }
450
502
 
451
503
  /**
452
504
  * Construye las reglas de orden de imports por distancia (A-051): builtins,
@@ -599,18 +651,26 @@ function elementDescriptors(layers) {
599
651
  * internal: string,
600
652
  * layers?: Record<string, string>,
601
653
  * rawSeamTypes?: string[],
654
+ * policies?: Array<Record<string, unknown>>,
602
655
  * }} options Opciones del preset. `internal` es obligatorio: el prefijo del
603
656
  * paquete interno del consumidor. `layers` sobreescribe los globs de capa
604
657
  * (defaults de A-001) y admite la clave `feature-error` para el catálogo de
605
658
  * errores de A-053. `rawSeamTypes` extiende, con fragmentos de expresión
606
659
  * regular, las formas raw que cruzan el driver port (A-054) cuando el
607
660
  * consumidor nombra sus DTOs al margen de los sufijos por defecto.
661
+ * `policies` extiende la matriz de dependencias con policies de
662
+ * `eslint-plugin-boundaries` que se evalúan **antes** de la matriz canónica
663
+ * (A-052): es aditivo, no la reemplaza, y como la canónica gana el último
664
+ * match, una policy extra puede permitir más pero nunca retirar un permiso de
665
+ * la matriz ni contradecir A-001/A-026 (si la matriz parece equivocada, se
666
+ * reporta upstream).
608
667
  * @returns {import("eslint").Linter.Config[]}
609
668
  */
610
669
  export function createPreset(options) {
611
670
  const internal = requireInternal(options?.internal);
612
671
  const layers = resolveLayers(options?.layers);
613
672
  const rawSeamTypes = requireRawSeamTypes(options?.rawSeamTypes);
673
+ const policies = requirePolicies(options?.policies);
614
674
 
615
675
  return [
616
676
  { ignores: PRESET_IGNORES },
@@ -646,7 +706,7 @@ export function createPreset(options) {
646
706
  rules: {
647
707
  ...STYLE_RULES,
648
708
  ...importRules(internal),
649
- "boundaries/dependencies": ["error", LAYER_DEPENDENCIES_OPTIONS],
709
+ "boundaries/dependencies": ["error", layerDependenciesOptions(policies)],
650
710
  },
651
711
  },
652
712
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imolko/ultra-agent",
3
- "version": "0.1.2-beta",
3
+ "version": "1.0.0-beta",
4
4
  "description": "Metodología ultra como paquete versionado: skills canónicos, registro ADR A/T/P, extensiones de pi y CLI (install/update/status/ship).",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -46,12 +46,17 @@
46
46
  ]
47
47
  },
48
48
  "scripts": {
49
- "test": "vitest run",
49
+ "test": "vitest run && npm run test:guardrail",
50
+ "test:guardrail": "vitest run --root pi/extensions/qa-guardrail",
50
51
  "test:watch": "vitest",
51
52
  "typecheck": "tsc -p tsconfig.json --noEmit",
52
53
  "clean": "rm -rf dist-node",
53
54
  "build": "npm run clean && tsc -p tsconfig.json && bash scripts/copy-assets.sh",
54
- "gate": "python3 scripts/verify-adr-consistency.py"
55
+ "prepack": "node scripts/ensure-bin-exec.mjs",
56
+ "gate": "node scripts/verify-adr-consistency.mjs",
57
+ "gate:verify": "bash scripts/__fixtures__/gate/capture-oracle.sh",
58
+ "gate:update": "bash scripts/__fixtures__/gate/capture-oracle.sh --update",
59
+ "gate:oracle": "bash scripts/__fixtures__/gate/capture-oracle.sh --oracle"
55
60
  },
56
61
  "files": [
57
62
  "bin",
@@ -62,10 +67,13 @@
62
67
  "docs/adr",
63
68
  "pi/extensions",
64
69
  "scripts",
70
+ "!scripts/__fixtures__/**",
65
71
  "README.md",
66
72
  "!**/*.test.ts",
67
73
  "!**/*.integration.test.ts",
68
74
  "!**/*.spec.ts",
75
+ "!**/*.test.mjs",
76
+ "!**/*.spec.mjs",
69
77
  "!**/package-lock.json",
70
78
  "!**/vitest.config.ts",
71
79
  "!**/node_modules/**",
@@ -83,7 +91,8 @@
83
91
  "eslint": "^9.0.0",
84
92
  "eslint-import-resolver-typescript": "^4.4.5",
85
93
  "eslint-plugin-boundaries": "^7.2.0",
86
- "eslint-plugin-import-x": "^4.17.1"
94
+ "eslint-plugin-import-x": "^4.17.1",
95
+ "minimatch": "^10"
87
96
  },
88
97
  "devDependencies": {
89
98
  "@imolko/ultra-tsconfig": "1.1.0",
@@ -16,7 +16,11 @@ Además, el hook `tool_call` congela la línea base del archivo *antes* de la pr
16
16
  Antes de todo eso, el **cerco** bloquea en `tool_call`: los caminos protegidos hardcodeados (`eslint.config.mjs`, `.pi/qa-guardrail.json`, `.pi/extensions/qa-guardrail/**`) y las directivas nuevas `eslint-disable*` en `write.content` / `edit.newText`. El cerco es independiente de ESLint y de la selección: se aplica aunque el config esté ausente o el archivo no esté cubierto por ningún adaptador.
17
17
  Por conservadurismo, `checkCerco` bloquea cualquier directiva presente en `edit.newText` aunque ya estuviera en `oldText` (mover una directiva heredada se bloquea como «nueva»): posible falso positivo, coherente con «el cerco prohíbe desactivar reglas en línea».
18
18
 
19
- **Límite del cerco**: solo cerca las herramientas `write`/`edit`. El agente aún podría tocar `eslint.config.mjs` o inyectar `eslint-disable*` vía `bash` (p. ej. `sed`/`cat`); ese hueco es una limitación estructural de A-045 heredada del alcance del PRD (el cerco opera sobre `tool_call` de write/edit), no una desviación del spec.
19
+ **Límite del cerco**: solo cerca las herramientas `write`/`edit`. El agente aún podría tocar `eslint.config.mjs` o inyectar `eslint-disable*` vía `bash` (p. ej. `sed`/`cat`); ese hueco es una limitación estructural del cerco, cuyo dueño es [A-049](../../../docs/adr/foundational/A-049-materializacion-bucle-guardrails-extension-nativa-pi.md) (el cerco opera sobre `tool_call` de write/edit), no una desviación del spec.
20
+
21
+ **Punto de enforcement fuera de `write`/`edit`**: el hueco no queda sin cubrir; lo cubre el **gate de merge**. Ese es el punto de enforcement de la capa 2 de [A-045](../../../docs/adr/foundational/A-045-guardrails-aplicables-no-directrices.md) (linting) materializada como gate en el pipeline de integración continua de [A-016](../../../docs/adr/foundational/A-016-cicd-gitlab-pipeline-raiz-pipelines-modulares.md), que revisa el MR completo y lo rechaza: no distingue si la edición vino de `write`/`edit` o de un heredoc de `bash`. La extensión da retroalimentación temprana en el ciclo de edición; el gate de merge es el que decide si el cambio entra.
22
+
23
+ **Para agentes**: editar un camino protegido desde `bash` **no** es una vía alternativa al cerco: el gate de merge lo rechaza en el MR. Si la tarea exige tocar la definición de reglas o desactivar una regla, el agente se detiene y lo reporta a la persona ([A-045](../../../docs/adr/foundational/A-045-guardrails-aplicables-no-directrices.md), principio 2).
20
24
 
21
25
  Sin violaciones nuevas, no se anexa nada.
22
26
  Además, `/qa-guardrail check` hace un **barrido completo** (no delta-scoped) de los archivos que coinciden con la configuración: lista las violaciones y las directivas `eslint-disable*` heredadas, sin bloquear nada. Sirve de inventario de migración.
@@ -101,7 +105,7 @@ npm test # todos los tests una vez
101
105
  npm run test:watch # watch mode
102
106
  ```
103
107
 
104
- `eslint` y `minimatch` son peers implícitos resueltos desde el `node_modules` de la raíz del repo. Ambos se cargan perezosamente: `eslint` se importa dinámicamente en el primer lint y `minimatch` se resuelve en la primera selección. Si `minimatch` no está disponible, la selección no cubre nada (fail-closed); si `eslint` no está (o su config está rota), el adaptador lanza y el runner avisa y omite el feedback — nunca un pase silencioso. Cargar la extensión no exige ninguno de los dos.
108
+ `eslint` y `minimatch` ya no dependen del árbol del anfitrión: ambos son dependencias declaradas del paquete raíz (`package.json`), así que la instalación de `@imolko/ultra-agent` los provee. Aun así se cargan perezosamente: `eslint` se importa dinámicamente en el primer lint y `minimatch` se resuelve en la primera selección. Si `minimatch` no está disponible, la selección no cubre nada (fail-closed); si `eslint` no está (o su config está rota), el adaptador lanza y el runner avisa y omite el feedback — nunca un pase silencioso. Cargar la extensión no exige ninguno de los dos.
105
109
 
106
110
  ## Desarrollo
107
111
 
@@ -4,9 +4,11 @@
4
4
  *
5
5
  * `minimatch` is loaded lazily (and cached) on first use, so loading this
6
6
  * module — and the extension that imports it — never requires `minimatch` to
7
- * be installed. If it cannot be resolved, selection fails closed (no file
8
- * matches, hence no adapter runs), mirroring the lazy-linter contract of
9
- * A-049.
7
+ * be installed. Both the callable v9 export and the `{ minimatch }` namespace
8
+ * of v10 are accepted. If it cannot be resolved, selection fails closed (no
9
+ * file matches, hence no adapter runs), mirroring the lazy-linter contract of
10
+ * A-049. A matcher that throws also fails closed (no file matches) instead of
11
+ * taking down `write`/`edit`.
10
12
  */
11
13
 
12
14
  import { createRequire } from "node:module";
@@ -22,11 +24,33 @@ type Minimatch = (path: string, pattern: string, options?: { dot?: boolean }) =>
22
24
 
23
25
  let cachedMatcher: Minimatch | null | undefined;
24
26
 
27
+ /**
28
+ * Normalize the loaded module to a callable matcher: v9 exports the function
29
+ * directly, v10 exports a `{ minimatch, sep, … }` namespace. Anything else
30
+ * yields `null` (fail-closed).
31
+ */
32
+ export function resolveMinimatchModule(mod: unknown): Minimatch | null {
33
+ if (typeof mod === "function") {
34
+ return mod as Minimatch;
35
+ }
36
+ if (
37
+ typeof mod === "object" &&
38
+ mod !== null &&
39
+ typeof (mod as { minimatch?: unknown }).minimatch === "function"
40
+ ) {
41
+ return (mod as { minimatch: Minimatch }).minimatch;
42
+ }
43
+ return null;
44
+ }
45
+
25
46
  function loadMinimatch(): Minimatch | null {
26
47
  try {
27
48
  const require = createRequire(import.meta.url);
28
- const minimatch = require("minimatch") as Minimatch;
29
- return (path, pattern) => minimatch(path, pattern, { dot: true });
49
+ const matcher = resolveMinimatchModule(require("minimatch") as unknown);
50
+ if (!matcher) {
51
+ return null;
52
+ }
53
+ return (path, pattern) => matcher(path, pattern, { dot: true });
30
54
  } catch {
31
55
  return null;
32
56
  }
@@ -44,6 +68,15 @@ export function setGlobMatcher(matcher: Minimatch | null | undefined): void {
44
68
  cachedMatcher = matcher;
45
69
  }
46
70
 
71
+ /** Match one pattern, degrading a throwing matcher to "no match". */
72
+ function matches(matcher: Minimatch, path: string, pattern: string): boolean {
73
+ try {
74
+ return matcher(path, pattern) === true;
75
+ } catch {
76
+ return false;
77
+ }
78
+ }
79
+
47
80
  /**
48
81
  * True when `absPath` is selected by the tool entry's include/exclude globs.
49
82
  *
@@ -51,6 +84,7 @@ export function setGlobMatcher(matcher: Minimatch | null | undefined): void {
51
84
  * - An empty `include` list matches nothing (fail-closed, like ESLint flat config).
52
85
  * - `exclude` wins over `include`.
53
86
  * - A missing glob matcher matches nothing (fail-closed, never a load error).
87
+ * - A matcher that throws matches nothing (fail-closed, never a tool error).
54
88
  */
55
89
  export function isFileSelected(absPath: string, entry: ToolEntry, cwd: string): boolean {
56
90
  const rel = toPosixPath(relative(resolve(cwd), resolve(absPath)));
@@ -66,14 +100,14 @@ export function isFileSelected(absPath: string, entry: ToolEntry, cwd: string):
66
100
  if (entry.include.length === 0) {
67
101
  return false;
68
102
  }
69
- const included = entry.include.some((pattern) => matcher(rel, pattern));
103
+ const included = entry.include.some((pattern) => matches(matcher, rel, pattern));
70
104
  if (!included) {
71
105
  return false;
72
106
  }
73
107
  if (entry.exclude.length === 0) {
74
108
  return true;
75
109
  }
76
- const excluded = entry.exclude.some((pattern) => matcher(rel, pattern));
110
+ const excluded = entry.exclude.some((pattern) => matches(matcher, rel, pattern));
77
111
  return !excluded;
78
112
  }
79
113