Skip to content

Commit 21aa68e

Browse files
committed
fix(payments): TUI credential propagation, dead type exports, schema alignment
- Fix TUI deploy bug: runPaymentPreDeploy now calls setAllCredentials so useDeployFlow.persistDeployedState has correct connector ARNs - Remove export from 9 dead type interfaces in agentcore-payments.ts - Rename PaymentCredentialProviderResult → PaymentCredentialProviderApiResult to resolve name collision with payment-types.ts - Fix defaultSpendLimit schema mismatch: CDK now uses z.string().optional() matching CLI (was z.object({amount,currency}) — incompatible) - Remove dead PaymentCredentialProviderResult re-export from barrel
1 parent 7b47905 commit 21aa68e

3 files changed

Lines changed: 42 additions & 17 deletions

File tree

src/cli/aws/agentcore-payments.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { SignatureV4 } from '@smithy/signature-v4';
1717

1818
// ── Create Payment Credential Provider ─────────────────────────────────────
1919

20-
export interface CreateCoinbaseCdpCredentialProviderOptions {
20+
interface CreateCoinbaseCdpCredentialProviderOptions {
2121
region: string;
2222
name: string;
2323
vendor: 'CoinbaseCDP';
@@ -26,7 +26,7 @@ export interface CreateCoinbaseCdpCredentialProviderOptions {
2626
walletSecret: string;
2727
}
2828

29-
export interface CreateStripePrivyCredentialProviderOptions {
29+
interface CreateStripePrivyCredentialProviderOptions {
3030
region: string;
3131
name: string;
3232
vendor: 'StripePrivy';
@@ -36,40 +36,40 @@ export interface CreateStripePrivyCredentialProviderOptions {
3636
authorizationId: string;
3737
}
3838

39-
export type CreatePaymentCredentialProviderOptions =
39+
type CreatePaymentCredentialProviderOptions =
4040
| CreateCoinbaseCdpCredentialProviderOptions
4141
| CreateStripePrivyCredentialProviderOptions;
4242

43-
export interface PaymentCredentialProviderResult {
43+
interface PaymentCredentialProviderApiResult {
4444
credentialProviderArn: string;
4545
status: string;
4646
}
4747

4848
// ── Update Payment Credential Provider ─────────────────────────────────────
4949

50-
export type UpdatePaymentCredentialProviderOptions = CreatePaymentCredentialProviderOptions;
50+
type UpdatePaymentCredentialProviderOptions = CreatePaymentCredentialProviderOptions;
5151

5252
// ── Get Payment Credential Provider ────────────────────────────────────────
5353

54-
export interface GetPaymentCredentialProviderOptions {
54+
interface GetPaymentCredentialProviderOptions {
5555
region: string;
5656
name: string;
5757
}
5858

59-
export interface PaymentCredentialProviderDetail {
59+
interface PaymentCredentialProviderDetail {
6060
credentialProviderArn: string;
6161
name: string;
6262
status: string;
6363
}
6464

6565
// ── Get Payment Manager ───────────────────────────────────────────────────
6666

67-
export interface GetPaymentManagerOptions {
67+
interface GetPaymentManagerOptions {
6868
region: string;
6969
paymentManagerId: string;
7070
}
7171

72-
export interface PaymentManagerDetail {
72+
interface PaymentManagerDetail {
7373
paymentManagerId: string;
7474
paymentManagerArn: string;
7575
name: string;
@@ -205,7 +205,7 @@ function buildProviderConfigPayload(options: CreatePaymentCredentialProviderOpti
205205

206206
export async function createPaymentCredentialProvider(
207207
options: CreatePaymentCredentialProviderOptions
208-
): Promise<PaymentCredentialProviderResult> {
208+
): Promise<PaymentCredentialProviderApiResult> {
209209
const { credentialProviderVendor, providerConfigurationInput } = buildProviderConfigPayload(options);
210210
const body = JSON.stringify({
211211
name: options.name,
@@ -219,7 +219,7 @@ export async function createPaymentCredentialProvider(
219219
method: 'POST',
220220
path: '/identities/CreatePaymentCredentialProvider',
221221
body,
222-
})) as PaymentCredentialProviderResult;
222+
})) as PaymentCredentialProviderApiResult;
223223

224224
return {
225225
credentialProviderArn: data.credentialProviderArn,
@@ -234,7 +234,7 @@ export async function createPaymentCredentialProvider(
234234

235235
export async function updatePaymentCredentialProvider(
236236
options: UpdatePaymentCredentialProviderOptions
237-
): Promise<PaymentCredentialProviderResult> {
237+
): Promise<PaymentCredentialProviderApiResult> {
238238
const { credentialProviderVendor, providerConfigurationInput } = buildProviderConfigPayload(options);
239239
const body = JSON.stringify({
240240
name: options.name,
@@ -248,7 +248,7 @@ export async function updatePaymentCredentialProvider(
248248
method: 'POST',
249249
path: '/identities/UpdatePaymentCredentialProvider',
250250
body,
251-
})) as PaymentCredentialProviderResult;
251+
})) as PaymentCredentialProviderApiResult;
252252

253253
return {
254254
credentialProviderArn: data.credentialProviderArn,
@@ -409,7 +409,7 @@ async function signedDataPlaneRequest(options: {
409409

410410
// ── Payment Session Types ─────────────────────────────────────────────────
411411

412-
export interface GetOrCreatePaymentSessionOptions {
412+
interface GetOrCreatePaymentSessionOptions {
413413
region: string;
414414
managerArn: string;
415415
userId: string;

src/cli/aws/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export {
3333
deletePaymentCredentialProvider,
3434
getPaymentManager,
3535
getOrCreatePaymentSession,
36-
type PaymentCredentialProviderResult,
3736
} from './agentcore-payments';
3837
export {
3938
DEFAULT_RUNTIME_USER_ID,

src/cli/tui/hooks/useCdkPreflight.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,25 @@ interface RunPaymentSetupOptions {
3838
updateStepByLabel: (label: string, update: Partial<Step>) => void;
3939
setPhase: (phase: PreflightPhase) => void;
4040
isRunningRef: React.MutableRefObject<boolean>;
41+
setAllCredentials: React.Dispatch<
42+
React.SetStateAction<
43+
Record<string, { credentialProviderArn: string; clientSecretArn?: string; callbackUrl?: string }>
44+
>
45+
>;
4146
}
4247

4348
async function runPaymentPreDeploy(opts: RunPaymentSetupOptions): Promise<boolean> {
44-
const { projectSpec, awsTargets, runtimeCredentials, logger, setSteps, updateStepByLabel, setPhase, isRunningRef } =
45-
opts;
49+
const {
50+
projectSpec,
51+
awsTargets,
52+
runtimeCredentials,
53+
logger,
54+
setSteps,
55+
updateStepByLabel,
56+
setPhase,
57+
isRunningRef,
58+
setAllCredentials,
59+
} = opts;
4660

4761
if (!hasPaymentManagers(projectSpec)) return true;
4862

@@ -85,6 +99,15 @@ async function runPaymentPreDeploy(opts: RunPaymentSetupOptions): Promise<boolea
8599
targets: { ...existingState.targets, [target.name]: targetState },
86100
});
87101

102+
// Update in-memory credentials so useDeployFlow.persistDeployedState has correct ARNs
103+
setAllCredentials(prev => {
104+
const updated = { ...prev };
105+
for (const [name, result] of Object.entries(paymentResult.credentialProviders)) {
106+
updated[name] = { credentialProviderArn: result.credentialProviderArn };
107+
}
108+
return updated;
109+
});
110+
88111
logger.endStep('success');
89112
updateStepByLabel(LABEL_PAYMENTS, { status: 'success' });
90113
return true;
@@ -496,6 +519,7 @@ export function useCdkPreflight(options: PreflightOptions): PreflightResult {
496519
updateStepByLabel,
497520
setPhase,
498521
isRunningRef,
522+
setAllCredentials,
499523
});
500524
if (!paymentOk) return;
501525

@@ -629,6 +653,7 @@ export function useCdkPreflight(options: PreflightOptions): PreflightResult {
629653
updateStepByLabel,
630654
setPhase,
631655
isRunningRef,
656+
setAllCredentials,
632657
});
633658
if (!paymentOkSkip) return;
634659

@@ -880,6 +905,7 @@ export function useCdkPreflight(options: PreflightOptions): PreflightResult {
880905
updateStepByLabel,
881906
setPhase,
882907
isRunningRef,
908+
setAllCredentials,
883909
});
884910
if (!paymentOkIdentity) return;
885911

0 commit comments

Comments
 (0)