Commit Graph

25 Commits

Author SHA1 Message Date
Steve Kaliski a29ae922ec Document the credential-only SDK (#262)
Committed-By-Agent: codex

Co-authored-by: codex <noreply@openai.com>
2026-08-25 11:23:07 -04:00
jlau-stripe ea1ed1d59b Add the ability to set extended spend request expiration (#255)
* Add --expires-at support to spend-request create

Mirrors the mint PR (stripe-internal/mint#2484603) that lets allow-listed
OAuth clients request a spend request expiration up to 7 days out instead
of the default 12 hours, for extended/repeat-use agent scenarios.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

* Hide --expires-at from docs and CLI schema output

Most OAuth clients aren't allow-listed for the server-side flag; leaving
it documented in SKILL.md/README.md/schema descriptions would prompt
general agents to try it and hit a 400. The flag stays functional
(same as the existing `approve` field) but drops its description so it
no longer shows up meaningfully in --schema/--llms-full.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

* Note the unit for --expires-at in its schema description

Bare field with no description gave zero signal, but agents seeing an
undocumented integer field could just as easily guess wrong (e.g.
milliseconds). Clarifying the unit alone doesn't explain the gating or
bounds, so it stays unlikely to be tried speculatively.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

* Fix biome formatting on expiresAt schema field

CI was failing pnpm biome check on the line-length wrap for the
one-line describe() call added in 1b6021f.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 10:17:21 -04:00
sylwang-stripe 9dc8c650e8 Handle spend request requires_action state across create/retrieve/approval flows (#248) 2026-08-13 14:16:21 -04:00
kreese-stripe e9a8f69b74 security: Sanitize output of decodeStripeChallenge call (#244)
* security improvements for mpp commands

* rm comment

* Add changeset
2026-08-12 08:39:23 -04:00
nvp-stripe 9103637d63 Bind Link Pay Tokens to the checkout merchant (#243)
* lpt merchant binding

* readme updates

* approve link_pay_token
2026-08-11 15:22:10 -04:00
dknudsen-stripe b3b37731ee feat: add auth upgrade command to widen access to a superset (#229)
Committed-By-Agent: claude
2026-08-06 12:39:11 -07:00
kreese-stripe 1c2fd6e603 feat: Support metadata in spend-request create command (#219)
* Support metadata in spend-request create command

* Changeset
2026-07-27 16:44:41 -04:00
dknudsen-stripe b87f7d5a9d feat: persist and display oauth scope + auth details (#217)
Committed-By-Agent: claude
2026-07-24 13:43:59 -07:00
Ryan Aubrey eaf0b32269 Improve mpp pay command (#202)
* Add MPP inspect command

* feat: rework mpp pay to handle full end-to-end 402 flow

mpp pay now probes the URL for a 402 challenge, parses the
WWW-Authenticate header to extract network_id and amount, creates a
spend request, yields the approval URL for the agent to present, and
completes payment with the SPT after approval.

- Remove mpp inspect (subsumed into pay flow)
- Add --context, --amount, --payment-method-id, --test flags
- Make --spend-request-id optional (backward compat)
- Agent mode yields approval URL immediately with _next hints
- Interactive mode handles full flow inline with polling
- Update SKILL.md and CLAUDE.md with new flow docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude

* fix: update mpp pay tests to handle generator array output

The mpp pay command now uses an async generator (`async *run`) which
wraps yielded values in an array in JSON output mode. Update three
tests to extract [0] from the output array.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude

* refactor: remove auto-generated context and step translation layer in mpp pay

Context is now required (min 100 chars) for the full MPP flow — agents must
provide a meaningful description. Also refactors onStep to emit typed Step
values directly, removing the string-to-enum mapping in the component.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude

* revert version bump in SKILL.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude

* fix: remove extra blank line to pass biome format check

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-07-20 16:49:09 -04:00
kreese-stripe 4b5f5be4b0 Harden the security of the serve command (#205)
* Harden the security of the serve command

* fmt

* fix version
2026-07-20 16:00:05 -04:00
jlau-stripe ced5e47490 introduce approval_details to spend request creation (#198)
* introduce approval_details to spend request creation

* fix: biome formatting

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Committed-By-Agent: claude

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 14:36:45 -04:00
kreese-stripe a87ff0cbe4 feat: update SR max amount (#147)
* update SR max amount

* fmt

* trigger ci

* trigger ci
2026-06-10 12:31:40 -04:00
Dan Hill fe45662873 HTTP mcp (#121)
* feat: add serve command to expose MCP endpoint over HTTP

Committed-By-Agent: claude

* fix: cleanup and readme

* Potential fix for pull request finding 'CodeQL / Information exposure through a stack trace'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-28 15:45:53 -04:00
Dan Hill 0783323004 WIP: auth from env (#107)
* feat: add noRefresh option to createAccessTokenProvider

Committed-By-Agent: claude

* feat: add env-based token provider to ResourceFactory

Committed-By-Agent: claude

* feat: read LINK_ACCESS_TOKEN, LINK_REFRESH_TOKEN, LINK_NO_REFRESH from env

Committed-By-Agent: claude

* docs: add LINK_ACCESS_TOKEN, LINK_REFRESH_TOKEN, LINK_NO_REFRESH to env vars docs

Committed-By-Agent: claude

* fix: auth status shows LINK_ACCESS_TOKEN state instead of stored credentials

Committed-By-Agent: claude

* refactor: extract resolveAuthInfo helper, simplify auth status component

Committed-By-Agent: claude

* fix: formatting
2026-05-27 10:04:43 -04:00
kreese-stripe 27b3de936a feat: support polling straight from auth login (#78)
* support polling straight from auth login

* improvements

* sanitize output; make the polling into a shared helper and share across the auth login polling and the auth status polling
2026-05-21 13:24:55 -04:00
bendavis-stripe 0387b25ee6 fix: sanitize server-returned text to prevent ANSI escape injection (#85)
Server-returned string fields (merchant_name, line_items[].name,
billing_address.*, payment method brand/nickname) are now sanitized
before rendering in Ink components using strip-ansi plus control
character stripping. This prevents terminal escape sequence injection
that could spoof the approval UI.


Committed-By-Agent: claude

Co-authored-by: Ben Davis <ben@bencdavis.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 15:38:29 -04:00
Dan Hill 281b61c38b Specify credential file (#81)
* feat: allow specifying a credential file

* copy cleanup

* fix: make flag clearer
2026-05-08 12:33:40 -04:00
Ryan Aubrey 20c59dc6ab feat: shipping addresses (#79)
* Basic command, readme, skill file

* Skill update

* Better formatting

* Formatting

* Simplify skill file
2026-05-07 18:02:29 -04:00
kreese-stripe 6e1e9d2f66 (feat): Commands to cancel a spend request (#77)
* commands to cancel a spend request

* document

* nit: remove unneeded status text

* code improvements

* Fix typecheck

* Just go back to old promise approach
2026-05-07 14:43:35 -04:00
Dan Hill 8cc93e9906 feat: allow writing payment credentials to file to avoid context (#67) 2026-05-04 17:50:34 -04:00
Pejman Pour-Moezzi 21bc584091 fix: fail spend request polling timeout (#56) 2026-04-29 19:53:25 -04:00
Dan Hill cd84685f22 Onboarding Experience (#15)
Add a new user onboarding command
2026-04-28 19:17:44 -04:00
Steve Kaliski 6b1079be96 update claude file for spend-intent -> spend-request (#26) 2026-04-27 19:00:15 -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
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