@marcfargas/odoo-cli 0.1.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 (81) hide show
  1. package/dist/cli.d.ts +27 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +152 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/accounting.d.ts +16 -0
  6. package/dist/commands/accounting.d.ts.map +1 -0
  7. package/dist/commands/accounting.js +363 -0
  8. package/dist/commands/accounting.js.map +1 -0
  9. package/dist/commands/attendance.d.ts +14 -0
  10. package/dist/commands/attendance.d.ts.map +1 -0
  11. package/dist/commands/attendance.js +339 -0
  12. package/dist/commands/attendance.js.map +1 -0
  13. package/dist/commands/config.d.ts +12 -0
  14. package/dist/commands/config.d.ts.map +1 -0
  15. package/dist/commands/config.js +159 -0
  16. package/dist/commands/config.js.map +1 -0
  17. package/dist/commands/mail.d.ts +12 -0
  18. package/dist/commands/mail.d.ts.map +1 -0
  19. package/dist/commands/mail.js +236 -0
  20. package/dist/commands/mail.js.map +1 -0
  21. package/dist/commands/modules.d.ts +14 -0
  22. package/dist/commands/modules.d.ts.map +1 -0
  23. package/dist/commands/modules.js +351 -0
  24. package/dist/commands/modules.js.map +1 -0
  25. package/dist/commands/records.d.ts +15 -0
  26. package/dist/commands/records.d.ts.map +1 -0
  27. package/dist/commands/records.js +591 -0
  28. package/dist/commands/records.js.map +1 -0
  29. package/dist/commands/schema.d.ts +16 -0
  30. package/dist/commands/schema.d.ts.map +1 -0
  31. package/dist/commands/schema.js +381 -0
  32. package/dist/commands/schema.js.map +1 -0
  33. package/dist/commands/state.d.ts +14 -0
  34. package/dist/commands/state.d.ts.map +1 -0
  35. package/dist/commands/state.js +373 -0
  36. package/dist/commands/state.js.map +1 -0
  37. package/dist/commands/timesheets.d.ts +15 -0
  38. package/dist/commands/timesheets.d.ts.map +1 -0
  39. package/dist/commands/timesheets.js +453 -0
  40. package/dist/commands/timesheets.js.map +1 -0
  41. package/dist/commands/url.d.ts +12 -0
  42. package/dist/commands/url.d.ts.map +1 -0
  43. package/dist/commands/url.js +149 -0
  44. package/dist/commands/url.js.map +1 -0
  45. package/dist/help/extra-help.d.ts +18 -0
  46. package/dist/help/extra-help.d.ts.map +1 -0
  47. package/dist/help/extra-help.js +207 -0
  48. package/dist/help/extra-help.js.map +1 -0
  49. package/dist/middleware/auth.d.ts +29 -0
  50. package/dist/middleware/auth.d.ts.map +1 -0
  51. package/dist/middleware/auth.js +68 -0
  52. package/dist/middleware/auth.js.map +1 -0
  53. package/dist/middleware/common-params.d.ts +90 -0
  54. package/dist/middleware/common-params.d.ts.map +1 -0
  55. package/dist/middleware/common-params.js +169 -0
  56. package/dist/middleware/common-params.js.map +1 -0
  57. package/dist/middleware/safety.d.ts +30 -0
  58. package/dist/middleware/safety.d.ts.map +1 -0
  59. package/dist/middleware/safety.js +64 -0
  60. package/dist/middleware/safety.js.map +1 -0
  61. package/dist/output/errors.d.ts +69 -0
  62. package/dist/output/errors.d.ts.map +1 -0
  63. package/dist/output/errors.js +193 -0
  64. package/dist/output/errors.js.map +1 -0
  65. package/dist/output/formatter.d.ts +80 -0
  66. package/dist/output/formatter.d.ts.map +1 -0
  67. package/dist/output/formatter.js +285 -0
  68. package/dist/output/formatter.js.map +1 -0
  69. package/dist/output/stream-writer.d.ts +33 -0
  70. package/dist/output/stream-writer.d.ts.map +1 -0
  71. package/dist/output/stream-writer.js +74 -0
  72. package/dist/output/stream-writer.js.map +1 -0
  73. package/dist/parsing/domain-parser.d.ts +61 -0
  74. package/dist/parsing/domain-parser.d.ts.map +1 -0
  75. package/dist/parsing/domain-parser.js +427 -0
  76. package/dist/parsing/domain-parser.js.map +1 -0
  77. package/dist/parsing/json-arg.d.ts +48 -0
  78. package/dist/parsing/json-arg.d.ts.map +1 -0
  79. package/dist/parsing/json-arg.js +165 -0
  80. package/dist/parsing/json-arg.js.map +1 -0
  81. package/package.json +53 -0
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ /**
3
+ * `odoo schema` command group — model and field introspection.
4
+ *
5
+ * Wraps @marcfargas/odoo-introspection.
6
+ *
7
+ * Commands:
8
+ * schema models List all models [READ]
9
+ * schema fields <model> List fields for a model [READ]
10
+ * schema describe <model> Human-readable model summary [READ]
11
+ * schema codegen <model> Generate TypeScript interface [READ]
12
+ *
13
+ * All commands are READ — no mutations.
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.buildSchemaCommand = buildSchemaCommand;
53
+ const commander_1 = require("commander");
54
+ const debug_1 = __importDefault(require("debug"));
55
+ const odoo_introspection_1 = require("@marcfargas/odoo-introspection");
56
+ const auth_1 = require("../middleware/auth");
57
+ const common_params_1 = require("../middleware/common-params");
58
+ const formatter_1 = require("../output/formatter");
59
+ const errors_1 = require("../output/errors");
60
+ const stream_writer_1 = require("../output/stream-writer");
61
+ const extra_help_1 = require("../help/extra-help");
62
+ const log = (0, debug_1.default)('odoo-cli:schema');
63
+ function buildSchemaCommand() {
64
+ const schema = new commander_1.Command('schema')
65
+ .description('Model and field introspection — discover Odoo schema at runtime')
66
+ .addHelpText('after', `
67
+ Safety: READ — no confirmation required.
68
+ Wraps @marcfargas/odoo-introspection.
69
+
70
+ Examples:
71
+ odoo schema models --search sale
72
+ odoo schema fields crm.lead --type many2one
73
+ odoo schema describe res.partner
74
+ odoo schema codegen sale.order --out ./types/sale-order.ts
75
+ `);
76
+ // --help-extra
77
+ schema.option('--help-extra', 'Show extended skill documentation for schema');
78
+ schema.hook('preAction', async (thisCommand) => {
79
+ const opts = thisCommand.opts();
80
+ if (opts.helpExtra) {
81
+ await (0, extra_help_1.showHelpExtra)('schema');
82
+ process.exit(0);
83
+ }
84
+ });
85
+ schema.addCommand(buildModelsCommand());
86
+ schema.addCommand(buildFieldsCommand());
87
+ schema.addCommand(buildDescribeCommand());
88
+ schema.addCommand(buildCodegenCommand());
89
+ return schema;
90
+ }
91
+ function buildModelsCommand() {
92
+ const cmd = new commander_1.Command('models').description('List all Odoo models [READ]').addHelpText('after', `
93
+ Examples:
94
+ odoo schema models
95
+ odoo schema models --search sale
96
+ odoo schema models --format json | jq '.[].model'
97
+ `);
98
+ (0, common_params_1.addAuthOptions)(cmd);
99
+ (0, common_params_1.addOutputOptions)(cmd);
100
+ cmd.option('--search <text>', 'Substring filter on model name or description');
101
+ cmd.option('--installed', 'Only models from installed modules (default: all)');
102
+ cmd.action(async () => {
103
+ const opts = cmd.optsWithGlobals();
104
+ log('schema models search=%s', opts.search);
105
+ let client;
106
+ try {
107
+ client = await (0, auth_1.createAuthClient)(opts);
108
+ }
109
+ catch (err) {
110
+ process.exit((0, errors_1.handleError)(err));
111
+ }
112
+ try {
113
+ const introspector = new odoo_introspection_1.Introspector(client);
114
+ let models = await introspector.getModels();
115
+ if (opts.search) {
116
+ const q = opts.search.toLowerCase();
117
+ models = models.filter((m) => m.model.toLowerCase().includes(q) || (m.name ?? '').toLowerCase().includes(q));
118
+ }
119
+ const format = (0, formatter_1.resolveFormat)(opts.format);
120
+ const rows = models.map((m) => ({
121
+ model: m.model,
122
+ description: m.name ?? '',
123
+ modules: m.modules ?? '',
124
+ transient: m.transient ? 'yes' : 'no',
125
+ }));
126
+ await (0, formatter_1.render)(rows, format);
127
+ }
128
+ catch (err) {
129
+ process.exit((0, errors_1.handleError)(err));
130
+ }
131
+ finally {
132
+ client?.logout();
133
+ }
134
+ });
135
+ return cmd;
136
+ }
137
+ function buildFieldsCommand() {
138
+ const cmd = new commander_1.Command('fields')
139
+ .description('List fields for a model [READ]')
140
+ .argument('<model>', 'Odoo model name (e.g., crm.lead)')
141
+ .addHelpText('after', `
142
+ Examples:
143
+ odoo schema fields crm.lead
144
+ odoo schema fields crm.lead --type many2one
145
+ odoo schema fields res.partner --required --format csv
146
+ `);
147
+ (0, common_params_1.addAuthOptions)(cmd);
148
+ (0, common_params_1.addOutputOptions)(cmd);
149
+ cmd.option('--search <text>', 'Filter by field name substring');
150
+ cmd.option('--type <type>', 'Filter by field type (char, many2one, integer, etc.)');
151
+ cmd.option('--required', 'Show only required fields');
152
+ cmd.action(async (model) => {
153
+ const opts = cmd.optsWithGlobals();
154
+ log('schema fields %s type=%s required=%s', model, opts.type, opts.required);
155
+ let client;
156
+ try {
157
+ client = await (0, auth_1.createAuthClient)(opts);
158
+ }
159
+ catch (err) {
160
+ process.exit((0, errors_1.handleError)(err));
161
+ }
162
+ try {
163
+ const introspector = new odoo_introspection_1.Introspector(client);
164
+ let fields = await introspector.getFields(model);
165
+ if (opts.search) {
166
+ const q = opts.search.toLowerCase();
167
+ fields = fields.filter((f) => f.name.toLowerCase().includes(q));
168
+ }
169
+ if (opts.type) {
170
+ fields = fields.filter((f) => f.ttype === opts.type);
171
+ }
172
+ if (opts.required) {
173
+ fields = fields.filter((f) => f.required);
174
+ }
175
+ const format = (0, formatter_1.resolveFormat)(opts.format);
176
+ const rows = fields.map((f) => ({
177
+ field: f.name,
178
+ type: f.ttype,
179
+ string: f.field_description ?? '',
180
+ required: f.required ? 'yes' : 'no',
181
+ readonly: f.readonly ? 'yes' : 'no',
182
+ relation: f.relation ?? '',
183
+ }));
184
+ await (0, formatter_1.render)(rows, format);
185
+ }
186
+ catch (err) {
187
+ if (err instanceof Error && err.message.includes('not found')) {
188
+ process.stderr.write(`✗ Error: Model '${model}' not found\n → Run: odoo schema models --search ${model.split('.')[0]}\n`);
189
+ process.exit(errors_1.EXIT_CODES.NOT_FOUND);
190
+ }
191
+ process.exit((0, errors_1.handleError)(err));
192
+ }
193
+ finally {
194
+ client?.logout();
195
+ }
196
+ });
197
+ return cmd;
198
+ }
199
+ function buildDescribeCommand() {
200
+ const cmd = new commander_1.Command('describe')
201
+ .description('Human-readable model summary [READ]')
202
+ .argument('<model>', 'Odoo model name')
203
+ .addHelpText('after', `
204
+ Examples:
205
+ odoo schema describe res.partner
206
+ odoo schema describe crm.lead
207
+ `);
208
+ (0, common_params_1.addAuthOptions)(cmd);
209
+ cmd.addOption((0, common_params_1.formatOption)());
210
+ cmd.action(async (model) => {
211
+ const opts = cmd.optsWithGlobals();
212
+ log('schema describe %s', model);
213
+ let client;
214
+ try {
215
+ client = await (0, auth_1.createAuthClient)(opts);
216
+ }
217
+ catch (err) {
218
+ process.exit((0, errors_1.handleError)(err));
219
+ }
220
+ try {
221
+ const introspector = new odoo_introspection_1.Introspector(client);
222
+ const metadata = await introspector.getModelMetadata(model);
223
+ const format = (0, formatter_1.resolveFormat)(opts.format);
224
+ // Build field type summary
225
+ const typeCounts = {};
226
+ for (const f of metadata.fields) {
227
+ typeCounts[f.ttype] = (typeCounts[f.ttype] ?? 0) + 1;
228
+ }
229
+ const requiredCount = metadata.fields.filter((f) => f.required).length;
230
+ const readonlyCount = metadata.fields.filter((f) => f.readonly).length;
231
+ const relationalCount = metadata.fields.filter((f) => ['many2one', 'one2many', 'many2many'].includes(f.ttype)).length;
232
+ if (format === 'json' || format === 'ndjson') {
233
+ const out = {
234
+ model: metadata.model.model,
235
+ name: metadata.model.name,
236
+ modules: metadata.model.modules,
237
+ info: metadata.model.info,
238
+ field_count: metadata.fields.length,
239
+ required_count: requiredCount,
240
+ readonly_count: readonlyCount,
241
+ relational_count: relationalCount,
242
+ field_types: typeCounts,
243
+ };
244
+ await (0, stream_writer_1.writeStdout)(JSON.stringify(out, null, format === 'json' ? 2 : 0) + '\n');
245
+ }
246
+ else {
247
+ process.stdout.write(`\n${metadata.model.name} (${model})\n`);
248
+ process.stdout.write(`${'─'.repeat(60)}\n`);
249
+ if (metadata.model.info) {
250
+ process.stdout.write(`${metadata.model.info}\n\n`);
251
+ }
252
+ process.stdout.write(`Total fields: ${metadata.fields.length}\n`);
253
+ process.stdout.write(`Required: ${requiredCount}\n`);
254
+ process.stdout.write(`Readonly/computed: ${readonlyCount}\n`);
255
+ process.stdout.write(`Relational: ${relationalCount}\n`);
256
+ process.stdout.write(`Modules: ${metadata.model.modules ?? ''}\n`);
257
+ process.stdout.write(`\nField types:\n`);
258
+ for (const [type, count] of Object.entries(typeCounts).sort(([, a], [, b]) => b - a)) {
259
+ process.stdout.write(` ${type.padEnd(12)} ${count}\n`);
260
+ }
261
+ process.stdout.write(`\nRun 'odoo schema fields ${model}' to see all fields.\n`);
262
+ }
263
+ }
264
+ catch (err) {
265
+ if (err instanceof Error && err.message.includes('not found')) {
266
+ process.stderr.write(`✗ Error: Model '${model}' not found\n`);
267
+ process.exit(errors_1.EXIT_CODES.NOT_FOUND);
268
+ }
269
+ process.exit((0, errors_1.handleError)(err));
270
+ }
271
+ finally {
272
+ client?.logout();
273
+ }
274
+ });
275
+ return cmd;
276
+ }
277
+ function buildCodegenCommand() {
278
+ const cmd = new commander_1.Command('codegen')
279
+ .description('Generate TypeScript interface from live schema [READ]')
280
+ .argument('<model>', 'Odoo model name')
281
+ .addHelpText('after', `
282
+ Generates a TypeScript interface from the live Odoo schema.
283
+
284
+ Examples:
285
+ odoo schema codegen sale.order
286
+ odoo schema codegen sale.order --out ./types/sale-order.ts
287
+ odoo schema codegen crm.lead --readonly
288
+ `);
289
+ (0, common_params_1.addAuthOptions)(cmd);
290
+ cmd.option('--out <file>', 'Write to file (default: stdout)');
291
+ cmd.option('--readonly', 'Mark computed/readonly fields as readonly in TypeScript');
292
+ cmd.action(async (model) => {
293
+ const opts = cmd.optsWithGlobals();
294
+ log('schema codegen %s', model);
295
+ let client;
296
+ try {
297
+ client = await (0, auth_1.createAuthClient)(opts);
298
+ }
299
+ catch (err) {
300
+ process.exit((0, errors_1.handleError)(err));
301
+ }
302
+ try {
303
+ const introspector = new odoo_introspection_1.Introspector(client);
304
+ const metadata = await introspector.getModelMetadata(model);
305
+ // Generate TypeScript interface
306
+ const lines = [];
307
+ const interfaceName = modelToInterfaceName(model);
308
+ lines.push(`/**`);
309
+ lines.push(` * TypeScript interface for Odoo model: ${model}`);
310
+ lines.push(` * Generated from live schema by odoo-cli schema codegen`);
311
+ lines.push(` * Name: ${metadata.model.name}`);
312
+ lines.push(` */`);
313
+ lines.push(`export interface ${interfaceName} {`);
314
+ for (const field of metadata.fields) {
315
+ const tsType = mapFieldType(field.ttype, field.relation);
316
+ const readonlyMod = opts.readonly && field.readonly ? 'readonly ' : '';
317
+ const optionalMod = field.required ? '' : '?';
318
+ const comment = field.field_description ?? field.name;
319
+ lines.push(` /** ${comment}${field.help ? ` — ${field.help}` : ''} */`);
320
+ lines.push(` ${readonlyMod}${field.name}${optionalMod}: ${tsType};`);
321
+ }
322
+ lines.push(`}`);
323
+ lines.push(``);
324
+ const output = lines.join('\n');
325
+ if (opts.out) {
326
+ const { writeFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
327
+ writeFileSync(opts.out, output, 'utf8');
328
+ process.stderr.write(`✓ Written to ${opts.out}\n`);
329
+ }
330
+ else {
331
+ await (0, stream_writer_1.writeStdout)(output);
332
+ }
333
+ }
334
+ catch (err) {
335
+ if (err instanceof Error && err.message.includes('not found')) {
336
+ process.stderr.write(`✗ Error: Model '${model}' not found\n`);
337
+ process.exit(errors_1.EXIT_CODES.NOT_FOUND);
338
+ }
339
+ process.exit((0, errors_1.handleError)(err));
340
+ }
341
+ finally {
342
+ client?.logout();
343
+ }
344
+ });
345
+ return cmd;
346
+ }
347
+ // ── Helpers ──────────────────────────────────────────────────────────
348
+ function modelToInterfaceName(model) {
349
+ return model
350
+ .split('.')
351
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
352
+ .join('');
353
+ }
354
+ function mapFieldType(ttype, _relation) {
355
+ switch (ttype) {
356
+ case 'char':
357
+ case 'text':
358
+ case 'html':
359
+ case 'date':
360
+ case 'datetime':
361
+ case 'selection':
362
+ case 'binary':
363
+ case 'reference':
364
+ return 'string';
365
+ case 'integer':
366
+ return 'number';
367
+ case 'float':
368
+ case 'monetary':
369
+ return 'number';
370
+ case 'boolean':
371
+ return 'boolean';
372
+ case 'many2one':
373
+ return '[number, string] | false';
374
+ case 'one2many':
375
+ case 'many2many':
376
+ return 'number[]';
377
+ default:
378
+ return 'unknown';
379
+ }
380
+ }
381
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,gDAiCC;AA7CD,yCAAoC;AACpC,kDAA0B;AAC1B,uEAA8D;AAC9D,6CAAsE;AACtE,+DAA6F;AAC7F,mDAA4D;AAC5D,6CAA2D;AAC3D,2DAAsD;AACtD,mDAAmD;AAEnD,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,iBAAiB,CAAC,CAAC;AAErC,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACjC,WAAW,CAAC,iEAAiE,CAAC;SAC9E,WAAW,CACV,OAAO,EACP;;;;;;;;;CASL,CACI,CAAC;IAEJ,eAAe;IACf,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAA,0BAAa,EAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,WAAW,CACtF,OAAO,EACP;;;;;CAKH,CACE,CAAC;IAEF,IAAA,8BAAc,EAAC,GAAG,CAAC,CAAC;IACpB,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC,CAAC;IAC/E,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;IAE/E,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAI/B,CAAC;QAEF,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAA,uBAAgB,EAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,iCAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;YAE5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBACzB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;gBACxB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aACtC,CAAC,CAAC,CAAC;YAEJ,MAAM,IAAA,kBAAM,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CAAC,gCAAgC,CAAC;SAC7C,QAAQ,CAAC,SAAS,EAAE,kCAAkC,CAAC;SACvD,WAAW,CACV,OAAO,EACP;;;;;CAKL,CACI,CAAC;IAEJ,IAAA,8BAAc,EAAC,GAAG,CAAC,CAAC;IACpB,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;IAChE,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC,CAAC;IACpF,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IAEtD,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAK/B,CAAC;QAEF,GAAG,CAAC,sCAAsC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7E,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAA,uBAAgB,EAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,iCAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,IAAI,EAAE,CAAC,CAAC,KAAK;gBACb,MAAM,EAAE,CAAC,CAAC,iBAAiB,IAAI,EAAE;gBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;aAC3B,CAAC,CAAC,CAAC;YAEJ,MAAM,IAAA,kBAAM,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,KAAK,qDAAqD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACrG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC;SAChC,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACtC,WAAW,CACV,OAAO,EACP;;;;CAIL,CACI,CAAC;IAEJ,IAAA,8BAAc,EAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,CAAC,IAAA,4BAAY,GAAE,CAAC,CAAC;IAE9B,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAqC,CAAC;QAEtE,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAEjC,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAA,uBAAgB,EAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,iCAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,2BAA2B;YAC3B,MAAM,UAAU,GAA2B,EAAE,CAAC;YAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAChC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACvE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CACxD,CAAC,MAAM,CAAC;YAET,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG;oBACV,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;oBAC3B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;oBACzB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;oBAC/B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;oBACzB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;oBACnC,cAAc,EAAE,aAAa;oBAC7B,cAAc,EAAE,aAAa;oBAC7B,gBAAgB,EAAE,eAAe;oBACjC,WAAW,EAAE,UAAU;iBACxB,CAAC;gBACF,MAAM,IAAA,2BAAW,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;gBACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,aAAa,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,aAAa,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,eAAe,IAAI,CAAC,CAAC;gBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACzC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,wBAAwB,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,eAAe,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;SAC/B,WAAW,CAAC,uDAAuD,CAAC;SACpE,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACtC,WAAW,CACV,OAAO,EACP;;;;;;;CAOL,CACI,CAAC;IAEJ,IAAA,8BAAc,EAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IAC9D,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,yDAAyD,CAAC,CAAC;IAEpF,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAG/B,CAAC;QAEF,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAEhC,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAA,uBAAgB,EAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,iCAAY,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAE5D,gCAAgC;YAChC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAElD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,oBAAoB,aAAa,IAAI,CAAC,CAAC;YAElD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,IAAI,CAAC;gBAEtD,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC;YACxE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,IAAI,GAAC,CAAC;gBAC7C,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,eAAe,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AAExE,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAkB;IACrD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,0BAA0B,CAAC;QACpC,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `odoo state` command group — experimental state management.
3
+ *
4
+ * ALL state commands require --experimental flag (like `kubectl alpha`).
5
+ * This prevents accidental use in production scripts.
6
+ *
7
+ * Commands:
8
+ * state plan <file> Show drift between desired and current [READ]
9
+ * state apply <file> Apply desired state to Odoo [WRITE]
10
+ * state diff <model> Show current state of a model's records [READ]
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare function buildStateCommand(): Command;
14
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/commands/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,iBAAiB,IAAI,OAAO,CAsC3C"}