@aligndottech/cli 0.57.0 → 0.58.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 (140) hide show
  1. package/README.md +31 -18
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +14 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +24 -2
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/import/git.d.ts.map +1 -1
  10. package/dist/commands/import/git.js +8 -4
  11. package/dist/commands/import/git.js.map +1 -1
  12. package/dist/commands/mcp.js +1 -1
  13. package/dist/commands/mcp.js.map +1 -1
  14. package/dist/commands/setup.d.ts.map +1 -1
  15. package/dist/commands/setup.js +26 -12
  16. package/dist/commands/setup.js.map +1 -1
  17. package/dist/commands/use.d.ts +2 -0
  18. package/dist/commands/use.d.ts.map +1 -1
  19. package/dist/commands/use.js +19 -1
  20. package/dist/commands/use.js.map +1 -1
  21. package/dist/commands/why.d.ts.map +1 -1
  22. package/dist/commands/why.js +91 -53
  23. package/dist/commands/why.js.map +1 -1
  24. package/dist/lib/agent-rules.d.ts +11 -4
  25. package/dist/lib/agent-rules.d.ts.map +1 -1
  26. package/dist/lib/agent-rules.js +163 -190
  27. package/dist/lib/agent-rules.js.map +1 -1
  28. package/dist/lib/ask-listing.d.ts +30 -0
  29. package/dist/lib/ask-listing.d.ts.map +1 -0
  30. package/dist/lib/ask-listing.js +60 -0
  31. package/dist/lib/ask-listing.js.map +1 -0
  32. package/dist/lib/capture-report.d.ts.map +1 -1
  33. package/dist/lib/capture-report.js +11 -3
  34. package/dist/lib/capture-report.js.map +1 -1
  35. package/dist/lib/claude-presence.d.ts +12 -0
  36. package/dist/lib/claude-presence.d.ts.map +1 -0
  37. package/dist/lib/claude-presence.js +19 -0
  38. package/dist/lib/claude-presence.js.map +1 -0
  39. package/dist/lib/config.d.ts +2 -0
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +4 -0
  42. package/dist/lib/config.js.map +1 -1
  43. package/dist/lib/doctor.d.ts +9 -1
  44. package/dist/lib/doctor.d.ts.map +1 -1
  45. package/dist/lib/doctor.js +19 -1
  46. package/dist/lib/doctor.js.map +1 -1
  47. package/dist/lib/embedding-assets.d.ts +40 -0
  48. package/dist/lib/embedding-assets.d.ts.map +1 -0
  49. package/dist/lib/embedding-assets.js +74 -0
  50. package/dist/lib/embedding-assets.js.map +1 -0
  51. package/dist/lib/embedding-runtime.d.ts +41 -0
  52. package/dist/lib/embedding-runtime.d.ts.map +1 -0
  53. package/dist/lib/embedding-runtime.js +224 -0
  54. package/dist/lib/embedding-runtime.js.map +1 -0
  55. package/dist/lib/fetchers/git.d.ts +3 -0
  56. package/dist/lib/fetchers/git.d.ts.map +1 -1
  57. package/dist/lib/fetchers/git.js +9 -5
  58. package/dist/lib/fetchers/git.js.map +1 -1
  59. package/dist/lib/found-summary.d.ts.map +1 -1
  60. package/dist/lib/found-summary.js +19 -3
  61. package/dist/lib/found-summary.js.map +1 -1
  62. package/dist/lib/gateway-client.d.ts.map +1 -1
  63. package/dist/lib/gateway-client.js +21 -1
  64. package/dist/lib/gateway-client.js.map +1 -1
  65. package/dist/lib/git.d.ts +7 -0
  66. package/dist/lib/git.d.ts.map +1 -1
  67. package/dist/lib/git.js +7 -2
  68. package/dist/lib/git.js.map +1 -1
  69. package/dist/lib/import-defaults.d.ts +11 -4
  70. package/dist/lib/import-defaults.d.ts.map +1 -1
  71. package/dist/lib/import-defaults.js +11 -4
  72. package/dist/lib/import-defaults.js.map +1 -1
  73. package/dist/lib/launch/mcp-child-env.d.ts.map +1 -1
  74. package/dist/lib/launch/mcp-child-env.js +6 -4
  75. package/dist/lib/launch/mcp-child-env.js.map +1 -1
  76. package/dist/lib/local-db.d.ts +13 -0
  77. package/dist/lib/local-db.d.ts.map +1 -1
  78. package/dist/lib/local-db.js +23 -0
  79. package/dist/lib/local-db.js.map +1 -1
  80. package/dist/lib/local-embeddings-native.d.ts +17 -0
  81. package/dist/lib/local-embeddings-native.d.ts.map +1 -0
  82. package/dist/lib/local-embeddings-native.js +78 -0
  83. package/dist/lib/local-embeddings-native.js.map +1 -0
  84. package/dist/lib/local-embeddings.d.ts.map +1 -1
  85. package/dist/lib/local-embeddings.js +46 -47
  86. package/dist/lib/local-embeddings.js.map +1 -1
  87. package/dist/lib/local-gateway-client.d.ts +2 -2
  88. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  89. package/dist/lib/local-gateway-client.js +43 -31
  90. package/dist/lib/local-gateway-client.js.map +1 -1
  91. package/dist/lib/local-thresholds.d.ts +8 -0
  92. package/dist/lib/local-thresholds.d.ts.map +1 -1
  93. package/dist/lib/local-thresholds.js +8 -0
  94. package/dist/lib/local-thresholds.js.map +1 -1
  95. package/dist/lib/model-cache.d.ts +13 -0
  96. package/dist/lib/model-cache.d.ts.map +1 -1
  97. package/dist/lib/model-cache.js +26 -0
  98. package/dist/lib/model-cache.js.map +1 -1
  99. package/dist/lib/next-step.d.ts +2 -0
  100. package/dist/lib/next-step.d.ts.map +1 -1
  101. package/dist/lib/next-step.js +37 -16
  102. package/dist/lib/next-step.js.map +1 -1
  103. package/dist/lib/node-floor.d.ts +6 -0
  104. package/dist/lib/node-floor.d.ts.map +1 -0
  105. package/dist/lib/node-floor.js +15 -0
  106. package/dist/lib/node-floor.js.map +1 -0
  107. package/dist/lib/safe-config-write.d.ts +24 -1
  108. package/dist/lib/safe-config-write.d.ts.map +1 -1
  109. package/dist/lib/safe-config-write.js +113 -26
  110. package/dist/lib/safe-config-write.js.map +1 -1
  111. package/dist/lib/scope-real.d.ts.map +1 -1
  112. package/dist/lib/search-query.d.ts +21 -0
  113. package/dist/lib/search-query.d.ts.map +1 -1
  114. package/dist/lib/search-query.js +1 -1
  115. package/dist/lib/search-query.js.map +1 -1
  116. package/dist/lib/search-rerank.d.ts +23 -0
  117. package/dist/lib/search-rerank.d.ts.map +1 -0
  118. package/dist/lib/search-rerank.js +63 -0
  119. package/dist/lib/search-rerank.js.map +1 -0
  120. package/dist/lib/suppress-sqlite-warning.d.ts +13 -0
  121. package/dist/lib/suppress-sqlite-warning.d.ts.map +1 -0
  122. package/dist/lib/suppress-sqlite-warning.js +21 -0
  123. package/dist/lib/suppress-sqlite-warning.js.map +1 -0
  124. package/dist/lib/sync/real-env.d.ts.map +1 -1
  125. package/dist/lib/sync/spawn-background.d.ts +1 -1
  126. package/dist/lib/sync/spawn-background.d.ts.map +1 -1
  127. package/dist/lib/sync/spawn-background.js +1 -1
  128. package/dist/lib/sync/spawn-background.js.map +1 -1
  129. package/dist/lib/tar-lite.d.ts +18 -0
  130. package/dist/lib/tar-lite.d.ts.map +1 -0
  131. package/dist/lib/tar-lite.js +120 -0
  132. package/dist/lib/tar-lite.js.map +1 -0
  133. package/dist/lib/user-hooks.d.ts.map +1 -1
  134. package/dist/lib/user-hooks.js +13 -3
  135. package/dist/lib/user-hooks.js.map +1 -1
  136. package/dist/lib/verified-download.d.ts +19 -0
  137. package/dist/lib/verified-download.d.ts.map +1 -0
  138. package/dist/lib/verified-download.js +105 -0
  139. package/dist/lib/verified-download.js.map +1 -0
  140. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"user-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/user-hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBnE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAIxE;AA+GD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,SAAS;AACrB,4FAA4F;AAC5F,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAqDT;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAwB/D;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"user-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/user-hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBnE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAUxE;AAkHD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,SAAS;AACrB,4FAA4F;AAC5F,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAqDT;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAwB/D;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -6,10 +6,17 @@ import { safeWriteJson } from './safe-config-write.js';
