Files
simstudioai--sim/apps/sim/tools/persona/update_account.ts
T
wehub-resource-sync d25d482dc2
Publish CLI Package / publish-npm (push) Waiting to run
Publish Python SDK / publish-pypi (push) Waiting to run
Publish TypeScript SDK / publish-npm (push) Waiting to run
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:20:55 +08:00

111 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { PersonaAccountResponse, PersonaUpdateAccountParams } from '@/tools/persona/types'
import {
ACCOUNT_OUTPUT_PROPERTIES,
asResource,
buildPersonaHeaders,
mapAccount,
PERSONA_API_BASE,
parseJsonObjectParam,
parsePersonaResponse,
parseStringArrayParam,
} from '@/tools/persona/utils'
import type { ToolConfig } from '@/tools/types'
export const personaUpdateAccountTool: ToolConfig<
PersonaUpdateAccountParams,
PersonaAccountResponse
> = {
id: 'persona_update_account',
name: 'Persona Update Account',
description:
'Update an accounts reference ID, country code, fields, or tags. Only the provided values are changed.',
version: '1.0.0',
params: {
apiKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'Persona API key',
},
accountId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'Account ID to update (starts with act_)',
},
referenceId: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Reference ID that refers to an entity in your user model',
},
countryCode: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'ISO 3166-1 alpha-2 country code (e.g. US)',
},
fields: {
type: 'json',
required: false,
visibility: 'user-or-llm',
description:
'JSON object of field name to field value pairs to set, as defined by the account type (e.g. {"name-first": "Jane"})',
},
tags: {
type: 'array',
required: false,
visibility: 'user-or-llm',
description: 'JSON array of tag names to set on the account (e.g. ["vip"])',
},
},
request: {
url: (params) => `${PERSONA_API_BASE}/accounts/${encodeURIComponent(params.accountId.trim())}`,
method: 'PATCH',
headers: (params) => buildPersonaHeaders(params.apiKey),
body: (params) => {
const attributes: Record<string, unknown> = {}
if (params.referenceId?.trim()) {
attributes['reference-id'] = params.referenceId.trim()
}
if (params.countryCode?.trim()) {
attributes['country-code'] = params.countryCode.trim()
}
const fields = parseJsonObjectParam(params.fields, 'Fields')
if (fields) {
attributes.fields = fields
}
const tags = parseStringArrayParam(params.tags, 'Tags')
if (tags) {
attributes.tags = tags
}
if (Object.keys(attributes).length === 0) {
throw new Error(
'Provide at least one of referenceId, countryCode, fields, or tags to update'
)
}
return { data: { attributes } }
},
},
transformResponse: async (response) => {
const data = await parsePersonaResponse(response)
return {
success: true,
output: {
account: mapAccount(asResource(data.data)),
},
}
},
outputs: {
account: {
type: 'object',
description: 'The updated account',
properties: ACCOUNT_OUTPUT_PROPERTIES,
},
},
}