@stripe/link-sdk 0.8.0 → 0.9.0

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 CHANGED
@@ -57,6 +57,43 @@ The credential manager should coalesce concurrent refreshes if several
57
57
  requests can receive a 401 at the same time. A client configured with a fixed
58
58
  `accessToken` does not retry a 401 because it cannot obtain a different token.
59
59
 
60
+ ## Agent tools
61
+
62
+ `@stripe/link-sdk/tools` exports `createLinkTools`, `linkToolSchemas`, and the
63
+ `LinkTools` / `LinkToolName` types. Each tool has a description, a Zod input
64
+ schema, and an executor that delegates to the existing SDK resources. This
65
+ entrypoint has no dependency on Eve or another agent framework.
66
+
67
+ ```ts
68
+ import { Link } from '@stripe/link-sdk';
69
+ import { createLinkTools } from '@stripe/link-sdk/tools';
70
+
71
+ const tools = createLinkTools(new Link({ accessToken }));
72
+ const methods = await tools.list_payment_methods.execute({}, undefined);
73
+ ```
74
+
75
+ For shared agents, pass a client resolver that receives your framework's
76
+ execution context. The resolver runs for each execution, never during tool
77
+ discovery:
78
+
79
+ ```ts
80
+ const tools = createLinkTools((context: MyAuthenticatedContext) =>
81
+ new Link({
82
+ getAccessToken: (options) => credentials.getLinkToken(context.user, options),
83
+ }),
84
+ );
85
+ ```
86
+
87
+ Tool inputs use API field names and are validated before resolving the client.
88
+ The catalog includes wallet reads, spend-request operations, financial-data
89
+ reads, and purchase reports. Creating a spend request defaults to requesting
90
+ Link approval and returns immediately; the application handles approval URLs
91
+ and subsequent retrieval. Supply a stable `idempotency_key` when an executor can
92
+ be replayed.
93
+
94
+ For native Eve discovery, namespacing, access-token configuration, and replay handling, use
95
+ [`@stripe/link-integrations-eve`](../integrations/eve/README.md).
96
+
60
97
  ## User-approved purchase flow
61
98
 
62
99
  Amounts are expressed in the currency's minor unit, such as cents for USD.
