node-autotask 0.17.0 → 0.19.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 (38) hide show
  1. package/ARCHITECTURE.md +25 -12
  2. package/CHANGELOG.md +574 -0
  3. package/MCP_TOOL_CATALOG.json +2 -2
  4. package/MCP_TOOL_MANIFEST.md +5 -5
  5. package/N8N_MCP_MANIFEST.json +2 -2
  6. package/N8N_MCP_MANIFEST.md +3 -3
  7. package/README.md +8 -4
  8. package/capabilities.json +1574 -1574
  9. package/dist/capabilities.cjs +2 -2
  10. package/dist/capabilities.js +1 -1
  11. package/dist/{chunk-UV2PECAL.js → chunk-4YKV7ORF.js} +2 -2
  12. package/dist/{chunk-NQVD2XLH.cjs → chunk-7RDR5DSI.cjs} +393 -393
  13. package/dist/{chunk-EGR2ZLYM.js → chunk-D5RAQ4DE.js} +2 -2
  14. package/dist/{chunk-5ZGXWS4E.cjs → chunk-JM52ZU7T.cjs} +1573 -1573
  15. package/dist/{chunk-HC6YWPIY.js → chunk-LB2X4X4B.js} +116 -24
  16. package/dist/{chunk-6SP6GJJR.js → chunk-NDK7WYWA.js} +1573 -1573
  17. package/dist/{chunk-4RJG73GY.cjs → chunk-QDYSHAU6.cjs} +177 -85
  18. package/dist/{chunk-DQIZUZWP.cjs → chunk-TIM75K3G.cjs} +135 -135
  19. package/dist/{index-BAFdPxjG.d.ts → index-DLugNSr7.d.ts} +59 -21
  20. package/dist/{index-CjC0oWZX.d.cts → index-aZ3tCh1h.d.cts} +59 -21
  21. package/dist/index.cjs +26 -22
  22. package/dist/index.d.cts +2 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +8 -4
  25. package/dist/operations/index.cjs +178 -105
  26. package/dist/operations/index.d.cts +12 -3
  27. package/dist/operations/index.d.ts +12 -3
  28. package/dist/operations/index.js +77 -4
  29. package/dist/pool.cjs +8 -8
  30. package/dist/pool.d.cts +1 -1
  31. package/dist/pool.d.ts +1 -1
  32. package/dist/pool.js +4 -4
  33. package/dist/resources/index.cjs +4 -4
  34. package/dist/resources/index.d.cts +1 -1
  35. package/dist/resources/index.d.ts +1 -1
  36. package/dist/resources/index.js +3 -3
  37. package/docs/API.md +92 -26
  38. package/package.json +4 -2
