@zincapp/znvault-cli 3.3.0 → 4.0.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 (89) hide show
  1. package/README.md +32 -28
  2. package/dist/commands/advisor.d.ts +14 -1
  3. package/dist/commands/advisor.d.ts.map +1 -1
  4. package/dist/commands/advisor.js +352 -328
  5. package/dist/commands/advisor.js.map +1 -1
  6. package/dist/commands/agent/index.d.ts +2 -1
  7. package/dist/commands/agent/index.d.ts.map +1 -1
  8. package/dist/commands/agent/index.js +23 -19
  9. package/dist/commands/agent/index.js.map +1 -1
  10. package/dist/commands/apikey/index.d.ts +2 -1
  11. package/dist/commands/apikey/index.d.ts.map +1 -1
  12. package/dist/commands/apikey/index.js +23 -14
  13. package/dist/commands/apikey/index.js.map +1 -1
  14. package/dist/commands/audit.d.ts +2 -1
  15. package/dist/commands/audit.d.ts.map +1 -1
  16. package/dist/commands/audit.js +7 -2
  17. package/dist/commands/audit.js.map +1 -1
  18. package/dist/commands/group.d.ts +2 -1
  19. package/dist/commands/group.d.ts.map +1 -1
  20. package/dist/commands/group.js +47 -37
  21. package/dist/commands/group.js.map +1 -1
  22. package/dist/commands/host/index.d.ts +2 -1
  23. package/dist/commands/host/index.d.ts.map +1 -1
  24. package/dist/commands/host/index.js +22 -18
  25. package/dist/commands/host/index.js.map +1 -1
  26. package/dist/commands/kms/index.d.ts +2 -1
  27. package/dist/commands/kms/index.d.ts.map +1 -1
  28. package/dist/commands/kms/index.js +11 -6
  29. package/dist/commands/kms/index.js.map +1 -1
  30. package/dist/commands/policy/index.d.ts +2 -1
  31. package/dist/commands/policy/index.d.ts.map +1 -1
  32. package/dist/commands/policy/index.js +149 -101
  33. package/dist/commands/policy/index.js.map +1 -1
  34. package/dist/commands/quarantine.d.ts +2 -1
  35. package/dist/commands/quarantine.d.ts.map +1 -1
  36. package/dist/commands/quarantine.js +380 -337
  37. package/dist/commands/quarantine.js.map +1 -1
  38. package/dist/commands/role.d.ts +2 -1
  39. package/dist/commands/role.d.ts.map +1 -1
  40. package/dist/commands/role.js +62 -40
  41. package/dist/commands/role.js.map +1 -1
  42. package/dist/commands/secret/create.d.ts.map +1 -1
  43. package/dist/commands/secret/create.js +1 -5
  44. package/dist/commands/secret/create.js.map +1 -1
  45. package/dist/commands/ssh/index.d.ts +2 -1
  46. package/dist/commands/ssh/index.d.ts.map +1 -1
  47. package/dist/commands/ssh/index.js +18 -13
  48. package/dist/commands/ssh/index.js.map +1 -1
  49. package/dist/commands/sso/index.d.ts +2 -1
  50. package/dist/commands/sso/index.d.ts.map +1 -1
  51. package/dist/commands/sso/index.js +8 -5
  52. package/dist/commands/sso/index.js.map +1 -1
  53. package/dist/commands/superadmin/accounts.d.ts +10 -0
  54. package/dist/commands/superadmin/accounts.d.ts.map +1 -0
  55. package/dist/commands/{superadmin.js → superadmin/accounts.js} +16 -15
  56. package/dist/commands/superadmin/accounts.js.map +1 -0
  57. package/dist/commands/superadmin/index.d.ts +20 -0
  58. package/dist/commands/superadmin/index.d.ts.map +1 -0
  59. package/dist/commands/superadmin/index.js +60 -0
  60. package/dist/commands/superadmin/index.js.map +1 -0
  61. package/dist/commands/user.d.ts +2 -1
  62. package/dist/commands/user.d.ts.map +1 -1
  63. package/dist/commands/user.js +21 -10
  64. package/dist/commands/user.js.map +1 -1
  65. package/dist/index.js +18 -13
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/client/index.d.ts +5 -3
  68. package/dist/lib/client/index.d.ts.map +1 -1
  69. package/dist/lib/client/index.js +3 -3
  70. package/dist/lib/client/index.js.map +1 -1
  71. package/dist/lib/client/quarantine.d.ts +6 -26
  72. package/dist/lib/client/quarantine.d.ts.map +1 -1
  73. package/dist/lib/client/quarantine.js +24 -38
  74. package/dist/lib/client/quarantine.js.map +1 -1
  75. package/dist/lib/client/users.d.ts +10 -1
  76. package/dist/lib/client/users.d.ts.map +1 -1
  77. package/dist/lib/client/users.js +12 -2
  78. package/dist/lib/client/users.js.map +1 -1
  79. package/dist/lib/command-context.d.ts +49 -0
  80. package/dist/lib/command-context.d.ts.map +1 -0
  81. package/dist/lib/command-context.js +81 -0
  82. package/dist/lib/command-context.js.map +1 -0
  83. package/dist/lib/context-help.d.ts.map +1 -1
  84. package/dist/lib/context-help.js +5 -0
  85. package/dist/lib/context-help.js.map +1 -1
  86. package/package.json +1 -1
  87. package/dist/commands/superadmin.d.ts +0 -3
  88. package/dist/commands/superadmin.d.ts.map +0 -1
  89. package/dist/commands/superadmin.js.map +0 -1
