8000 Tags · nalyk/gacli · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

v2.0.2

Toggle v2.0.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #32 from nalyk/fix/deps-lockfile-security

fix(deps): refresh lockfile to patched protobufjs, grpc-js and hono

v2.0.1

Toggle v2.0.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #31 from nalyk/fix/mcp-update-destructive-hint

fix(mcp): mark update tools destructive; updates and deletes idempotent

v2.0.0

Toggle v2.0.0's commit message
Merge branch 'main' into next

# Conflicts:
#	.github/workflows/release.yml

v2.0.0-next.1

Toggle v2.0.0-next.1's commit message
chore(release): 2.0.0-next.1 [skip ci]

## [2.0.0-next.1](v1.1.0...v2.0.0-next.1) (2026-10-06)

### ⚠ BREAKING CHANGES

* **mcp:** MCP tool names are now ga_<operation id> (e.g.
ga_report_run); create/update tools need --allow-write and delete/archive
tools need --allow-delete plus confirm: true.
* admin google-ads-links update requires
--ads-personalization-enabled true|false; enum flags are validated
(custom-dimensions/metrics scope, measurement unit, key-event counting
method, audience clause type, datastream type); numeric flags
(--default-value, --membership-duration-days, offsets, limits) must be
numbers.
* delete and archive commands require --yes when not
interactive; JSON output of resource commands is the typed API object.
* **skills:** JSON output of resource operations (metadata get, admin
*) uses camelCase API fields with typed values instead of table headers;
metadata get --type only accepts dims|metrics|all; property IDs must be
numeric; Node >=22.12 is required.
* **ops:** admin custom-dimensions archive is gated like a delete:
it needs --yes (or an interactive confirmation).
* **output:** without -f, output is JSON (compact) when stdout is not a TTY or an agent is detected.
* **errors:** exit codes are now 0 ok, 1 api/internal, 2 usage, 3 auth,
4 confirmation required, 5 not found, 6 quota.

### Features