package/ARCHITECTURE.md CHANGED
@@ -396,8 +396,13 @@ The only total is `count()` (`/query/count`); "more rows exist" is `nextPageUrl
396
396
  The node follows `pageDetails.nextPageUrl` (an absolute vendor URL, POSTing the
397
397
  filter to it), and the SDK does the same: the walk is the fetcher
398
398
  (`BaseResource.fetchPage`), which POSTs the `QueryModel` body to
399
- `/V1.0/<E>/query` for page 1 (`MaxRecords = pageSize`) and POSTs the preserved
400
- filter to the ABSOLUTE cursor for every later page. The cursor is rebased to
399
+ `/V1.0/<E>/query` for page 1 (`MaxRecords = pageSize`) and POSTs the SAME body
400
+ (`buildQueryBody` — `MaxRecords`, `IncludeFields` with the `id` append, the
401
+ preserved `filter`) to the ABSOLUTE cursor for every later page (issue #118:
402
+ before the fix the continuation carried `{ filter }` alone and returned the
403
+ full vendor model). Live-verified 2026-10-19: the vendor HONOURS
404
+ `IncludeFields` on a continuation and IGNORES `MaxRecords` (its own 500-row
405
+ page; the walk slices to its limit). The cursor is rebased to
401
406
  the client base URL (`cursorToPath`): same-origin cursors are stripped of the
402
407
  base and used verbatim, cross-origin ones are re-based onto the client base —
403
408
  mirroring the node's custom-zone behaviour. A page reports `hasMore` when
@@ -534,14 +539,21 @@ export interface RequestOptions {
534
539
  that premise is unprovable from the response, and the #104 classifier pins this
535
540
  code as `unknown` for a write (never blindly resend). `idempotent: true` /
536
541
  `maxRetries` remain the explicit opt-ins.
537
- - **Maintenance-window wait (weekly window):** a non-JSON `2xx` that reads as a
538
- maintenance notice is waited out for up to `maintenanceMaxWaitMs` (default 1 h,
539
- polled every `maintenancePollMs` = 30 s) from the first such page — for reads
540
- AND writes, because the edge answered before the vendor application saw the
541
- request. It does not consume `maxRetries`, each post-wait attempt gets a fresh
542
- `timeoutMs`, and the timer is re-armed around the wait. On exhaustion the error
543
- carries `details.maintenance = { waits, waitedMs, maxWaitMs, exhausted }`. A page
544
- that does not read as maintenance (a wrong `baseUrl`) never enters the loop.
542
+ - **Maintenance-window wait (weekly window):** a NON-JSON body whose first
543
+ 256 bytes read as a maintenance notice is waited out at any status
544
+ (`2xx`/`4xx`/`5xx` — issue #114; a JSON body never enters) for up to
545
+ `maintenanceMaxWaitMs` (default 1 h; the observed ceiling is 4 h, exported as
546
+ `MAINTENANCE_WINDOW_MAX_MS`, polled every `maintenancePollMs` = 30 s) from the
547
+ first such page. A non-JSON `2xx` page is waited out for reads AND writes (edge-
548
+ served before execution). A non-JSON `4xx`/`5xx` page only for calls safe to
549
+ re-send (`retriable5xx`: GET / explicitly idempotent-flagged) — an unflagged
550
+ mutation makes ONE send and carries `details.maintenanceDetected`, because a
551
+ proxy can serve that page after forwarding the write. It does
552
+ not consume `maxRetries`, each post-wait attempt gets a fresh `timeoutMs`, and the
553
+ timer is re-armed around the wait. On exhaustion the error carries
554
+ `details.maintenance = { waits, waitedMs, maxWaitMs, exhausted }`. A non-JSON page
555
+ that does not read as maintenance (a wrong `baseUrl`) never enters the loop and
556
+ stamps `details.maintenancePatternMiss` (snippet at `debug`).
545
557
  - **Per-call budget override:** `InvokeOptions.maxRetries` / `MutationOpts.maxRetries`
546
558
  threads the transport's per-request override through a mutation (and its
547
559
  auxiliary reads, e.g. a partial-update merge read); `0` = exactly one send per
@@ -993,8 +1005,9 @@ export const NoopLogger: Logger = {};
993
1005
  envelope pass-through, per-envelope unwrap errors, error mapping per status (vendor error
994
1006
  body formatting), retry/backoff on 429 with `Retry-After`, `Itgenatr005` as retryable
995
1007
  `RateLimitError`, `AbortSignal` timeout, concurrency guard.
996
- - **Pagination (`pagination.test.ts`)**: multi-page cursor-follow walk (POST the filter
997
- to the absolute `nextPageUrl`, rebased to the client base URL), early stop on short
1008
+ - **Pagination (`pagination.test.ts`)**: multi-page cursor-follow walk (POST the same
1009
+ `QueryModel` body to the absolute `nextPageUrl`, rebased to the client base URL;
1010
+ issue #118 pins the continuation's `IncludeFields`/`MaxRecords`), early stop on short
998
1011
  page, **1000-page guard** (`PaginationLimitError`), `collectAll` equivalence.
999
1012
  - **Query (`query.test.ts`)**: filter builder (13 operators, and/or wrapping, UDF flag),
1000
1013
  cap enforcement (500 OR-conditions, 1 UDF/query), GET-length measurement.