@koda-sl/baker-cli 0.169.2 → 0.173.0-dev.6ecd65d29
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/README.md +18 -4
- package/dist/{chunk-CG6OTNUU.js → chunk-K424D3CY.js} +4 -4
- package/dist/chunk-K424D3CY.js.map +1 -0
- package/dist/cli.js +2147 -1746
- package/dist/cli.js.map +1 -1
- package/dist/engine/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-CG6OTNUU.js.map +0 -1
package/README.md
CHANGED
|
@@ -1047,7 +1047,7 @@ Each finding: `{id, area, check, status, severity, evidence, fix: {explanation,
|
|
|
1047
1047
|
|
|
1048
1048
|
- OAuth tokens auto-refresh server-side. On 401, reconnect LinkedIn from dashboard → integrations.
|
|
1049
1049
|
- Account scoping: backend rejects calls against an account not in the picker selection.
|
|
1050
|
-
- Pinned API version: `Linkedin-Version:
|
|
1050
|
+
- Pinned API version: `Linkedin-Version: 202606` (declared in `oauth/constants.ts`). Bump as a coordinated change — LinkedIn deprecates monthly with a ~12-month support window. The floor is `TRACKING_PARAM_DYNAMIC_MIN_API_VERSION` (`CREATIVE_NAME` needs 202606), asserted in `ads/linkedin/utils.test.ts`.
|
|
1051
1051
|
- Cache TTLs: accounts/account-detail 1h, listings 30m, analytics 15m–6h (depends on date range), facets 7d, urn-resolve 1h, bid-pricing/forecast 6h, audience-size 1h.
|
|
1052
1052
|
- `--skip-cache` (server-side) and `--no-cache` (client-side, where supported) on any command.
|
|
1053
1053
|
|
|
@@ -2666,7 +2666,7 @@ Permissions enforced server-side:
|
|
|
2666
2666
|
|
|
2667
2667
|
### `baker mcp connected | list | add | remove`
|
|
2668
2668
|
|
|
2669
|
-
See
|
|
2669
|
+
See everything a chat can reach — managed integrations, custom servers, and connected platforms — and manage **custom MCP servers** by pointing the agent at any remote HTTPS MCP endpoint. Registered tools appear as `mcp__<name>__*` on the next chat message.
|
|
2670
2670
|
|
|
2671
2671
|
```bash
|
|
2672
2672
|
baker mcp connected
|
|
@@ -2677,6 +2677,7 @@ baker mcp add --name mine --url https://my.dev/mcp --scope user
|
|
|
2677
2677
|
baker mcp remove --name weather
|
|
2678
2678
|
```
|
|
2679
2679
|
|
|
2680
|
+
- `connected` returns three lists. `managed` and `custom` are MCP tools the agent calls directly; `platforms` are the accounts the company signed in to (HubSpot, Google Ads, GA4, Search Console, Tag Manager, LinkedIn Ads), each with its login and the resources it may read. A platform has **no** `mcp__*` tools — it is read through its own command family — so it is listed here to keep the agent from concluding a working connection is missing.
|
|
2680
2681
|
- `--url` must be the **full MCP endpoint** (commonly ending in `/mcp`), HTTPS and public; loopback / private / cloud-metadata hosts are rejected. A bare domain frequently accepts the OAuth sign-in and then serves no tools, so every address is handshake-checked after it changes: `connected` and `list` report `usable: false` plus a `problem` (and a `suggestedAddress` when the server advertises a better endpoint) for a server that isn't serving tools, or `lastCheck: failed` when the last check only hit an outage — that one may work anyway, and a later turn re-checks it automatically. Repointing a server at a different host clears its saved sign-in: a token belongs to the host that issued it, so the server has to be connected again.
|
|
2681
2682
|
- Scope is two independent choices — audience (just you / everyone) × level (this company / whole org):
|
|
2682
2683
|
- `--scope company` (default) — everyone in this company.
|
|
@@ -2723,9 +2724,9 @@ baker history list --category ads --full # ad writes with raw metadata
|
|
|
2723
2724
|
|
|
2724
2725
|
---
|
|
2725
2726
|
|
|
2726
|
-
### `baker hubspot forms list | view` · `baker hubspot meetings list | view`
|
|
2727
|
+
### `baker hubspot forms list | view | submissions` · `baker hubspot workflows list` · `baker hubspot pipelines list` · `baker hubspot contacts summary | lookup` · `baker hubspot meetings list | view`
|
|
2727
2728
|
|
|
2728
|
-
Read-only view of the company's **connected HubSpot account** — the forms and meeting links (calendars) that live there,
|
|
2729
|
+
Read-only view of the company's **connected HubSpot account** — the forms and meeting links (calendars) that live there, the leads those forms received, and the workflows, deal pipelines, and contact records a lead runs through afterwards. Fetched from HubSpot live on every call; nothing is cached and nothing is ever written back.
|
|
2729
2730
|
|
|
2730
2731
|
The reason this exists: a form's **post-submit action** (inline thank-you vs redirect to a URL), its embed version, its consent mode, and a calendar's booking fields are *not* persisted onto the flow node when a form is picked. They cannot be read from `_data.json` or `baker flows show` — only from here.
|
|
2731
2732
|
|
|
@@ -2736,6 +2737,12 @@ baker hubspot forms list --embed-type legacy # only legacy-embed forms
|
|
|
2736
2737
|
baker hubspot forms view <formId> # fields, consent mode, full configuration
|
|
2737
2738
|
baker hubspot forms view <formId> --full # + the raw HubSpot payload
|
|
2738
2739
|
baker hubspot forms view <formId> --as-node # the form.external blob for a flow node
|
|
2740
|
+
baker hubspot forms submissions <formId> # how many leads it received, and when
|
|
2741
|
+
baker hubspot forms submissions <formId> --days 90 --full
|
|
2742
|
+
baker hubspot workflows list --enabled-only # what runs after a lead is captured
|
|
2743
|
+
baker hubspot pipelines list # where a lead lands, and the stages after it
|
|
2744
|
+
baker hubspot contacts summary --days 30 # are recent leads being worked? (counts only)
|
|
2745
|
+
baker hubspot contacts lookup lead@example.com # was this one lead picked up?
|
|
2739
2746
|
baker hubspot meetings list # every calendar + whether booking redirects
|
|
2740
2747
|
baker hubspot meetings view <slug> # booking-form fields for one calendar
|
|
2741
2748
|
baker hubspot meetings view <slug> --as-node # the form.external blob for a flow node
|
|
@@ -2743,9 +2750,16 @@ baker hubspot meetings view <slug> --as-node # the form.external blob for a f
|
|
|
2743
2750
|
|
|
2744
2751
|
**`forms list` flags:** `--search <text>` (name substring), `--redirecting-only`, `--embed-type legacy|v4|unknown`. Rows carry only what it takes to choose; `portalId` is returned once on `data`, not per row.
|
|
2745
2752
|
**`forms view`:** positional `<formId>`; `--full` adds the untouched HubSpot payload; `--as-node` returns the resource blob instead of the readable view.
|
|
2753
|
+
**`forms submissions`:** positional `<formId>`; `--days <1-365>` (default 30) sets the window; `--full` adds each submission's field values. The default response is counts and dates only — `total`, `inWindow`, `lastSubmittedAt`, and per-day counts — because submissions carry the lead's own contact details. `truncated: true` means the page budget ran out before the window was covered, so `inWindow` is a floor rather than an exact count.
|
|
2754
|
+
**`workflows list` flags:** `--search <text>`, `--enabled-only`. Disabled workflows are listed too — a form wired to one that is off looks connected and does nothing.
|
|
2755
|
+
**`pipelines list`:** no flags; stages come back in the order they run in HubSpot.
|
|
2756
|
+
**`contacts summary` flags:** `--days <1-365>` (default 30) over contact creation date. Returns counts only — total contacts, how many have an owner, and the lifecycle-stage split — never a name or an email. `truncated: true` means the page budget ran out, so the counts are floors.
|
|
2757
|
+
**`contacts lookup`:** positional `<email>`; returns that contact's lifecycle stage, owner, the account (company) it was filed under, and associated deals with their stage. `companyReadable: false` means the connection does not cover accounts, so a null `company` is unknown rather than absent. `found: false` means no contact with that email — the lead never reached the CRM, which is a finding rather than an error.
|
|
2746
2758
|
**`meetings list` flags:** `--search <text>`, `--redirecting-only`.
|
|
2747
2759
|
**`meetings view`:** positional `<slug>` — the only reliable source for a calendar's booking fields (HubSpot omits `customParams` from the list endpoint, so `fieldCount: null` there means unknown, not zero); `--as-node` as above.
|
|
2748
2760
|
|
|
2761
|
+
**`HUBSPOT_RECONNECT_REQUIRED`** is returned when HubSpot is connected but that account never granted access to what the command needs — a HubSpot grant is fixed at the moment the user approves it, so an account connected before a capability shipped cannot serve it. It is not the same as `NO_HUBSPOT_CONNECTION`: the connection works, and only the user can widen it by reconnecting from Brain → Integrations → Tools. The error carries a `fix` describing exactly that.
|
|
2762
|
+
|
|
2749
2763
|
**`--as-node`** returns exactly the object a flow node's `form.external` expects, so an agent can wire a HubSpot step by editing the flow's `_data.json` instead of interrupting the user with the `request_flow_input` approval form. It includes two fields the dashboard picker omits and the renderer needs: `configuration.postSubmitAction` (drives post-submit redirect suppression) and `region` (selects the v4 embed host — without it a v4 form on a eu1/ap1 portal loads the wrong script host).
|
|
2750
2764
|
|
|
2751
2765
|
**Response:**
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
__toESM
|
|
8
8
|
} from "./chunk-RK67WL4O.js";
|
|
9
9
|
|
|
10
|
-
//
|
|
10
|
+
// ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/index.js
|
|
11
11
|
var require_safe_stable_stringify = __commonJS({
|
|
12
|
-
"
|
|
12
|
+
"../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/index.js"(exports, module) {
|
|
13
13
|
"use strict";
|
|
14
14
|
var { hasOwnProperty } = Object.prototype;
|
|
15
15
|
var stringify = configure2();
|
|
@@ -1075,7 +1075,7 @@ function resolveAdaptFormats(params) {
|
|
|
1075
1075
|
return params.formats ?? [];
|
|
1076
1076
|
}
|
|
1077
1077
|
|
|
1078
|
-
//
|
|
1078
|
+
// ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/810146e81bae4e3a061fe487864f2fde80c4b03b886877dc0f1fffbc6480b67e/node_modules/safe-stable-stringify/esm/wrapper.js
|
|
1079
1079
|
var import__ = __toESM(require_safe_stable_stringify(), 1);
|
|
1080
1080
|
var configure = import__.default.configure;
|
|
1081
1081
|
var wrapper_default = import__.default;
|
|
@@ -8028,4 +8028,4 @@ export {
|
|
|
8028
8028
|
defaultRegistry,
|
|
8029
8029
|
createEngineFromEnv
|
|
8030
8030
|
};
|
|
8031
|
-
//# sourceMappingURL=chunk-
|
|
8031
|
+
//# sourceMappingURL=chunk-K424D3CY.js.map
|