node-autotask 0.16.0 → 0.18.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.
- package/ARCHITECTURE.md +10 -4
- package/MCP_TOOL_CATALOG.json +2 -2
- package/MCP_TOOL_MANIFEST.md +4 -4
- package/N8N_MCP_MANIFEST.json +2 -2
- package/N8N_MCP_MANIFEST.md +3 -3
- package/README.md +36 -0
- package/capabilities.json +1571 -1571
- package/dist/capabilities.cjs +2 -2
- package/dist/capabilities.js +1 -1
- package/dist/{chunk-EWMG3HHU.cjs → chunk-5O5EPYBO.cjs} +1570 -1570
- package/dist/{chunk-L3TK4CN5.cjs → chunk-7I3F3AJJ.cjs} +429 -419
- package/dist/{chunk-VCGC6YCI.cjs → chunk-G564CHXM.cjs} +135 -135
- package/dist/{chunk-NB254T3F.js → chunk-HXOWEYV3.js} +49 -39
- package/dist/{chunk-JIDR3NPV.js → chunk-VV2UUW2J.js} +1570 -1570
- package/dist/{chunk-U6JUHHMB.js → chunk-VYUZZIEE.js} +66 -32
- package/dist/{chunk-GWALLMAM.js → chunk-W2WSZOZA.js} +2 -2
- package/dist/{chunk-MAYYTYV5.cjs → chunk-WRWX6WIK.cjs} +68 -34
- package/dist/{index-CUsvZndu.d.ts → index-BqPY04ZG.d.ts} +89 -16
- package/dist/{index-leMyBJze.d.cts → index-D7x3MkLK.d.cts} +89 -16
- package/dist/index.cjs +24 -22
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -4
- package/dist/operations/index.cjs +178 -105
- package/dist/operations/index.d.cts +22 -7
- package/dist/operations/index.d.ts +22 -7
- package/dist/operations/index.js +77 -4
- package/dist/pool.cjs +8 -8
- package/dist/pool.d.cts +1 -1
- package/dist/pool.d.ts +1 -1
- package/dist/pool.js +4 -4
- package/dist/resources/index.cjs +4 -4
- package/dist/resources/index.d.cts +1 -1
- package/dist/resources/index.d.ts +1 -1
- package/dist/resources/index.js +3 -3
- package/docs/API.md +78 -15
- package/examples/basic.ts +2 -2
- package/examples/mcp-server-http.ts +5 -4
- package/examples/mcp-server.ts +3 -3
- package/package.json +3 -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
|
|
400
|
-
|
|
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
|
|
@@ -993,8 +998,9 @@ export const NoopLogger: Logger = {};
|
|
|
993
998
|
envelope pass-through, per-envelope unwrap errors, error mapping per status (vendor error
|
|
994
999
|
body formatting), retry/backoff on 429 with `Retry-After`, `Itgenatr005` as retryable
|
|
995
1000
|
`RateLimitError`, `AbortSignal` timeout, concurrency guard.
|
|
996
|
-
- **Pagination (`pagination.test.ts`)**: multi-page cursor-follow walk (POST the
|
|
997
|
-
to the absolute `nextPageUrl`, rebased to the client base URL
|
|
1001
|
+
- **Pagination (`pagination.test.ts`)**: multi-page cursor-follow walk (POST the same
|
|
1002
|
+
`QueryModel` body to the absolute `nextPageUrl`, rebased to the client base URL;
|
|
1003
|
+
issue #118 pins the continuation's `IncludeFields`/`MaxRecords`), early stop on short
|
|
998
1004
|
page, **1000-page guard** (`PaginationLimitError`), `collectAll` equivalence.
|
|
999
1005
|
- **Query (`query.test.ts`)**: filter builder (13 operators, and/or wrapping, UDF flag),
|
|
1000
1006
|
cap enforcement (500 OR-conditions, 1 UDF/query), GET-length measurement.
|
package/MCP_TOOL_CATALOG.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generatedBy": "scripts/build-tool-catalog.mjs",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
4
|
-
"planHash": "
|
|
3
|
+
"generatedAt": "2026-10-19T05:26:26.501Z",
|
|
4
|
+
"planHash": "5176d37fc9bae34139c151ae0ea8336dab63a30382f04acbcaed0e24cdd71d5f",
|
|
5
5
|
"metaTools": [
|
|
6
6
|
{
|
|
7
7
|
"name": "autotask_catalog",
|
package/MCP_TOOL_MANIFEST.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Tool Manifest — node-autotask
|
|
2
2
|
|
|
3
|
-
<!-- GENERATED by scripts/project-mcp-tools.mjs at 2026-10-
|
|
3
|
+
<!-- GENERATED by scripts/project-mcp-tools.mjs at 2026-10-19T05:26:26.653Z — do not hand-edit. -->
|
|
4
4
|
|
|
5
5
|
Mechanical MCP projection of the capability registry (generator-design section 7, ARCHITECTURE section 19.5).
|
|
6
6
|
Tool names are the plan `mcpTool` columns (entity-first `autotask_<entity>_<verb>`); descriptions are the
|
|
@@ -8,7 +8,7 @@ registry `purpose` + a mechanical bounds/flags sentence; annotations derive from
|
|
|
8
8
|
Curation edits live ONLY in `MCP_TOOL_OVERRIDES.json` (records `{ tool, field, newValue, reason }`).
|
|
9
9
|
|
|
10
10
|
Registry: 1213 operations; projected tools: 850 (one per registry op with a non-null `mcpTool`);
|
|
11
|
-
not projected (catalog/describe material): 363. planHash: `
|
|
11
|
+
not projected (catalog/describe material): 363. planHash: `5176d37fc9bae341…`
|
|
12
12
|
|
|
13
13
|
## Always-on core tier (CORE_RULE — computed, never a hand list)
|
|
14
14
|
|
|
@@ -947,8 +947,8 @@ singleton, so no helper tier is expected there; G8, 2026-09-26.)
|
|
|
947
947
|
|
|
948
948
|
## Meta
|
|
949
949
|
|
|
950
|
-
- generatedAt: 2026-10-
|
|
951
|
-
- planHash:
|
|
950
|
+
- generatedAt: 2026-10-19T05:26:26.653Z
|
|
951
|
+
- planHash: 5176d37fc9bae34139c151ae0ea8336dab63a30382f04acbcaed0e24cdd71d5f
|
|
952
952
|
- registry records: 1213
|
|
953
953
|
- projected tools: 850
|
|
954
954
|
- core tier: 15
|
package/N8N_MCP_MANIFEST.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "node-autotask n8n consumer mcp projection v1",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-19T05:26:26.775Z",
|
|
4
4
|
"generator": "scripts/project-n8n-mcp.mjs",
|
|
5
5
|
"inputs": {
|
|
6
6
|
"capabilities": "capabilities.json (the capability registry — the single source of truth)",
|
|
@@ -3667,6 +3667,6 @@
|
|
|
3667
3667
|
"approvalGatedWrites": 2,
|
|
3668
3668
|
"destructiveExcluded": 3
|
|
3669
3669
|
},
|
|
3670
|
-
"capabilitiesHash": "
|
|
3670
|
+
"capabilitiesHash": "d30f65bc49ac2898667865b753c0f0cd3f0c951c337a1036b48b049e8c32c61a",
|
|
3671
3671
|
"curationHash": "e19117ce73e38d9aded3be7e7f077a4e185d2e10294622b76c17d67f63cf9e3b"
|
|
3672
3672
|
}
|
package/N8N_MCP_MANIFEST.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# N8N MCP Manifest — node-autotask (consumer projection)
|
|
2
2
|
|
|
3
|
-
<!-- GENERATED by scripts/project-n8n-mcp.mjs at 2026-10-
|
|
3
|
+
<!-- GENERATED by scripts/project-n8n-mcp.mjs at 2026-10-19T05:26:26.775Z — do not hand-edit. -->
|
|
4
4
|
|
|
5
5
|
The n8n CONSUMER projection of the capability registry: the canonical source for what the
|
|
6
6
|
n8n-side MCP tools must expose. The SDK is canonical — this is a projection of it, never a
|
|
@@ -282,6 +282,6 @@ only via a recorded change to `n8n-mcp.curation.json`.
|
|
|
282
282
|
|
|
283
283
|
## Meta
|
|
284
284
|
|
|
285
|
-
- generatedAt: 2026-10-
|
|
286
|
-
- capabilitiesHash:
|
|
285
|
+
- generatedAt: 2026-10-19T05:26:26.775Z
|
|
286
|
+
- capabilitiesHash: d30f65bc49ac2898667865b753c0f0cd3f0c951c337a1036b48b049e8c32c61a
|
|
287
287
|
- curationHash: e19117ce73e38d9aded3be7e7f077a4e185d2e10294622b76c17d67f63cf9e3b
|
package/README.md
CHANGED
|
@@ -147,6 +147,42 @@ length and a two-character prefix per value — never a full value. See
|
|
|
147
147
|
[`docs/LIVE-TESTING.md`](./docs/LIVE-TESTING.md) §0b.
|
|
148
148
|
|
|
149
149
|
|
|
150
|
+
### The full variable set
|
|
151
|
+
|
|
152
|
+
`.env.example` is the committed template; `.env*` is gitignored, so real values never enter git.
|
|
153
|
+
|
|
154
|
+
```sh
|
|
155
|
+
cp .env.example .env # then fill in the three credentials
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Optional settings are **commented out with a sample value** — uncomment a line to set it. For example
|
|
159
|
+
`AUTOTASK_PROFILE=agent` selects the conservative agent profile (page 25, 8,000/hr, 20 s timeout,
|
|
160
|
+
1 retry, 3 concurrent), and `AUTOTASK_MAX_RETRIES=1` is that profile's retry budget. Leave the five
|
|
161
|
+
server-layer overrides unset rather than blank: an empty value is *invalid* for them by design
|
|
162
|
+
(fail-closed), so a stray `AUTOTASK_MAX_RETRIES=` stops startup with an error naming the variable.
|
|
163
|
+
|
|
164
|
+
| variable | read by | meaning |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| `AUTOTASK_TRACKING_IDENTIFIER` | `bin/doctor.js`, examples, live scripts | API tracking identifier (aliases: `AUTOTASK_API_CODE`, `AUTOTASK_API_INTEGRATION_CODE`) |
|
|
167
|
+
| `AUTOTASK_USERNAME` | same | API user (alias: `AUTOTASK_USER`) |
|
|
168
|
+
| `AUTOTASK_SECRET` | same | secret — see the single-quote contract above |
|
|
169
|
+
| `AUTOTASK_ZONE` | doctor, examples, live scripts | **catalog name**, not a host (default `old-australian` = webservices6); `other` requires a base URL — the template lists all 23 |
|
|
170
|
+
| `AUTOTASK_BASE_URL` | doctor, examples, live scripts | explicit REST base; **wins** over the zone; include `/atservicesrest` |
|
|
171
|
+
| `AUTOTASK_IMPERSONATION_ID` | doctor, examples | optional `ImpersonationResourceId` header |
|
|
172
|
+
| `AUTOTASK_PROFILE` | reference MCP servers | `library` (default) / `agent` — the agent profile's numbers are compared in the template and in *Agent profile* above |
|
|
173
|
+
| `AUTOTASK_RATE_LIMIT_PER_HOUR` | reference MCP servers | hourly limiter: a positive integer, or `0` / `off` to disable |
|
|
174
|
+
| `AUTOTASK_MAX_CONCURRENT` | reference MCP servers | concurrency guard (vendor max 10) |
|
|
175
|
+
| `AUTOTASK_TIMEOUT_MS` | reference MCP servers | whole-call timeout |
|
|
176
|
+
| `AUTOTASK_MAX_RETRIES` | reference MCP servers | retry budget (`0` disables) |
|
|
177
|
+
| `AUTOTASK_UNTRUSTED_WRAP` | MCP servers | `on` (default) / `off` — the `<untrusted_content>` projection |
|
|
178
|
+
| `AUTOTASK_GATEWAY_MODE` | `examples/mcp-server-http.ts` | `on` for multi-tenant gateway mode (per-request credentials) |
|
|
179
|
+
| `PORT` | `examples/mcp-server-http.ts` | listen port (default 7437) |
|
|
180
|
+
| `AUTOTASK_ENV_FILE` | live scripts | alternate `.env` path (shell variables always win) |
|
|
181
|
+
|
|
182
|
+
The SDK itself never reads `process.env`: pass `apiIntegrationCode` / `userName` / `secret`
|
|
183
|
+
explicitly, or call `loadAutotaskCredentialsFromEnv()`.
|
|
184
|
+
|
|
185
|
+
|
|
150
186
|
## Agent profile (conservative limits for LLM-driven servers)
|
|
151
187
|
|
|
152
188
|
`profile: 'agent'` on the config switches the SDK to conservative limits for
|