storno-cli 1.0.5

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 (188) hide show
  1. package/LICENSE +53 -0
  2. package/README.md +257 -0
  3. package/TOOLS.md +3309 -0
  4. package/dist/client.d.ts +42 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +162 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.d.ts +22 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +30 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/index.d.ts +37 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +172 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/tools/accounting-export.d.ts +14 -0
  17. package/dist/tools/accounting-export.d.ts.map +1 -0
  18. package/dist/tools/accounting-export.js +97 -0
  19. package/dist/tools/accounting-export.js.map +1 -0
  20. package/dist/tools/admin.d.ts +8 -0
  21. package/dist/tools/admin.d.ts.map +1 -0
  22. package/dist/tools/admin.js +98 -0
  23. package/dist/tools/admin.js.map +1 -0
  24. package/dist/tools/anaf.d.ts +8 -0
  25. package/dist/tools/anaf.d.ts.map +1 -0
  26. package/dist/tools/anaf.js +115 -0
  27. package/dist/tools/anaf.js.map +1 -0
  28. package/dist/tools/api-keys.d.ts +8 -0
  29. package/dist/tools/api-keys.d.ts.map +1 -0
  30. package/dist/tools/api-keys.js +29 -0
  31. package/dist/tools/api-keys.js.map +1 -0
  32. package/dist/tools/auth.d.ts +8 -0
  33. package/dist/tools/auth.d.ts.map +1 -0
  34. package/dist/tools/auth.js +187 -0
  35. package/dist/tools/auth.js.map +1 -0
  36. package/dist/tools/backup.d.ts +62 -0
  37. package/dist/tools/backup.d.ts.map +1 -0
  38. package/dist/tools/backup.js +167 -0
  39. package/dist/tools/backup.js.map +1 -0
  40. package/dist/tools/bank-accounts.d.ts +14 -0
  41. package/dist/tools/bank-accounts.d.ts.map +1 -0
  42. package/dist/tools/bank-accounts.js +140 -0
  43. package/dist/tools/bank-accounts.js.map +1 -0
  44. package/dist/tools/borderou.d.ts +14 -0
  45. package/dist/tools/borderou.d.ts.map +1 -0
  46. package/dist/tools/borderou.js +233 -0
  47. package/dist/tools/borderou.js.map +1 -0
  48. package/dist/tools/clients.d.ts +14 -0
  49. package/dist/tools/clients.d.ts.map +1 -0
  50. package/dist/tools/clients.js +353 -0
  51. package/dist/tools/clients.js.map +1 -0
  52. package/dist/tools/companies.d.ts +8 -0
  53. package/dist/tools/companies.d.ts.map +1 -0
  54. package/dist/tools/companies.js +211 -0
  55. package/dist/tools/companies.js.map +1 -0
  56. package/dist/tools/company-registry.d.ts +31 -0
  57. package/dist/tools/company-registry.d.ts.map +1 -0
  58. package/dist/tools/company-registry.js +51 -0
  59. package/dist/tools/company-registry.js.map +1 -0
  60. package/dist/tools/cpv-codes.d.ts +17 -0
  61. package/dist/tools/cpv-codes.d.ts.map +1 -0
  62. package/dist/tools/cpv-codes.js +28 -0
  63. package/dist/tools/cpv-codes.js.map +1 -0
  64. package/dist/tools/dashboard.d.ts +23 -0
  65. package/dist/tools/dashboard.d.ts.map +1 -0
  66. package/dist/tools/dashboard.js +37 -0
  67. package/dist/tools/dashboard.js.map +1 -0
  68. package/dist/tools/defaults.d.ts +14 -0
  69. package/dist/tools/defaults.d.ts.map +1 -0
  70. package/dist/tools/defaults.js +29 -0
  71. package/dist/tools/defaults.js.map +1 -0
  72. package/dist/tools/delivery-notes.d.ts +185 -0
  73. package/dist/tools/delivery-notes.d.ts.map +1 -0
  74. package/dist/tools/delivery-notes.js +525 -0
  75. package/dist/tools/delivery-notes.js.map +1 -0
  76. package/dist/tools/document-series.d.ts +54 -0
  77. package/dist/tools/document-series.d.ts.map +1 -0
  78. package/dist/tools/document-series.js +171 -0
  79. package/dist/tools/document-series.js.map +1 -0
  80. package/dist/tools/efactura-messages.d.ts +34 -0
  81. package/dist/tools/efactura-messages.d.ts.map +1 -0
  82. package/dist/tools/efactura-messages.js +51 -0
  83. package/dist/tools/efactura-messages.js.map +1 -0
  84. package/dist/tools/einvoice.d.ts +8 -0
  85. package/dist/tools/einvoice.d.ts.map +1 -0
  86. package/dist/tools/einvoice.js +170 -0
  87. package/dist/tools/einvoice.js.map +1 -0
  88. package/dist/tools/email-templates.d.ts +14 -0
  89. package/dist/tools/email-templates.d.ts.map +1 -0
  90. package/dist/tools/email-templates.js +104 -0
  91. package/dist/tools/email-templates.js.map +1 -0
  92. package/dist/tools/exchange-rates.d.ts +14 -0
  93. package/dist/tools/exchange-rates.d.ts.map +1 -0
  94. package/dist/tools/exchange-rates.js +55 -0
  95. package/dist/tools/exchange-rates.js.map +1 -0
  96. package/dist/tools/exports.d.ts +14 -0
  97. package/dist/tools/exports.d.ts.map +1 -0
  98. package/dist/tools/exports.js +25 -0
  99. package/dist/tools/exports.js.map +1 -0
  100. package/dist/tools/import.d.ts +14 -0
  101. package/dist/tools/import.d.ts.map +1 -0
  102. package/dist/tools/import.js +221 -0
  103. package/dist/tools/import.js.map +1 -0
  104. package/dist/tools/invitations.d.ts +8 -0
  105. package/dist/tools/invitations.d.ts.map +1 -0
  106. package/dist/tools/invitations.js +70 -0
  107. package/dist/tools/invitations.js.map +1 -0
  108. package/dist/tools/invoices.d.ts +14 -0
  109. package/dist/tools/invoices.d.ts.map +1 -0
  110. package/dist/tools/invoices.js +1191 -0
  111. package/dist/tools/invoices.js.map +1 -0
  112. package/dist/tools/licensing.d.ts +8 -0
  113. package/dist/tools/licensing.d.ts.map +1 -0
  114. package/dist/tools/licensing.js +90 -0
  115. package/dist/tools/licensing.js.map +1 -0
  116. package/dist/tools/members.d.ts +8 -0
  117. package/dist/tools/members.d.ts.map +1 -0
  118. package/dist/tools/members.js +79 -0
  119. package/dist/tools/members.js.map +1 -0
  120. package/dist/tools/nc-codes.d.ts +17 -0
  121. package/dist/tools/nc-codes.d.ts.map +1 -0
  122. package/dist/tools/nc-codes.js +28 -0
  123. package/dist/tools/nc-codes.js.map +1 -0
  124. package/dist/tools/notifications.d.ts +8 -0
  125. package/dist/tools/notifications.d.ts.map +1 -0
  126. package/dist/tools/notifications.js +111 -0
  127. package/dist/tools/notifications.js.map +1 -0
  128. package/dist/tools/oauth2-clients.d.ts +8 -0
  129. package/dist/tools/oauth2-clients.d.ts.map +1 -0
  130. package/dist/tools/oauth2-clients.js +147 -0
  131. package/dist/tools/oauth2-clients.js.map +1 -0
  132. package/dist/tools/payments.d.ts +17 -0
  133. package/dist/tools/payments.d.ts.map +1 -0
  134. package/dist/tools/payments.js +109 -0
  135. package/dist/tools/payments.js.map +1 -0
  136. package/dist/tools/pdf-template-config.d.ts +14 -0
  137. package/dist/tools/pdf-template-config.d.ts.map +1 -0
  138. package/dist/tools/pdf-template-config.js +131 -0
  139. package/dist/tools/pdf-template-config.js.map +1 -0
  140. package/dist/tools/products.d.ts +40 -0
  141. package/dist/tools/products.d.ts.map +1 -0
  142. package/dist/tools/products.js +73 -0
  143. package/dist/tools/products.js.map +1 -0
  144. package/dist/tools/proforma-invoices.d.ts +198 -0
  145. package/dist/tools/proforma-invoices.d.ts.map +1 -0
  146. package/dist/tools/proforma-invoices.js +378 -0
  147. package/dist/tools/proforma-invoices.js.map +1 -0
  148. package/dist/tools/receipts.d.ts +166 -0
  149. package/dist/tools/receipts.d.ts.map +1 -0
  150. package/dist/tools/receipts.js +397 -0
  151. package/dist/tools/receipts.js.map +1 -0
  152. package/dist/tools/recurring-invoices.d.ts +187 -0
  153. package/dist/tools/recurring-invoices.d.ts.map +1 -0
  154. package/dist/tools/recurring-invoices.js +305 -0
  155. package/dist/tools/recurring-invoices.js.map +1 -0
  156. package/dist/tools/reports.d.ts +48 -0
  157. package/dist/tools/reports.d.ts.map +1 -0
  158. package/dist/tools/reports.js +200 -0
  159. package/dist/tools/reports.js.map +1 -0
  160. package/dist/tools/storage-config.d.ts +8 -0
  161. package/dist/tools/storage-config.d.ts.map +1 -0
  162. package/dist/tools/storage-config.js +117 -0
  163. package/dist/tools/storage-config.js.map +1 -0
  164. package/dist/tools/suppliers.d.ts +14 -0
  165. package/dist/tools/suppliers.d.ts.map +1 -0
  166. package/dist/tools/suppliers.js +205 -0
  167. package/dist/tools/suppliers.js.map +1 -0
  168. package/dist/tools/system.d.ts +8 -0
  169. package/dist/tools/system.d.ts.map +1 -0
  170. package/dist/tools/system.js +24 -0
  171. package/dist/tools/system.js.map +1 -0
  172. package/dist/tools/vat-rates.d.ts +14 -0
  173. package/dist/tools/vat-rates.d.ts.map +1 -0
  174. package/dist/tools/vat-rates.js +145 -0
  175. package/dist/tools/vat-rates.js.map +1 -0
  176. package/dist/tools/webhooks.d.ts +8 -0
  177. package/dist/tools/webhooks.d.ts.map +1 -0
  178. package/dist/tools/webhooks.js +305 -0
  179. package/dist/tools/webhooks.js.map +1 -0
  180. package/dist/utils/errors.d.ts +18 -0
  181. package/dist/utils/errors.d.ts.map +1 -0
  182. package/dist/utils/errors.js +45 -0
  183. package/dist/utils/errors.js.map +1 -0
  184. package/dist/utils/pagination.d.ts +9 -0
  185. package/dist/utils/pagination.d.ts.map +1 -0
  186. package/dist/utils/pagination.js +10 -0
  187. package/dist/utils/pagination.js.map +1 -0
  188. package/package.json +52 -0