* **api:** raw gacli api <service> <Method> escape hatch ([9511bf3](9511bf3))
* **auth:** GACLI_ACCESS_TOKEN, ADC fallback, --scopes, auth token, json status ([a1b9db1](a1b9db1))
* **core:** mount operations onto commander with dry-run and delete confirmation ([c27dca3](c27dca3))
* **core:** operation definition and result rendering with --fields projection ([e401c37](e401c37))
* **errors:** typed GacliError with stable exit codes and JSON error output ([9e2f560](9e2f560))
* **mcp:** generate MCP tools from the operation catalogue ([bec5ce5](bec5ce5))
* **mcp:** local Streamable HTTP transport (127.0.0.1, host/origin validated) ([4e4656a](4e4656a))
* **mcp:** MCP SDK v2 server generated from the catalogue, write tools opt-in ([571deab](571deab))
* **ops:** account summaries, annotations, change history, access report, measurement secrets, data retention ([e36df37](e36df37))
* **ops:** admin op helpers and [@file-capable](https://github.com/file-capable) JSON arguments ([45f329c](45f329c))
* **ops:** metric/dimension lists accept comma-separated values ([bf21e2f](bf21e2f))
* **ops:** migrate access-bindings and firebase/google-ads/bigquery links ([ba9196a](ba9196a))
* **ops:** migrate admin accounts, properties and datastreams ([2890eb8](2890eb8))
* **ops:** migrate admin custom-metrics, key-events and audiences ([a7caf4c](a7caf4c))
* **ops:** migrate audience export and recurring ([27004fe](27004fe))
* **ops:** migrate report advanced and metadata check-compatibility ([c49d7cf](c49d7cf))
* **ops:** migrate report run, metadata get and admin custom-dimensions to the operation catalogue ([222dbd0](222dbd0))
* **ops:** property quota, report tasks, chat, conversion spec ([b9c7100](b9c7100))
* **ops:** register phase 4 operations; reject leaf flags that a global option would swallow ([d320f67](d320f67))
* **output:** json by default when piped or driven by an agent; GACLI_FORMAT env ([2b76d49](2b76d49))
* **schema:** gacli schema command and agent-mode help ([ce9970d](ce9970d))

### Bug Fixes

* **auth:** load credentials before building SDK clients ([23f5b1c](23f5b1c))
* **build:** route clustered global flags; SEA bundles its CJS deps; SEA runs for every release ([c2b981f](c2b981f))
* **cli:** --no-color flag now actually disables colour ([6b968c4](6b968c4))
* **cli:** reject unknown --format values; config format can be ndjson and now applies ([25d1f51](25d1f51))
* **config:** reject invalid format in config set; warn and fall back on a stale config value ([29d6b9e](29d6b9e))
* **errors:** classify gRPC errors by code, not unanchored regex; never retry daily quota ([29c18c3](29c18c3))
* gacli api safety and correctness; precise auth hints; positional chat; secrets out of read-only MCP ([505bee0](505bee0))
* **mcp:** no file access from tool arguments, explicit property for deletes, schema caching ([19fb333](19fb333))
* **mcp:** unhandled-rejection backstop; docs: MCP safety model, HTTP listener, auth caching ([adcc97d](adcc97d))
* **ops:** adapt report run --conversion-spec to jsonArg(schema) signature ([191117d](191117d))
* **ops:** funnel step durations, realtime 360 ranges, account prefix in properties list ([3422f08](3422f08))
* **output:** batch reports emit one valid json/ndjson document and one -o file; auth URL to stderr ([5d7f79d](5d7f79d))
* **output:** honour --no-color/NO_COLOR in tables and charts ([c1655d9](c1655d9))
* readable JSON-flag errors, pivot coercion, timestamps and wrappers in tables ([cef6838](cef6838))
* **schema:** describe the -f json envelope, not the internal result shape ([4933cb9](4933cb9))
* **security:** atomic 0600 writes for config/tokens, 0700 config dir, warn on corrupt files ([72e921e](72e921e))
* **startup:** reach enableCompileCache via namespace import so Node 22.0 still starts ([4ab7a6e](4ab7a6e))

### Performance

* **startup:** build-time version hook; load ora and cli-table3 on demand ([15f2bed](15f2bed))
* **startup:** lazy top-level commands; google-auth-library and zod off the startup path ([9be99fa](9be99fa))
* **startup:** lazy-load GA and MCP SDKs, enable compile cache; fix MCP server version drift ([a3c8fcf](a3c8fcf))

### Refactoring

* **core:** transport-neutral operation invocation and JSON envelope ([796f034](796f034))
* every GA command is an operation; remove legacy command and admin service code ([e7bd472](e7bd472))

### Documentation

* 2.0 migration guide, README, contract and skill packages ([9568c0f](9568c0f))
* 2.0-accurate skills, help, README and migration notes ([f7f99f1](f7f99f1))
* build and distribution for 2.0 (bundle, startup budget, next channel, experimental SEA) ([1b404cf](1b404cf))
* correct auth precedence (env var beats config credentials) ([7dada23](7dada23))
* gacli 2.0 modernization spec and phase 0 plan ([2130da2](2130da2))
* generate the operation reference, skills catalogue and llms.txt from the catalogue ([734b205](734b205))
* MCP v2 server (ga_* tools, allow flags, local HTTP) ([2440a78](2440a78))
* phase 1 contract (operations, exit codes, auto format, schema) ([e8268a7](e8268a7))
* phase 1 plan ([a6f61d7](a6f61d7))
* phase 2 layout; --yes on destructive examples ([de4fa51](de4fa51))
* phase 2 plan ([90a29aa](90a29aa))
* phase 3 plan ([7bb376b](7bb376b))
* phase 4 capabilities (auth for agents, quota, tasks, chat, admin additions, gacli api) ([5980d26](5980d26))
* phase 4 plan ([40da2ac](40da2ac))
* phase 5 plan ([85cc348](85cc348))
* phase 6 plan ([a40b5e7](a40b5e7))
* record remaining 2.0 behaviour changes from the migration ([bb944e2](bb944e2))
* refresh contract and memories for phase 0 ([422f9aa](422f9aa))
* **skills:** 2.0 exit codes, confirmation gate and JSON shapes for agents ([8dc1757](8dc1757))

v1.1.1

Toggle v1.1.1's commit message
ci(release): tag-only releases on protected main

main's branch protection rejects the release bot's commit push, so on main
semantic-release now skips the changelog/git plugins: it tags, publishes to
npm and creates the GitHub release without committing back. Pre-release
branches keep the release commit. The post-publish smoke test detects a
release by the v<version> tag on HEAD and waits for npm propagation.

v1.1.0

Toggle v1.1.0's commit message
v1.1.0 — gacli skills command + 4 native AI-CLI skill packages

v1.0.2-rc.0

Toggle v1.0.2-rc.0's commit message
chore(release): 1.0.2-rc.0 — OIDC E2E verification

v1.0.1

Toggle v1.0.1's commit message
gacli 1.0.1 — first npm publish (@nalyk/gacli)

Same code as v1.0.0 plus the npm publish wiring. This is the first version
shipped to npm under the @nalyk/gacli scope (the unscoped `gacli` name is
held by an unrelated deprecated package on the registry).

Install:
  npm install -g @nalyk/gacli

Published with npm provenance attestation. Verify with:
  npm audit signatures

v1.0.0

Toggle v1.0.0's commit message
gacli 1.0.0

Initial release.

- Full GA4 Data API surface: report run/batch/pivot/batch-pivot/realtime/funnel/cohort.
- Full GA4 Admin API surface: properties, datastreams, custom dimensions/metrics,
  key events, audiences, access bindings, Firebase/Google Ads/BigQuery links.
- Audience export create/get/list/query (with --watch for LROs) and recurring
  audience list create/get/list.
- Auth: OAuth 2.0 (interactive) and service account, with priority chain
  oauth-tokens > config.credentials > GOOGLE_APPLICATION_CREDENTIALS.
- Output: table | json | ndjson | csv | chart, with --output <file> support.
- Filters: shorthand (==, !=, =~, !~, >, >=, <, <=) plus JSON.
- Retry-with-backoff on gRPC quota (8) and unavailable (14); other codes never retry.
- gacli mcp serve — stdio MCP server exposing four read-only tools to any MCP
  client (Claude Desktop, Cursor, Cline, Zed).
- gacli explore — interactive REPL to browse the metric/dimension catalog.
- ESM-only TypeScript 6 on Node >= 22, type-safe at the SDK boundary.
- 70 tests, CI matrix on Node 22 and 24, CodeQL weekly.
0