@@ -0,0 +1,26 @@
1
+ // src/resources/interfaces.ts
2
+ var REPORT_OUTCOMES = ["success", "blocked", "abandoned"];
3
+ var REPORT_TAGS = [
4
+ "stripe_checkout",
5
+ "captcha",
6
+ "anti_bot_script",
7
+ "cdn_block",
8
+ "waf_block",
9
+ "dns_block",
10
+ "rate_limited",
11
+ "login_required",
12
+ "3ds_challenge",
13
+ "page_inaccessible",
14
+ "timeout",
15
+ "site_error",
16
+ "payment_declined",
17
+ "other"
18
+ ];
19
+ var REPORT_ATTEMPT_TRACE_MAX_LENGTH = 8e3;
20
+
21
+ export {
22
+ REPORT_OUTCOMES,
23
+ REPORT_TAGS,
24
+ REPORT_ATTEMPT_TRACE_MAX_LENGTH
25
+ };
26
+ //# sourceMappingURL=chunk-TYOT25QK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/interfaces.ts"],"sourcesContent":["import type {\n ApprovalDetail,\n ApprovalPolicy,\n BalancesPage,\n CredentialType,\n LineItem,\n PaymentMethod,\n RequestApprovalResponse,\n ShippingAddressRecord,\n SourcesPage,\n SpendRequest,\n Total,\n TransactionOrigin,\n TransactionsPage,\n UcpCheckout,\n UcpCheckoutWithSpendRequest,\n UcpSearchResult,\n UserInfo,\n WebBotAuthBlock,\n} from '@/types/index';\n\nexport interface GetAccessTokenOptions {\n forceRefresh?: boolean;\n}\n\nexport type AccessTokenProvider = (\n options?: GetAccessTokenOptions,\n) => Promise<string> | string;\n\nexport interface AttestationRequestParams {\n count: number;\n}\n\nexport interface AttestationRequestResult {\n tokens: string[];\n issuer: string;\n token_key_id: string;\n count: number;\n}\n\nexport interface IAttestationsResource {\n request(params: AttestationRequestParams): Promise<AttestationRequestResult>;\n}\n\nexport type HolderPublicJwk = { kty: 'OKP'; crv: 'Ed25519'; x: string };\n\nexport interface IssueIdentityCredentialParams {\n cnf: { jwk: HolderPublicJwk };\n}\n\nexport interface IssueIdentityCredentialResponse {\n credential: string;\n issuer: string;\n expires_at: string;\n}\n\nexport interface IIdentityCredentialsResource {\n issue(\n params: IssueIdentityCredentialParams,\n ): Promise<IssueIdentityCredentialResponse>;\n}\n\nexport interface CreateSpendRequestParams {\n idempotency_key?: string;\n payment_details?: string;\n credential_type?: CredentialType;\n network_id?: string;\n execution_method?: 'link_pay_token';\n merchant_account_id?: string;\n amount?: number;\n currency?: string;\n merchant_name?: string;\n merchant_url?: string;\n context: string;\n line_items?: LineItem[];\n totals?: Total[];\n request_approval?: boolean;\n test?: boolean;\n approval_details?: ApprovalDetail;\n metadata?: Record<string, string>;\n}\n\nexport interface UpdateSpendRequestParams {\n payment_details?: string;\n amount?: number;\n merchant_url?: string;\n profile_id?: string;\n merchant_id?: string;\n currency?: string;\n line_items?: LineItem[];\n totals?: Total[];\n}\n\nexport interface ISpendRequestResource {\n list(opts?: { includeHistory?: boolean }): Promise<SpendRequest[]>;\n create(params: CreateSpendRequestParams): Promise<SpendRequest>;\n update(id: string, params: UpdateSpendRequestParams): Promise<SpendRequest>;\n requestApproval(id: string): Promise<RequestApprovalResponse>;\n cancel(id: string): Promise<SpendRequest>;\n retrieve(\n id: string,\n opts?: { include?: string[] },\n ): Promise<SpendRequest | null>;\n}\n\nexport interface IPaymentMethodsResource {\n list(): Promise<PaymentMethod[]>;\n retrieve(id: string): Promise<PaymentMethod | null>;\n update(id: string, params: UpdatePaymentMethodParams): Promise<PaymentMethod>;\n}\n\nexport interface UpdatePaymentMethodParams {\n nickname: string;\n}\n\nexport interface IShippingAddressResource {\n list(): Promise<ShippingAddressRecord[]>;\n}\n\nexport interface IUserInfoResource {\n retrieve(): Promise<UserInfo>;\n}\n\nexport interface IApprovalPolicyResource {\n retrieve(): Promise<ApprovalPolicy>;\n}\n\nexport interface IWebBotAuthResource {\n signUrl(url: string): Promise<WebBotAuthBlock>;\n}\n\nexport interface ListTransactionsParams {\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n start_date?: string;\n end_date?: string;\n category?: string;\n origin?: TransactionOrigin;\n sources?: string[];\n}\n\nexport interface ITransactionsResource {\n list(params?: ListTransactionsParams): Promise<TransactionsPage>;\n}\n\nexport interface ListSourcesParams {\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n}\n\nexport interface ISourcesResource {\n list(params?: ListSourcesParams): Promise<SourcesPage>;\n}\n\nexport interface ListBalancesParams {\n sources?: string[];\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n}\n\nexport interface IBalancesResource {\n list(params?: ListBalancesParams): Promise<BalancesPage>;\n}\n\nexport const REPORT_OUTCOMES = ['success', 'blocked', 'abandoned'] as const;\nexport type ReportOutcome = (typeof REPORT_OUTCOMES)[number];\n\nexport const REPORT_TAGS = [\n 'stripe_checkout',\n 'captcha',\n 'anti_bot_script',\n 'cdn_block',\n 'waf_block',\n 'dns_block',\n 'rate_limited',\n 'login_required',\n '3ds_challenge',\n 'page_inaccessible',\n 'timeout',\n 'site_error',\n 'payment_declined',\n 'other',\n] as const;\nexport type ReportTag = (typeof REPORT_TAGS)[number];\n\n/**\n * Server-side cap on `attempt_trace`. Longer values are truncated by the API\n * rather than rejected, so callers do not need to pre-trim.\n */\nexport const REPORT_ATTEMPT_TRACE_MAX_LENGTH = 8000;\n\nexport interface CreateReportParams {\n domain: string;\n outcome: ReportOutcome;\n spend_request_id: string;\n tags?: ReportTag[];\n step?: string;\n freeform_context?: string;\n attempt_trace?: string;\n}\n\nexport interface ReportRecord {\n object: string;\n created_at: string;\n domain: string;\n outcome: string;\n spend_request_id: string;\n status: string;\n}\n\nexport interface IReportResource {\n create(params: CreateReportParams): Promise<ReportRecord>;\n}\n\nexport interface SearchUcpCatalogParams {\n query?: string;\n profile_id?: string;\n sku?: string;\n brand?: string[];\n category?: string[];\n color?: string[];\n size?: string[];\n material?: string[];\n gender?: string[];\n condition?: string[];\n price_min?: number;\n price_max?: number;\n currency?: string;\n availability?: string;\n sort?: string;\n group_by?: string;\n limit?: number;\n offset?: number;\n include_facets?: boolean;\n test?: boolean;\n}\n\nexport interface UcpLineItem {\n sku_id: string;\n quantity: number;\n}\n\nexport interface CreateUcpCheckoutParams {\n profile_id: string;\n line_items: UcpLineItem[];\n currency?: string;\n fulfillment_details?: Record<string, unknown>;\n test?: boolean;\n}\n\nexport interface CompleteUcpCheckoutParams {\n spend_request_id: string;\n profile_id: string;\n test?: boolean;\n}\n\nexport interface RetrieveUcpCheckoutParams {\n spend_request_id: string;\n test?: boolean;\n}\n\nexport interface IUcpResource {\n searchCatalog(params: SearchUcpCatalogParams): Promise<UcpSearchResult>;\n createCheckout(params: CreateUcpCheckoutParams): Promise<UcpCheckout>;\n completeCheckout(\n id: string,\n params: CompleteUcpCheckoutParams,\n ): Promise<UcpCheckout>;\n retrieveCheckout(\n id: string,\n params: RetrieveUcpCheckoutParams,\n ): Promise<UcpCheckoutWithSpendRequest>;\n}\n"],"mappings":";AAuKO,IAAM,kBAAkB,CAAC,WAAW,WAAW,WAAW;AAG1D,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,IAAM,kCAAkC;","names":[]}
package/dist/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ import {
2
+ REPORT_ATTEMPT_TRACE_MAX_LENGTH,
3
+ REPORT_OUTCOMES,
4
+ REPORT_TAGS
5
+ } from "./chunk-TYOT25QK.js";
6
+
1
7
  // src/resources/approval-policy.ts
2
8
  import { z } from "zod";
3
9
 
@@ -1906,26 +1912,6 @@ var Link = class {
1906
1912
  }
1907
1913
  };
1908
1914
  var client_default = Link;
1909
-
1910
- // src/resources/interfaces.ts
1911
- var REPORT_OUTCOMES = ["success", "blocked", "abandoned"];
1912
- var REPORT_TAGS = [
1913
- "stripe_checkout",
1914
- "captcha",
1915
- "anti_bot_script",
1916
- "cdn_block",
1917
- "waf_block",
1918
- "dns_block",
1919
- "rate_limited",
1920
- "login_required",
1921
- "3ds_challenge",
1922
- "page_inaccessible",
1923
- "timeout",
1924
- "site_error",
1925
- "payment_declined",
1926
- "other"
1927
- ];
1928
- var REPORT_ATTEMPT_TRACE_MAX_LENGTH = 8e3;
1929
1915
  export {
1930
1916
  ApprovalPolicyResource,
1931
1917
  AttestationsResource,