@atlasauth/cli 0.17.0 → 0.18.1

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.
@@ -86,8 +86,10 @@ async function preflight(ctx, args) {
86
86
  const cred = instanceCredential(ctx, args);
87
87
  const report = await (0, project_1.httpFor)(ctx, cred).get('/v1/instance/preflight');
88
88
  const findings = report.findings ?? [];
89
- const errors = findings.filter((f) => f.severity === 'error').length;
90
- const warnings = findings.filter((f) => f.severity === 'warning').length;
89
+ const counted = findings.filter((f) => !f.acknowledged);
90
+ const errors = counted.filter((f) => f.severity === 'error').length;
91
+ const warnings = counted.filter((f) => f.severity === 'warning').length;
92
+ const acknowledged = findings.length - counted.length;
91
93
  const failed = errors > 0 || (failOn === 'warning' && warnings > 0);
92
94
  if ((0, shared_1.wantsJson)(args.values)) {
93
95
  (0, output_1.printJson)(ctx.io, report);
@@ -98,11 +100,14 @@ async function preflight(ctx, args) {
98
100
  else {
99
101
  ctx.io.out((0, output_1.renderTable)(FINDING_COLUMNS, findings));
100
102
  ctx.io.out('');
101
- for (const f of findings.filter((x) => x.severity !== 'info')) {
103
+ for (const f of counted.filter((x) => x.severity !== 'info')) {
102
104
  ctx.io.out(`${f.code}: ${f.fix}`);
103
105
  }
106
+ for (const f of findings.filter((x) => x.acknowledged)) {
107
+ ctx.io.out(`${f.code}: acknowledged (${f.acknowledged.reason})`);
108
+ }
104
109
  ctx.io.out('');
105
- ctx.io.out(`${errors} error(s), ${warnings} warning(s), ${findings.length - errors - warnings} info.`);
110
+ ctx.io.out(`${errors} error(s), ${warnings} warning(s), ${counted.length - errors - warnings} info${acknowledged ? `, ${acknowledged} acknowledged` : ''}.`);
106
111
  }
107
112
  if (failed) {
108
113
  ctx.io.err(`atlas: preflight failed (${errors} error(s)${failOn === 'warning' ? `, ${warnings} warning(s)` : ''}).`);
@@ -1 +1 @@
1
- {"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../src/commands/project-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../src/commands/project-commands.ts"],"names":[],"mappings":";;AA6BA,gDAgCC;AA4CD,8BAuCC;AAqBD,wBA4BC;AAQD,gCAwEC;AAgBD,kCAgCC;AAKD,wBAyDC;AA/XD,gDAAmD;AACnD,kCAA+C;AAE/C,sCAAqC;AACrC,sCAAgE;AAChE,wCAQoB;AACpB,wCAAwE;AACxE,qCAAyE;AAEzE;;;;GAIG;AAEH;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,GAAe,EACf,IAAgB;IAEhB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,UAAU,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,iBAAQ,CAChB,sCAAsC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,qDAAqD,CACjJ,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAA,gCAAsB,EAAC,KAAK,CAAC,QAAQ,CAAC;YACjD,MAAM,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO;YACL,SAAS,EAAE,IAAA,gCAAsB,EAAC,QAAQ,CAAC;YAC3C,MAAM,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO;YAC9C,QAAQ;YACR,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,yGAAyG;AACzG,SAAS,eAAe,CACtB,GAAe,EACf,IAAgB,EAChB,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,iBAAQ,CAAC,eAAe,OAAO,QAAQ,IAAA,oBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,+BAA+B,OAAO,UAAU,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAA8C,CAAC;IAC1F,MAAM,GAAG,GAAG,SAAS;QACnB,CAAC,CAAC,IAAA,0BAAgB,EAAC,SAAS,EAAE,YAAY,CAAC;QAC3C,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;YAC7B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE;gBACV,CAAC,CAAC,YAAY,CAAC;IACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,iBAAQ,CAAC,YAAY,OAAO,YAAY,GAAG,wCAAwC,OAAO,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC/I,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAaD,MAAM,eAAe,GAA+B;IAClD,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IACtC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;CAC7C,CAAC;AAEF,kHAAkH;AAC3G,KAAK,UAAU,SAAS,CAAC,GAAe,EAAE,IAAgB;IAC/D,MAAM,MAAM,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC;IACtD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,iBAAQ,CAAC,4CAA4C,MAAM,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAgD,wBAAwB,CAAC,CAAC;IACrH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEpE,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,YAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,GAAG,MAAM,cAAc,QAAQ,gBAAgB,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,CACjJ,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,4BAA4B,MAAM,YAAY,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CACzG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAaD,MAAM,cAAc,GAA6B;IAC/C,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IACvF,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;IAC1C,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;CAC3C,CAAC;AAEF,iFAAiF;AAC1E,KAAK,UAAU,MAAM,CAAC,GAAe,EAAE,IAAgB;IAC5D,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,IAAI;QAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI;QAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CACzC,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,CAAC;IACF,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,OAAO,gCAAgC,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,kFAAkF;AAElF,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGhE,oFAAoF;AAC7E,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,IAAgB;IAChE,MAAM,MAAM,GAAG,CAAC,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAc,CAAC;IACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,iBAAQ,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,WAAmB,CAAC;IACxB,IAAI,KAAa,CAAC;IAElB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACnC,KAAK,GAAG,OAAO,CAAC;QAChB,GAAG,CAAC,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,IAAI,QAAQ,CAAC,iBAAiB;YAAE,GAAG,CAAC,kBAAkB,GAAG,WAAW,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACjG,IAAI,QAAQ,CAAC,MAAM;YAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;QACxD,IAAI,QAAQ,CAAC,aAAa;YAAE,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC7E,IAAI,QAAQ,CAAC,QAAQ;YAAE,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC9D,IAAI,QAAQ,CAAC,YAAY;YAAE,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,YAAY,EAAE,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9H,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvH,CAAC;SAAM,CAAC;QACN,oGAAoG;QACpG,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAQtC,cAAc,CAAC,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC;QACjD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,IAAI,CAAC,iBAAiB;YAAE,GAAG,CAAC,kBAAkB,GAAG,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzF,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,IAAI,CAAC,aAAa;YAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ;YAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxD,CAAC;IAED,IAAI,IAAA,kBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjJ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,kBAAkB,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,iEAAiE,CAAC,CAAC;QACjG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,KAAK,KAAK,WAAW,2EAA2E,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3H,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,oCAAoC,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,wDAAwD;AACxD,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AACxG,CAAC;AAED,+DAA+D;AAC/D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,OAAe,EACf,WAAmB,EACnB,GAA2B,EAC3B,OAA6C;IAE7C,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAa;QACtB,KAAK,OAAO,KAAK,WAAW,4FAA4F;QACxH,gBAAgB;QAChB,iBAAiB;QACjB,WAAW;QACX,WAAW,IAAI,EAAE;QACjB,OAAO;QACP,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,KAAK;QACL,qFAAqF;KACtF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,qCAAqC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/H,CAAC;IACD,KAAK,CAAC,IAAI,CACR,KAAK,EACL,4BAA4B,EAC5B,cAAc,EACd,iCAAiC,IAAI,IAAI,EACzC,UAAU,CACX,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,EAAE,8CAA8C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAClI,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,sFAAsF;AAEtF,2GAA2G;AACpG,KAAK,UAAU,MAAM,CAAC,GAAe,EAAE,IAAgB;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,iBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,UAAU,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;QAAE,MAAM,IAAI,iBAAQ,CAAC,oCAAoC,CAAC,CAAC;IACzG,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;QAAE,cAAc,GAAG,CAAC,CAAC;SAClC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAQ,CAAC,qDAAqD,UAAU,IAAI,CAAC,CAAC;QAC3H,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE/B,kDAAkD;IAClD,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAsD,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAClH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,iBAAQ,CAAC,kCAAkC,GAAG,oBAAoB,CAAC,CAAC;QAC1F,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,GAAyG,CAAC;IAC9G,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IACzI,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,uBAAa,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,iBAAQ,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;QACvH,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,UAAG,EAAC,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IACzI,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3F,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAA,uBAAa,EAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACrJ,CAAC;SAAM,CAAC;QACN,mFAAmF;QACnF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAe,EAAC,IAAA,oBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC/F,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,gBAAgB,GAAG,CAAC,EAAE,qBAAqB;SACrD,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,SAAS,eAAe,IAAI,eAAe,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC;IAC/C,IAAI,cAAc,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;SACxG,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;;QAC3H,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC;IAC9H,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -49,6 +49,16 @@ export declare function referalliKeyMode(ctx: RunContext, input: {
49
49
  }): Promise<{
50
50
  live: boolean;
51
51
  known: boolean;
52
+ org: Record<string, unknown> | null;
52
53
  }>;
54
+ /** A Referalli list answer: a plain array (API version 2026-10-21) or a `{ data: [...] }` page. */
55
+ export declare function referalliList(body: unknown): Record<string, unknown>[];
56
+ /** Referalli's public tracked link for a code: `{host}/go/{trackingToken}/{code}`, on the org's link domain once it is active. */
57
+ export declare function referalliLinkTemplate(baseUrl: string, trackingToken: string, branding: Record<string, unknown> | null): string;
58
+ /** The `programIds` a Referalli webhook endpoint is limited to: null or [] means every program in the organization. */
59
+ export declare function webhookScope(endpoint: Record<string, unknown> | null): {
60
+ scope: 'program' | 'all_programs' | 'unknown';
61
+ program_ids: string[] | null;
62
+ };
53
63
  export declare function referrals(ctx: RunContext, args: ParsedArgs): Promise<number>;
54
64
  export {};
@@ -5,6 +5,9 @@ exports.pingSkewMs = pingSkewMs;
5
5
  exports.describeTestLines = describeTestLines;
6
6
  exports.parseCodeCsv = parseCodeCsv;
7
7
  exports.referalliKeyMode = referalliKeyMode;
8
+ exports.referalliList = referalliList;
9
+ exports.referalliLinkTemplate = referalliLinkTemplate;
10
+ exports.webhookScope = webhookScope;
8
11
  exports.referrals = referrals;
9
12
  const node_crypto_1 = require("node:crypto");
10
13
  const referral_conformance_1 = require("@atlasauth/referral-conformance");
@@ -186,19 +189,111 @@ exports.REFERALLI_SYNC_TOPICS = [
186
189
  * `known` is false when Referalli reports no mode (no test mode there).
187
190
  */
188
191
  async function referalliKeyMode(ctx, input) {
192
+ const org = await referalliTry(ctx, { ...input, path: '/v1/org', what: 'read the organization' });
193
+ if (typeof org?.livemode === 'boolean')
194
+ return { live: org.livemode, known: true, org };
195
+ if (input.key.startsWith('rk_test_'))
196
+ return { live: false, known: true, org };
197
+ if (input.key.startsWith('rk_live_'))
198
+ return { live: true, known: true, org };
199
+ return { live: true, known: false, org };
200
+ }
201
+ /** A best-effort Referalli read: null when it fails (an older Referalli, a key without access). */
202
+ async function referalliTry(ctx, input) {
189
203
  try {
190
- const org = await referalliRequest(ctx, { ...input, method: 'GET', path: '/v1/org', what: 'read the organization' });
191
- if (typeof org.livemode === 'boolean')
192
- return { live: org.livemode, known: true };
204
+ return await referalliRequest(ctx, { ...input, method: 'GET' });
193
205
  }
194
- catch {
195
- /* fall back to the key prefix */
206
+ catch (err) {
207
+ if (err instanceof errors_1.CliError)
208
+ return null;
209
+ throw err;
196
210
  }
197
- if (input.key.startsWith('rk_test_'))
198
- return { live: false, known: true };
199
- if (input.key.startsWith('rk_live_'))
200
- return { live: true, known: true };
201
- return { live: true, known: false };
211
+ }
212
+ /** A Referalli list answer: a plain array (API version 2026-10-21) or a `{ data: [...] }` page. */
213
+ function referalliList(body) {
214
+ const rows = Array.isArray(body) ? body : body && typeof body === 'object' && Array.isArray(body.data) ? body.data : [];
215
+ return rows.filter((r) => !!r && typeof r === 'object' && !Array.isArray(r));
216
+ }
217
+ /** Referalli's public tracked link for a code: `{host}/go/{trackingToken}/{code}`, on the org's link domain once it is active. */
218
+ function referalliLinkTemplate(baseUrl, trackingToken, branding) {
219
+ const domain = branding?.linkDomainStatus === 'active' && typeof branding.linkDomain === 'string' && branding.linkDomain ? branding.linkDomain : null;
220
+ return `${domain ? `https://${domain}` : baseUrl}/go/${encodeURIComponent(trackingToken)}/{code}`;
221
+ }
222
+ /** The merchant key from --referalli-key / --referalli-key-file / REFERALLI_API_KEY (or their old names); never printed. */
223
+ function referalliKeyFrom(ctx, v) {
224
+ const oldKeyFile = (0, args_1.str)(v, LEGACY.keyFileFlag);
225
+ const oldKey = (0, args_1.str)(v, LEGACY.keyFlag);
226
+ if (oldKeyFile)
227
+ legacyNotice(ctx, `--${LEGACY.keyFileFlag}`, '--referalli-key-file');
228
+ if (oldKey)
229
+ legacyNotice(ctx, `--${LEGACY.keyFlag}`, '--referalli-key');
230
+ const legacyKey = ctx.env[LEGACY.apiKeyEnv]?.trim();
231
+ if (!ctx.env.REFERALLI_API_KEY?.trim() && legacyKey)
232
+ legacyNotice(ctx, LEGACY.apiKeyEnv, 'REFERALLI_API_KEY');
233
+ const keyFile = (0, args_1.str)(v, 'referalli-key-file') ?? oldKeyFile;
234
+ return ((0, args_1.str)(v, 'referalli-key') ??
235
+ oldKey ??
236
+ (keyFile ? readKeyFile(ctx, keyFile, 'the Referalli key') : (ctx.env.REFERALLI_API_KEY?.trim() || legacyKey || undefined)));
237
+ }
238
+ /** The `programIds` a Referalli webhook endpoint is limited to: null or [] means every program in the organization. */
239
+ function webhookScope(endpoint) {
240
+ if (!endpoint)
241
+ return { scope: 'unknown', program_ids: null };
242
+ const ids = Array.isArray(endpoint.programIds) ? endpoint.programIds.filter((x) => typeof x === 'string') : [];
243
+ return ids.length ? { scope: 'program', program_ids: ids } : { scope: 'all_programs', program_ids: null };
244
+ }
245
+ /**
246
+ * The two-way sync webhook on Referalli, limited to the connected program
247
+ * (`programIds: [program]`) so another product's referrals in a shared
248
+ * organization never reach this instance. Idempotent: an endpoint already
249
+ * pointing at this instance's inbound URL is reused and re-scoped in place
250
+ * (an unscoped one from an earlier run is repaired); its secret is rotated
251
+ * only when Atlas does not hold it (`held`: the endpoint whose secret Atlas
252
+ * stores). `secret` is null when nothing new needs saving.
253
+ */
254
+ async function referalliSyncEndpoint(ctx, input) {
255
+ const { baseUrl, key } = input;
256
+ const scope = { topics: [...exports.REFERALLI_SYNC_TOPICS], legacySignature: false, programIds: [input.program] };
257
+ const listed = await referalliTry(ctx, { baseUrl, key, path: '/v1/webhook-endpoints', what: 'list the webhook endpoints' });
258
+ const mine = referalliList(listed).filter((e) => e.url === input.url && typeof e.id === 'string');
259
+ const found = mine.find((e) => e.id === input.held) ?? mine[0];
260
+ if (!found) {
261
+ const endpoint = await referalliRequest(ctx, {
262
+ baseUrl,
263
+ key,
264
+ method: 'POST',
265
+ path: '/v1/webhook-endpoints',
266
+ body: { url: input.url, ...scope },
267
+ what: 'register the referral event webhook',
268
+ });
269
+ if (typeof endpoint.id !== 'string' || typeof endpoint.secret !== 'string') {
270
+ throw new errors_1.CliError('Referalli answered without a webhook endpoint id and secret.');
271
+ }
272
+ return { id: endpoint.id, secret: endpoint.secret, duplicates: [] };
273
+ }
274
+ const id = found.id;
275
+ const duplicates = mine.filter((e) => e !== found).map((e) => e.id);
276
+ await referalliRequest(ctx, {
277
+ baseUrl,
278
+ key,
279
+ method: 'PATCH',
280
+ path: `/v1/webhook-endpoints/${encodeURIComponent(id)}`,
281
+ body: scope,
282
+ what: 'limit the referral event webhook to the program',
283
+ });
284
+ if (id === input.held)
285
+ return { id, secret: null, duplicates };
286
+ const rotated = await referalliRequest(ctx, {
287
+ baseUrl,
288
+ key,
289
+ method: 'POST',
290
+ path: `/v1/webhook-endpoints/${encodeURIComponent(id)}/rotate-secret`,
291
+ body: {},
292
+ what: 'rotate the referral event webhook secret',
293
+ });
294
+ if (typeof rotated.secret !== 'string')
295
+ throw new errors_1.CliError('Referalli answered without a webhook secret.');
296
+ return { id, secret: rotated.secret, duplicates };
202
297
  }
203
298
  /**
204
299
  * `connect --provider referalli --oauth`: Atlas starts an OAuth install at
@@ -301,19 +396,7 @@ async function connect(ctx, args) {
301
396
  if (!baseRaw)
302
397
  throw new errors_1.CliError('Pass --base-url <your Referalli base URL> (or set REFERALLI_BASE_URL).');
303
398
  const baseUrl = httpsUrl(baseRaw, '--base-url');
304
- const oldKeyFile = (0, args_1.str)(v, LEGACY.keyFileFlag);
305
- const oldKey = (0, args_1.str)(v, LEGACY.keyFlag);
306
- if (oldKeyFile)
307
- legacyNotice(ctx, `--${LEGACY.keyFileFlag}`, '--referalli-key-file');
308
- if (oldKey)
309
- legacyNotice(ctx, `--${LEGACY.keyFlag}`, '--referalli-key');
310
- const legacyKey = ctx.env[LEGACY.apiKeyEnv]?.trim();
311
- if (!ctx.env.REFERALLI_API_KEY?.trim() && legacyKey)
312
- legacyNotice(ctx, LEGACY.apiKeyEnv, 'REFERALLI_API_KEY');
313
- const keyFile = (0, args_1.str)(v, 'referalli-key-file') ?? oldKeyFile;
314
- const key = (0, args_1.str)(v, 'referalli-key') ??
315
- oldKey ??
316
- (keyFile ? readKeyFile(ctx, keyFile, 'the Referalli key') : (ctx.env.REFERALLI_API_KEY?.trim() ?? legacyKey));
399
+ const key = referalliKeyFrom(ctx, v);
317
400
  if (!key) {
318
401
  throw new errors_1.CliError('Pass your Referalli merchant key with --referalli-key-file <path|-> (or --referalli-key, or REFERALLI_API_KEY). It is used once and never stored.');
319
402
  }
@@ -336,17 +419,49 @@ async function connect(ctx, args) {
336
419
  else if (!mode.known && !instanceLive) {
337
420
  ctx.io.err(`atlas: warning: Referalli did not say whether this key reaches test data; instance ${instance.id} is ${instance.environment ?? 'not production'}.`);
338
421
  }
339
- const created = await referalliCreateConnection(ctx, {
340
- baseUrl,
341
- key,
342
- body: {
343
- provider: 'atlas',
344
- instanceId: instance.id,
345
- programId: program,
346
- ...(v['auto-enroll'] === true ? { autoEnrollUsers: true } : {}),
347
- ...(destination ? { destinationUrl: destination } : {}),
348
- },
349
- });
422
+ const enrollment = {
423
+ ...(v['auto-enroll'] === true ? { autoEnrollUsers: true } : {}),
424
+ ...(destination ? { destinationUrl: destination } : {}),
425
+ };
426
+ const current = await http.get('/v1/instance/referrals');
427
+ // Re-runs reuse the instance's connection, updated in place: Referalli keeps one per instance per organization.
428
+ const listed = await referalliTry(ctx, { baseUrl, key, path: '/v1/auth/connections', what: 'list the connections' });
429
+ const existing = referalliList(listed).find((c) => c.provider === 'atlas' && c.instanceId === instance.id && typeof c.id === 'string');
430
+ if (existing && typeof existing.programId === 'string' && existing.programId !== program) {
431
+ throw new errors_1.CliError(`Referalli already has connection ${String(existing.id)} for instance ${instance.id}, in program ${existing.programId}. ` +
432
+ `It allows one per instance: run again with --program ${existing.programId}, or delete that connection on Referalli first.`);
433
+ }
434
+ let connectionId;
435
+ // Null when Atlas already holds the reused connection's secret.
436
+ let secret = null;
437
+ let createdToken = null;
438
+ if (existing) {
439
+ connectionId = existing.id;
440
+ if (current.connection_id !== connectionId || !current.signing_secret_set) {
441
+ // Atlas does not hold this connection's secret: rotate it (the old one keeps verifying for 24 hours).
442
+ const rotated = await referalliRequest(ctx, {
443
+ baseUrl,
444
+ key,
445
+ method: 'POST',
446
+ path: `/v1/auth/connections/${encodeURIComponent(connectionId)}/rotate-secret`,
447
+ body: {},
448
+ what: 'rotate the connection secret',
449
+ });
450
+ if (typeof rotated.secret !== 'string')
451
+ throw new errors_1.CliError('Referalli answered without a connection secret.');
452
+ secret = rotated.secret;
453
+ }
454
+ }
455
+ else {
456
+ const created = await referalliCreateConnection(ctx, {
457
+ baseUrl,
458
+ key,
459
+ body: { provider: 'atlas', instanceId: instance.id, programId: program, ...enrollment },
460
+ });
461
+ connectionId = created.id;
462
+ secret = created.secret;
463
+ createdToken = typeof created.trackingToken === 'string' ? created.trackingToken : null;
464
+ }
350
465
  // Atlas always signs with v2: require it from the first call, so v1 is never accepted on this connection.
351
466
  let signatureV2 = true;
352
467
  try {
@@ -354,24 +469,32 @@ async function connect(ctx, args) {
354
469
  baseUrl,
355
470
  key,
356
471
  method: 'PATCH',
357
- path: `/v1/auth/connections/${encodeURIComponent(created.id)}`,
358
- body: { signatureVersion: 'v2' },
359
- what: 'require v2 signatures on the connection',
472
+ path: `/v1/auth/connections/${encodeURIComponent(connectionId)}`,
473
+ body: { signatureVersion: 'v2', ...(existing ? enrollment : {}) },
474
+ what: existing ? 'update the connection' : 'require v2 signatures on the connection',
360
475
  });
361
476
  }
362
477
  catch (err) {
363
478
  signatureV2 = false;
364
479
  ctx.io.err(`atlas: warning: ${err instanceof Error ? err.message : String(err)} It switches to v2 on Atlas's first call anyway.`);
365
480
  }
366
- const trackingToken = (0, args_1.str)(v, 'tracking-token') ?? (typeof created.trackingToken === 'string' ? created.trackingToken : null);
481
+ // The org's public tracking token (GET /v1/org) builds Referalli's tracked links; a link template set before is kept.
482
+ const orgToken = typeof mode.org?.trackingToken === 'string' ? mode.org.trackingToken : null;
483
+ const trackingToken = (0, args_1.str)(v, 'tracking-token') ?? orgToken ?? createdToken;
484
+ let linkTemplate = (0, args_1.str)(v, 'link-template') ?? null;
485
+ if (!linkTemplate && !current.link_template && trackingToken) {
486
+ const branding = await referalliTry(ctx, { baseUrl, key, path: '/v1/branding', what: 'read the link domain' });
487
+ linkTemplate = referalliLinkTemplate(baseUrl, trackingToken, branding);
488
+ }
367
489
  patch = {
368
490
  provider: 'referalli',
369
491
  endpoint_url: baseUrl,
370
- connection_id: created.id,
371
- signing_secret: created.secret,
492
+ connection_id: connectionId,
493
+ ...(secret ? { signing_secret: secret } : {}),
372
494
  program_id: program,
373
495
  ...(v['auto-enroll'] === true ? { auto_enroll_users: true } : {}),
374
496
  ...(trackingToken ? { tracking_token: trackingToken } : {}),
497
+ ...(linkTemplate ? { link_template: linkTemplate } : {}),
375
498
  };
376
499
  let saved;
377
500
  try {
@@ -379,51 +502,60 @@ async function connect(ctx, args) {
379
502
  }
380
503
  catch (err) {
381
504
  // The secret is shown once by Referalli: keep it so the merchant can finish by hand.
382
- const saved = (0, secrets_1.deliverSecret)({
383
- io: out,
384
- env: ctx.env,
385
- product,
386
- fileName: `referalli-connection-${created.id}.env`,
387
- entries: { REFERALLI_CONNECTION_ID: created.id, REFERALLI_CONNECTION_SECRET: created.secret },
388
- label: 'The Referalli connection secret (not saved on Atlas)',
389
- force: v.force === true,
390
- comment: `Referalli connection ${created.id}: saving it on the Atlas instance failed. Paste it in Users → Referrals.`,
391
- });
392
- ctx.io.err(`atlas: the connection ${created.id} was created on Referalli, but saving it on the instance failed.${saved.path ? ` Its secret is in ${saved.path}.` : ''}`);
505
+ const kept = secret
506
+ ? (0, secrets_1.deliverSecret)({
507
+ io: out,
508
+ env: ctx.env,
509
+ product,
510
+ fileName: `referalli-connection-${connectionId}.env`,
511
+ entries: { REFERALLI_CONNECTION_ID: connectionId, REFERALLI_CONNECTION_SECRET: secret },
512
+ label: 'The Referalli connection secret (not saved on Atlas)',
513
+ force: v.force === true,
514
+ comment: `Referalli connection ${connectionId}: saving it on the Atlas instance failed. Paste it in Users → Referrals.`,
515
+ })
516
+ : { path: undefined };
517
+ ctx.io.err(`atlas: the connection ${connectionId} ${existing ? 'exists' : 'was created'} on Referalli, but saving it on the instance failed.${kept.path ? ` Its secret is in ${kept.path}.` : ''}`);
393
518
  throw err;
394
519
  }
395
- // Two-way sync: Referalli's referral events go to the instance's inbound URL.
520
+ // Two-way sync: Referalli's referral events for this program go to the instance's inbound URL.
396
521
  let syncEndpoint = null;
522
+ let syncScope = null;
397
523
  const inboundUrl = saved?.inbound?.url ?? null;
398
524
  if (v['no-sync'] !== true && inboundUrl) {
399
525
  try {
400
- const endpoint = await referalliRequest(ctx, {
526
+ const sync = await referalliSyncEndpoint(ctx, {
401
527
  baseUrl,
402
528
  key,
403
- method: 'POST',
404
- path: '/v1/webhook-endpoints',
405
- body: { url: inboundUrl, topics: [...exports.REFERALLI_SYNC_TOPICS], legacySignature: false },
406
- what: 'register the referral event webhook',
529
+ url: inboundUrl,
530
+ program,
531
+ held: current.inbound?.secret_set ? (current.inbound.endpoint_id ?? null) : null,
407
532
  });
408
- if (typeof endpoint.id !== 'string' || typeof endpoint.secret !== 'string') {
409
- throw new errors_1.CliError('Referalli answered without a webhook endpoint id and secret.');
533
+ if (!sync.secret) {
534
+ syncEndpoint = sync.id;
535
+ syncScope = [program];
410
536
  }
411
- try {
412
- await http.patch('/v1/instance/referrals', { inbound_secret: endpoint.secret, inbound_endpoint_id: endpoint.id });
413
- syncEndpoint = endpoint.id;
537
+ else {
538
+ try {
539
+ await http.patch('/v1/instance/referrals', { inbound_secret: sync.secret, inbound_endpoint_id: sync.id });
540
+ syncEndpoint = sync.id;
541
+ syncScope = [program];
542
+ }
543
+ catch (err) {
544
+ const kept = (0, secrets_1.deliverSecret)({
545
+ io: out,
546
+ env: ctx.env,
547
+ product,
548
+ fileName: `referalli-webhook-${sync.id}.env`,
549
+ entries: { REFERALLI_WEBHOOK_ENDPOINT_ID: sync.id, REFERALLI_WEBHOOK_SECRET: sync.secret },
550
+ label: 'The Referalli webhook secret (not saved on Atlas)',
551
+ force: v.force === true,
552
+ comment: `Referalli webhook ${sync.id}: saving it on the Atlas instance failed. Paste it as the inbound secret in Users → Referrals.`,
553
+ });
554
+ ctx.io.err(`atlas: warning: the webhook ${sync.id} was registered on Referalli, but saving its secret failed (${err instanceof Error ? err.message : String(err)}).${kept.path ? ` It is in ${kept.path}.` : ''}`);
555
+ }
414
556
  }
415
- catch (err) {
416
- const kept = (0, secrets_1.deliverSecret)({
417
- io: out,
418
- env: ctx.env,
419
- product,
420
- fileName: `referalli-webhook-${endpoint.id}.env`,
421
- entries: { REFERALLI_WEBHOOK_ENDPOINT_ID: endpoint.id, REFERALLI_WEBHOOK_SECRET: endpoint.secret },
422
- label: 'The Referalli webhook secret (not saved on Atlas)',
423
- force: v.force === true,
424
- comment: `Referalli webhook ${endpoint.id}: saving it on the Atlas instance failed. Paste it as the inbound secret in Users → Referrals.`,
425
- });
426
- ctx.io.err(`atlas: warning: the webhook ${endpoint.id} was registered on Referalli, but saving its secret failed (${err instanceof Error ? err.message : String(err)}).${kept.path ? ` It is in ${kept.path}.` : ''}`);
557
+ if (sync.duplicates.length) {
558
+ ctx.io.err(`atlas: warning: Referalli has more webhook endpoints for this instance (${sync.duplicates.join(', ')}). Atlas cannot verify their deliveries; delete them on Referalli.`);
427
559
  }
428
560
  }
429
561
  catch (err) {
@@ -432,21 +564,38 @@ async function connect(ctx, args) {
432
564
  ctx.io.err(`atlas: warning: ${err.message} Referral changes on Referalli won't reach Atlas until it is registered (see the docs).`);
433
565
  }
434
566
  }
567
+ // What connect could not set: the exact settings call that finishes it.
568
+ const leftToDo = {};
569
+ if (!(trackingToken ?? current.tracking_token))
570
+ leftToDo.tracking_token = '<your Referalli tracking token (tk_…), from GET /v1/org on Referalli>';
571
+ if (!(linkTemplate ?? current.link_template))
572
+ leftToDo.link_template = 'https://<your Referalli link host>/go/<tracking token>/{code}';
435
573
  summary = {
436
574
  provider: 'referalli',
437
575
  instance_id: instance.id,
438
576
  endpoint_url: baseUrl,
439
- connection_id: created.id,
577
+ connection_id: connectionId,
578
+ reused: Boolean(existing),
440
579
  program_id: program,
441
- tracking_token: trackingToken,
580
+ tracking_token: trackingToken ?? current.tracking_token ?? null,
581
+ link_template: linkTemplate ?? current.link_template ?? null,
442
582
  livemode: mode.known ? mode.live : null,
443
583
  signature_v2_required: signatureV2,
444
584
  sync_endpoint_id: syncEndpoint,
585
+ sync_program_ids: syncScope,
586
+ left_to_do: Object.keys(leftToDo).length ? { method: 'PATCH', path: '/v1/instance/referrals', body: leftToDo } : null,
445
587
  };
446
588
  if (!json) {
447
- out.out(`Created Referalli connection ${created.id} for instance ${instance.id} and saved it (the secret was not printed).`);
589
+ out.out(existing
590
+ ? `Reused Referalli connection ${connectionId} for instance ${instance.id} and updated it${secret ? ' (new secret saved, not printed)' : ''}.`
591
+ : `Created Referalli connection ${connectionId} for instance ${instance.id} and saved it (the secret was not printed).`);
448
592
  if (syncEndpoint)
449
- out.out(`Referral changes on Referalli sync back to Atlas (webhook ${syncEndpoint}).`);
593
+ out.out(`Referral changes on Referalli sync back to Atlas (webhook ${syncEndpoint}, program ${program} only).`);
594
+ if (Object.keys(leftToDo).length) {
595
+ out.out(`Left to do: ${Object.keys(leftToDo).join(' and ')} could not be read from Referalli. Set them with PATCH /v1/instance/referrals:`);
596
+ out.out(` ${JSON.stringify(leftToDo)}`);
597
+ out.out(' (or run this again with --tracking-token <tk_…> and --link-template <url with {code}>)');
598
+ }
450
599
  }
451
600
  }
452
601
  else {
@@ -634,8 +783,47 @@ async function status(ctx, args) {
634
783
  if (!(err instanceof backend_1.AtlasApiError))
635
784
  throw err;
636
785
  }
786
+ // The sync webhook's program scope lives on Referalli: read it when a merchant key is given (never required).
787
+ const inbound = settings.inbound;
788
+ let webhook = null;
789
+ const key = settings.provider === 'referalli' && settings.endpoint_url && inbound?.endpoint_id ? referalliKeyFrom(ctx, args.values) : undefined;
790
+ if (key && settings.endpoint_url && inbound?.endpoint_id) {
791
+ webhook = await referalliTry(ctx, {
792
+ baseUrl: settings.endpoint_url,
793
+ key,
794
+ path: `/v1/webhook-endpoints/${encodeURIComponent(inbound.endpoint_id)}`,
795
+ what: 'read the referral event webhook',
796
+ });
797
+ }
798
+ const scope = webhookScope(webhook);
637
799
  if ((0, shared_1.wantsJson)(args.values)) {
638
- (0, output_1.printJson)(ctx.io, { settings, findings });
800
+ const c = settings.connection ?? null;
801
+ (0, output_1.printJson)(ctx.io, {
802
+ // Flat, stable fields for scripts; `settings` is the raw GET /v1/instance/referrals answer.
803
+ status: {
804
+ enabled: settings.enabled,
805
+ provider: settings.provider,
806
+ connection_id: settings.connection_id,
807
+ program_id: settings.program_id,
808
+ signing_secret_set: settings.signing_secret_set,
809
+ webhook: {
810
+ endpoint_id: inbound?.endpoint_id ?? null,
811
+ url: inbound?.url ?? null,
812
+ secret_set: inbound?.secret_set ?? false,
813
+ // program: limited to program_ids; all_programs: every program in the organization; unknown: no merchant key given.
814
+ scope: inbound?.endpoint_id ? scope.scope : null,
815
+ program_ids: scope.program_ids,
816
+ },
817
+ link_template_set: Boolean(settings.link_template),
818
+ tracking_token_set: Boolean(settings.tracking_token),
819
+ last_sync: inbound?.last_event ?? null,
820
+ last_test: c?.last_test ?? null,
821
+ last_success_at: c?.last_success_at ?? null,
822
+ missing: settings.missing ?? [],
823
+ },
824
+ settings,
825
+ findings,
826
+ });
639
827
  return findings.some((f) => f.severity === 'error') ? 1 : 0;
640
828
  }
641
829
  const c = settings.connection ?? null;
@@ -646,6 +834,8 @@ async function status(ctx, args) {
646
834
  `Connection ID: ${settings.connection_id ?? '(not set)'}`,
647
835
  `Program ID: ${settings.program_id ?? '(not set)'}`,
648
836
  `Signing secret: ${settings.signing_secret_set ? 'set' : 'not set'}`,
837
+ `Link template: ${settings.link_template ?? '(not set)'}`,
838
+ `Tracking token: ${settings.tracking_token ?? '(not set)'}`,
649
839
  ];
650
840
  if (settings.forward_lifecycle !== undefined)
651
841
  lines.push(`Forward lifecycle: ${settings.forward_lifecycle ? 'on' : 'off'}`);
@@ -656,11 +846,13 @@ async function status(ctx, args) {
656
846
  }
657
847
  if (c)
658
848
  lines.push(`Failed (7 days): ${c.failed_calls_7d ?? 0} Retrying: ${c.retrying_calls ?? 0}`);
659
- const inbound = settings.inbound;
660
849
  if (inbound?.url) {
661
850
  // Referalli needs its own webhook secret; the Atlas protocol falls back to the signing secret.
662
851
  const syncing = inbound.secret_set || (settings.provider === 'webhook' && settings.signing_secret_set);
663
852
  lines.push(`Two-way sync: ${syncing ? 'on' : 'off (no inbound secret)'}${inbound.endpoint_id ? ` (webhook ${inbound.endpoint_id})` : ''}`);
853
+ if (scope.scope !== 'unknown') {
854
+ lines.push(`Webhook scope: ${scope.program_ids ? `program ${scope.program_ids.join(', ')}` : 'every program (re-run connect to limit it)'}`);
855
+ }
664
856
  lines.push(`Inbound URL: ${inbound.url}`);
665
857
  if (inbound.last_event) {
666
858
  lines.push(`Last event: ${inbound.last_event.type} → ${inbound.last_event.outcome} at ${new Date(inbound.last_event.at).toISOString()}`);