@@ -1,16 +1,20 @@
1
1
  // Path: src/lib/client/quarantine.ts
2
2
  /**
3
3
  * IP Quarantine management client
4
+ *
5
+ * Routing: if `tenantId` is provided we hit `/v1/superadmin/quarantine/*`
6
+ * (cross-tenant; requires superadmin role). Otherwise we hit `/v1/quarantine/*`
7
+ * (tenant-scoped; tenant is derived from the JWT).
4
8
  */
5
9
  import { HttpClient } from './http.js';
10
+ function adminBase(tenantId) {
11
+ return tenantId !== undefined && tenantId !== '' ? '/v1/superadmin/quarantine' : '/v1/quarantine';
12
+ }
6
13
  export class QuarantineClient extends HttpClient {
7
- /**
8
- * List quarantined IPs
9
- */
10
14
  async list(options) {
11
15
  return this.request({
12
16
  method: 'GET',
13
- path: '/v1/quarantine',
17
+ path: adminBase(options?.tenantId),
14
18
  query: {
15
19
  status: options?.status,
16
20
  tenantId: options?.tenantId,
@@ -20,76 +24,58 @@ export class QuarantineClient extends HttpClient {
20
24
  },
21
25
  });
22
26
  }
23
- /**
24
- * Get quarantine details by ID
25
- */
26
- async getById(id) {
27
+ async getById(id, tenantId) {
27
28
  return this.request({
28
29
  method: 'GET',
29
- path: `/v1/quarantine/${id}`,
30
+ path: `${adminBase(tenantId)}/${id}`,
31
+ query: tenantId ? { tenantId } : undefined,
30
32
  });
31
33
  }
32
- /**
33
- * Release a quarantine by ID
34
- */
35
- async release(id, reason) {
34
+ async release(id, reason, tenantId) {
36
35
  return this.request({
37
36
  method: 'POST',
38
- path: `/v1/quarantine/${id}/release`,
37
+ path: `${adminBase(tenantId)}/${id}/release`,
38
+ query: tenantId ? { tenantId } : undefined,
39
39
  body: { reason },
40
40
  });
41
41
  }
42
- /**
43
- * Release all quarantines for an IP
44
- */
45
42
  async releaseIp(ip, reason, tenantId) {
46
43
  return this.request({
47
44
  method: 'POST',
48
- path: `/v1/quarantine/ip/${encodeURIComponent(ip)}/release`,
49
- body: { reason, tenantId },
45
+ path: `${adminBase(tenantId)}/ip/${encodeURIComponent(ip)}/release`,
46
+ query: tenantId ? { tenantId } : undefined,
47
+ body: { reason },
50
48
  });
51
49
  }
52
- /**
53
- * Get failure history for an IP
54
- */
55
50
  async getHistory(ip, options) {
56
51
  return this.request({
57
52
  method: 'GET',
58
- path: `/v1/quarantine/ip/${encodeURIComponent(ip)}/history`,
53
+ path: `${adminBase(options?.tenantId)}/ip/${encodeURIComponent(ip)}/history`,
59
54
  query: {
60
55
  limit: options?.limit ?? 100,
61
56
  tenantId: options?.tenantId,
62
57
  },
63
58
  });
64
59
  }
65
- /**
66
- * Get quarantine statistics
67
- */
68
60
  async getStats(tenantId) {
69
61
  return this.request({
70
62
  method: 'GET',
71
- path: '/v1/quarantine/stats',
72
- query: { tenantId },
63
+ path: `${adminBase(tenantId)}/stats`,
64
+ query: tenantId ? { tenantId } : undefined,
73
65
  });
74
66
  }
75
- /**
76
- * Get quarantine configuration
77
- */
78
67
  async getConfig(tenantId) {
79
68
  return this.request({
80
69
  method: 'GET',
81
- path: '/v1/quarantine/config',
82
- query: { tenantId },
70
+ path: `${adminBase(tenantId)}/config`,
71
+ query: tenantId ? { tenantId } : undefined,
83
72
  });
84
73
  }
85
- /**
86
- * Update quarantine configuration
87
- */
88
74
  async updateConfig(config, tenantId) {
89
75
  return this.request({
90
76
  method: 'PUT',
91
- path: '/v1/quarantine/config',
92
- query: { tenantId },
77
+ path: `${adminBase(tenantId)}/config`,
78
+ query: tenantId ? { tenantId } : undefined,
93
79
  body: config,
94
80
  });
95
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../../src/lib/client/quarantine.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAuBvC,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAA+B;QACxC,OAAO,IAAI,CAAC,OAAO,CAAkC;YACnD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,QAAQ,EAAE,OAAO,EAAE,QAAQ;gBAC3B,cAAc,EAAE,OAAO,EAAE,cAAc;gBACvC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC3B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;aAC7B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,OAAO,CAAe;YAChC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,EAAE,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,MAAc;QACtC,OAAO,IAAI,CAAC,OAAO,CAAgB;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,EAAE,UAAU;YACpC,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,MAAc,EAAE,QAAiB;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAgB;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,UAAU;YAC3D,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAA+C;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,UAAU;YAC3D,KAAK,EAAE;gBACL,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG;gBAC5B,QAAQ,EAAE,OAAO,EAAE,QAAQ;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAiB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAoB;YACrC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAiB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAqB;YACtC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,MAAwF,EACxF,QAAiB;QAEjB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE;YACnB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../../src/lib/client/quarantine.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,16 @@ export declare class UsersClient extends HttpClient {
26
26
  }): Promise<User>;
27
27
  deleteById(id: string): Promise<void>;
28
28
  unlock(id: string): Promise<MessageResponse>;
29
- resetPassword(id: string, newPassword: string): Promise<MessageResponse>;
29
+ /**
30
+ * Reset a user's password.
31
+ *
32
+ * Routing:
33
+ * - `asSuperadmin: true` → `/v1/superadmin/users/:id/reset-password` (cross-tenant)
34
+ * - otherwise → `/v1/users/:id/reset-password` (tenant admin, same tenant only)
35
+ */
36
+ resetPassword(id: string, newPassword: string, opts?: {
37
+ asSuperadmin?: boolean;
38
+ }): Promise<MessageResponse>;
30
39
  disableTotp(id: string): Promise<MessageResponse>;
31
40
  }
32
41
  export declare class SuperadminsClient extends HttpClient {
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/lib/client/users.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,WAAY,SAAQ,UAAU;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAcb,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACxB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;KAChC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ5C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQxE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAMxD;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAgB7B,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,UAAU,CAAC;IAQjB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ3E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOlD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAMzD"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/lib/client/users.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,WAAY,SAAQ,UAAU;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAcb,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACxB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;KAChC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQlD;;;;;;OAMG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAChC,OAAO,CAAC,eAAe,CAAC;IAWrB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAMxD;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IACzC,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAgB7B,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,UAAU,CAAC;IAQjB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ3E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOlD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAMzD"}
@@ -50,10 +50,20 @@ export class UsersClient extends HttpClient {
50
50
  body: { status: 'active', failedAttempts: 0, lockedUntil: null },
51
51
  });
52
52
  }
53
- async resetPassword(id, newPassword) {
53
+ /**
54
+ * Reset a user's password.
55
+ *
56
+ * Routing:
57
+ * - `asSuperadmin: true` → `/v1/superadmin/users/:id/reset-password` (cross-tenant)
58
+ * - otherwise → `/v1/users/:id/reset-password` (tenant admin, same tenant only)
59
+ */
60
+ async resetPassword(id, newPassword, opts) {
61
+ const path = opts?.asSuperadmin
62
+ ? `/v1/superadmin/users/${id}/reset-password`
63
+ : `/v1/users/${id}/reset-password`;
54
64
  return this.request({
55
65
  method: 'POST',
56
- path: `/v1/users/${id}/reset-password`,
66
+ path,
57
67
  body: { newPassword },
58
68
  });
59
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/lib/client/users.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/lib/client/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Helpers for context-aware command registration.
3
+ *
4
+ * In v4.0, dual-purpose command groups are registered twice:
5
+ * - At top level (tenant context) — `--tenant` option is omitted; the active
6
+ * user's JWT tenant is always used.
7
+ * - Under `znvault superadmin <group>` (superadmin context) — `--tenant` is
8
+ * accepted to target cross-tenant or system resources.
9
+ *
10
+ * Command handlers don't need to branch: when `context === 'tenant'`, the
11
+ * `--tenant` option simply isn't registered, so `options.tenant` is always
12
+ * `undefined` and existing client routing falls through to the tenant scope.
13
+ */
14
+ import type { Command } from 'commander';
15
+ export type CommandContext = 'tenant' | 'superadmin';
16
+ export interface RegisterOptions {
17
+ context?: CommandContext;
18
+ }
19
+ /**
20
+ * Add a `--tenant <id>` option to a command only if running in superadmin
21
+ * context. In tenant context this is a no-op.
22
+ *
23
+ * @param cmd The Commander command to extend.
24
+ * @param ctx The active command context.
25
+ * @param description Override description (defaults to "Tenant ID (superadmin only)").
26
+ * @param shortFlag Set to `true` to register as `-t, --tenant <id>` instead of just `--tenant <id>`.
27
+ */
28
+ export declare function addTenantOption(cmd: Command, ctx: CommandContext, description?: string, shortFlag?: boolean): Command;
29
+ /**
30
+ * Resolve the registration context from optional opts, defaulting to 'tenant'.
31
+ */
32
+ export declare function resolveContext(opts?: RegisterOptions): CommandContext;
33
+ /**
34
+ * Run a registration function with the given context active. The previous
35
+ * context is restored when `fn` returns.
36
+ */
37
+ export declare function withRegisterContext(ctx: CommandContext, fn: () => void): void;
38
+ /**
39
+ * Get the active registration context. Sub-files use this to decide whether
40
+ * to add a `--tenant` option.
41
+ */
42
+ export declare function getRegisterContext(): CommandContext;
43
+ export declare function isSuperadminContext(): boolean;
44
+ interface CommandLike {
45
+ option(flags: string, description?: string, ...rest: unknown[]): CommandLike;
46
+ }
47
+ export declare function applyTenantContextPatch(commandPrototype: CommandLike): void;
48
+ export {};
49
+ //# sourceMappingURL=command-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-context.d.ts","sourceRoot":"","sources":["../../src/lib/command-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,EACnB,WAAW,SAAwC,EACnD,SAAS,UAAQ,GAChB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,cAAc,CAErE;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAQ7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAEnD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAcD,UAAU,WAAW;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;CAC9E;AAED,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAmB3E"}
@@ -0,0 +1,81 @@
1
+ // Path: src/lib/command-context.ts
2
+ /**
3
+ * Add a `--tenant <id>` option to a command only if running in superadmin
4
+ * context. In tenant context this is a no-op.
5
+ *
6
+ * @param cmd The Commander command to extend.
7
+ * @param ctx The active command context.
8
+ * @param description Override description (defaults to "Tenant ID (superadmin only)").
9
+ * @param shortFlag Set to `true` to register as `-t, --tenant <id>` instead of just `--tenant <id>`.
10
+ */
11
+ export function addTenantOption(cmd, ctx, description = 'Tenant ID (superadmin cross-tenant)', shortFlag = false) {
12
+ if (ctx === 'superadmin') {
13
+ const flags = shortFlag ? '-t, --tenant <id>' : '--tenant <id>';
14
+ return cmd.option(flags, description);
15
+ }
16
+ return cmd;
17
+ }
18
+ /**
19
+ * Resolve the registration context from optional opts, defaulting to 'tenant'.
20
+ */
21
+ export function resolveContext(opts) {
22
+ return opts?.context ?? 'tenant';
23
+ }
24
+ // Module-level current registration context.
25
+ //
26
+ // Used by modularized command groups whose sub-files (e.g.
27
+ // `src/commands/apikey/list.ts`) register commands without receiving an
28
+ // explicit `ctx` parameter. The parent `registerXxxCommands(parent, opts)`
29
+ // sets the context with `withRegisterContext(ctx, () => { ... })` for the
30
+ // duration of the registration block.
31
+ let _currentContext = 'tenant';
32
+ /**
33
+ * Run a registration function with the given context active. The previous
34
+ * context is restored when `fn` returns.
35
+ */
36
+ export function withRegisterContext(ctx, fn) {
37
+ const previous = _currentContext;
38
+ _currentContext = ctx;
39
+ try {
40
+ fn();
41
+ }
42
+ finally {
43
+ _currentContext = previous;
44
+ }
45
+ }
46
+ /**
47
+ * Get the active registration context. Sub-files use this to decide whether
48
+ * to add a `--tenant` option.
49
+ */
50
+ export function getRegisterContext() {
51
+ return _currentContext;
52
+ }
53
+ export function isSuperadminContext() {
54
+ return _currentContext === 'superadmin';
55
+ }
56
+ /**
57
+ * Patch Commander's `Command.prototype.option` once so calls of the form
58
+ * `.option('--tenant <id>', '...')` or `.option('-t, --tenant <id>', '...')`
59
+ * become no-ops in tenant context. This lets us leave existing option chains
60
+ * untouched in modularized sub-files (where breaking the chain would require
61
+ * pervasive edits) while still enforcing the v4 rule that `--tenant` only
62
+ * exists under `znvault superadmin <...>`.
63
+ *
64
+ * Idempotent: safe to call multiple times.
65
+ */
66
+ let _tenantPatchApplied = false;
67
+ export function applyTenantContextPatch(commandPrototype) {
68
+ if (_tenantPatchApplied)
69
+ return;
70
+ _tenantPatchApplied = true;
71
+ const original = commandPrototype.option;
72
+ commandPrototype.option = function patchedOption(flags, description, ...rest) {
73
+ if (_currentContext === 'tenant' &&
74
+ /(^|\s|,)--tenant\b/.test(flags)) {
75
+ // Swallow the call in tenant context; return self for chain continuity.
76
+ return this;
77
+ }
78
+ return original.call(this, flags, description, ...rest);
79
+ };
80
+ }
81
+ //# sourceMappingURL=command-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-context.js","sourceRoot":"","sources":["../../src/lib/command-context.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAwBnC;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAY,EACZ,GAAmB,EACnB,WAAW,GAAG,qCAAqC,EACnD,SAAS,GAAG,KAAK;IAEjB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;QAChE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,OAAO,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC;AACnC,CAAC;AAED,6CAA6C;AAC7C,EAAE;AACF,2DAA2D;AAC3D,wEAAwE;AACxE,2EAA2E;AAC3E,0EAA0E;AAC1E,sCAAsC;AACtC,IAAI,eAAe,GAAmB,QAAQ,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAmB,EAAE,EAAc;IACrE,MAAM,QAAQ,GAAG,eAAe,CAAC;IACjC,eAAe,GAAG,GAAG,CAAC;IACtB,IAAI,CAAC;QACH,EAAE,EAAE,CAAC;IACP,CAAC;YAAS,CAAC;QACT,eAAe,GAAG,QAAQ,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,eAAe,KAAK,YAAY,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAMhC,MAAM,UAAU,uBAAuB,CAAC,gBAA6B;IACnE,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACzC,gBAAgB,CAAC,MAAM,GAAG,SAAS,aAAa,CAE9C,KAAa,EACb,WAAoB,EACpB,GAAG,IAAe;QAElB,IACE,eAAe,KAAK,QAAQ;YAC5B,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAChC,CAAC;YACD,wEAAwE;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAgB,CAAC;IACzE,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context-help.d.ts","sourceRoot":"","sources":["../../src/lib/context-help.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAyBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA0CvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,WAAW,SAAgC,GAC1C,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAIlF"}
1
+ {"version":3,"file":"context-help.d.ts","sourceRoot":"","sources":["../../src/lib/context-help.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAyBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA+CvD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,WAAW,SAAgC,GAC1C,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAIlF"}
@@ -48,6 +48,11 @@ export function configureContextHelp(cmd) {
48
48
  const ctx = getAuthContext();
49
49
  return cmd.commands.filter((sub) => {
50
50
  const desc = sub.description();
51
+ // Hide the entire `superadmin` group from non-superadmin profiles
52
+ // (v4 — all cross-tenant and system-level commands live there).
53
+ if (sub.name() === 'superadmin' && !ctx.isSuperadmin) {
54
+ return false;
55
+ }
51
56
  // Hide superadmin commands for non-superadmins
52
57
  if (isSuperadminOnly(desc) && !ctx.isSuperadmin) {
53
58
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"context-help.js","sourceRoot":"","sources":["../../src/lib/context-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-help.js","sourceRoot":"","sources":["../../src/lib/context-help.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zincapp/znvault-cli",
3
- "version": "3.3.0",
3
+ "version": "4.0.0",
4
4
  "description": "Official CLI for ZnVault administration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,3 +0,0 @@
1
- import { type Command } from 'commander';
2
- export declare function registerSuperadminCommands(program: Command): void;
3
- //# sourceMappingURL=superadmin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"superadmin.d.ts","sourceRoot":"","sources":["../../src/commands/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkOjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"superadmin.js","sourceRoot":"","sources":["../../src/commands/superadmin.ts"],"names":[],"mappings":"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"}