Commit Graph

42 Commits

Author SHA1 Message Date
github-actions[bot] d65a4ce616 Version Packages (#168)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 15:11:26 -04:00
sylwang7 5827e02f6c v0.8.0 changeset (#167) 2026-06-23 13:11:21 -04:00
github-actions[bot] f70d1fc375 Version Packages (#160)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 12:37:31 -04:00
jlau-stripe c2fc0659ee v0.7.4 changeset (#159) 2026-06-15 12:00:14 -04:00
github-actions[bot] 67da9a4522 Version Packages (#152)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 14:51:20 -04:00
kreese-stripe f83d5cc332 v0.7.3 changeset (#151) 2026-06-10 14:42:14 -04:00
github-actions[bot] a34aaf9f1c Version Packages (#145)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-08 14:06:09 -04:00
kreese-stripe a30d70bef0 feat: changeset for v0.7.2 (#144)
* pnpm changeset for v0.7.2

* update changeset

* rm old changeset
2026-06-08 14:02:57 -04:00
github-actions[bot] 328b9d6568 Version Packages (#141)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-05 14:27:27 -04:00
kreese-stripe 13fda7edd1 feat: v0.7.1 changeset (#140) 2026-06-05 14:24:09 -04:00
kreese-stripe 61303becbe publishable update (#138) 2026-06-05 10:48:53 -04:00
kreese-stripe 079c41da00 pnpm changeset (#137) 2026-06-05 10:39:18 -04:00
Dan Hill baa5aabf1d Bump to 0.5.0 publish (#99) 2026-05-11 16:05:25 -04:00
Dan Hill 4121c7b5cd Bump to 0.5.0 (#97) 2026-05-11 15:37:51 -04:00
github-actions[bot] 5f0e2061e8 Version Packages (#69)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-05 07:38:18 -04:00
Gus 59a0fe1956 fix(sdk): restrict the auth config file to the owning user (mode 0o600) (#51)
The Storage class in `packages/sdk/src/utils/storage.ts` constructed a
`Conf` instance without passing `configFileMode`, so the on-disk file
inherited conf's default (0o666 masked by umask, typically 0o644 on
macOS and Linux).

The file holds the OAuth `access_token` and `refresh_token` from
`auth login`, plus — during a pending device-auth window — the
`device_code` and verification phrase written by the agent-mode
`auth login` flow at packages/cli/src/commands/auth/index.tsx:50.

With 0o644 perms, any other local user (shared dev workstations,
multi-user CI runners, lab machines) can:

- Read the access + refresh tokens and call the Link API as the
  victim — including `GET /spend_requests/{id}?include=card` to
  retrieve unmasked card details from approved spend requests.
- During an active login window, read the `device_code` and race the
  legitimate `auth status --interval` poll loop to
  `/device/token`. OAuth 2.0 device-flow polls return tokens to the
  first caller after user approval; the device_code is the polling
  client's secret, and it should never reach disk in a world-readable
  form.

This change passes `configFileMode: 0o600` to the Conf constructor.
Owner-only matches the convention used by gh, aws, mercury-cli, and
similar credential-bearing CLIs. conf writes via atomic rename, so
existing 0o644 files are remediated automatically on the next config
write (next setAuth, clearAuth, or setPendingDeviceAuth).

For testability, the `Storage` class is now exported and accepts an
optional `cwd` so unit tests can run against a temp directory instead
of the real platform user-config path.

Tests:
- `writes the config file with mode 0o600 (owner-only)` — fresh write.
- `rewrites with mode 0o600 when an existing file is 0o644` — covers
  the upgrade path from a pre-fix install.
- `also restricts pendingDeviceAuth, which is written to the same
  file` — covers the device_code race-window vector.

Skipped on Windows (NTFS uses ACLs; POSIX mode bits don't reflect
actual access).
2026-05-04 17:48:52 -04:00
github-actions[bot] 5c49714bce Version Packages (#66)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-02 13:07:29 -04:00
Dan Hill 90fc1838a1 Improve plugins (#64)
* feat: add claude marketplace.json and improve plugins

* changeset

* fix: formatting
2026-05-02 13:02:17 -04:00
github-actions[bot] afd09b4e70 Version Packages (#53)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 20:45:31 -04:00
Pejman Pour-Moezzi 21bc584091 fix: fail spend request polling timeout (#56) 2026-04-29 19:53:25 -04:00
Dan Hill 5e03819589 fix: bump npm (#52) 2026-04-29 14:16:42 -04:00
github-actions[bot] 28fac7f129 Version Packages (#50)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 14:13:44 -04:00
Dan Hill a618ce232d Fix oncomplete (#49)
* fix: correctly expose the SPT in the Ink output

* fix: correctly expose the SPT in the Ink output

* fix: stop spend-request commands from making duplicate API calls

The interactive (Ink) path for create, update, request-approval, and
retrieve each rendered a component that called the API, then made a
second identical API call in waitUntilExit().then() to obtain a value
to resolve the Promise. Thread the result back through onComplete so
index.tsx can resolve with the component's result directly.

Committed-By-Agent: claude

* fix: use ref to track latest request in retrieve polling effect

Using `request` state directly in the polling useEffect timeout path
triggered a biome exhaustive-deps lint error. Track the latest value
in a ref so the polling effect dependency array stays stable.

Committed-By-Agent: claude

* changeset

* fix: remove unused file
2026-04-29 14:03:00 -04:00
github-actions[bot] a4657c9e3f Version Packages (#47)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 11:57:53 -04:00
Steve Kaliski b061e10d27 checklist for onboard/demo flow (#45)
* add checklist style flow for onboard/demo

* add changeset

* fix fmt

* update galtee link

* continue to show credential in demo flow after it ends

* misc polish

* update text

* fmt
2026-04-29 11:54:24 -04:00
github-actions[bot] 0007424700 Version Packages (#41)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-28 19:19:47 -04:00
Dan Hill cd84685f22 Onboarding Experience (#15)
Add a new user onboarding command
2026-04-28 19:17:44 -04:00
Dan Hill facab3c453 Fix typo in readme and add MCP/CLI mapping to skill
* fix: typo in readme; add cli->mcp mapping to skill file

* changeset
2026-04-28 16:14:15 -04:00
github-actions[bot] 4959851797 Version Packages (#40)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-28 15:37:52 -04:00
Steve Kaliski de325f19b0 polling commands only emit when response has changed (#39) 2026-04-28 14:16:49 -04:00
github-actions[bot] 14ee57dc0d Version Packages (#36)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-28 00:14:04 -04:00
Steve Kaliski f8f51a610e update plugins (#29)
* add local Codex marketplace for Link plugin

* update claude plugin

* add changeset
2026-04-27 23:58:30 -04:00
github-actions[bot] 178c89e268 Version Packages (#27)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-27 17:54:35 -04:00
Steve Kaliski ef4e3620d4 fix notifier (#25)
* add notifier

* add changeset

* fix
2026-04-27 17:50:19 -04:00
github-actions[bot] ea13c03421 Version Packages (#22)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-27 13:40:01 -04:00
Steve Kaliski eb2115d658 migrate commander -> incur enabling mcp server (#18)
* migrate commander -> incur enabling mcp server

* save

* use incur skill handling and clarify to use mcp if running

* add changeset

* fix type error

* fix fmt

* fix tests

* fmt
2026-04-27 13:37:10 -04:00
Steve Kaliski ae735ec096 add changeset for update-notifier and bug fixes (#21)
* add changeset

* add mpp parsing
2026-04-27 13:19:21 -04:00
github-actions[bot] bb26c4e20a Version Packages (#10)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-24 10:41:45 -04:00
Steve Kaliski ee734e72da add changeset patch for skill (#9) 2026-04-24 10:39:42 -04:00
github-actions[bot] d70d8565a5 Version Packages (#6)
* Version Packages

* update biome

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Steve Kaliski <stevekaliski@stripe.com>
2026-04-23 22:09:22 -04:00
Steve Kaliski 546d6acf79 add changeset (#5) 2026-04-23 21:54:07 -04:00
qaisjp 3b372f2209 Initial commit
Co-authored-by: ben-davis <2607068+ben-davis@users.noreply.github.com>
Co-authored-by: bensnell-stripe <47830399+bensnell-stripe@users.noreply.github.com>
Co-authored-by: danhilltech <876990+danhilltech@users.noreply.github.com>
Co-authored-by: kreese-stripe <215516483+kreese-stripe@users.noreply.github.com>
Co-authored-by: qaisjp <923242+qaisjp@users.noreply.github.com>
Co-authored-by: raubrey-stripe <185865758+raubrey-stripe@users.noreply.github.com>
Co-authored-by: shirleyz-stripe <264516373+shirleyz-stripe@users.noreply.github.com>
Co-authored-by: sjkaliski <602845+sjkaliski@users.noreply.github.com>
2026-04-23 17:22:09 -04:00