node-autotask 0.44.0 → 0.45.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/CHANGELOG.md +28 -0
- package/MCP_TOOL_CATALOG.json +153 -1269
- package/MCP_TOOL_MANIFEST.md +28 -95
- package/MCP_TOOL_OVERRIDES.json +8 -62
- package/N8N_MCP_MANIFEST.json +118 -695
- package/N8N_MCP_MANIFEST.md +32 -52
- package/README.md +5 -10
- package/capabilities.json +23788 -31075
- package/dist/{base-CftidiyZ.d.cts → base-BVoYDlVA.d.cts} +2 -2
- package/dist/{base-CftidiyZ.d.ts → base-BVoYDlVA.d.ts} +2 -2
- package/dist/capabilities.cjs +2 -2
- package/dist/capabilities.js +1 -1
- package/dist/{chunk-N6IWPGHB.js → chunk-ASMCTZO2.js} +23787 -31074
- package/dist/{chunk-6WLGHKIU.cjs → chunk-DC3PY4EF.cjs} +1839 -1407
- package/dist/{chunk-BKTOMNT2.js → chunk-DXKXQHCX.js} +5 -5
- package/dist/{chunk-KWQSGWY5.cjs → chunk-JO6WI763.cjs} +143 -143
- package/dist/{chunk-LYI5FRPX.js → chunk-NSW7JPVS.js} +11544 -13365
- package/dist/{chunk-7MCKJTSA.js → chunk-O4PIPUS4.js} +1583 -1151
- package/dist/{chunk-PH3ESYAF.cjs → chunk-VXVYFJH3.cjs} +23787 -31074
- package/dist/{chunk-EMYDC5SG.cjs → chunk-YMBVKVK4.cjs} +6123 -7944
- package/dist/{index-YbEk0awP.d.cts → index-C5g1H_hF.d.ts} +1194 -1415
- package/dist/{index-D8FtzUGP.d.ts → index-Db0SNnQn.d.cts} +1194 -1415
- package/dist/{index-DgBA1JMH.d.cts → index-c549LvOb.d.cts} +188 -188
- package/dist/{index-DgBA1JMH.d.ts → index-c549LvOb.d.ts} +188 -188
- package/dist/index.cjs +22 -22
- package/dist/index.d.cts +15 -42
- package/dist/index.d.ts +15 -42
- package/dist/index.js +7 -7
- package/dist/operations/index.cjs +5 -2327
- package/dist/operations/index.d.cts +7 -287
- package/dist/operations/index.d.ts +7 -287
- package/dist/operations/index.js +29 -2351
- 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 +2 -2
- package/dist/resources/index.d.ts +2 -2
- package/dist/resources/index.js +7 -7
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/docs/API.md +201 -303
- package/docs/LIVE-TESTING.md +4 -6
- package/docs/N8N-ADAPTER.md +26 -26
- package/n8n-mcp.curation.json +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.45.0] - 2026-11-01
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **#313:** bounded special ops for the five MCP-server composites (the server-side building moves into the SDK; the server keeps the registry entry + its untrusted marking):
|
|
15
|
+
- `contacts.fullProfile(id, opts?)` — the contact (two-stage root: a stage-1 query resolves the company FK, then the parent-scoped root read; a contact with no company FK is its own root and the `company` part degrades to `NO_FK`), plus the `company` and `open_tickets` parts (open = status not in the tenant's live closed-status set, one `noteq` leaf per closed id, with the `closedStatus` disclosure).
|
|
16
|
+
- `service_calls.fullProfile(id, opts?)` — the service call plus the `tickets` and `tasks` parts and `resource_assignments` (joined through the tasks part's task ids, the `in` filter capped at 100; no task ids degrade the part to `NO_TASKS`).
|
|
17
|
+
- `contracts.fullProfile(id, opts?)` — the contract plus the `services` and `billing_rules` parts, the `charges` part (the FIXED recent-50 through the count-anchored `latest` — the vendor has no sort parameter) and the `units` part (the fixed 50-row cap; no opts knobs for either).
|
|
18
|
+
- `resources.workload(id, opts?)` — the resource plus the `open_tickets` part (the `tickets.forResource` rows with the exact open `totals` from a second `countOnly` read beside them; a failed count read keeps the rows and says `totalsAbsent`), `task_assignments`, `task_details` (joined through the assignments' task ids; `NO_ASSIGNMENTS` when there are none), `time_off_balances` and `time_off_requests` parts.
|
|
19
|
+
- `quotes.withItems(id, opts?)` — the quote plus the `items` part (the `quoteID`-filtered bounded `quote_items.query`).
|
|
20
|
+
Every part read goes through the same registry seam (`operations.invokeRead`) the MCP server used, so the served shape is preserved field-for-field: `{ root, parts: { <name>: { value, absent?, closedStatus? } } }` — the server keeps its per-part untrusted marking on top. Each part degrades independently to `{ value: null, absent: <the typed code> }`; a missing root fails the call with the typed NOT_FOUND.
|
|
21
|
+
|
|
22
|
+
### Breaking
|
|
23
|
+
|
|
24
|
+
- **#289:** delete the low-consumer operations `fetchMany`, `probeReachability`, `blindSurfaces` and the `recovery` op — none has a server consumer (verified against iit-mcp-autotask origin/main c33985a: at most comment-only mentions; `fetchByIds` and `relationshipMap` remain, and the plan-level `blindSurfaces` data the served artifacts stamp from is untouched). `fetchMany` / `probeReachability` / `blindSurfaces` / `recovery` imports from `node-autotask/operations` break at compile time; the three issue-#9 error codes (`DELETE_BOUNDARY`, `MARKER_UNSAFE_ID`, `RECOVERY_TRUNCATED`) stay in the write-outcome taxonomy with no current SDK thrower. The primitive is one `git revert` of this change if ever wanted back.
|
|
25
|
+
- **#291:** `operations.revenueRollup` `groupBy` no longer accepts `contractCategory`, `billingItemKind`, `resource` or `billingCode` — the dimensions are now `vertical`, `contractType`, `company`, `contract`, `month`, `lineOfBusiness` (the `contractCategories` filter option stays).
|
|
26
|
+
- **#291:** `contracts.profitability` `dateFrom`/`dateTo` are now an optional pair: both omitted → the window defaults to the last full calendar month (UTC) and the result's `period` gains `defaulted: true` plus a note (month label + UTC basis); exactly one supplied → a typed `CONFIG_ERROR` pre-request (a half window is never sent); both supplied → the existing validation.
|
|
27
|
+
- **#290:** the time-entry posted-state and date-window ops are consolidated into the single `time_entries.dateWorkedWindow(from, to, opts)` read. Removed: `time_entries.getPosted` / `time_entries.getUnposted` (the `state: 'posted' | 'unposted'` option replaces the state modes; the no-window forms are gone — read with no dateWorked filter through `time_entries.query`), `time_entries.postedWithin` (its boolean `posted` flag becomes `state`), and the eleven date-window ops plus `customRange` on `time_entries`, `billing_items` and `invoices` (the shared `dateWindow` machinery is deleted with them). The consolidated op keeps the inclusive window, the server-side `ticketID` / `resourceID` narrowings, the 500-row cap, cursor paging (`nextCursor` / `cursor`), the `countOnly` whole-window totals with the `maxVendorCalls` budget, and the posted/unposted split derived from `billing_items.timeEntryID`.
|
|
28
|
+
- **#292:** special-op simplification. Dropped the internal `http` argument from the special-op functions (the client method binds it; `BaseResource.http` is now a public getter) and removed the per-module barrel re-export hop (`src/resources/special/<module>.ts` — imports now go to the module files directly). Deleted the unused write ops: `time_entries.approve` (the BillingItemApprovalLevels composite — the REST-only approval path stays raw: `billing_item_approval_levels.create` + the documented follow-up update), `time_entries.createForResource` (the allocation-code-aware smart create — resolve the allocation code via `billing_codes` and use raw `time_entries.create`), `tickets.openWithNoteAndAssign` (the create+note+assign composition — compose `tickets.create` + `ticket_notes.create` + the update), and `resources.transferOwnership` (bulk ownership re-own — raw `companies.update` of `ownerResourceID`). Cut the resource-specific find-or-create helpers as well: every `createIfNotExists` special op, `companies.upsertByName` and `contacts.upsertByEmail` — natural-key dedup stays a search-then-create composition; the generic base-resource `createIfNotExists` primitive and `CreateIfNotExistsResult` remain.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **#291:** the financial-reporting operations' shared machinery (call-budget counting wrapper, id-chunk fetch with per-chunk fault isolation, integer-cent fold, label resolution) is extracted into one tested module; the covered suites pass unchanged (behaviour byte-identical).
|
|
33
|
+
|
|
34
|
+
### Removed
|
|
35
|
+
|
|
36
|
+
- **#291:** the dead live-probe scripts under `scripts/live-probes/financial-reporting/`.
|
|
37
|
+
|
|
10
38
|
## [0.44.0] - 2026-11-01
|
|
11
39
|
|
|
12
40
|
The capability plan changed (staff resolution and read-contract updates), so this release needs a minor bump.
|