6
6
  // The hook budget on every host is <=10s (check.ts); the same number Claude Code's hook uses.
7
7
  const HOOK_TIMEOUT_SECONDS = 10;
8
8
  const OURS = 'align check --advisory';
9
+ const COPILOT_ABSENT_GUARD = 'command -v align >/dev/null 2>&1 || exit 0; ';
9
10
  export function advisoryHookCommand(host, env) {
10
11
  // prod is the default env, so leave it off - the same rule agent-rules.ts follows.
11
12
  const envArg = env && env !== 'prod' ? ` --env ${env}` : '';
12
- return `${OURS} --format ${host}${envArg}`;
13
+ const command = `${OURS} --format ${host}${envArg}`;
14
+ // Copilot CLI denies a tool call when a preToolUse hook exits non-zero, and this file is the
15
+ // user's, so it fires in every project. A missing align (uninstalled, or not on the hook
16
+ // shell's PATH) is exit 127 and would block every edit. Guard the absent case only: a present
17
+ // align keeps its own exit status and output. The entry only has a `bash` field, so this guard covers hosts that run it; Windows is unchanged.
18
+ // The other hosts treat a non-zero exit as a non-blocking error, so they keep the bare form.
19
+ return host === 'copilot' ? `${COPILOT_ABSENT_GUARD}${command}` : command;
13
20
  }
