Skip to content

Releases: withoneai/cli

v1.42.0

22 Apr 17:02
582cce1

Choose a tag to compare

New one relay platforms command — discover which platforms support webhook relay and how many event types each exposes, without having to guess-and-check with relay event-types <platform>.

$ one relay platforms
  Platform         Event types
  ───────────────  ───────────
  airtable         3
  attio            27
  stripe           224
  ...

$ one --agent relay platforms
{"platforms":[{"platform":"airtable","eventTypeCount":3}, ...]}

Also fixes a bug where sync always hit prod because OneApi was constructed without apiBase. #124

v1.41.0

21 Apr 01:18
da14a0e

Choose a tag to compare

Late-bound connection refs in flow action steps. Re-auth no longer breaks flows.

```json
"connection": { "platform": "gmail" } // single account
"connection": { "platform": "gmail", "tag": "work@example.com" } // multi-account
```

Resolution runs at flow-execute time. The connection list is fetched once per flow run and cached on the flow context — a many-step flow does ONE `listConnections` round-trip regardless of step count. Selectors work inside the ref's `tag` field for multi-tenant flows.

Backwards compatible: literal `connectionKey` still works.

Companion to v1.40.0 (sync). #121

v1.40.0

21 Apr 00:56
619eb64

Choose a tag to compare

Late-bound connection refs in sync profiles. Re-auth no longer breaks profiles.

```json
"connection": { "platform": "gmail" } // single account
"connection": { "platform": "gmail", "tag": "work@example.com" } // multi-account
```

Resolution runs at sync test/run time. After `one add gmail` (re-auth), the next sync picks up the fresh key automatically — no manual edits across profiles.

Backwards compatible: literal `connectionKey` still works. Built-in profiles migrated.

Closes #114. Partial fix for #113 (closed). Flow engine support to follow.

#120

v1.39.1

21 Apr 00:19
3891b93

Choose a tag to compare

Hard-block custom actions in sync test (and sync init auto-validation).

Follow-up to #118: the previous fix added the guard in sync run and enrich, but sync test was missing it — so a profile pointing at a custom action would pass test and only fail later at run time. The check now lives in testSyncProfile so every entry point rejects custom actions consistently.

#119

v1.39.0

20 Apr 23:46
3bc1935

Choose a tag to compare

fix: hard-block custom actions in sync

Sync refuses profiles referencing custom/composer actions (tag custom). Both the list action and any enrich action must be passthrough — custom actions run on a small shared fleet that collapses under sync-scale load and often expect filters in the request body that sync doesn't send.

Changes

  • discoverModels filters customs at resolution and drops models with no passthrough variant — sync models <platform> only returns syncable models
  • sync run aborts with a clear error pointing at one actions search and the flow alternative when the list or enrich action is tagged custom
  • Docs updated: guide, skill, README

Why

The symptoms were empty results (withoneai/knowledge#65) and a feature request for body-param support (#116). Neither is the right fix — sync should never use custom actions. Custom actions are for one-off agent use only.

Closes #116, closes withoneai/knowledge#65. Shipped in #118.

v1.38.0

19 Apr 23:12
68b9a98

Choose a tag to compare

What's new

  • Root-array response support for sync. Profiles can now set resultsPath to "" / "$" / "." when the API returns a bare array at the root (e.g. Hacker News /v0/topstories.json[9129911, 9129199, ...]).
  • Primitive-array auto-wrapping. Arrays of numbers/strings/bools are wrapped as { [idField]: String(value) } so they flow through the existing schema-inference and upsert pipeline with no downstream special-casing.
  • Built-in profile: hacker-news/topStoriesone sync init hacker-news topStories now works out of the box.
  • Clearer extraction errors. When resultsPath doesn't resolve to an array, the error now names the profile (platform/model), the path, and the actual top-level type of the response.

Profile validation no longer rejects an empty resultsPath (only undefined). Existing object-rooted profiles (Attio, Gmail, Fathom, Calendar, Notion, Stripe) are unchanged.

PR: #117

v1.37.3

19 Apr 22:33
ef557cc

Choose a tag to compare

Fix: eliminate cross-platform sync state race. Concurrent syncs (cron firing all platforms at once) were racing on the shared .one/sync/sync_state.json — failed renames wedged models in status=syncing, and the read-modify-write could silently lose an update. State is now stored per-platform/per-model at .one/sync/state/<platform>/<model>.json so each writer owns its own file. Legacy file is migrated on first read.

Closes #111 (PR #112)

v1.37.2

19 Apr 05:51
e19ac10

Choose a tag to compare

Auto-recover stale sync state after a crashed sync (laptop sleep, OOM, SIGKILL, terminal close). Trust the filesystem lock as the single source of truth on concurrency; install SIGINT/SIGTERM handlers so cleanly-signaled terminations flip state to failed and release the lock before exit.

#110

v1.37.1

18 Apr 01:52
c5df88a

Choose a tag to compare

Fix: profile-level hooks (transform, exclude, identityKey, onUpdate/onChange) now run on rows produced by Phase 2 enrichment. Previously they were silently skipped, so transforms that extracted columns from enriched fields stayed empty and change hooks never fired for detail-fetched rows.

See #109 for details.

v1.37.0

16 Apr 23:58
452fe60

Choose a tag to compare

  • Add --metadata flag to one relay create for platforms that need extra identifiers to register webhooks (GitHub: GITHUB_OWNER/GITHUB_REPOSITORY, Typeform: TYPEFORM_FORM_ID)
  • Surface the API's warning field in human mode on relay create
  • Document the --webhook-secret foot-gun on relay activate (passing it when the endpoint was created with --create-webhook silently drops every delivery)