@@ -0,0 +1,98 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated } from '../utils/errors.js';
4
+ import { getConfig } from '../config.js';
5
+ export const tools = [
6
+ {
7
+ name: 'admin_organizations',
8
+ description: 'List all organizations on the platform with pagination and filtering. SUPER_ADMIN only. Returns organization details including owner info, subscription plan, member/company/invoice counts, and ANAF token status.',
9
+ inputSchema: z.object({
10
+ page: z
11
+ .number()
12
+ .int()
13
+ .positive()
14
+ .optional()
15
+ .describe('Page number for pagination (default: 1)'),
16
+ limit: z
17
+ .number()
18
+ .int()
19
+ .positive()
20
+ .max(200)
21
+ .optional()
22
+ .describe('Items per page (default: 50, max: 200)'),
23
+ search: z
24
+ .string()
25
+ .optional()
26
+ .describe('Search by organization name or owner name/email'),
27
+ status: z
28
+ .enum(['active', 'trial', 'suspended'])
29
+ .optional()
30
+ .describe('Filter by organization status: active, trial, or suspended'),
31
+ plan: z
32
+ .string()
33
+ .optional()
34
+ .describe('Filter by subscription plan type'),
35
+ }),
36
+ handler: async (params) => {
37
+ if (!getConfig().token)
38
+ return notAuthenticated();
39
+ const { page, limit, search, status, plan } = params;
40
+ const res = await apiRequest('/api/v1/admin/organizations', {
41
+ query: { page, limit, search, status, plan },
42
+ });
43
+ return formatResponse(res);
44
+ },
45
+ },
46
+ {
47
+ name: 'admin_stats',
48
+ description: 'Get platform-wide statistics including user counts, organization metrics, company sync status, invoice totals, and system info. SUPER_ADMIN only. Results are typically cached for 5 minutes.',
49
+ inputSchema: z.object({}),
50
+ handler: async (_params) => {
51
+ if (!getConfig().token)
52
+ return notAuthenticated();
53
+ const res = await apiRequest('/api/v1/admin/stats');
54
+ return formatResponse(res);
55
+ },
56
+ },
57
+ {
58
+ name: 'admin_users',
59
+ description: 'List all users on the platform with pagination and filtering. SUPER_ADMIN only. Returns user account details, verification status, role, last login timestamp, and organization memberships.',
60
+ inputSchema: z.object({
61
+ page: z
62
+ .number()
63
+ .int()
64
+ .positive()
65
+ .optional()
66
+ .describe('Page number for pagination (default: 1)'),
67
+ limit: z
68
+ .number()
69
+ .int()
70
+ .positive()
71
+ .max(200)
72
+ .optional()
73
+ .describe('Items per page (default: 50, max: 200)'),
74
+ search: z
75
+ .string()
76
+ .optional()
77
+ .describe('Search by user name or email address'),
78
+ status: z
79
+ .enum(['active', 'inactive', 'verified', 'unverified'])
80
+ .optional()
81
+ .describe('Filter by user status: active, inactive, verified, or unverified'),
82
+ role: z
83
+ .string()
84
+ .optional()
85
+ .describe('Filter by user system role'),
86
+ }),
87
+ handler: async (params) => {
88
+ if (!getConfig().token)
89
+ return notAuthenticated();
90
+ const { page, limit, search, status, role } = params;
91
+ const res = await apiRequest('/api/v1/admin/users', {
92
+ query: { page, limit, search, status, role },
93
+ });
94
+ return formatResponse(res);
95
+ },
96
+ },
97
+ ];
98
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/tools/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ handler: (_params: Record<string, unknown>) => Promise<string>;
7
+ }[];
8
+ //# sourceMappingURL=anaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anaf.d.ts","sourceRoot":"","sources":["../../src/tools/anaf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;uBAMW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GAsHrE,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated } from '../utils/errors.js';
4
+ import { getConfig } from '../config.js';
5
+ export const tools = [
6
+ {
7
+ name: 'anaf_status',
8
+ description: 'Check the current ANAF integration status for the authenticated user. Returns token count, overall validity, and per-token details including CIF, expiry, and validity for each saved ANAF token.',
9
+ inputSchema: z.object({}),
10
+ handler: async (_params) => {
11
+ const config = getConfig();
12
+ if (!config.token)
13
+ return notAuthenticated();
14
+ const res = await apiRequest('/api/v1/anaf/status');
15
+ return formatResponse(res);
16
+ },
17
+ },
18
+ {
19
+ name: 'anaf_tokens',
20
+ description: 'List all ANAF OAuth tokens associated with the authenticated user. Each token enables e-Factura synchronization for a specific company CIF. Returns token ID, CIF, expiry, and validity status.',
21
+ inputSchema: z.object({}),
22
+ handler: async (_params) => {
23
+ const config = getConfig();
24
+ if (!config.token)
25
+ return notAuthenticated();
26
+ const res = await apiRequest('/api/v1/anaf/tokens');
27
+ return formatResponse(res);
28
+ },
29
+ },
30
+ {
31
+ name: 'anaf_create_token_link',
32
+ description: 'Create a device-based authentication token link for completing the ANAF OAuth flow. Returns a unique URL that can be opened in a browser to complete ANAF authentication. Maximum 5 active links per user. Link expires after a short period.',
33
+ inputSchema: z.object({}),
34
+ handler: async (_params) => {
35
+ const config = getConfig();
36
+ if (!config.token)
37
+ return notAuthenticated();
38
+ const res = await apiRequest('/api/v1/anaf/token-links', {
39
+ method: 'POST',
40
+ });
41
+ return formatResponse(res);
42
+ },
43
+ },
44
+ {
45
+ name: 'anaf_delete_token',
46
+ description: 'Delete an ANAF OAuth token. This revokes e-Factura synchronization access for the CIF associated with this token. The token ID is an integer obtained from anaf_tokens.',
47
+ inputSchema: z.object({
48
+ id: z.number().describe('The ANAF token ID to delete (integer ID from anaf_tokens)'),
49
+ }),
50
+ handler: async (params) => {
51
+ const config = getConfig();
52
+ if (!config.token)
53
+ return notAuthenticated();
54
+ const res = await apiRequest(`/api/v1/anaf/tokens/${params.id}`, {
55
+ method: 'DELETE',
56
+ });
57
+ return formatResponse(res);
58
+ },
59
+ },
60
+ {
61
+ name: 'anaf_validate_cif',
62
+ description: 'Validate that an ANAF token has proper access to e-Factura for a specific CIF. Checks organization ownership, ANAF registry, and e-Factura access permissions. Returns validation result with any error messages.',
63
+ inputSchema: z.object({
64
+ id: z.number().describe('The ANAF token ID to validate (integer ID from anaf_tokens)'),
65
+ }),
66
+ handler: async (params) => {
67
+ const config = getConfig();
68
+ if (!config.token)
69
+ return notAuthenticated();
70
+ const res = await apiRequest(`/api/v1/anaf/tokens/${params.id}/validate-cif`, {
71
+ method: 'POST',
72
+ });
73
+ return formatResponse(res);
74
+ },
75
+ },
76
+ {
77
+ name: 'anaf_sync_trigger',
78
+ description: 'Manually trigger e-Factura synchronization for all companies with valid ANAF tokens. Validates token availability and subscription plan rate limits, then dispatches an async sync job to fetch new invoices from ANAF SPV.',
79
+ inputSchema: z.object({}),
80
+ handler: async (_params) => {
81
+ const config = getConfig();
82
+ if (!config.token)
83
+ return notAuthenticated();
84
+ const res = await apiRequest('/api/v1/sync/trigger', {
85
+ method: 'POST',
86
+ });
87
+ return formatResponse(res);
88
+ },
89
+ },
90
+ {
91
+ name: 'anaf_sync_status',
92
+ description: 'Get the current e-Factura synchronization status and configuration. Returns whether sync is enabled, the last successful sync timestamp, token validity, and the sync frequency interval.',
93
+ inputSchema: z.object({}),
94
+ handler: async (_params) => {
95
+ const config = getConfig();
96
+ if (!config.token)
97
+ return notAuthenticated();
98
+ const res = await apiRequest('/api/v1/sync/status');
99
+ return formatResponse(res);
100
+ },
101
+ },
102
+ {
103
+ name: 'anaf_sync_log',
104
+ description: 'Retrieve the recent e-Factura sync activity log showing the last 50 synced invoices. Each entry shows the invoice ID, company CIF, sync timestamp, and status (success, failed, or skipped).',
105
+ inputSchema: z.object({}),
106
+ handler: async (_params) => {
107
+ const config = getConfig();
108
+ if (!config.token)
109
+ return notAuthenticated();
110
+ const res = await apiRequest('/api/v1/sync/log');
111
+ return formatResponse(res);
112
+ },
113
+ },
114
+ ];
115
+ //# sourceMappingURL=anaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anaf.js","sourceRoot":"","sources":["../../src/tools/anaf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ handler: (_params: Record<string, unknown>) => Promise<string>;
7
+ }[];
8
+ //# sourceMappingURL=api-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/tools/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;uBAMW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GAoBrE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated } from '../utils/errors.js';
4
+ import { getConfig } from '../config.js';
5
+ export const tools = [
6
+ {
7
+ name: 'api_keys_list',
8
+ description: 'List all API tokens for the authenticated user within the current organization. Returns both active and revoked tokens sorted by creation date, newest first. The raw token value is never included — only the tokenPrefix for identification.',
9
+ inputSchema: z.object({}),
10
+ handler: async (_params) => {
11
+ if (!getConfig().token)
12
+ return notAuthenticated();
13
+ const res = await apiRequest('/api/v1/api-tokens');
14
+ return formatResponse(res);
15
+ },
16
+ },
17
+ {
18
+ name: 'api_keys_scopes',
19
+ description: 'List all permission scopes available to the current user, grouped by category. Only scopes the user already holds are returned — useful for inspecting what permissions a token can be granted.',
20
+ inputSchema: z.object({}),
21
+ handler: async (_params) => {
22
+ if (!getConfig().token)
23
+ return notAuthenticated();
24
+ const res = await apiRequest('/api/v1/api-tokens/scopes');
25
+ return formatResponse(res);
26
+ },
27
+ },
28
+ ];
29
+ //# sourceMappingURL=api-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/tools/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,gPAAgP;QAClP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,OAAgC,EAAmB,EAAE;YACnE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAElD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC;YACnD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACF;IAED;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,iMAAiM;QACnM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,OAAgC,EAAmB,EAAE;YACnE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAElD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,2BAA2B,CAAC,CAAC;YAC1D,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ handler: (_params: Record<string, unknown>) => Promise<string>;
7
+ }[];
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,KAAK;;;;uBA2HW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA0GrE,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse, notAuthenticated } from '../utils/errors.js';
4
+ import { getConfig, updateConfig } from '../config.js';
5
+ export const tools = [
6
+ {
7
+ name: 'auth_login',
8
+ description: 'Authenticate with the Storno.ro API using email and password. Returns JWT access and refresh tokens, and stores them in the session config for all subsequent requests. Must be called before any other tool if STORNO_TOKEN is not set.',
9
+ inputSchema: z.object({
10
+ email: z.string().email().describe('User email address'),
11
+ password: z.string().describe('User password'),
12
+ }),
13
+ handler: async (params) => {
14
+ const { email, password } = params;
15
+ const result = await apiRequest('/api/auth', {
16
+ method: 'POST',
17
+ noAuth: true,
18
+ body: { email, password },
19
+ });
20
+ if (!result.ok) {
21
+ return formatResponse(result);
22
+ }
23
+ const { token, refresh_token } = result.data;
24
+ updateConfig({ token, refreshToken: refresh_token });
25
+ return JSON.stringify({
26
+ success: true,
27
+ message: 'Logged in successfully. Token stored in session.',
28
+ tokenPreview: token.substring(0, 20) + '...',
29
+ }, null, 2);
30
+ },
31
+ },
32
+ {
33
+ name: 'auth_register',
34
+ description: 'Create a new Storno.ro user account. A default organization is automatically created. Returns JWT tokens on success.',
35
+ inputSchema: z.object({
36
+ email: z.string().email().describe('Email address for the new account (must be unique)'),
37
+ password: z.string().min(8).describe('Password (minimum 8 characters)'),
38
+ firstName: z.string().optional().describe("User's first name"),
39
+ lastName: z.string().optional().describe("User's last name"),
40
+ }),
41
+ handler: async (params) => {
42
+ const { email, password, firstName, lastName } = params;
43
+ const body = { email, password };
44
+ if (firstName !== undefined)
45
+ body.firstName = firstName;
46
+ if (lastName !== undefined)
47
+ body.lastName = lastName;
48
+ const result = await apiRequest('/api/auth/register', {
49
+ method: 'POST',
50
+ noAuth: true,
51
+ body,
52
+ });
53
+ return formatResponse(result);
54
+ },
55
+ },
56
+ {
57
+ name: 'auth_refresh',
58
+ description: 'Refresh an expired JWT access token using the refresh token. Both tokens are rotated. The new tokens are stored in the session config. Use when the current token has expired.',
59
+ inputSchema: z.object({
60
+ refreshToken: z
61
+ .string()
62
+ .optional()
63
+ .describe('Refresh token to use. If omitted, uses the token stored in session config (STORNO_REFRESH_TOKEN).'),
64
+ }),
65
+ handler: async (params) => {
66
+ const { refreshToken: paramToken } = params;
67
+ const config = getConfig();
68
+ const refreshToken = paramToken || config.refreshToken;
69
+ if (!refreshToken) {
70
+ return 'Error: No refresh token available. Please login first using auth_login.';
71
+ }
72
+ const result = await apiRequest('/api/auth/token/refresh', {
73
+ method: 'POST',
74
+ noAuth: true,
75
+ body: { refresh_token: refreshToken },
76
+ });
77
+ if (!result.ok) {
78
+ return formatResponse(result);
79
+ }
80
+ const { token, refresh_token } = result.data;
81
+ updateConfig({ token, refreshToken: refresh_token });
82
+ return JSON.stringify({
83
+ success: true,
84
+ message: 'Token refreshed successfully. New tokens stored in session.',
85
+ tokenPreview: token.substring(0, 20) + '...',
86
+ }, null, 2);
87
+ },
88
+ },
89
+ {
90
+ name: 'auth_me',
91
+ description: 'Get the current authenticated user profile including organization memberships and subscription plan. Returns flat JSON with user, organization, memberships, and subscription.',
92
+ inputSchema: z.object({}),
93
+ handler: async (_params) => {
94
+ if (!getConfig().token)
95
+ return notAuthenticated();
96
+ const result = await apiRequest('/api/v1/me');
97
+ return formatResponse(result);
98
+ },
99
+ },
100
+ {
101
+ name: 'auth_update_profile',
102
+ description: "Update the authenticated user's profile. Can update name, phone, timezone, preferences, or change password (requires currentPassword when changing password).",
103
+ inputSchema: z.object({
104
+ firstName: z.string().optional().describe("User's first name"),
105
+ lastName: z.string().optional().describe("User's last name"),
106
+ phone: z
107
+ .string()
108
+ .optional()
109
+ .describe('Phone number (E.164 format recommended, e.g., +40721234567)'),
110
+ timezone: z
111
+ .string()
112
+ .optional()
113
+ .describe('Timezone in IANA format (e.g., Europe/Bucharest)'),
114
+ preferences: z
115
+ .record(z.unknown())
116
+ .optional()
117
+ .describe('User preferences object (language, theme, notifications, etc.)'),
118
+ password: z
119
+ .string()
120
+ .optional()
121
+ .describe('New password (requires currentPassword to also be provided)'),
122
+ currentPassword: z
123
+ .string()
124
+ .optional()
125
+ .describe('Current password (required when changing password)'),
126
+ }),
127
+ handler: async (params) => {
128
+ if (!getConfig().token)
129
+ return notAuthenticated();
130
+ const body = {};
131
+ const fields = [
132
+ 'firstName',
133
+ 'lastName',
134
+ 'phone',
135
+ 'timezone',
136
+ 'preferences',
137
+ 'password',
138
+ 'currentPassword',
139
+ ];
140
+ for (const field of fields) {
141
+ if (params[field] !== undefined)
142
+ body[field] = params[field];
143
+ }
144
+ const result = await apiRequest('/api/v1/me', {
145
+ method: 'PATCH',
146
+ body,
147
+ });
148
+ return formatResponse(result);
149
+ },
150
+ },
151
+ {
152
+ name: 'auth_forgot_password',
153
+ description: "Request a password reset email. Always returns success to prevent user enumeration — the email is only sent if the account exists. The reset link is valid for 1 hour.",
154
+ inputSchema: z.object({
155
+ email: z.string().email().describe('Email address associated with the account'),
156
+ }),
157
+ handler: async (params) => {
158
+ const { email } = params;
159
+ const result = await apiRequest('/api/auth/forgot-password', {
160
+ method: 'POST',
161
+ noAuth: true,
162
+ body: { email },
163
+ });
164
+ return formatResponse(result);
165
+ },
166
+ },
167
+ {
168
+ name: 'auth_reset_password',
169
+ description: 'Reset a user password using the token received via email from auth_forgot_password. The token is single-use and expires after 1 hour. All existing sessions are revoked on success.',
170
+ inputSchema: z.object({
171
+ token: z
172
+ .string()
173
+ .describe('Password reset token received via email link (from URL query parameter)'),
174
+ password: z.string().min(8).describe('New password (minimum 8 characters)'),
175
+ }),
176
+ handler: async (params) => {
177
+ const { token, password } = params;
178
+ const result = await apiRequest('/api/auth/reset-password', {
179
+ method: 'POST',
180
+ noAuth: true,
181
+ body: { token, password },
182
+ });
183
+ return formatResponse(result);
184
+ },
185
+ },
186
+ ];
187
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: ({
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{
6
+ includeFiles: z.ZodOptional<z.ZodBoolean>;
7
+ companyId: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ companyId?: string | undefined;
10
+ includeFiles?: boolean | undefined;
11
+ }, {
12
+ companyId?: string | undefined;
13
+ includeFiles?: boolean | undefined;
14
+ }>;
15
+ handler: (params: Record<string, unknown>) => Promise<string>;
16
+ } | {
17
+ name: string;
18
+ description: string;
19
+ inputSchema: z.ZodObject<{
20
+ id: z.ZodString;
21
+ companyId: z.ZodOptional<z.ZodString>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ id: string;
24
+ companyId?: string | undefined;
25
+ }, {
26
+ id: string;
27
+ companyId?: string | undefined;
28
+ }>;
29
+ handler: (params: Record<string, unknown>) => Promise<string>;
30
+ } | {
31
+ name: string;
32
+ description: string;
33
+ inputSchema: z.ZodObject<{
34
+ filePath: z.ZodString;
35
+ purgeExisting: z.ZodOptional<z.ZodBoolean>;
36
+ companyId: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ filePath: string;
39
+ companyId?: string | undefined;
40
+ purgeExisting?: boolean | undefined;
41
+ }, {
42
+ filePath: string;
43
+ companyId?: string | undefined;
44
+ purgeExisting?: boolean | undefined;
45
+ }>;
46
+ handler: (params: Record<string, unknown>) => Promise<string>;
47
+ } | {
48
+ name: string;
49
+ description: string;
50
+ inputSchema: z.ZodObject<{
51
+ limit: z.ZodOptional<z.ZodNumber>;
52
+ companyId: z.ZodOptional<z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ companyId?: string | undefined;
55
+ limit?: number | undefined;
56
+ }, {
57
+ companyId?: string | undefined;
58
+ limit?: number | undefined;
59
+ }>;
60
+ handler: (params: Record<string, unknown>) => Promise<string>;
61
+ })[];
62
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/tools/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,KAAK;;;;;;;;;;;;;sBAeU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBA4BzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;sBAmDzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBA4DzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;IAapE,CAAC"}