@ekwo-ai/core 0.20.0 → 0.21.2

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.
@@ -8,7 +8,7 @@
8
8
  * or an `entry_lines` row. Direct inserts are for the objects a person types:
9
9
  * draft documents and their lines.
10
10
  */
11
- import { BooksError } from './backend.js';
11
+ import { BooksError, backendSupports } from './backend.js';
12
12
  import * as columns from './columns.js';
13
13
  import { amountIn, moneyFields } from './format.js';
14
14
  import { companyCurrency, createdBefore, idsByCode, namesOf, only, onlyVisible } from './shared.js';
@@ -25,9 +25,9 @@ export const PAYMENT_STATES = ['not_paid', 'partially_paid', 'paid', 'overpaid',
25
25
  export async function createDocument(backend, args) {
26
26
  const resolved = await resolveLineInputs(backend, args.company_id, args.doc_type, args.lines);
27
27
  // Created before under this reference: the answer is that document. A
28
- // creation is two inserts, the header and then the lines, so a connection
29
- // that dropped between them left a draft with none — which is finished here
30
- // rather than handed back empty.
28
+ // creation is one statement since `create_document()`; a draft an earlier
29
+ // version left without lines, when a connection dropped between its two
30
+ // inserts, is still finished here rather than handed back empty.
31
31
  const before = await createdBefore(backend, 'documents', args.company_id, args.client_ref, ['id', 'state']);
32
32
  if (before !== undefined) {
33
33
  const id = before['id'];
@@ -38,28 +38,36 @@ export async function createDocument(backend, args) {
38
38
  limit: 1,
39
39
  });
40
40
  if (held.length === 0 && before['state'] === 'draft')
41
- await insertLines(backend, args.company_id, id, resolved);
41
+ await replaceLines(backend, args.company_id, id, resolved);
42
42
  return { ...(await getDocument(backend, { document_id: id })), replayed: true };
43
43
  }
44
44
  const currency = args.currency_code ?? (await companyCurrency(backend, args.company_id));
45
- const document = only(await backend.insert('documents', [
46
- {
47
- company_id: args.company_id,
48
- doc_type: args.doc_type,
49
- contact_id: args.contact_id,
50
- document_date: args.document_date,
51
- due_date: args.due_date ?? null,
52
- accounting_date: args.accounting_date ?? null,
53
- number: args.number ?? null,
54
- supplier_reference: args.supplier_reference ?? null,
55
- currency_code: currency,
56
- journal_id: args.journal_id ?? null,
57
- payment_reference: args.payment_reference ?? null,
58
- client_ref: args.client_ref ?? null,
59
- },
60
- ], ['id']), 'the document could not be created');
61
- await insertLines(backend, args.company_id, document['id'], resolved);
62
- return getDocument(backend, { document_id: document['id'] });
45
+ const header = {
46
+ company_id: args.company_id,
47
+ doc_type: args.doc_type,
48
+ contact_id: args.contact_id,
49
+ document_date: args.document_date,
50
+ due_date: args.due_date ?? null,
51
+ accounting_date: args.accounting_date ?? null,
52
+ number: args.number ?? null,
53
+ supplier_reference: args.supplier_reference ?? null,
54
+ currency_code: currency,
55
+ journal_id: args.journal_id ?? null,
56
+ payment_reference: args.payment_reference ?? null,
57
+ client_ref: args.client_ref ?? null,
58
+ };
59
+ // A schema older than `create_document()` (0.21.0) is written the way it
60
+ // always was: the header, then its lines. A connection that drops between
61
+ // the two leaves a draft with none, which the replay above finishes.
62
+ if (!(await backendSupports(backend, 'documents_in_one_statement'))) {
63
+ const document = only(await backend.insert('documents', [header], ['id']), 'the document could not be created');
64
+ await insertLines(backend, args.company_id, document['id'], resolved);
65
+ return getDocument(backend, { document_id: document['id'] });
66
+ }
67
+ // The header and its lines in one statement: a line the database refuses
68
+ // creates nothing, rather than an empty draft.
69
+ const id = only(await backend.rpc('create_document', { p_document: header, p_lines: resolved }), 'the document could not be created');
70
+ return getDocument(backend, { document_id: id });
63
71
  }
64
72
  function isSale(docType) {
65
73
  return docType.startsWith('sale_');
@@ -164,6 +172,23 @@ async function productsFor(backend, company, lines) {
164
172
  }
165
173
  return { byId, byCode };
166
174
  }