14
21
  // Every field name here comes from the host's published hook schema:
15
22
  // Codex ~/.codex/hooks.json {hooks:{PreToolUse:[{matcher, hooks:[{type,command,timeout}]}]}}
@@ -63,8 +70,11 @@ function isOurs(spec, entry) {
63
70
  function isPristine(host, spec, entry) {
64
71
  const command = spec.commandsOf(entry).find((c) => c.includes(OURS));
65
72
  // The command itself must be one align writes: an appended flag or a wrapper is an edit too.
66
- return command !== undefined
67
- && new RegExp(`^${OURS} --format ${host}( --env \\S+)?$`).test(command)
73
+ // Copilot's command carries the absent-align guard (ALI-1749); the bare form older versions
74
+ // wrote is pristine too, which is what lets a re-run migrate it.
75
+ const bare = host === 'copilot' && command?.startsWith(COPILOT_ABSENT_GUARD) ? command.slice(COPILOT_ABSENT_GUARD.length) : command;
76
+ return command !== undefined && bare !== undefined
77
+ && new RegExp(`^${OURS} --format ${host}( --env \\S+)?$`).test(bare)
68
78
  && isDeepStrictEqual(entry, spec.entry(command));
69
79
  }
70
80
  // Throws on a file we cannot parse rather than rewriting it - the same rule every JSON
@@ -1 +1 @@
1
- {"version":3,"file":"user-hooks.js","sourceRoot":"","sources":["../../src/lib/user-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAwBvD,8FAA8F;AAC9F,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,MAAM,UAAU,mBAAmB,CAAC,IAAc,EAAE,GAAY;IAC9D,mFAAmF;IACnF,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,GAAG,IAAI,aAAa,IAAI,GAAG,MAAM,EAAE,CAAC;AAC7C,CAAC;AAaD,qEAAqE;AACrE,oGAAoG;AACpG,yFAAyF;AACzF,yFAAyF;AACzF,uFAAuF;AACvF,+FAA+F;AAC/F,uFAAuF;AACvF,uFAAuF;AACvF,oDAAoD;AACpD,sGAAsG;AACtG,4FAA4F;AAC5F,wFAAwF;AACxF,8FAA8F;AAC9F,MAAM,KAAK,GAA+B;IACxC,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,YAAY,CAAC;QACtB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnB,OAAO,EAAE,wBAAwB;YACjC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;SACrE,CAAC;QACF,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,MAAM,KAAK,GAAI,KAAyD,EAAE,KAAK,CAAC;YAChF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,CAAC;KACF;IACD,MAAM,EAAE;QACN,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;QAClF,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAE,KAAsC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;KACxF;IACD,OAAO,EAAE;QACP,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,oBAAoB;SACjC,CAAC;QACF,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAE,KAAmC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;KAClF;CACF,CAAC;AAEF,SAAS,MAAM,CAAC,IAAc,EAAE,KAAc;IAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,6FAA6F;AAC7F,+FAA+F;AAC/F,wEAAwE;AACxE,SAAS,UAAU,CAAC,IAAc,EAAE,IAAc,EAAE,KAAc;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,6FAA6F;IAC7F,OAAO,OAAO,KAAK,SAAS;WACvB,IAAI,MAAM,CAAC,IAAI,IAAI,aAAa,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;WACpE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,uFAAuF;AACvF,4FAA4F;AAC5F,gCAAgC;AAChC,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAAyB,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC9D,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2EAA2E,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,2FAA2F;AAC3F,4FAA4F;AAC5F,uFAAuF;AACvF,SAAS,OAAO,CAAC,MAA+B,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,+EAA+E,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAA0B,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvE,MAAM,UAAU,cAAc,CAC5B,MAAsB,EACtB,GAAY,EACZ,SAAqB;AACrB,4FAA4F;AAC5F,QAAiC;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,wEAAwE;IACxE,MAAM,KAAK,GAAG,CAAC,MAA+B,EAAuC,EAAE;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,yEAAyE;QACzE,IAAI,SAAS,IAAI,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7D,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,KAAK,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxI,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,oGAAoG;QACpG,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAc,CAAC;QACpG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpH,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,mCAAmC,EAAE,CAAC,CAAC;QACpI,IAAI,OAAO,EAAE,CAAC;YACZ,SAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM;YAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,MAAM,KAAK,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChD,KAAK,CAAC,MAAM,CAAC,CAAC;IACd,IAAI,OAAO,EAAE,CAAC;QACZ,SAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM;QAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAc,CAAC;QAChF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC;QACzD,IAAI,SAAS,CAAC,MAAM;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;;YAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACxB,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,wCAAwC,IAAI,oHAAoH,CAAC;AAC1K,CAAC"}
1
+ {"version":3,"file":"user-hooks.js","sourceRoot":"","sources":["../../src/lib/user-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export type DownloadFailure = 'network' | 'http' | 'size' | 'checksum';
2
+ export declare class DownloadError extends Error {
3
+ readonly kind: DownloadFailure;
4
+ constructor(kind: DownloadFailure, message: string);
5
+ }
6
+ export interface FetchVerifiedOptions {
7
+ /** Lower-case hex SHA-256 of the bytes this call returns (after gunzip, when `gunzip`). */
8
+ sha256: string;
9
+ /** Hard cap on the returned (decompressed) size. Also bounds what a gzip bomb can expand to. */
10
+ maxBytes: number;
11
+ /** Treat the body as gzip and verify the DECOMPRESSED content. Digest of content, not of the
12
+ * compressor's output: zlib versions differ, so a digest of the .gz would not reproduce. */
13
+ gunzip?: boolean;
14
+ timeoutMs?: number;
15
+ fetchImpl?: typeof fetch;
16
+ }
17
+ export declare const DEFAULT_TIMEOUT_MS = 120000;
18
+ export declare function fetchVerified(url: string, opts: FetchVerifiedOptions): Promise<Buffer>;
19
+ //# sourceMappingURL=verified-download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verified-download.d.ts","sourceRoot":"","sources":["../../src/lib/verified-download.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvE,qBAAa,aAAc,SAAQ,KAAK;IAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;CAI5D;AAED,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB;iGAC6F;IAC7F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAwD1C,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5F"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Download a file and refuse it unless its SHA-256 matches a digest pinned in OUR source.
3
+ *
4
+ * Everything the on-device embedding path fetches goes through here (the native runtime
5
+ * bundle, the model weights, the tokenizer). The digest, not the host, is the trust anchor:
6
+ * GitHub, huggingface.co and any mirror a user points us at are all equally untrusted until
7
+ * the bytes hash to the value that shipped inside this package.
8
+ *
9
+ * Fails closed and loud. A mismatch, a short read, an over-size body, an HTTP error and a
10
+ * network failure each throw a `DownloadError` and return nothing, so a caller can never end
11
+ * up holding unverified bytes. Nothing here writes to disk: persisting is the caller's job and
12
+ * only ever happens after this returned.
13
+ */
14
+ import { createHash } from 'node:crypto';
15
+ import { readFileSync, statSync } from 'node:fs';
16
+ import { fileURLToPath } from 'node:url';
17
+ import { gunzipSync } from 'node:zlib';
18
+ export class DownloadError extends Error {
19
+ kind;
20
+ constructor(kind, message) {
21
+ super(message);
22
+ this.kind = kind;
23
+ this.name = 'DownloadError';
24
+ }
25
+ }
26
+ export const DEFAULT_TIMEOUT_MS = 120_000;
27
+ function sha256Hex(data) {
28
+ return createHash('sha256').update(data).digest('hex');
29
+ }
30
+ async function readBody(url, maxBytes, timeoutMs, fetchImpl) {
31
+ if (url.startsWith('file:')) {
32
+ // Used by CI and mirrors that pre-stage the files. Same digest check applies afterwards.
33
+ const path = fileURLToPath(url);
34
+ // Regular file, size checked BEFORE reading: file:///dev/zero or a multi-GB file must not be slurped.
35
+ const st = statSync(path);
36
+ if (!st.isFile())
37
+ throw new DownloadError('network', `${url} is not a regular file`);
38
+ if (st.size > maxBytes)
39
+ throw new DownloadError('size', `${url} is ${st.size} bytes, over the ${maxBytes} byte limit`);
40
+ return readFileSync(path);
41
+ }
42
+ // An IDLE timeout, re-armed on every chunk: a slow link may take as long as it needs as long as
43
+ // bytes keep arriving, while a stalled or silent server is cut after `timeoutMs`.
44
+ const ctl = new AbortController();
45
+ let timer = setTimeout(() => ctl.abort(), timeoutMs);
46
+ const rearm = () => { clearTimeout(timer); timer = setTimeout(() => ctl.abort(), timeoutMs); };
47
+ try {
48
+ return await readHttp(url, maxBytes, fetchImpl, ctl.signal, rearm);
49
+ }
50
+ finally {
51
+ clearTimeout(timer);
52
+ }
53
+ }
54
+ async function readHttp(url, maxBytes, fetchImpl, signal, rearm) {
55
+ let res;
56
+ try {
57
+ res = await fetchImpl(url, { signal, redirect: 'follow' });
58
+ }
59
+ catch (err) {
60
+ throw new DownloadError('network', `could not reach ${new URL(url).host}: ${err.message}`);
61
+ }
62
+ rearm();
63
+ if (!res.ok)
64
+ throw new DownloadError('http', `${new URL(url).host} answered HTTP ${res.status} for ${url}`);
65
+ const declared = Number(res.headers.get('content-length') ?? '0');
66
+ if (declared > maxBytes)
67
+ throw new DownloadError('size', `${url} declares ${declared} bytes, over the ${maxBytes} byte limit`);
68
+ const chunks = [];
69
+ let total = 0;
70
+ try {
71
+ if (!res.body)
72
+ throw new Error('empty response body');
73
+ for await (const chunk of res.body) {
74
+ rearm();
75
+ total += chunk.length;
76
+ if (total > maxBytes)
77
+ throw new DownloadError('size', `${url} sent more than the ${maxBytes} byte limit`);
78
+ chunks.push(Buffer.from(chunk));
79
+ }
80
+ }
81
+ catch (err) {
82
+ if (err instanceof DownloadError)
83
+ throw err;
84
+ throw new DownloadError('network', `connection to ${new URL(url).host} broke mid-download: ${err.message}`);
85
+ }
86
+ return Buffer.concat(chunks);
87
+ }
88
+ export async function fetchVerified(url, opts) {
89
+ const raw = await readBody(url, opts.maxBytes, opts.timeoutMs ?? DEFAULT_TIMEOUT_MS, opts.fetchImpl ?? fetch);
90
+ let content = raw;
91
+ if (opts.gunzip) {
92
+ try {
93
+ content = gunzipSync(raw, { maxOutputLength: opts.maxBytes });
94
+ }
95
+ catch (err) {
96
+ throw new DownloadError('size', `${url} is not a valid gzip file or expands past ${opts.maxBytes} bytes: ${err.message}`);
97
+ }
98
+ }
99
+ const actual = sha256Hex(content);
100
+ if (actual !== opts.sha256.toLowerCase()) {
101
+ throw new DownloadError('checksum', `${url} hashed to ${actual}, expected ${opts.sha256}. Refusing to use it.`);
102
+ }
103
+ return content;
104
+ }
105
+ //# sourceMappingURL=verified-download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verified-download.js","sourceRoot":"","sources":["../../src/lib/verified-download.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aligndottech/cli",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "mcpName": "io.github.aligndottech/cli",
5
5
  "type": "module",
6
6
  "description": "Align CLI - capture decisions, check alignment, and manage connectors",
@@ -21,7 +21,7 @@
21
21
  "url": "https://github.com/aligndottech/align-cli/issues"
22
22
  },
23
23
  "bin": {
24
- "align": "./dist/index.js"
24
+ "align": "./dist/bin.js"
25
25
  },
26
26
  "scripts": {
27
27
  "build": "tsc -p tsconfig.json",
@@ -37,6 +37,7 @@
37
37
  "dependencies": {
38
38
  "@aligndottech/connector-core": "^0.10.1",
39
39
  "@clack/prompts": "^1.7.0",
40
+ "@huggingface/tokenizers": "0.2.0",
40
41
  "@modelcontextprotocol/sdk": "^1.29.0",
41
42
  "chalk": "^5.3.0",
42
43
  "ci-info": "^4.4.0",
@@ -53,6 +54,7 @@
53
54
  },
54
55
  "devDependencies": {
55
56
  "@eslint/js": "^9.0.0",
57
+ "@huggingface/transformers": "^4.2.0",
56
58
  "@types/eventsource": "^1.1.15",
57
59
  "@types/js-yaml": "^4.0.9",
58
60
  "@types/node": "^22.0.0",
@@ -67,9 +69,6 @@
67
69
  "typescript": "^5.6.0",
68
70
  "vitest": "^3.2.4"
69
71
  },
70
- "optionalDependencies": {
71
- "@huggingface/transformers": "^4.2.0"
72
- },
73
72
  "overrides": {
74
73
  "hono": "4.13.7",
75
74
  "@hono/node-server": "1.19.17",
@@ -77,7 +76,8 @@
77
76
  "fast-uri": "3.1.7",
78
77
  "ip-address": "10.7.0",
79
78
  "qs": "6.16.0",
80
- "body-parser": "2.3.0"
79
+ "body-parser": "2.3.0",
80
+ "onnxruntime-node": "1.30.0"
81
81
  },
82
82
  "engines": {
83
83
  "node": ">=22.16"