storno-cli 1.0.47 → 1.0.49

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.
@@ -11,7 +11,7 @@ const companyIdSchema = z.string().optional().describe('Company UUID (overrides
11
11
  export const tools = [
12
12
  {
13
13
  name: 'fiscal_calendar',
14
- description: 'Filing deadlines of the company for the next `days` days (default 60, max 366) from `from` (default today), plus the unfiled ones of the last month. Items: code (D300, D390, D394, D301, D100, D112, D406 SAF-T, D212, BILANT, and from the rental-contract dosare: C168 registration deadline, D212_ESTIMAT estimated income of a new contract for a natural person, CONTRACT_END contract end; these carry dosarId / dosarTitle), label, dueDate (moved to the next working day after weekends and Romanian legal holidays), nominalDueDate, daysLeft, period {year, month | quarter, from, to}, appliesBecause (vat_payer, intra_community_operations, non_vat_payer_foreign_suppliers, income_tax, employees, saft, individual, company, rental_contract), declarationType (the type to pass to declarations_create, null for SAF-T and the annual statements) and status: due, overdue (past due, nothing submitted) or filed (a submitted / accepted declaration of that type exists for the period). With allCompanies=true the list covers every company the user can see, each item carrying its company. The rules follow the company settings vatPeriod, incomeTaxPeriod and hasEmployees (companies_update).',
14
+ description: 'Filing deadlines of the company for the next `days` days (default 60, max 366) from `from` (default today), plus the unfiled ones of the last month. Items: code (D300, D390, D394, D301, D100, D112, D406 SAF-T, D212, BILANT, and from the rental-contract dosare: C168 registration deadline, D212_ESTIMAT estimated income of a new contract for a natural person, CONTRACT_END contract end; these carry dosarId / dosarTitle), label, dueDate (moved to the next working day after weekends and Romanian legal holidays), nominalDueDate, daysLeft, period {year, month | quarter, from, to}, appliesBecause (vat_payer, intra_community_operations, non_vat_payer_foreign_suppliers, income_tax, employees, saft, individual, company, rental_contract), declarationType (the type to pass to declarations_create — D406 is generated in Storno as well, only the annual statements and the contract-end reminder carry null) and status: due, overdue (past due, nothing submitted) or filed (a submitted / accepted declaration of that type exists for the period). With allCompanies=true the list covers every company the user can see, each item carrying its company. The rules follow the company settings vatPeriod, incomeTaxPeriod and hasEmployees (companies_update).',
15
15
  inputSchema: z.object({
16
16
  from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Start date YYYY-MM-DD (default today)'),
17
17
  days: z.number().int().min(1).max(366).optional().describe('Window length in days (default 60)'),
@@ -1 +1 @@
1
- {"version":3,"file":"fiscal-calendar.js","sourceRoot":"","sources":["../../src/tools/fiscal-calendar.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,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CAAC;AAE7G;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,2pCAA2pC;QAC7pC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC1G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAChG,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YACnH,SAAS,EAAE,eAAe;SAC3B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAmB,EAAE;YAClE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAA0B,EAAE,IAAI,EAAE,MAAM,CAAC,IAA0B,EAAE,CAAC;YACnG,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC7F,OAAO,cAAc,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAA+B,EAAE,CAAC,CAAC,CAAC;QAC9G,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"fiscal-calendar.js","sourceRoot":"","sources":["../../src/tools/fiscal-calendar.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,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CAAC;AAE7G;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,4tCAA4tC;QAC9tC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC1G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAChG,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YACnH,SAAS,EAAE,eAAe;SAC3B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAmB,EAAE;YAClE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAA0B,EAAE,IAAI,EAAE,MAAM,CAAC,IAA0B,EAAE,CAAC;YACnG,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC7F,OAAO,cAAc,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAA+B,EAAE,CAAC,CAAC,CAAC;QAC9G,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,153 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Fleet (parc auto): the company's vehicles and their expiry items (RCA, ITP, rovinietă, CASCO,
4
+ * tahograf, extinctor, trusă medicală, licență de transport, copie conformă, leasing end), plus
5
+ * company-level expiries (certificat digital, contracts, autorizații). Renewing an item creates
6
+ * the next one and closes the old one; members are notified before each expiry (`expiry.due`).
7
+ */
8
+ export declare const tools: ({
9
+ name: string;
10
+ description: string;
11
+ inputSchema: z.ZodObject<{
12
+ active: z.ZodOptional<z.ZodBoolean>;
13
+ search: z.ZodOptional<z.ZodString>;
14
+ companyId: z.ZodOptional<z.ZodString>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ companyId?: string | undefined;
17
+ search?: string | undefined;
18
+ active?: boolean | undefined;
19
+ }, {
20
+ companyId?: string | undefined;
21
+ search?: string | undefined;
22
+ active?: boolean | undefined;
23
+ }>;
24
+ handler: (params: Record<string, unknown>) => Promise<string>;
25
+ } | {
26
+ name: string;
27
+ description: string;
28
+ inputSchema: z.ZodObject<{
29
+ uuid: z.ZodString;
30
+ companyId: z.ZodOptional<z.ZodString>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ uuid: string;
33
+ companyId?: string | undefined;
34
+ }, {
35
+ uuid: string;
36
+ companyId?: string | undefined;
37
+ }>;
38
+ handler: (params: Record<string, unknown>) => Promise<string>;
39
+ } | {
40
+ name: string;
41
+ description: string;
42
+ inputSchema: z.ZodObject<{
43
+ plate: z.ZodString;
44
+ vin: z.ZodOptional<z.ZodString>;
45
+ make: z.ZodOptional<z.ZodString>;
46
+ model: z.ZodOptional<z.ZodString>;
47
+ year: z.ZodOptional<z.ZodNumber>;
48
+ fuel: z.ZodOptional<z.ZodEnum<["benzina", "motorina", "gpl", "hibrid", "electric", "altul"]>>;
49
+ ownership: z.ZodOptional<z.ZodEnum<["own", "leasing", "rented"]>>;
50
+ driverName: z.ZodOptional<z.ZodString>;
51
+ notes: z.ZodOptional<z.ZodString>;
52
+ companyId: z.ZodOptional<z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ plate: string;
55
+ companyId?: string | undefined;
56
+ notes?: string | undefined;
57
+ year?: number | undefined;
58
+ vin?: string | undefined;
59
+ make?: string | undefined;
60
+ model?: string | undefined;
61
+ fuel?: "benzina" | "motorina" | "gpl" | "hibrid" | "electric" | "altul" | undefined;
62
+ ownership?: "leasing" | "own" | "rented" | undefined;
63
+ driverName?: string | undefined;
64
+ }, {
65
+ plate: string;
66
+ companyId?: string | undefined;
67
+ notes?: string | undefined;
68
+ year?: number | undefined;
69
+ vin?: string | undefined;
70
+ make?: string | undefined;
71
+ model?: string | undefined;
72
+ fuel?: "benzina" | "motorina" | "gpl" | "hibrid" | "electric" | "altul" | undefined;
73
+ ownership?: "leasing" | "own" | "rented" | undefined;
74
+ driverName?: string | undefined;
75
+ }>;
76
+ handler: (params: Record<string, unknown>) => Promise<string>;
77
+ } | {
78
+ name: string;
79
+ description: string;
80
+ inputSchema: z.ZodObject<{
81
+ kind: z.ZodOptional<z.ZodEnum<["rca", "itp", "rovinieta", "casco", "tahograf", "extinctor", "trusa_medicala", "licenta_transport", "copie_conforma", "leasing", "certificat_digital", "contract", "autorizatie", "other"]>>;
82
+ vehicleId: z.ZodOptional<z.ZodString>;
83
+ companyLevel: z.ZodOptional<z.ZodBoolean>;
84
+ includeClosed: z.ZodOptional<z.ZodBoolean>;
85
+ companyId: z.ZodOptional<z.ZodString>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ companyId?: string | undefined;
88
+ kind?: "other" | "contract" | "rca" | "itp" | "rovinieta" | "casco" | "tahograf" | "extinctor" | "trusa_medicala" | "licenta_transport" | "copie_conforma" | "leasing" | "certificat_digital" | "autorizatie" | undefined;
89
+ vehicleId?: string | undefined;
90
+ companyLevel?: boolean | undefined;
91
+ includeClosed?: boolean | undefined;
92
+ }, {
93
+ companyId?: string | undefined;
94
+ kind?: "other" | "contract" | "rca" | "itp" | "rovinieta" | "casco" | "tahograf" | "extinctor" | "trusa_medicala" | "licenta_transport" | "copie_conforma" | "leasing" | "certificat_digital" | "autorizatie" | undefined;
95
+ vehicleId?: string | undefined;
96
+ companyLevel?: boolean | undefined;
97
+ includeClosed?: boolean | undefined;
98
+ }>;
99
+ handler: (params: Record<string, unknown>) => Promise<string>;
100
+ } | {
101
+ name: string;
102
+ description: string;
103
+ inputSchema: z.ZodObject<{
104
+ days: z.ZodOptional<z.ZodNumber>;
105
+ companyId: z.ZodOptional<z.ZodString>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ companyId?: string | undefined;
108
+ days?: number | undefined;
109
+ }, {
110
+ companyId?: string | undefined;
111
+ days?: number | undefined;
112
+ }>;
113
+ handler: (params: Record<string, unknown>) => Promise<string>;
114
+ } | {
115
+ name: string;
116
+ description: string;
117
+ inputSchema: z.ZodObject<{
118
+ companyId: z.ZodOptional<z.ZodString>;
119
+ label: z.ZodOptional<z.ZodString>;
120
+ number: z.ZodOptional<z.ZodString>;
121
+ provider: z.ZodOptional<z.ZodString>;
122
+ validFrom: z.ZodOptional<z.ZodString>;
123
+ remindDaysBefore: z.ZodOptional<z.ZodNumber>;
124
+ notes: z.ZodOptional<z.ZodString>;
125
+ kind: z.ZodEnum<["rca", "itp", "rovinieta", "casco", "tahograf", "extinctor", "trusa_medicala", "licenta_transport", "copie_conforma", "leasing", "certificat_digital", "contract", "autorizatie", "other"]>;
126
+ expiresAt: z.ZodString;
127
+ vehicleId: z.ZodOptional<z.ZodString>;
128
+ }, "strip", z.ZodTypeAny, {
129
+ kind: "other" | "contract" | "rca" | "itp" | "rovinieta" | "casco" | "tahograf" | "extinctor" | "trusa_medicala" | "licenta_transport" | "copie_conforma" | "leasing" | "certificat_digital" | "autorizatie";
130
+ expiresAt: string;
131
+ number?: string | undefined;
132
+ companyId?: string | undefined;
133
+ notes?: string | undefined;
134
+ label?: string | undefined;
135
+ provider?: string | undefined;
136
+ vehicleId?: string | undefined;
137
+ validFrom?: string | undefined;
138
+ remindDaysBefore?: number | undefined;
139
+ }, {
140
+ kind: "other" | "contract" | "rca" | "itp" | "rovinieta" | "casco" | "tahograf" | "extinctor" | "trusa_medicala" | "licenta_transport" | "copie_conforma" | "leasing" | "certificat_digital" | "autorizatie";
141
+ expiresAt: string;
142
+ number?: string | undefined;
143
+ companyId?: string | undefined;
144
+ notes?: string | undefined;
145
+ label?: string | undefined;
146
+ provider?: string | undefined;
147
+ vehicleId?: string | undefined;
148
+ validFrom?: string | undefined;
149
+ remindDaysBefore?: number | undefined;
150
+ }>;
151
+ handler: (params: Record<string, unknown>) => Promise<string>;
152
+ })[];
153
+ //# sourceMappingURL=fleet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/tools/fleet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;sBAUU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBAWzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoBzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;sBAiDzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;sBAazC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAgBzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;IA6DpE,CAAC"}
@@ -0,0 +1,215 @@
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
+ const companyIdSchema = z.string().optional().describe('Company UUID (overrides STORNO_COMPANY_ID env var)');
6
+ const EXPIRY_KINDS = ['rca', 'itp', 'rovinieta', 'casco', 'tahograf', 'extinctor', 'trusa_medicala', 'licenta_transport', 'copie_conforma', 'leasing', 'certificat_digital', 'contract', 'autorizatie', 'other'];
7
+ const OWNERSHIPS = ['own', 'leasing', 'rented'];
8
+ const FUELS = ['benzina', 'motorina', 'gpl', 'hibrid', 'electric', 'altul'];
9
+ const dateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/);
10
+ const expiryFields = {
11
+ label: z.string().max(160).optional().describe('Display label (default: the kind\'s name, e.g. "RCA")'),
12
+ number: z.string().max(100).optional().describe('Policy / certificate / contract number'),
13
+ provider: z.string().max(120).optional().describe('Insurer, ITP station, leasing company, certificate provider …'),
14
+ validFrom: dateSchema.optional().describe('Valid from, YYYY-MM-DD'),
15
+ remindDaysBefore: z.number().int().min(0).max(365).optional().describe('First reminder this many days before (default 30); then 7, 1 and 0 days'),
16
+ notes: z.string().optional(),
17
+ };
18
+ /**
19
+ * Fleet (parc auto): the company's vehicles and their expiry items (RCA, ITP, rovinietă, CASCO,
20
+ * tahograf, extinctor, trusă medicală, licență de transport, copie conformă, leasing end), plus
21
+ * company-level expiries (certificat digital, contracts, autorizații). Renewing an item creates
22
+ * the next one and closes the old one; members are notified before each expiry (`expiry.due`).
23
+ */
24
+ export const tools = [
25
+ {
26
+ name: 'vehicles_list',
27
+ description: 'Vehicles of the company (parc auto) with, per vehicle, `nextExpiry` (the soonest open expiry item: kind, label, expiresAt, daysLeft, status ok | due | expired) and `counts` {expired, due, ok}. Filter with `active` and `search` (plate, make, model, driver, VIN).',
28
+ inputSchema: z.object({
29
+ active: z.boolean().optional().describe('Only active (true) or only inactive (false) vehicles'),
30
+ search: z.string().optional(),
31
+ companyId: companyIdSchema,
32
+ }),
33
+ handler: async (params) => {
34
+ if (!getConfig().token)
35
+ return notAuthenticated();
36
+ const query = { search: params.search };
37
+ if (params.active !== undefined)
38
+ query.active = params.active ? 1 : 0;
39
+ return formatResponse(await apiRequest('/api/v1/vehicles', { query, companyId: params.companyId }));
40
+ },
41
+ },
42
+ {
43
+ name: 'vehicles_get',
44
+ description: 'One vehicle with its open expiry items, `counts` and `nextExpiry`.',
45
+ inputSchema: z.object({ uuid: z.string().describe('Vehicle UUID'), companyId: companyIdSchema }),
46
+ handler: async (params) => {
47
+ if (!getConfig().token)
48
+ return notAuthenticated();
49
+ return formatResponse(await apiRequest(`/api/v1/vehicles/${params.uuid}`, { companyId: params.companyId }));
50
+ },
51
+ },
52
+ {
53
+ name: 'vehicles_create',
54
+ description: 'Add a vehicle to the company. The plate is normalised to upper case. Add its documents afterwards with `expiries_create` (vehicleId).',
55
+ inputSchema: z.object({
56
+ plate: z.string().max(20).describe('Registration plate, e.g. "B 123 ABC"'),
57
+ vin: z.string().max(32).optional(),
58
+ make: z.string().max(60).optional(),
59
+ model: z.string().max(60).optional(),
60
+ year: z.number().int().min(1950).optional().describe('Year of manufacture'),
61
+ fuel: z.enum(FUELS).optional(),
62
+ ownership: z.enum(OWNERSHIPS).optional().describe('own (default), leasing or rented'),
63
+ driverName: z.string().max(120).optional(),
64
+ notes: z.string().optional(),
65
+ companyId: companyIdSchema,
66
+ }),
67
+ handler: async (params) => {
68
+ if (!getConfig().token)
69
+ return notAuthenticated();
70
+ const { companyId, ...body } = params;
71
+ return formatResponse(await apiRequest('/api/v1/vehicles', { method: 'POST', body, companyId: companyId }));
72
+ },
73
+ },
74
+ {
75
+ name: 'vehicles_update',
76
+ description: 'Update a vehicle (any field of vehicles_create, plus `active`). Send null to clear an optional field.',
77
+ inputSchema: z.object({
78
+ uuid: z.string().describe('Vehicle UUID'),
79
+ plate: z.string().max(20).optional(),
80
+ vin: z.string().max(32).nullable().optional(),
81
+ make: z.string().max(60).nullable().optional(),
82
+ model: z.string().max(60).nullable().optional(),
83
+ year: z.number().int().nullable().optional(),
84
+ fuel: z.enum(FUELS).nullable().optional(),
85
+ ownership: z.enum(OWNERSHIPS).optional(),
86
+ driverName: z.string().max(120).nullable().optional(),
87
+ notes: z.string().nullable().optional(),
88
+ active: z.boolean().optional().describe('false archives the vehicle (sold, returned); its expiries stop appearing in the lists filtered by active vehicles'),
89
+ companyId: companyIdSchema,
90
+ }),
91
+ handler: async (params) => {
92
+ if (!getConfig().token)
93
+ return notAuthenticated();
94
+ const { uuid, companyId, ...body } = params;
95
+ return formatResponse(await apiRequest(`/api/v1/vehicles/${uuid}`, { method: 'PATCH', body, companyId: companyId }));
96
+ },
97
+ },
98
+ {
99
+ name: 'vehicles_delete',
100
+ description: 'Delete a vehicle and all its expiry items (history included). Prefer vehicles_update with active=false for a vehicle that left the fleet.',
101
+ inputSchema: z.object({ uuid: z.string().describe('Vehicle UUID'), companyId: companyIdSchema }),
102
+ handler: async (params) => {
103
+ if (!getConfig().token)
104
+ return notAuthenticated();
105
+ return formatResponse(await apiRequest(`/api/v1/vehicles/${params.uuid}`, { method: 'DELETE', companyId: params.companyId }));
106
+ },
107
+ },
108
+ {
109
+ name: 'expiries_list',
110
+ description: 'Expiry items of the company, soonest first (expired ones come first): vehicle documents and company-level items. Each item carries `daysLeft`, `status` (ok | due — within remindDaysBefore — | expired | renewed), `vehicle {id, plate, displayName}` (null for company-level items) and `renewedFromId`. Filters: `kind`, `vehicleId`, `companyLevel` (items without a vehicle), `includeClosed` (renewed items, for the history).',
111
+ inputSchema: z.object({
112
+ kind: z.enum(EXPIRY_KINDS).optional(),
113
+ vehicleId: z.string().optional(),
114
+ companyLevel: z.boolean().optional(),
115
+ includeClosed: z.boolean().optional(),
116
+ companyId: companyIdSchema,
117
+ }),
118
+ handler: async (params) => {
119
+ if (!getConfig().token)
120
+ return notAuthenticated();
121
+ const query = { kind: params.kind, vehicleId: params.vehicleId };
122
+ if (params.companyLevel)
123
+ query.companyLevel = 1;
124
+ if (params.includeClosed)
125
+ query.includeClosed = 1;
126
+ return formatResponse(await apiRequest('/api/v1/expiries', { query, companyId: params.companyId }));
127
+ },
128
+ },
129
+ {
130
+ name: 'expiries_upcoming',
131
+ description: 'What expires in the next `days` days (default 60, max 730), already expired items included, as flat rows {id, kind, label, number, provider, validFrom, expiresAt, daysLeft, status, remindDaysBefore, vehicleId, vehicle, notes} with `counts` {total, expired, due, ok}. The dashboard card uses the same list.',
132
+ inputSchema: z.object({ days: z.number().int().min(1).max(730).optional(), companyId: companyIdSchema }),
133
+ handler: async (params) => {
134
+ if (!getConfig().token)
135
+ return notAuthenticated();
136
+ return formatResponse(await apiRequest('/api/v1/expiries/upcoming', { query: { days: params.days }, companyId: params.companyId }));
137
+ },
138
+ },
139
+ {
140
+ name: 'expiries_create',
141
+ description: 'Record something with an expiry date. Kinds: rca, itp, rovinieta, casco, tahograf (calibration), extinctor, trusa_medicala, licenta_transport, copie_conforma, leasing (contract end) — usually with a `vehicleId` — and certificat_digital, contract, autorizatie, other for the company. Members get the `expiry.due` notification `remindDaysBefore` days before (default 30), then 7 and 1 days before and on the day.',
142
+ inputSchema: z.object({
143
+ kind: z.enum(EXPIRY_KINDS),
144
+ expiresAt: dateSchema.describe('Expiry date, YYYY-MM-DD'),
145
+ vehicleId: z.string().optional().describe('The vehicle the document belongs to; omit for a company-level item'),
146
+ ...expiryFields,
147
+ companyId: companyIdSchema,
148
+ }),
149
+ handler: async (params) => {
150
+ if (!getConfig().token)
151
+ return notAuthenticated();
152
+ const { companyId, ...body } = params;
153
+ return formatResponse(await apiRequest('/api/v1/expiries', { method: 'POST', body, companyId: companyId }));
154
+ },
155
+ },
156
+ {
157
+ name: 'expiries_get',
158
+ description: 'One expiry item with `history`: the items it renewed, newest first.',
159
+ inputSchema: z.object({ uuid: z.string().describe('Expiry item UUID'), companyId: companyIdSchema }),
160
+ handler: async (params) => {
161
+ if (!getConfig().token)
162
+ return notAuthenticated();
163
+ return formatResponse(await apiRequest(`/api/v1/expiries/${params.uuid}`, { companyId: params.companyId }));
164
+ },
165
+ },
166
+ {
167
+ name: 'expiries_update',
168
+ description: 'Update an expiry item. Changing `expiresAt` restarts the reminders. `vehicleId: null` detaches it from the vehicle; `closed: true` closes it by hand (without creating the next one).',
169
+ inputSchema: z.object({
170
+ uuid: z.string().describe('Expiry item UUID'),
171
+ kind: z.enum(EXPIRY_KINDS).optional(),
172
+ expiresAt: dateSchema.optional(),
173
+ vehicleId: z.string().nullable().optional(),
174
+ closed: z.boolean().optional(),
175
+ ...expiryFields,
176
+ companyId: companyIdSchema,
177
+ }),
178
+ handler: async (params) => {
179
+ if (!getConfig().token)
180
+ return notAuthenticated();
181
+ const { uuid, companyId, ...body } = params;
182
+ return formatResponse(await apiRequest(`/api/v1/expiries/${uuid}`, { method: 'PATCH', body, companyId: companyId }));
183
+ },
184
+ },
185
+ {
186
+ name: 'expiries_renew',
187
+ description: 'Renew an expiry item: creates the next one (same kind, label, vehicle, provider and reminder setting) and closes the old one, kept as history (`renewedFrom`). Without `expiresAt` the usual validity of the kind is added to the old expiry (RCA / rovinietă / CASCO / certificate 12 months, ITP / tahograf 24, trusă medicală 36), counted from today when it had already expired. Returns `item` (the new one) and `previous`.',
188
+ inputSchema: z.object({
189
+ uuid: z.string().describe('Expiry item UUID to renew'),
190
+ expiresAt: dateSchema.optional().describe('New expiry date, YYYY-MM-DD'),
191
+ validFrom: dateSchema.optional().describe('Default: the old expiry date (or today when already expired)'),
192
+ number: z.string().max(100).optional().describe('New policy / document number'),
193
+ provider: z.string().max(120).optional().describe('Default: the old provider'),
194
+ notes: z.string().optional(),
195
+ companyId: companyIdSchema,
196
+ }),
197
+ handler: async (params) => {
198
+ if (!getConfig().token)
199
+ return notAuthenticated();
200
+ const { uuid, companyId, ...body } = params;
201
+ return formatResponse(await apiRequest(`/api/v1/expiries/${uuid}/renew`, { method: 'POST', body, companyId: companyId }));
202
+ },
203
+ },
204
+ {
205
+ name: 'expiries_delete',
206
+ description: 'Delete an expiry item. To keep the history, renew it or close it (expiries_update closed=true) instead.',
207
+ inputSchema: z.object({ uuid: z.string().describe('Expiry item UUID'), companyId: companyIdSchema }),
208
+ handler: async (params) => {
209
+ if (!getConfig().token)
210
+ return notAuthenticated();
211
+ return formatResponse(await apiRequest(`/api/v1/expiries/${params.uuid}`, { method: 'DELETE', companyId: params.companyId }));
212
+ },
213
+ },
214
+ ];
215
+ //# sourceMappingURL=fleet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/tools/fleet.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/tools/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,KAAK;;;;;;;;;;sBAWU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA4NpE,CAAC"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/tools/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,KAAK;;;;;;;;;;sBAWU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA0PpE,CAAC"}
@@ -8,7 +8,7 @@ function getCompanyId(params) {
8
8
  export const tools = [
9
9
  {
10
10
  name: 'import_sources',
11
- description: 'Get available import sources and import types. Returns supported import sources (SmartBill, Saga, Oblio, FGO, Facturis, etc.) and import types (clients, products, invoices_issued, invoices_received, recurring_invoices).',
11
+ description: 'Get available import sources and import types. Returns supported import sources (SmartBill, Saga, Oblio, FGO, Facturis, eMag, and the sales sources Uber, Bolt, Glovo, Tazz, WooCommerce, PrestaShop, cash_register) and import types (clients, products, invoices_issued, invoices_received, recurring_invoices, platform_sales, receipts).',
12
12
  inputSchema: z.object({
13
13
  companyId: z
14
14
  .string()
@@ -82,7 +82,7 @@ export const tools = [
82
82
  importOptions: z
83
83
  .record(z.unknown())
84
84
  .optional()
85
- .describe('Optional import options (e.g., skipDuplicates, updateExisting)'),
85
+ .describe('Optional import options: markAsPaid (invoice imports); groupBy = week | day | order and platformName / platformCif / platformCountry (platform_sales); includeAll to import orders whose status is not paid / completed (WooCommerce, PrestaShop); cashRegisterName, vatGroups ({"1": "21", "2": "11", "3": "5", "4": "0"}) and paymentTypes ({"1": "cash", "3": "card"}) for receipts'),
86
86
  companyId: z
87
87
  .string()
88
88
  .optional()
@@ -129,16 +129,17 @@ export const tools = [
129
129
  },
130
130
  {
131
131
  name: 'import_upload',
132
- description: 'Upload a file (CSV, XLSX, or XML) to start a new import job. Requires importType (clients, products, invoices_issued, invoices_received, recurring_invoices) and source (smartbill, saga, oblio, fgo, facturis_online, easybill, ciel, factureaza, facturare_pro, icefact, bolt, facturis, emag, generic). Returns the created import job with preview data.',
132
+ description: 'Upload a file (CSV, XLSX, XML, or ZIP) to start a new import job. Requires importType (clients, products, invoices_issued, invoices_received, recurring_invoices, platform_sales, receipts) and source (smartbill, saga, oblio, fgo, facturis_online, easybill, ciel, factureaza, facturare_pro, icefact, bolt, facturis, emag, uber, glovo, tazz, woocommerce, prestashop, cash_register, generic). Platform statements (uber, bolt, glovo, tazz) use importType platform_sales and become one sales invoice to the platform plus the commission purchase invoice per group; shop exports (woocommerce, prestashop) use invoices_issued; the A4200 XML or a ZIP of a month exported by a fiscal cash register uses source cash_register with importType receipts. Returns the created import job with preview data.',
133
133
  inputSchema: z.object({
134
- filePath: z.string().describe('Absolute path to the file to upload (CSV, XLSX, or XML)'),
134
+ filePath: z.string().describe('Absolute path to the file to upload (CSV, XLSX, XML, or a ZIP of A4200 XML files)'),
135
135
  importType: z
136
- .enum(['clients', 'products', 'invoices_issued', 'invoices_received', 'recurring_invoices'])
136
+ .enum(['clients', 'products', 'invoices_issued', 'invoices_received', 'recurring_invoices', 'platform_sales', 'receipts'])
137
137
  .describe('Type of data being imported'),
138
138
  source: z
139
139
  .enum([
140
140
  'smartbill', 'saga', 'oblio', 'fgo', 'facturis_online', 'easybill',
141
- 'ciel', 'factureaza', 'facturare_pro', 'icefact', 'bolt', 'facturis', 'emag', 'generic',
141
+ 'ciel', 'factureaza', 'facturare_pro', 'icefact', 'bolt', 'facturis', 'emag',
142
+ 'uber', 'glovo', 'tazz', 'woocommerce', 'prestashop', 'cash_register', 'generic',
142
143
  ])
143
144
  .describe('Source application the file was exported from'),
144
145
  companyId: z
@@ -164,11 +165,15 @@ export const tools = [
164
165
  },
165
166
  {
166
167
  name: 'import_template',
167
- description: 'Download a CSV template for a specific import type. Returns base64-encoded CSV with column headers and example rows that can be filled in and uploaded via import_upload.',
168
+ description: 'Download a CSV template for a specific import type. Returns base64-encoded CSV with column headers and example rows that can be filled in and uploaded via import_upload. Pass source for a platform or shop template (uber, bolt, glovo, tazz, woocommerce, prestashop) to get the columns of that export instead of the generic ones.',
168
169
  inputSchema: z.object({
169
170
  importType: z
170
- .enum(['clients', 'products', 'invoices_issued', 'invoices_received', 'recurring_invoices'])
171
+ .enum(['clients', 'products', 'invoices_issued', 'invoices_received', 'recurring_invoices', 'platform_sales', 'receipts'])
171
172
  .describe('Type of import to get template for'),
173
+ source: z
174
+ .enum(['uber', 'bolt', 'glovo', 'tazz', 'woocommerce', 'prestashop'])
175
+ .optional()
176
+ .describe('Platform / shop whose column layout the template should use'),
172
177
  companyId: z
173
178
  .string()
174
179
  .optional()
@@ -180,11 +185,35 @@ export const tools = [
180
185
  const companyId = getCompanyId(params);
181
186
  if (!companyId)
182
187
  return noCompanySelected();
183
- const { importType } = params;
188
+ const { importType, source } = params;
184
189
  const result = await apiRequest('/api/v1/import/template', {
185
190
  companyId,
186
191
  binary: true,
187
- query: { importType },
192
+ query: { importType, source },
193
+ });
194
+ return formatResponse(result);
195
+ },
196
+ },
197
+ {
198
+ name: 'import_revert',
199
+ description: 'Revert a completed or cancelled import job: deletes every record it created (invoices and their lines, receipts, clients, payments) and marks the job as reverted. Use it to undo an import that mapped the wrong columns or grouped the statement the wrong way.',
200
+ inputSchema: z.object({
201
+ id: z.string().describe('Import job ID'),
202
+ companyId: z
203
+ .string()
204
+ .optional()
205
+ .describe('Company UUID override (uses active company if not set)'),
206
+ }),
207
+ handler: async (params) => {
208
+ if (!getConfig().token)
209
+ return notAuthenticated();
210
+ const companyId = getCompanyId(params);
211
+ if (!companyId)
212
+ return noCompanySelected();
213
+ const { id } = params;
214
+ const result = await apiRequest(`/api/v1/import/${id}/revert`, {
215
+ method: 'POST',
216
+ companyId,
188
217
  });
189
218
  return formatResponse(result);
190
219
  },
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/tools/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/tools/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const tools: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: z.ZodObject<{
6
+ cui: z.ZodString;
7
+ integrationKey: z.ZodOptional<z.ZodString>;
8
+ window: z.ZodOptional<z.ZodNumber>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ cui: string;
11
+ integrationKey?: string | undefined;
12
+ window?: number | undefined;
13
+ }, {
14
+ cui: string;
15
+ integrationKey?: string | undefined;
16
+ window?: number | undefined;
17
+ }>;
18
+ handler: (params: Record<string, unknown>) => Promise<string>;
19
+ }[];
20
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;sBAqBU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;GA4BpE,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ import { apiRequest } from '../client.js';
3
+ import { formatResponse } from '../utils/errors.js';
4
+ export const tools = [
5
+ {
6
+ name: 'integration_invoicing_activity',
7
+ description: 'Check whether a fiscal code (CUI/CIF) invoices through Storno, and how many invoices it issued recently. Built for platforms that give their users a benefit for invoicing here, so it is NOT authenticated with your user token — the credential is a shared integration key, configured server-side as INTEGRATION_API_KEY. Returns only { active, invoicesLast30d, windowDays, invoicesInWindow }: no company name, no amounts, no clients. Counts issued outgoing invoices only — drafts, cancelled and rejected ones do not count, so a company cannot earn a benefit by issuing and voiding. Returns active: false for an unknown fiscal code and for a suspended organization alike. If the server has no key configured the endpoint answers 404 ("not enabled"), and a wrong key answers 401.',
8
+ inputSchema: z.object({
9
+ cui: z
10
+ .string()
11
+ .describe('Fiscal code to look up. Written however you have it — "RO12345678", "12345678", spaced or dotted are all accepted'),
12
+ integrationKey: z
13
+ .string()
14
+ .optional()
15
+ .describe('The shared integration key. Falls back to the STORNO_INTEGRATION_KEY environment variable when omitted'),
16
+ window: z
17
+ .number()
18
+ .int()
19
+ .min(1)
20
+ .max(365)
21
+ .optional()
22
+ .describe('How many days back to count, 1-365 (default 30). The 30-day figure is reported as invoicesLast30d regardless'),
23
+ }),
24
+ handler: async (params) => {
25
+ const { cui, integrationKey, window } = params;
26
+ const key = integrationKey || process.env.STORNO_INTEGRATION_KEY;
27
+ if (!key) {
28
+ return JSON.stringify({
29
+ ok: false,
30
+ error: 'No integration key. Pass integrationKey, or set STORNO_INTEGRATION_KEY in the environment.',
31
+ }, null, 2);
32
+ }
33
+ const res = await apiRequest('/api/v1/integrations/invoicing-activity', {
34
+ query: { cui, window },
35
+ headers: { 'X-Integration-Key': key },
36
+ noAuth: true,
37
+ });
38
+ return formatResponse(res);
39
+ },
40
+ },
41
+ ];
42
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EACT,wwBAAwwB;QAC1wB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CAAC,mHAAmH,CAAC;YAChI,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wGAAwG,CAAC;YACrH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8GAA8G,CAAC;SAC5H,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAmB,EAAE;YAClE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAIvC,CAAC;YAEF,MAAM,GAAG,GAAG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACjE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC,SAAS,CACnB;oBACE,EAAE,EAAE,KAAK;oBACT,KAAK,EACH,4FAA4F;iBAC/F,EACD,IAAI,EACJ,CAAC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,yCAAyC,EAAE;gBACtE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;gBACtB,OAAO,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE;gBACrC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;KACF;CACF,CAAC"}