175
+ /**
176
+ * Every line of a draft replaced by these, through `replace_document_lines()`:
177
+ * one statement, so a line the database refuses leaves the draft with the
178
+ * lines it had rather than with none.
179
+ *
180
+ * A schema older than that function (0.21.0) has the lines deleted and then
181
+ * inserted, as every release before it did — and there a refused line still
182
+ * leaves the draft without any, which is what `ekwo migrate` fixes.
183
+ */
184
+ async function replaceLines(backend, company, documentId, lines) {
185
+ if (!(await backendSupports(backend, 'documents_in_one_statement'))) {
186
+ await backend.remove('document_lines', [{ column: 'document_id', op: 'eq', value: documentId }]);
187
+ await insertLines(backend, company, documentId, lines);
188
+ return;
189
+ }
190
+ await backend.rpc('replace_document_lines', { p_document_id: documentId, p_lines: lines });
191
+ }
167
192
  async function insertLines(backend, company, documentId, lines, after = 0) {
168
193
  const rows = lines.map((line, index) => ({
169
194
  document_id: documentId,
@@ -205,10 +230,24 @@ export async function updateDocumentLines(backend, args) {
205
230
  const document = await draftOf(backend, args.document_id);
206
231
  const company = document['company_id'];
207
232
  const resolved = await resolveLineInputs(backend, company, document['doc_type'], args.lines);
208
- await backend.remove('document_lines', [{ column: 'document_id', op: 'eq', value: args.document_id }]);
209
- await insertLines(backend, company, args.document_id, resolved);
233
+ await replaceLines(backend, company, args.document_id, resolved);
210
234
  return getDocument(backend, { document_id: args.document_id });
211
235
  }
236
+ /**
237
+ * A person approves a draft, as it stands, for an agent to post it in a
238
+ * company whose `agent_posting` is `review`. The approval is a row of the audit
239
+ * trail naming the version of the draft, so a change to the draft afterwards
240
+ * needs another. The database refuses it to an agent or a machine key
241
+ * (`approval_by_a_person`) and to whoever may not post the document.
242
+ */
243
+ export async function approveDocument(backend, args) {
244
+ const version = only(await backend.rpc('approve_document', { p_document_id: args.document_id }), `document ${args.document_id}`);
245
+ return {
246
+ document_id: args.document_id,
247
+ version,
248
+ note: 'Approved as it stands. An agent may now post it; a change to the draft before then needs another approval.',
249
+ };
250
+ }
212
251
  export async function postDocument(backend, args) {
213
252
  if (args.dry_run === true) {
214
253
  // The database posts for real and takes it back, so what comes out is
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/books/documents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAuC,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpG,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,kBAAkB;IAClB,sBAAsB;IACtB,gBAAgB;CACqB,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AA2EtG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgB,EAChB,IAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE9F,sEAAsE;IACtE,0EAA0E;IAC1E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5G,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAW,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;YACrC,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACvD,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO;YAAE,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChH,OAAO,EAAE,GAAI,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3F,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,QAAQ,GAAG,IAAI,CACnB,MAAM,OAAO,CAAC,MAAM,CAClB,WAAW,EACX;QACE;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;YAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;YACnD,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;SACpC;KACF,EACD,CAAC,IAAI,CAAC,CACP,EACD,mCAAmC,CACpC,CAAC;IAEF,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAW,EAAE,QAAQ,CAAC,CAAC;IAChF,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAW,EAAE,CAAC,CAAC;AACzE,CAAC;AAiBD,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,iBAAiB,CAC9B,OAAgB,EAChB,OAAe,EACf,OAAgB,EAChB,KAAiB;IAEjB,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,SAAS,CACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAClG;QACD,SAAS,CACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAC9F;QACD,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,SAAS,GACb,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAY,CAAC,CAAC;QAC3H,MAAM,OAAO,GACX,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3F,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,UAAU,CAClB,+BAA+B,SAAS,yHAAyH,CAClK,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAK,OAAO,EAAE,CAAC,MAAM,CAAwB,CAAC;QACpE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAClB,2BAA2B,KAAK,GAAG,CAAC,uFAAuF,CAC5H,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnG,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAClB,4BAA4B,KAAK,GAAG,CAAC,MAAM,IAAI,wBAC7C,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,QAC7E,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAEvE,OAAO;YACL,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,IAAI;YACJ,WAAW,EACT,IAAI,CAAC,WAAW,IAAI,CAAE,OAAO,EAAE,CAAC,aAAa,CAA+B,IAAI,IAAI,CAAC;YACvF,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAE,OAAO,EAAE,CAAC,WAAW,CAAwB,IAAI,KAAK,CAAC;YACtF,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;YAC/B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;YACtC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;YACtD,UAAU,EACR,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;YACzG,MAAM,EACJ,IAAI,CAAC,MAAM;gBACX,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;oBAC1B,CAAC,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAAe,EACf,KAAiB;IAEjB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;KAC9G,CAAC;IACF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAE1F,MAAM,KAAK,GAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC;YACE,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAM;gBAC5B,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAM;gBAC5B,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aAC9D,CAAC,CAAC;SACJ;QACH,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAM;YACxB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE;gBACL,GAAG,KAAK;gBACR,GAAG,CAAC,MAAM,GAAG,CAAC;oBACZ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;oBACxC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;aAC/C;SACF,CAAC,CAAC;IAET,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,UAAU,CAClB,qCAAqC,IAAI,mFAAmF,CAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,OAAe,EACf,UAAkB,EAClB,KAAqB,EACrB,KAAK,GAAG,CAAC;IAET,MAAM,IAAI,GAAU,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;QAClC,SAAS,EAAE,SAAS;QACpB,GAAG,IAAI;KACR,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,uEAAuE;AACvE,KAAK,UAAU,OAAO,CAAC,OAAgB,EAAE,UAAkB;IACzD,MAAM,QAAQ,GAAG,IAAI,CACnB,MAAM,OAAO,CAAC,MAAM,CAAM;QACxB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC;QAClD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;KACvD,CAAC,EACF,YAAY,UAAU,EAAE,CACzB,CAAC;IACF,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAClB,gCAAgC,UAAU,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,mEAAmE,CAC9I,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,IAAyB;IAC/E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAW,CAAC;IACjD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAuB;QACtD,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACjD,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAwB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;IAC1G,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgB,EAChB,IAA6B;IAE7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAW,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CACtC,OAAO,EACP,OAAO,EACP,QAAQ,CAAC,UAAU,CAAY,EAC/B,IAAI,CAAC,KAAK,CACX,CAAC;IAEF,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvG,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChE,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAgB,EAChB,IAAsB;IAEtB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,SAAS,GAAG,IAAI,CACpB,MAAM,OAAO,CAAC,GAAG,CAAM,wBAAwB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EACrF,YAAY,IAAI,CAAC,WAAW,oBAAoB,CACjD,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI;YACjC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE;YAC3C,IAAI,EAAE,+GAA+G;SACtH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAM,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,IAAI,CAChB,WAAW,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,EACrD,YAAY,IAAI,CAAC,WAAW,oBAAoB,CACjD,CAAC;IAEF,OAAO;QACL,KAAK;QACL,WAAW,EAAE,MAAM,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAW,CAAC;QACzE,IAAI,EAAE,iOAAiO;KACxO,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAgB,EAAE,OAAe;IAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;QACtC,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,OAAO,CAAC,UAAU;QAC3B,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACzD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAA6C;QAChF,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,KAAK,EAAE;YACL;gBACE,MAAM,EAAE,IAAI;gBACZ,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;aACpG;SACF;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,IAAwB;IAC7E,MAAM,QAAQ,GAAG,IAAI,CACnB,MAAM,OAAO,CAAC,GAAG,CAAM,iBAAiB,EAAE;QACxC,aAAa,EAAE,IAAI,CAAC,WAAW;QAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAC,EACF,YAAY,IAAI,CAAC,WAAW,0BAA0B,CACvD,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAW,EAAE,CAAC,CAAQ,CAAC;IAClG,MAAM,SAAS,GAAG,WAAW,CAC3B,WAAW,CACT,MAAM,OAAO,CAAC,MAAM,CAAM;QACxB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;QAC9G,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;KAC7D,CAAC,EACF,CAAC,cAAc,EAAE,iBAAiB,CAAC,CACpC,EACD,YAAY,IAAI,CAAC,WAAW,EAAE,CAC/B,CAAC;IACF,OAAO;QACL,SAAS;QACT,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC;QACnC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1B,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;QACtC,IAAI,EAAE,4KAA4K;KACnL,CAAC;AACJ,CAAC;AAMD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,IAAwB;IAC7E,IAAI,CACF,MAAM,OAAO,CAAC,GAAG,CAAM,iBAAiB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAC9E,YAAY,IAAI,CAAC,WAAW,+BAA+B,CAC5D,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAQ,CAAC;IACrF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;QAC3C,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;QACjG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpD,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,SAAS;QACT,IAAI,EACF,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,iBAAiB,CAAC,KAAK,KAAK;YAC1D,CAAC,CAAC,+CAA+C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,gIAAgI;YAClN,CAAC,CAAC,iIAAiI;KACxI,CAAC;AACJ,CAAC;AAUD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB,EAAE,IAAsB;IACzE,IAAI,GAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC9B,GAAG,GAAG,8BAA8B,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,GAAG,GAAG,qBAAqB,IAAI,CAAC,IAAI,gDAAgD,CAAC;IACvF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAgB,gBAAgB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1G,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAI,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAS,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO;QACL,SAAS,EAAE,aAAa;QACxB,GAAG;QACH,GAAI,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAS;KAChG,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAgB,EAChB,IAAuB;IAEvB,MAAM,KAAK,GAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnH,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1G,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9F,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;QAC1C,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,KAAK;QACL,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACtD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC,CAAC,CAAC;IAEtG,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,GAAG;YACN,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC,IAAI,IAAI;SACzD,CAAC,CAAC;QACH,KAAK,EAAE,SAAS,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAgB,EAChB,IAAqB;IAErB,MAAM,QAAQ,GAAG,WAAW,CAC1B,MAAM,OAAO,CAAC,MAAM,CAAM;QACxB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;KAC7D,CAAC,EACF,YAAY,IAAI,CAAC,WAAW,EAAE,CAC/B,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;QACtC,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,OAAO,CAAC,aAAa;QAC9B,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;KAChC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAW,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAA6C;YACzD,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,IAAI;oBACZ,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;iBACpG;aACF;SACF,CAAC;QACF,OAAO,CAAC,MAAM,CAA+C;YAC3D,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;YACvC,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,IAAI;oBACZ,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;iBAChG;aACF;SACF,CAAC;KACH,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,KAAK,GAAe,IAAI,CAAC;IAC7B,IAAI,UAAU,GAAU,EAAE,CAAC;IAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,KAAK,GAAG,CACN,MAAM,OAAO,CAAC,MAAM,CAAM;YACxB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SACpD,CAAC,CACH,CAAC,CAAC,CAAQ,CAAC;QACZ,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAM;YACrC,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,OAAO,CAAC,UAAU;YAC3B,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YACzD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAClC,OAAO,EACP,UAAU,EACV,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,CACvD,CAAC;IAEF,4EAA4E;IAC5E,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAM;YAClB,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,OAAO,CAAC,sBAAsB;YACvC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACrE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SAChC,CAAC;QACF,OAAO,CAAC,MAAM,CAAM;YAClB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,OAAO,CAAC,eAAe;YAChC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;SACtE,CAAC;KACH,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAElC,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,YAAY,GAChB,MAAM,KAAK,IAAI;QACb,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAW,CAAC;YAC7C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CACH,CAAC;IAER,OAAO;QACL,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW,CAAC,IAAI,IAAI,EAAE;QAC1F,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,IAAI;YACP,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,IAAI,IAAI;YAC9D,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAW,CAAC,IAAI,IAAI;SACnD,CAAC,CAAC;QACH,MAAM;QACN,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,YAAY;QAC3B,KAAK;QACL,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,IAAI;YACP,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC,IAAI,IAAI;SACnE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,iEAAiE,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,OAAe,EAAE,MAAc;IACrF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAiB;YACjD,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,KAAK,EAAE;gBACL,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;gBAClD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;aACpC;YACD,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,UAAU,CAAC,uBAAuB,KAAK,CAAC,MAAM,wCAAwC,MAAM,IAAI,MAAM,uBAAuB,CAAC,CAAC;QAC3I,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,UAAU,CAAC,iFAAiF,MAAM,GAAG,EAAE;QAC/G,IAAI,EAAE,+FAA+F;KACtG,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/books/documents.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export * from './format.js';
13
13
  export { roundCurrency } from './rounding.js';
14
14
  export * from './shared.js';
15
15
  export * from './companies.js';
16
+ export * from './keys.js';
16
17
  export * from './contacts.js';
17
18
  export * from './documents.js';
18
19
  export * from './entries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/books/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,cAAc,CAAC;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/books/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,cAAc,CAAC;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -13,6 +13,7 @@ export * from './format.js';
13
13
  export { roundCurrency } from './rounding.js';
14
14
  export * from './shared.js';
15
15
  export * from './companies.js';
16
+ export * from './keys.js';
16
17
  export * from './contacts.js';
17
18
  export * from './documents.js';
18
19
  export * from './entries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/books/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,cAAc,CAAC;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/books/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,cAAc,CAAC;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Machine keys: the ones a company issued, and issuing another.
3
+ *
4
+ * What the MCP tools `list_api_keys` and `create_api_key` answer and what
5
+ * `ekwo key list` and `ekwo key create` print, from one place. A key's posting
6
+ * mode is fixed here, when it is issued — `review` unless the person asks for
7
+ * `autopilot` — and never at a call: the database ignores the mark a request
8
+ * made with the key carries, and has no way to raise a key afterwards.
9
+ */
10
+ import { type Backend } from './backend.js';
11
+ /** How a key posts a document: as its company's setting says, or directly. */
12
+ export declare const KEY_POSTING: readonly ["review", "autopilot"];
13
+ export type KeyPosting = (typeof KEY_POSTING)[number];
14
+ export interface ListApiKeysArgs {
15
+ company_id: string;
16
+ /** Also the ones withdrawn or expired. */
17
+ include_withdrawn?: boolean;
18
+ }
19
+ export declare function listApiKeys(backend: Backend, args: ListApiKeysArgs): Promise<unknown>;
20
+ export interface CreateApiKeyArgs {
21
+ company_id: string;
22
+ name: string;
23
+ capabilities: string[];
24
+ expires_at?: string | null | undefined;
25
+ /** Fixed for good. `autopilot` needs company.write, and a company that is not review_only. */
26
+ posting_mode?: KeyPosting | undefined;
27
+ }
28
+ export declare function createApiKey(backend: Backend, args: CreateApiKeyArgs): Promise<unknown>;
29
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/books/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAoC,KAAK,OAAO,EAA+B,MAAM,cAAc,CAAC;AAI3G,8EAA8E;AAC9E,eAAO,MAAM,WAAW,kCAAmC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB3F;AASD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACvC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB7F"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Machine keys: the ones a company issued, and issuing another.
3
+ *
4
+ * What the MCP tools `list_api_keys` and `create_api_key` answer and what
5
+ * `ekwo key list` and `ekwo key create` print, from one place. A key's posting
6
+ * mode is fixed here, when it is issued — `review` unless the person asks for
7
+ * `autopilot` — and never at a call: the database ignores the mark a request
8
+ * made with the key carries, and has no way to raise a key afterwards.
9
+ */
10
+ import { backendSupports, schemaTooOldFor } from './backend.js';
11
+ import * as columns from './columns.js';
12
+ import { only } from './shared.js';
13
+ /** How a key posts a document: as its company's setting says, or directly. */
14
+ export const KEY_POSTING = ['review', 'autopilot'];
15
+ export async function listApiKeys(backend, args) {
16
+ const keys = await backend.select({
17
+ table: 'api_keys',
18
+ columns: columns.API_KEY,
19
+ where: [{ column: 'company_id', op: 'eq', value: args.company_id }],
20
+ order: [{ column: 'created_at', ascending: false }],
21
+ });
22
+ const now = Date.now();
23
+ const described = keys.map((key) => ({ ...key, state: apiKeyState(key, now) }));
24
+ return {
25
+ api_keys: args.include_withdrawn === true
26
+ ? described
27
+ : described.filter((key) => key.state === 'live'),
28
+ note: 'The secret of a key exists only in the answer that created it. A key that is lost is withdrawn and issued again; so is a key wanted in another posting mode.',
29
+ };
30
+ }
31
+ function apiKeyState(key, now) {
32
+ if (key['revoked_at'] !== null && key['revoked_at'] !== undefined)
33
+ return 'withdrawn';
34
+ const expires = key['expires_at'];
35
+ if (typeof expires === 'string' && Date.parse(expires) <= now)
36
+ return 'expired';
37
+ return 'live';
38
+ }
39
+ export async function createApiKey(backend, args) {
40
+ const call = {
41
+ p_company_id: args.company_id,
42
+ p_name: args.name,
43
+ p_capabilities: args.capabilities,
44
+ p_expires_at: args.expires_at ?? null,
45
+ };
46
+ // A schema older than the posting modes (0.21.0) issues a key with the four
47
+ // arguments it always took, and has no mode to fix on it: asking for
48
+ // autopilot there is refused by name rather than dropped.
49
+ if (await backendSupports(backend, 'agent_posting')) {
50
+ call['p_posting_mode'] = args.posting_mode ?? 'review';
51
+ }
52
+ else if (args.posting_mode === 'autopilot') {
53
+ const installed = (await backend.schemaVersion()) ?? 'an older version';
54
+ throw schemaTooOldFor('agent_posting', installed, 'a key in autopilot');
55
+ }
56
+ const created = only(await backend.rpc('create_api_key', call), 'the key could not be issued');
57
+ return {
58
+ api_key: created,
59
+ note: 'The secret is in this answer and nowhere else — only its hash is stored. Show it to the user once, and tell them it cannot be read back.',
60
+ };
61
+ }
62
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/books/keys.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export * from './types.js';
7
7
  export * from './client.js';
8
8
  export { STATEMENT_FORMATS, type StatementFormat } from './bank.js';
9
9
  export { BANK_ACCOUNT_SCHEMES, BANK_ACCOUNT_SCHEME_KEYS, FALLBACK_BANK_ACCOUNT_SCHEME, bankAccountScheme, readBankAccountIdentifier, type BankAccountIdentifier, type BankAccountScheme, } from './bank-accounts.js';
10
- export { SCHEMA_MIN, compareSchemaVersions, schemaIsAtLeast } from './schema.js';
10
+ export { SCHEMA_FEATURES, SCHEMA_MIN, compareSchemaVersions, missingFeatures, schemaIsAtLeast, supports, type SchemaFeature, } from './schema.js';
11
11
  export { isRefusalState, socleCode } from './refusal.js';
12
12
  export { IDENTITY_ENV, isServiceRoleKey, serviceRoleRefusal, type KeySlot } from './identity.js';
13
13
  export { REGISTER_INVITE_ENV, REGISTRATION_INVITATION, registerInviteSilenced, registrationInvitation, relayableInvitation, type EnvironmentVariables, type RegistrationInvitation, } from './registration.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,QAAQ,EACR,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ export * from './types.js';
7
7
  export * from './client.js';
8
8
  export { STATEMENT_FORMATS } from './bank.js';
9
9
  export { BANK_ACCOUNT_SCHEMES, BANK_ACCOUNT_SCHEME_KEYS, FALLBACK_BANK_ACCOUNT_SCHEME, bankAccountScheme, readBankAccountIdentifier, } from './bank-accounts.js';
10
- export { SCHEMA_MIN, compareSchemaVersions, schemaIsAtLeast } from './schema.js';
10
+ export { SCHEMA_FEATURES, SCHEMA_MIN, compareSchemaVersions, missingFeatures, schemaIsAtLeast, supports, } from './schema.js';
11
11
  export { isRefusalState, socleCode } from './refusal.js';
12
12
  export { IDENTITY_ENV, isServiceRoleKey, serviceRoleRefusal } from './identity.js';
13
13
  export { REGISTER_INVITE_ENV, REGISTRATION_INVITATION, registerInviteSilenced, registrationInvitation, relayableInvitation, } from './registration.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,GAG1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAgB,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,GAG1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,QAAQ,GAET,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAgB,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
package/dist/schema.d.ts CHANGED
@@ -13,11 +13,103 @@
13
13
  * packages together; there is no "down" migration and there never will be,
14
14
  * because undoing a schema change on a database with a year of entries in it
15
15
  * is not a script, it is a restore.
16
+ *
17
+ * ## A floor, not the release number
18
+ *
19
+ * `SCHEMA_MIN` is the oldest schema this package still reads, and it is not
20
+ * the version of the release that carries it. Until 0.21.0 the two moved
21
+ * together, at every release: on 26 October 2026 a person invited to a project
22
+ * at 0.19.0 was shown nothing but "Your project needs an update", for a
23
+ * release whose migrations had added one column and two functions, none of
24
+ * which the screens they were opening read.
25
+ *
26
+ * So the floor moves only when a migration is **breaking** for what this
27
+ * package does on an older database: a table or a column renamed or dropped,
28
+ * a function whose arguments or answer changed, a right taken away that a
29
+ * call relied on. A migration that adds something is not a reason. What this
30
+ * package reads or calls that is newer than the floor is named in
31
+ * `SCHEMA_FEATURES` below, with the version that introduced it, and is asked
32
+ * for only on a schema that has it (`supports()`): the column is left out of
33
+ * the read, the older route is taken, or the call is refused by name with
34
+ * `schema_too_old_for`, saying which version it needs.
35
+ *
36
+ * `tests/schema_floor.test.ts` is the proof of the number: it builds a
37
+ * database from the migrations and seeds of the tag `v<SCHEMA_MIN>` and runs
38
+ * the reads of this release against it. A change that stops reading a project
39
+ * at the floor fails there, and the fix is either `SCHEMA_FEATURES` or a
40
+ * higher floor — said in the changelog under **Changed**, with the migration
41
+ * that made it necessary. `docs/releasing.md` carries the rule.
16
42
  */
17
43
  /** The oldest schema `@ekwo-ai/core` reads. */
18
- export declare const SCHEMA_MIN = "0.20.0";
44
+ export declare const SCHEMA_MIN = "0.19.0";
19
45
  /** `-1`, `0` or `1`, comparing two `major.minor.patch` versions numerically. */
20
46
  export declare function compareSchemaVersions(left: string, right: string): number;
21
47
  /** Whether a database at `installed` is new enough for a package needing `minimum`. */
22
48
  export declare function schemaIsAtLeast(installed: string, minimum: string): boolean;
49
+ /**
50
+ * What a schema newer than the floor brought that a client reads or calls.
51
+ *
52
+ * One entry per thing a person can do or see, named after it, with the
53
+ * version of the schema that introduced it and the objects it is made of:
54
+ * the columns a read leaves out below that version (`table.column`), and the
55
+ * functions a call needs. The objects are what `onSocle()` acts on — a read
56
+ * of `companies` on a schema without `companies.agent_posting` simply does not
57
+ * ask for the column, and a call of `approve_document()` there is refused by
58
+ * name — so a feature listed here is never half there.
59
+ *
60
+ * A feature older than the floor has nothing left to say and is removed when
61
+ * the floor passes it. Nothing is listed here on faith either:
62
+ * `tests/schema_floor.test.ts` checks that every object below is missing at
63
+ * the floor and present in this release.
64
+ */
65
+ export declare const SCHEMA_FEATURES: {
66
+ /**
67
+ * The administration a declaration is paid to, named in the company's own
68
+ * language where the pack gives its name in several
69
+ * (`20261023160200_a_payee_is_named_in_the_company_language`).
70
+ */
71
+ readonly tax_payee_name_i18n: {
72
+ readonly since: "0.20.0";
73
+ readonly columns: readonly ["country_defaults.tax_payee_name_i18n"];
74
+ readonly functions: readonly [];
75
+ };
76
+ /**
77
+ * A draft and its lines written in one statement, so a line the database
78
+ * refuses leaves nothing half done
79
+ * (`20261023160600_a_draft_changes_its_lines_in_one_statement`). Below it,
80
+ * the core writes a draft in two statements, as it did before.
81
+ */
82
+ readonly documents_in_one_statement: {
83
+ readonly since: "0.21.0";
84
+ readonly columns: readonly [];
85
+ readonly functions: readonly ["create_document", "replace_document_lines"];
86
+ };
87
+ /**
88
+ * How an agent posts in a company — review, autopilot or review only — and
89
+ * the approval of a draft by a person
90
+ * (`20261023174709_an_agent_posts_in_the_mode_its_company_chose`). Below
91
+ * it, nothing holds an agent's posting back, there is no setting to read
92
+ * and no approval to give, and a machine key has no posting mode.
93
+ */
94
+ readonly agent_posting: {
95
+ readonly since: "0.21.0";
96
+ readonly columns: readonly ["companies.agent_posting", "api_keys.posting_mode"];
97
+ readonly functions: readonly ["approve_document", "agent_posting_mode", "document_version"];
98
+ };
99
+ };
100
+ export type SchemaFeature = keyof typeof SCHEMA_FEATURES;
101
+ /**
102
+ * Whether a database at `installed` has `feature`.
103
+ *
104
+ * A version that is unknown — no row came back, or one that is not
105
+ * `major.minor.patch` — is answered `false`: a feature is offered on a schema
106
+ * known to have it, never on a guess.
107
+ */
108
+ export declare function supports(installed: string | null | undefined, feature: SchemaFeature): boolean;
109
+ /**
110
+ * The features of `SCHEMA_FEATURES` a database at `installed` lacks, in the
111
+ * order they are declared: what a screen greys, and what `ekwo migrate` would
112
+ * bring.
113
+ */
114
+ export declare function missingFeatures(installed: string | null | undefined): SchemaFeature[];
23
115
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBzE;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBzE;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;OAIG;;;;;;IAMH;;;;;OAKG;;;;;;IAMH;;;;;;OAMG;;;;;;CAM2G,CAAC;AAEjH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,eAAe,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAO9F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,EAAE,CAErF"}
package/dist/schema.js CHANGED
@@ -13,9 +13,35 @@
13
13
  * packages together; there is no "down" migration and there never will be,
14
14
  * because undoing a schema change on a database with a year of entries in it
15
15
  * is not a script, it is a restore.
16
+ *
17
+ * ## A floor, not the release number
18
+ *
19
+ * `SCHEMA_MIN` is the oldest schema this package still reads, and it is not
20
+ * the version of the release that carries it. Until 0.21.0 the two moved
21
+ * together, at every release: on 26 October 2026 a person invited to a project
22
+ * at 0.19.0 was shown nothing but "Your project needs an update", for a
23
+ * release whose migrations had added one column and two functions, none of
24
+ * which the screens they were opening read.
25
+ *
26
+ * So the floor moves only when a migration is **breaking** for what this
27
+ * package does on an older database: a table or a column renamed or dropped,
28
+ * a function whose arguments or answer changed, a right taken away that a
29
+ * call relied on. A migration that adds something is not a reason. What this
30
+ * package reads or calls that is newer than the floor is named in
31
+ * `SCHEMA_FEATURES` below, with the version that introduced it, and is asked
32
+ * for only on a schema that has it (`supports()`): the column is left out of
33
+ * the read, the older route is taken, or the call is refused by name with
34
+ * `schema_too_old_for`, saying which version it needs.
35
+ *
36
+ * `tests/schema_floor.test.ts` is the proof of the number: it builds a
37
+ * database from the migrations and seeds of the tag `v<SCHEMA_MIN>` and runs
38
+ * the reads of this release against it. A change that stops reading a project
39
+ * at the floor fails there, and the fix is either `SCHEMA_FEATURES` or a
40
+ * higher floor — said in the changelog under **Changed**, with the migration
41
+ * that made it necessary. `docs/releasing.md` carries the rule.
16
42
  */
17
43
  /** The oldest schema `@ekwo-ai/core` reads. */
18
- export const SCHEMA_MIN = '0.20.0';
44
+ export const SCHEMA_MIN = '0.19.0';
19
45
  /** `-1`, `0` or `1`, comparing two `major.minor.patch` versions numerically. */
20
46
  export function compareSchemaVersions(left, right) {
21
47
  const parse = (version) => version
@@ -39,4 +65,80 @@ export function compareSchemaVersions(left, right) {
39
65
  export function schemaIsAtLeast(installed, minimum) {
40
66
  return compareSchemaVersions(installed, minimum) >= 0;
41
67
  }
68
+ /**
69
+ * What a schema newer than the floor brought that a client reads or calls.
70
+ *
71
+ * One entry per thing a person can do or see, named after it, with the
72
+ * version of the schema that introduced it and the objects it is made of:
73
+ * the columns a read leaves out below that version (`table.column`), and the
74
+ * functions a call needs. The objects are what `onSocle()` acts on — a read
75
+ * of `companies` on a schema without `companies.agent_posting` simply does not
76
+ * ask for the column, and a call of `approve_document()` there is refused by
77
+ * name — so a feature listed here is never half there.
78
+ *
79
+ * A feature older than the floor has nothing left to say and is removed when
80
+ * the floor passes it. Nothing is listed here on faith either:
81
+ * `tests/schema_floor.test.ts` checks that every object below is missing at
82
+ * the floor and present in this release.
83
+ */
84
+ export const SCHEMA_FEATURES = {
85
+ /**
86
+ * The administration a declaration is paid to, named in the company's own
87
+ * language where the pack gives its name in several
88
+ * (`20261023160200_a_payee_is_named_in_the_company_language`).
89
+ */
90
+ tax_payee_name_i18n: {
91
+ since: '0.20.0',
92
+ columns: ['country_defaults.tax_payee_name_i18n'],
93
+ functions: [],
94
+ },
95
+ /**
96
+ * A draft and its lines written in one statement, so a line the database
97
+ * refuses leaves nothing half done
98
+ * (`20261023160600_a_draft_changes_its_lines_in_one_statement`). Below it,
99
+ * the core writes a draft in two statements, as it did before.
100
+ */
101
+ documents_in_one_statement: {
102
+ since: '0.21.0',
103
+ columns: [],
104
+ functions: ['create_document', 'replace_document_lines'],
105
+ },
106
+ /**
107
+ * How an agent posts in a company — review, autopilot or review only — and
108
+ * the approval of a draft by a person
109
+ * (`20261023174709_an_agent_posts_in_the_mode_its_company_chose`). Below
110
+ * it, nothing holds an agent's posting back, there is no setting to read
111
+ * and no approval to give, and a machine key has no posting mode.
112
+ */
113
+ agent_posting: {
114
+ since: '0.21.0',
115
+ columns: ['companies.agent_posting', 'api_keys.posting_mode'],
116
+ functions: ['approve_document', 'agent_posting_mode', 'document_version'],
117
+ },
118
+ };
119
+ /**
120
+ * Whether a database at `installed` has `feature`.
121
+ *
122
+ * A version that is unknown — no row came back, or one that is not
123
+ * `major.minor.patch` — is answered `false`: a feature is offered on a schema
124
+ * known to have it, never on a guess.
125
+ */
126
+ export function supports(installed, feature) {
127
+ if (installed === null || installed === undefined || installed.trim().length === 0)
128
+ return false;
129
+ try {
130
+ return schemaIsAtLeast(installed.trim(), SCHEMA_FEATURES[feature].since);
131
+ }
132
+ catch {
133
+ return false;
134
+ }
135
+ }
136
+ /**
137
+ * The features of `SCHEMA_FEATURES` a database at `installed` lacks, in the
138
+ * order they are declared: what a screen greys, and what `ekwo migrate` would
139
+ * bring.
140
+ */
141
+ export function missingFeatures(installed) {
142
+ return Object.keys(SCHEMA_FEATURES).filter((feature) => !supports(installed, feature));
143
+ }
42
144
  //# sourceMappingURL=schema.js.map