@hsuite/smart-engines-sdk 3.13.0 → 3.14.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/CHANGELOG.md +14 -0
- package/dist/index.d.ts +78 -5
- package/dist/index.js +161 -11
- package/dist/index.js.map +1 -1
- package/dist/nestjs/index.d.ts +61 -1
- package/dist/nestjs/index.js +126 -2
- package/dist/nestjs/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.14.0 — 2026-06-25
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **Agent + BaaS SDK completeness (from the showcase boundary audit).** Lets app-as-proxy consumers drop hand-rolled raw-fetch workarounds.
|
|
8
|
+
- `AgentsClient.certification(agentId, opts?)` → typed `AgentCertification` (entityId, owner/agent/treasury wallets, primaryChain, rulesHash, BLS group key, state-history topic, recent events + tx ids).
|
|
9
|
+
- `AgentsClient.fund()` now returns the discriminated union `AgentPreparedTransactionResponse | AgentPendingApprovalResponse` (the owner approval-threshold path), plus the `isAgentFundPending()` type guard.
|
|
10
|
+
- `AgentInfo` gains the on-chain DKG identity the host already returns: optional `agentWallet`, `treasuryAccount`, `entityId` (additive).
|
|
11
|
+
- `FunctionsClient.getCode(functionId, opts?)` → `BaasFunctionCode` (`{ functionId, code, codeHash }`) for function source reveal.
|
|
12
|
+
- `StorageClient.downloadWithMeta(cid, opts?)` → `{ bytes, contentType?, filename? }` (the bytes-only `download()` discards the headers), backed by a new `HttpClient.getBinaryWithMeta`.
|
|
13
|
+
- `HttpCallOptions.onBehalfOf` — owner-acting pass-through: forwards an end user's Mode-1 customer-session JWT as BOTH `Authorization: Bearer` and `X-Customer-Session-Claim` (no client-side signing; owner-gated agent routes accept only the Mode-1 JWT — the Mode-2 BLS claim is host-minted and rejected there). Distinct from the metering-only `customerToken`.
|
|
14
|
+
- Error helpers for consumers (e.g. a NestJS exception filter): `SdkHttpError.isRetryable` getter, `isSmartEngineSdkError()` guard, and `toHttpError()` (verbatim mapping with a sub-400 → 502 clamp).
|
|
15
|
+
- **`EntitiesClient.prepareCreateAgent(req)` + `executeCreateAgent(req)` — payer-funded two-phase agent create.** Agent creation now mirrors the account create-flow: the synchronous `createAgent` 400s on payer-funded chains (e.g. `chain=xrpl uses prepare-create / execute-create`), so consumers drive the host's generic two-phase create (`POST /api/v3/baas/entities/prepare-create` + `/execute-create`, `entityType: 'agent'`). `prepareCreateAgent` returns `PreparedEntityCreation` (the unsigned payer-funding tx the dapp signs + submits) and `executeCreateAgent` returns `EntityCreationResult` after the validator finalizes (relaying the signed funding blob on XRPL/Stellar, threading the Hedera `createTxId` receipt). `prepareCreateAgent` remaps the agent's `primaryChain` onto the generic prepare/execute DTO's `chain` key. (#117)
|
|
16
|
+
|
|
3
17
|
## 3.8.0 — 2026-06-17
|
|
4
18
|
|
|
5
19
|
### Added
|
package/dist/index.d.ts
CHANGED
|
@@ -1956,6 +1956,7 @@ export declare class ClusterDiscoveryClient {
|
|
|
1956
1956
|
}
|
|
1957
1957
|
export type HttpCallOptions = {
|
|
1958
1958
|
customerToken?: string;
|
|
1959
|
+
onBehalfOf?: string;
|
|
1959
1960
|
headers?: Record<string, string>;
|
|
1960
1961
|
};
|
|
1961
1962
|
export type HttpClient = {
|
|
@@ -1966,6 +1967,11 @@ export type HttpClient = {
|
|
|
1966
1967
|
delete<T = any>(path: string, opts?: HttpCallOptions): Promise<T>;
|
|
1967
1968
|
getText(path: string, opts?: HttpCallOptions): Promise<string>;
|
|
1968
1969
|
getBinary(path: string, opts?: HttpCallOptions): Promise<Uint8Array>;
|
|
1970
|
+
getBinaryWithMeta(path: string, opts?: HttpCallOptions): Promise<{
|
|
1971
|
+
bytes: Uint8Array;
|
|
1972
|
+
contentType?: string;
|
|
1973
|
+
filename?: string;
|
|
1974
|
+
}>;
|
|
1969
1975
|
upload<T = any>(path: string, file: Blob | Buffer, filename: string, metadata?: Record<string, string>, fieldName?: string, opts?: HttpCallOptions): Promise<T>;
|
|
1970
1976
|
setAuthToken(token: string | undefined): void;
|
|
1971
1977
|
getAuthToken(): string | undefined;
|
|
@@ -1981,6 +1987,7 @@ export declare class SdkHttpError extends Error {
|
|
|
1981
1987
|
readonly statusCode: number;
|
|
1982
1988
|
readonly details?: any | undefined;
|
|
1983
1989
|
constructor(message: string, statusCode: number, details?: any | undefined);
|
|
1990
|
+
get isRetryable(): boolean;
|
|
1984
1991
|
}
|
|
1985
1992
|
export declare function createHttpClient(config: HttpClientConfig): HttpClient;
|
|
1986
1993
|
export declare function encodePathParam(param: string): string;
|
|
@@ -1992,6 +1999,14 @@ export interface RuleRejectedDetails {
|
|
|
1992
1999
|
export declare function isRuleRejected(err: unknown): err is SdkHttpError & {
|
|
1993
2000
|
details: RuleRejectedDetails;
|
|
1994
2001
|
};
|
|
2002
|
+
export declare function isSmartEngineSdkError(err: unknown): err is SdkHttpError;
|
|
2003
|
+
export declare function toHttpError(err: unknown): {
|
|
2004
|
+
statusCode: number;
|
|
2005
|
+
code: string;
|
|
2006
|
+
message: string;
|
|
2007
|
+
isRetryable: boolean;
|
|
2008
|
+
details?: unknown;
|
|
2009
|
+
};
|
|
1995
2010
|
export type DiscoveryClusterEndpoints = {
|
|
1996
2011
|
clusterId: string;
|
|
1997
2012
|
gatewayUrl: string;
|
|
@@ -3839,6 +3854,29 @@ export type AgentInfo = {
|
|
|
3839
3854
|
owner: string;
|
|
3840
3855
|
createdAt: string;
|
|
3841
3856
|
lastActiveAt?: string;
|
|
3857
|
+
agentWallet?: string;
|
|
3858
|
+
treasuryAccount?: string;
|
|
3859
|
+
entityId?: string;
|
|
3860
|
+
};
|
|
3861
|
+
export type AgentCertification = {
|
|
3862
|
+
agentId: string;
|
|
3863
|
+
entityId?: string;
|
|
3864
|
+
ownerWallet?: string;
|
|
3865
|
+
status?: string;
|
|
3866
|
+
agentWallet?: string;
|
|
3867
|
+
treasuryAccount?: string;
|
|
3868
|
+
primaryChain?: string;
|
|
3869
|
+
rulesHash?: string;
|
|
3870
|
+
ruleRef?: string;
|
|
3871
|
+
blsGroupPublicKey?: string;
|
|
3872
|
+
stateHistoryTopicId?: string;
|
|
3873
|
+
recentEvents: Array<{
|
|
3874
|
+
agentId: string;
|
|
3875
|
+
type: string;
|
|
3876
|
+
payload: Record<string, unknown>;
|
|
3877
|
+
timestamp: string;
|
|
3878
|
+
}>;
|
|
3879
|
+
recentTxIds: string[];
|
|
3842
3880
|
};
|
|
3843
3881
|
export type AgentEvent = {
|
|
3844
3882
|
eventId: string;
|
|
@@ -3900,6 +3938,15 @@ export type AgentExecuteResponse = {
|
|
|
3900
3938
|
export type AgentPreparedTransactionResponse = PreparedTransactionResponse & {
|
|
3901
3939
|
success: true;
|
|
3902
3940
|
};
|
|
3941
|
+
export type AgentPendingApprovalResponse = {
|
|
3942
|
+
success: true;
|
|
3943
|
+
pendingOpId: string;
|
|
3944
|
+
agentId: string;
|
|
3945
|
+
action: string;
|
|
3946
|
+
status: "awaiting_approval";
|
|
3947
|
+
description: string;
|
|
3948
|
+
};
|
|
3949
|
+
export declare function isAgentFundPending(r: AgentPreparedTransactionResponse | AgentPendingApprovalResponse): r is AgentPendingApprovalResponse;
|
|
3903
3950
|
export declare class AgentsClient {
|
|
3904
3951
|
private readonly http;
|
|
3905
3952
|
constructor(http: HttpClient);
|
|
@@ -3909,7 +3956,7 @@ export declare class AgentsClient {
|
|
|
3909
3956
|
agents: AgentInfo[];
|
|
3910
3957
|
total: number;
|
|
3911
3958
|
}>;
|
|
3912
|
-
fund(agentId: string, request: AgentFundRequest, opts?: HttpCallOptions): Promise<AgentPreparedTransactionResponse>;
|
|
3959
|
+
fund(agentId: string, request: AgentFundRequest, opts?: HttpCallOptions): Promise<AgentPreparedTransactionResponse | AgentPendingApprovalResponse>;
|
|
3913
3960
|
trade(agentId: string, request: AgentTradeRequest, opts?: HttpCallOptions): Promise<AgentPreparedTransactionResponse>;
|
|
3914
3961
|
withdraw(agentId: string, request: AgentWithdrawRequest, opts?: HttpCallOptions): Promise<AgentPreparedTransactionResponse>;
|
|
3915
3962
|
execute(agentId: string, request: AgentExecuteRequest, opts?: HttpCallOptions): Promise<AgentExecuteResponse & {
|
|
@@ -3927,6 +3974,7 @@ export declare class AgentsClient {
|
|
|
3927
3974
|
success: boolean;
|
|
3928
3975
|
status: string;
|
|
3929
3976
|
}>;
|
|
3977
|
+
certification(agentId: string, opts?: HttpCallOptions): Promise<AgentCertification>;
|
|
3930
3978
|
updateRules(agentId: string, rules: Partial<AgentRules>, opts?: HttpCallOptions): Promise<AgentInfo>;
|
|
3931
3979
|
getEvents(agentId: string, opts?: HttpCallOptions): Promise<{
|
|
3932
3980
|
events: AgentEvent[];
|
|
@@ -4212,6 +4260,11 @@ export type BaasFunctionInfo = {
|
|
|
4212
4260
|
lastInvokedAt?: string;
|
|
4213
4261
|
invocationCount: number;
|
|
4214
4262
|
};
|
|
4263
|
+
export type BaasFunctionCode = {
|
|
4264
|
+
functionId: string;
|
|
4265
|
+
code: string | null;
|
|
4266
|
+
codeHash?: string;
|
|
4267
|
+
};
|
|
4215
4268
|
export type BaasFunctionLog = {
|
|
4216
4269
|
timestamp: string;
|
|
4217
4270
|
level: "debug" | "info" | "warn" | "error";
|
|
@@ -5423,8 +5476,9 @@ export declare function createAnthropicProvider(opts: {
|
|
|
5423
5476
|
model: string;
|
|
5424
5477
|
}): IModelProvider;
|
|
5425
5478
|
export declare function createOpenAiProvider(opts: {
|
|
5426
|
-
apiKey
|
|
5479
|
+
apiKey?: string;
|
|
5427
5480
|
model: string;
|
|
5481
|
+
baseURL?: string;
|
|
5428
5482
|
}): IModelProvider;
|
|
5429
5483
|
export declare function createGeminiProvider(opts: {
|
|
5430
5484
|
apiKey: string;
|
|
@@ -5432,8 +5486,9 @@ export declare function createGeminiProvider(opts: {
|
|
|
5432
5486
|
}): IModelProvider;
|
|
5433
5487
|
export declare function createModelProvider(opts: {
|
|
5434
5488
|
provider: ModelProvider;
|
|
5435
|
-
apiKey
|
|
5489
|
+
apiKey?: string;
|
|
5436
5490
|
model: string;
|
|
5491
|
+
baseURL?: string;
|
|
5437
5492
|
}): IModelProvider;
|
|
5438
5493
|
export type InferJsonResult<T> = {
|
|
5439
5494
|
ok: boolean;
|
|
@@ -5443,8 +5498,9 @@ export type InferJsonResult<T> = {
|
|
|
5443
5498
|
};
|
|
5444
5499
|
export declare function inferJson<T = unknown>(opts: {
|
|
5445
5500
|
provider: ModelProvider;
|
|
5446
|
-
apiKey
|
|
5501
|
+
apiKey?: string;
|
|
5447
5502
|
model: string;
|
|
5503
|
+
baseURL?: string;
|
|
5448
5504
|
system?: string;
|
|
5449
5505
|
input: unknown;
|
|
5450
5506
|
maxTokens?: number;
|
|
@@ -5510,6 +5566,11 @@ export declare class StorageClient {
|
|
|
5510
5566
|
constructor(http: HttpClient, getAppId: () => string);
|
|
5511
5567
|
upload(file: Blob | Buffer, filename: string, metadata?: Record<string, string>, opts?: HttpCallOptions): Promise<BaasUploadResult>;
|
|
5512
5568
|
download(cid: string, opts?: HttpCallOptions): Promise<Uint8Array>;
|
|
5569
|
+
downloadWithMeta(cid: string, opts?: HttpCallOptions): Promise<{
|
|
5570
|
+
bytes: Uint8Array;
|
|
5571
|
+
contentType?: string;
|
|
5572
|
+
filename?: string;
|
|
5573
|
+
}>;
|
|
5513
5574
|
getMetadata(cid: string, opts?: HttpCallOptions): Promise<BaasFileMetadata>;
|
|
5514
5575
|
delete(cid: string, opts?: HttpCallOptions): Promise<{
|
|
5515
5576
|
success: boolean;
|
|
@@ -5540,6 +5601,7 @@ export declare class FunctionsClient {
|
|
|
5540
5601
|
total: number;
|
|
5541
5602
|
}>;
|
|
5542
5603
|
get(functionId: string, opts?: HttpCallOptions): Promise<BaasFunctionInfo>;
|
|
5604
|
+
getCode(functionId: string, opts?: HttpCallOptions): Promise<BaasFunctionCode>;
|
|
5543
5605
|
update(functionId: string, updates: Partial<BaasFunctionDeployRequest>, opts?: HttpCallOptions): Promise<BaasFunctionInfo>;
|
|
5544
5606
|
delete(functionId: string, opts?: HttpCallOptions): Promise<{
|
|
5545
5607
|
success: boolean;
|
|
@@ -25294,6 +25356,9 @@ export type CreateAgentRequest = {
|
|
|
25294
25356
|
ruleRef: RuleRef;
|
|
25295
25357
|
name: string;
|
|
25296
25358
|
agentType?: string;
|
|
25359
|
+
securityMode?: EntitySecurityMode;
|
|
25360
|
+
payerAccountId?: string;
|
|
25361
|
+
fundWith?: FundWith;
|
|
25297
25362
|
};
|
|
25298
25363
|
export type EntityCreationResult = {
|
|
25299
25364
|
entityId: string;
|
|
@@ -25377,6 +25442,14 @@ export declare class EntitiesClient {
|
|
|
25377
25442
|
}): Promise<EntityCreationResult>;
|
|
25378
25443
|
createTopic(req: CreateTopicRequest): Promise<EntityCreationResult>;
|
|
25379
25444
|
createAgent(req: CreateAgentRequest): Promise<EntityCreationResult>;
|
|
25445
|
+
prepareCreateAgent(req: Omit<CreateAgentRequest, "fundWith">): Promise<PreparedEntityCreation>;
|
|
25446
|
+
executeCreateAgent(req: {
|
|
25447
|
+
entityId: string;
|
|
25448
|
+
chain: ChainType;
|
|
25449
|
+
securityMode?: EntitySecurityMode;
|
|
25450
|
+
signedFundingBlob?: string;
|
|
25451
|
+
createTxId?: string;
|
|
25452
|
+
}): Promise<EntityCreationResult>;
|
|
25380
25453
|
launchpad(req: LaunchpadEntityRequest): Promise<LaunchpadEntityResult>;
|
|
25381
25454
|
get(entityId: string): Promise<EntityInfo>;
|
|
25382
25455
|
listByOwner(filter?: ListEntitiesFilter): Promise<ListEntitiesResponse>;
|
|
@@ -25645,7 +25718,7 @@ declare namespace personhood {
|
|
|
25645
25718
|
export { PERSONHOOD_VERIFIER_NOT_CONFIGURED, PersonhoodAttestationMethod, PersonhoodCert, PersonhoodClient, PersonhoodProof, PersonhoodVerifyParams, isPersonhoodVerifierNotConfigured };
|
|
25646
25719
|
}
|
|
25647
25720
|
declare namespace baas {
|
|
25648
|
-
export { AgentBalance, AgentEvent, AgentFundRequest, AgentInfo, AgentOperation, AgentRegisterRequest, AgentRules, AgentRulesValidationResult, AgentStatus, AgentTradeRequest, AgentWithdrawRequest, AgentsClient, AuthenticateOptions, BaasAppListResponse, BaasAuthConfig, BaasAuthResult, BaasChallengeRequest, BaasChallengeResponse, BaasChannelConfig, BaasClient, BaasClientConfig, BaasConnectToClusterConfig, BaasDeleteResult, BaasDeployRequest, BaasDeployResponse, BaasDocument, BaasEndpoints, BaasError, BaasErrorDetails, BaasErrorResponse, BaasFileInfo, BaasFileMetadata, BaasFindResult, BaasFunctionDeployRequest, BaasFunctionDeployResult, BaasFunctionEvalRequest, BaasFunctionInfo, BaasFunctionLog, BaasFunctionLogOptions, BaasFunctionResources, BaasFunctionResult, BaasFunctionRuntime, BaasHistoryOptions, BaasInitRequest, BaasInitResponse, BaasInsertResult, BaasMerkleProof, BaasMessage, BaasPresenceInfo, BaasPresenceMember, BaasPublishResult, BaasQueryOptions, BaasReissuePushCredentialsResponse, BaasRevokeKekResponse, BaasRollbackRequest, BaasRotateKekResponse, BaasRuntimeStatus, BaasService, BaasSessionInfo, BaasSetWebhookResponse, BaasSignedCode, BaasStateTransition, BaasStorageUsage, BaasSupportedChain, BaasTriggerType, BaasUpdateResult, BaasUploadFrontendResponse, BaasUploadResult, BaasVerifyRequest, ChannelSubscription, CreateAccountRequest$1 as BaasCreateAccountRequest, CreateAgentRequest, CreateTokenRequest$1 as CreateTokenRequest, CreateTopicRequest, DatabaseClient, DatabaseStatsResponse, DbComparisonOperator, DbDocument, DbQuery, DeployedApp, DeployedAppInfo, DeployedAppLimits, DeployedAppStatus, DeployedAppUsage, DeploymentClient, DeprecateRuleResponse, DocumentProofResponse, EntitiesClient, EntityCreationResult, EntityInfo, EntitySecurityMode, EntityType$1 as BaasEntityType, FunctionsClient, FundWith, LaunchpadEntityRequest, LaunchpadEntityResult, ListEntitiesFilter, ListEntitiesResponse, ListRulesFilter, ListRulesResponse, MessageHandler, MessagingClient, PreparedEntityCreation, PublishRuleResponse, RulesClient, SimulateRuleRequest, StateRootResponse, StateTransitionsResponse, StorageClient, ValidationResult, VersionHistoryResponse, validateAgentRules };
|
|
25721
|
+
export { AgentBalance, AgentCertification, AgentEvent, AgentFundRequest, AgentInfo, AgentOperation, AgentPendingApprovalResponse, AgentPreparedTransactionResponse, AgentRegisterRequest, AgentRules, AgentRulesValidationResult, AgentStatus, AgentTradeRequest, AgentWithdrawRequest, AgentsClient, AuthenticateOptions, BaasAppListResponse, BaasAuthConfig, BaasAuthResult, BaasChallengeRequest, BaasChallengeResponse, BaasChannelConfig, BaasClient, BaasClientConfig, BaasConnectToClusterConfig, BaasDeleteResult, BaasDeployRequest, BaasDeployResponse, BaasDocument, BaasEndpoints, BaasError, BaasErrorDetails, BaasErrorResponse, BaasFileInfo, BaasFileMetadata, BaasFindResult, BaasFunctionCode, BaasFunctionDeployRequest, BaasFunctionDeployResult, BaasFunctionEvalRequest, BaasFunctionInfo, BaasFunctionLog, BaasFunctionLogOptions, BaasFunctionResources, BaasFunctionResult, BaasFunctionRuntime, BaasHistoryOptions, BaasInitRequest, BaasInitResponse, BaasInsertResult, BaasMerkleProof, BaasMessage, BaasPresenceInfo, BaasPresenceMember, BaasPublishResult, BaasQueryOptions, BaasReissuePushCredentialsResponse, BaasRevokeKekResponse, BaasRollbackRequest, BaasRotateKekResponse, BaasRuntimeStatus, BaasService, BaasSessionInfo, BaasSetWebhookResponse, BaasSignedCode, BaasStateTransition, BaasStorageUsage, BaasSupportedChain, BaasTriggerType, BaasUpdateResult, BaasUploadFrontendResponse, BaasUploadResult, BaasVerifyRequest, ChannelSubscription, CreateAccountRequest$1 as BaasCreateAccountRequest, CreateAgentRequest, CreateTokenRequest$1 as CreateTokenRequest, CreateTopicRequest, DatabaseClient, DatabaseStatsResponse, DbComparisonOperator, DbDocument, DbQuery, DeployedApp, DeployedAppInfo, DeployedAppLimits, DeployedAppStatus, DeployedAppUsage, DeploymentClient, DeprecateRuleResponse, DocumentProofResponse, EntitiesClient, EntityCreationResult, EntityInfo, EntitySecurityMode, EntityType$1 as BaasEntityType, FunctionsClient, FundWith, LaunchpadEntityRequest, LaunchpadEntityResult, ListEntitiesFilter, ListEntitiesResponse, ListRulesFilter, ListRulesResponse, MessageHandler, MessagingClient, PreparedEntityCreation, PublishRuleResponse, RulesClient, SimulateRuleRequest, StateRootResponse, StateTransitionsResponse, StorageClient, ValidationResult, VersionHistoryResponse, isAgentFundPending, validateAgentRules };
|
|
25649
25722
|
}
|
|
25650
25723
|
declare namespace pqcVerify {
|
|
25651
25724
|
export { FetchRegistryOptions, PqcCertV1, PqcCertV1Schema, PqcCertV1Signer, ValidatorRegistrySnapshot, VerifyResult, fetchRegistrySnapshot, parsePqcCert, verifyPqcAttestation };
|
package/dist/index.js
CHANGED
|
@@ -6606,6 +6606,13 @@ var SdkHttpError = class extends Error {
|
|
|
6606
6606
|
}
|
|
6607
6607
|
statusCode;
|
|
6608
6608
|
details;
|
|
6609
|
+
/**
|
|
6610
|
+
* True for transient failures worth retrying: a 5xx, a 429 (rate limit), a 408
|
|
6611
|
+
* (timeout), or a 0 (network/abort). Deterministic 4xx client errors are not.
|
|
6612
|
+
*/
|
|
6613
|
+
get isRetryable() {
|
|
6614
|
+
return this.statusCode === 0 || this.statusCode === 408 || this.statusCode === 429 || this.statusCode >= 500;
|
|
6615
|
+
}
|
|
6609
6616
|
};
|
|
6610
6617
|
function createHttpClient(config) {
|
|
6611
6618
|
const timeout = config.timeout ?? 3e4;
|
|
@@ -6623,6 +6630,10 @@ function createHttpClient(config) {
|
|
|
6623
6630
|
if (opts?.customerToken) {
|
|
6624
6631
|
headers["X-Customer-Session-Token"] = opts.customerToken;
|
|
6625
6632
|
}
|
|
6633
|
+
if (opts?.onBehalfOf) {
|
|
6634
|
+
headers["Authorization"] = `Bearer ${opts.onBehalfOf}`;
|
|
6635
|
+
headers["X-Customer-Session-Claim"] = opts.onBehalfOf;
|
|
6636
|
+
}
|
|
6626
6637
|
if (opts?.headers) {
|
|
6627
6638
|
Object.assign(headers, opts.headers);
|
|
6628
6639
|
}
|
|
@@ -6730,6 +6741,41 @@ function createHttpClient(config) {
|
|
|
6730
6741
|
throw new SdkHttpError(`Network error: ${err.message}`, 0, error);
|
|
6731
6742
|
}
|
|
6732
6743
|
}
|
|
6744
|
+
async function getBinaryWithMeta(path, opts) {
|
|
6745
|
+
const url = `${config.baseUrl}${path}`;
|
|
6746
|
+
const controller = new AbortController();
|
|
6747
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
6748
|
+
try {
|
|
6749
|
+
const response = await fetch(url, {
|
|
6750
|
+
method: "GET",
|
|
6751
|
+
headers: getHeaders(void 0, opts),
|
|
6752
|
+
signal: controller.signal
|
|
6753
|
+
});
|
|
6754
|
+
clearTimeout(timeoutId);
|
|
6755
|
+
if (!response.ok) {
|
|
6756
|
+
const errBody = await response.json().catch(() => ({}));
|
|
6757
|
+
throw new SdkHttpError(
|
|
6758
|
+
errBody.message || `API error: ${response.status} ${response.statusText}`,
|
|
6759
|
+
response.status,
|
|
6760
|
+
errBody
|
|
6761
|
+
);
|
|
6762
|
+
}
|
|
6763
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
6764
|
+
const contentType = response.headers.get("content-type") ?? void 0;
|
|
6765
|
+
const disposition = response.headers.get("content-disposition") ?? "";
|
|
6766
|
+
const match = /filename\*?=(?:UTF-8'')?"?([^"\n;]+)"?/i.exec(disposition);
|
|
6767
|
+
const filename = match ? decodeURIComponent(match[1].trim()) : void 0;
|
|
6768
|
+
return { bytes, contentType, filename };
|
|
6769
|
+
} catch (error) {
|
|
6770
|
+
clearTimeout(timeoutId);
|
|
6771
|
+
if (error instanceof SdkHttpError) throw error;
|
|
6772
|
+
const err = error;
|
|
6773
|
+
if (err.name === "AbortError") {
|
|
6774
|
+
throw new SdkHttpError("Request timeout", 408);
|
|
6775
|
+
}
|
|
6776
|
+
throw new SdkHttpError(`Network error: ${err.message}`, 0, error);
|
|
6777
|
+
}
|
|
6778
|
+
}
|
|
6733
6779
|
async function upload(path, file, filename, metadata, fieldName = "file", opts) {
|
|
6734
6780
|
const url = `${config.baseUrl}${path}`;
|
|
6735
6781
|
const controller = new AbortController();
|
|
@@ -6753,6 +6799,10 @@ function createHttpClient(config) {
|
|
|
6753
6799
|
if (opts?.customerToken) {
|
|
6754
6800
|
headers["X-Customer-Session-Token"] = opts.customerToken;
|
|
6755
6801
|
}
|
|
6802
|
+
if (opts?.onBehalfOf) {
|
|
6803
|
+
headers["Authorization"] = `Bearer ${opts.onBehalfOf}`;
|
|
6804
|
+
headers["X-Customer-Session-Claim"] = opts.onBehalfOf;
|
|
6805
|
+
}
|
|
6756
6806
|
if (opts?.headers) {
|
|
6757
6807
|
Object.assign(headers, opts.headers);
|
|
6758
6808
|
}
|
|
@@ -6810,6 +6860,7 @@ function createHttpClient(config) {
|
|
|
6810
6860
|
delete: (path, opts) => withAuthRetry(path, () => request("DELETE", path, void 0, opts)),
|
|
6811
6861
|
getText: (path, opts) => withAuthRetry(path, () => getText(path, opts)),
|
|
6812
6862
|
getBinary: (path, opts) => withAuthRetry(path, () => getBinary(path, opts)),
|
|
6863
|
+
getBinaryWithMeta: (path, opts) => withAuthRetry(path, () => getBinaryWithMeta(path, opts)),
|
|
6813
6864
|
upload: ((path, file, filename, metadata, fieldName, opts) => withAuthRetry(path, () => upload(path, file, filename, metadata, fieldName, opts))),
|
|
6814
6865
|
setAuthToken,
|
|
6815
6866
|
getAuthToken
|
|
@@ -6830,6 +6881,22 @@ function isRuleRejected(err) {
|
|
|
6830
6881
|
if (!Array.isArray(obj.ruleAtoms)) return false;
|
|
6831
6882
|
return obj.ruleAtoms.every((a) => typeof a === "string");
|
|
6832
6883
|
}
|
|
6884
|
+
function isSmartEngineSdkError(err) {
|
|
6885
|
+
return err instanceof SdkHttpError;
|
|
6886
|
+
}
|
|
6887
|
+
function toHttpError(err) {
|
|
6888
|
+
if (isSmartEngineSdkError(err)) {
|
|
6889
|
+
return {
|
|
6890
|
+
statusCode: err.statusCode >= 400 ? err.statusCode : 502,
|
|
6891
|
+
code: "SDK_HTTP_ERROR",
|
|
6892
|
+
message: err.message,
|
|
6893
|
+
isRetryable: err.isRetryable,
|
|
6894
|
+
details: err.details
|
|
6895
|
+
};
|
|
6896
|
+
}
|
|
6897
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
6898
|
+
return { statusCode: 500, code: "INTERNAL_ERROR", message, isRetryable: false };
|
|
6899
|
+
}
|
|
6833
6900
|
|
|
6834
6901
|
// src/discovery/discovery-client.ts
|
|
6835
6902
|
var DiscoveryClient = class {
|
|
@@ -8567,6 +8634,9 @@ function isPositiveDecimalString(value) {
|
|
|
8567
8634
|
}
|
|
8568
8635
|
|
|
8569
8636
|
// src/baas/agents/index.ts
|
|
8637
|
+
function isAgentFundPending(r) {
|
|
8638
|
+
return "pendingOpId" in r;
|
|
8639
|
+
}
|
|
8570
8640
|
var AgentsClient = class {
|
|
8571
8641
|
constructor(http) {
|
|
8572
8642
|
this.http = http;
|
|
@@ -8585,9 +8655,12 @@ var AgentsClient = class {
|
|
|
8585
8655
|
return this.http.get("/api/v3/baas/agents", opts);
|
|
8586
8656
|
}
|
|
8587
8657
|
/**
|
|
8588
|
-
* Fund agent treasury (owner-only).
|
|
8658
|
+
* Fund agent treasury (owner-only). Normally returns a
|
|
8589
8659
|
* `PreparedTransactionResponse` wrapped in a `success: true` envelope —
|
|
8590
|
-
* the caller is expected to sign and submit the prepared bytes.
|
|
8660
|
+
* the caller is expected to sign and submit the prepared bytes. When the
|
|
8661
|
+
* amount trips an approval-required rule the host instead returns an
|
|
8662
|
+
* {@link AgentPendingApprovalResponse}; discriminate with
|
|
8663
|
+
* {@link isAgentFundPending}.
|
|
8591
8664
|
*/
|
|
8592
8665
|
async fund(agentId, request, opts) {
|
|
8593
8666
|
return this.http.post(`/api/v3/baas/agents/${encodePathParam(agentId)}/fund`, request, opts);
|
|
@@ -8626,6 +8699,14 @@ var AgentsClient = class {
|
|
|
8626
8699
|
async revoke(agentId, opts) {
|
|
8627
8700
|
return this.http.post(`/api/v3/baas/agents/${encodePathParam(agentId)}/revoke`, {}, opts);
|
|
8628
8701
|
}
|
|
8702
|
+
/**
|
|
8703
|
+
* Get an agent's certification snapshot (identity, rule refs, BLS group key,
|
|
8704
|
+
* and recent on-chain activity). A 404 throws `SdkHttpError` via `http.get`
|
|
8705
|
+
* — parity with {@link get}.
|
|
8706
|
+
*/
|
|
8707
|
+
async certification(agentId, opts) {
|
|
8708
|
+
return this.http.get(`/api/v3/baas/agents/${encodePathParam(agentId)}/certification`, opts);
|
|
8709
|
+
}
|
|
8629
8710
|
/**
|
|
8630
8711
|
* Update agent rules.
|
|
8631
8712
|
*
|
|
@@ -10497,10 +10578,11 @@ function createAnthropicProvider(opts) {
|
|
|
10497
10578
|
}
|
|
10498
10579
|
|
|
10499
10580
|
// src/ai/openai.ts
|
|
10500
|
-
var
|
|
10581
|
+
var DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
10501
10582
|
var DEFAULT_MAX_TOKENS2 = 1024;
|
|
10502
10583
|
function createOpenAiProvider(opts) {
|
|
10503
10584
|
const { apiKey, model } = opts;
|
|
10585
|
+
const url = `${(opts.baseURL ?? DEFAULT_OPENAI_BASE_URL).replace(/\/+$/, "")}/chat/completions`;
|
|
10504
10586
|
return {
|
|
10505
10587
|
provider: "openai",
|
|
10506
10588
|
async infer(args) {
|
|
@@ -10514,11 +10596,13 @@ function createOpenAiProvider(opts) {
|
|
|
10514
10596
|
let res;
|
|
10515
10597
|
try {
|
|
10516
10598
|
res = await fetchWithTimeout(
|
|
10517
|
-
|
|
10599
|
+
url,
|
|
10518
10600
|
{
|
|
10519
10601
|
method: "POST",
|
|
10520
10602
|
headers: {
|
|
10521
|
-
|
|
10603
|
+
// Auth only when a key is supplied — a keyless local server (Ollama)
|
|
10604
|
+
// rejects a bogus Bearer header.
|
|
10605
|
+
...apiKey ? { Authorization: `Bearer ${apiKey}` } : {},
|
|
10522
10606
|
"content-type": "application/json"
|
|
10523
10607
|
},
|
|
10524
10608
|
body: JSON.stringify({
|
|
@@ -10603,14 +10687,14 @@ function createGeminiProvider(opts) {
|
|
|
10603
10687
|
|
|
10604
10688
|
// src/ai/factory.ts
|
|
10605
10689
|
function createModelProvider(opts) {
|
|
10606
|
-
const { provider, apiKey, model } = opts;
|
|
10690
|
+
const { provider, apiKey, model, baseURL } = opts;
|
|
10607
10691
|
switch (provider) {
|
|
10608
10692
|
case "anthropic":
|
|
10609
|
-
return createAnthropicProvider({ apiKey, model });
|
|
10693
|
+
return createAnthropicProvider({ apiKey: apiKey ?? "", model });
|
|
10610
10694
|
case "openai":
|
|
10611
|
-
return createOpenAiProvider({ apiKey, model });
|
|
10695
|
+
return createOpenAiProvider({ apiKey, model, baseURL });
|
|
10612
10696
|
case "gemini":
|
|
10613
|
-
return createGeminiProvider({ apiKey, model });
|
|
10697
|
+
return createGeminiProvider({ apiKey: apiKey ?? "", model });
|
|
10614
10698
|
default: {
|
|
10615
10699
|
const never = provider;
|
|
10616
10700
|
throw new Error(`Unsupported model provider: ${String(never)}`);
|
|
@@ -10675,10 +10759,10 @@ function extractJson(raw) {
|
|
|
10675
10759
|
);
|
|
10676
10760
|
}
|
|
10677
10761
|
async function inferJson(opts) {
|
|
10678
|
-
const { provider, apiKey, model, system, input, maxTokens, timeoutMs, signal, parse } = opts;
|
|
10762
|
+
const { provider, apiKey, model, baseURL, system, input, maxTokens, timeoutMs, signal, parse } = opts;
|
|
10679
10763
|
let client;
|
|
10680
10764
|
try {
|
|
10681
|
-
client = createModelProvider({ provider, apiKey, model });
|
|
10765
|
+
client = createModelProvider({ provider, apiKey, model, baseURL });
|
|
10682
10766
|
} catch (err) {
|
|
10683
10767
|
return { ok: false, error: errMsg(err) };
|
|
10684
10768
|
}
|
|
@@ -10740,6 +10824,7 @@ __export(baas_exports, {
|
|
|
10740
10824
|
MessagingClient: () => MessagingClient,
|
|
10741
10825
|
RulesClient: () => RulesClient,
|
|
10742
10826
|
StorageClient: () => StorageClient,
|
|
10827
|
+
isAgentFundPending: () => isAgentFundPending,
|
|
10743
10828
|
validateAgentRules: () => validateAgentRules
|
|
10744
10829
|
});
|
|
10745
10830
|
|
|
@@ -10893,6 +10978,20 @@ var StorageClient = class {
|
|
|
10893
10978
|
const appId = this.getAppId();
|
|
10894
10979
|
return this.http.getBinary(`/api/v3/baas/storage/${encodePathParam(appId)}/download/${encodePathParam(cid)}`, opts);
|
|
10895
10980
|
}
|
|
10981
|
+
/**
|
|
10982
|
+
* Download a file by CID WITH its response metadata — the raw bytes plus the
|
|
10983
|
+
* host-supplied `contentType` (derived from the stored file's metadata) and,
|
|
10984
|
+
* when present, the `filename`. Use this instead of {@link download} when the
|
|
10985
|
+
* caller must echo the content-type back to its own client; a bytes-only
|
|
10986
|
+
* download cannot recover it.
|
|
10987
|
+
*/
|
|
10988
|
+
async downloadWithMeta(cid, opts) {
|
|
10989
|
+
const appId = this.getAppId();
|
|
10990
|
+
return this.http.getBinaryWithMeta(
|
|
10991
|
+
`/api/v3/baas/storage/${encodePathParam(appId)}/download/${encodePathParam(cid)}`,
|
|
10992
|
+
opts
|
|
10993
|
+
);
|
|
10994
|
+
}
|
|
10896
10995
|
/**
|
|
10897
10996
|
* Get file metadata
|
|
10898
10997
|
*/
|
|
@@ -11015,6 +11114,16 @@ var FunctionsClient = class {
|
|
|
11015
11114
|
opts
|
|
11016
11115
|
);
|
|
11017
11116
|
}
|
|
11117
|
+
/**
|
|
11118
|
+
* Get a function's source code
|
|
11119
|
+
*/
|
|
11120
|
+
async getCode(functionId, opts) {
|
|
11121
|
+
const appId = this.getAppId();
|
|
11122
|
+
return this.http.get(
|
|
11123
|
+
`/api/v3/baas/functions/${encodePathParam(appId)}/${encodePathParam(functionId)}/code`,
|
|
11124
|
+
opts
|
|
11125
|
+
);
|
|
11126
|
+
}
|
|
11018
11127
|
/**
|
|
11019
11128
|
* Update a function
|
|
11020
11129
|
*/
|
|
@@ -11596,6 +11705,44 @@ var EntitiesClient = class _EntitiesClient {
|
|
|
11596
11705
|
async createAgent(req) {
|
|
11597
11706
|
return this.http.post("/api/v3/baas/entities/createAgent", req);
|
|
11598
11707
|
}
|
|
11708
|
+
/**
|
|
11709
|
+
* PREPARE half of the payer-funded agent-create flow.
|
|
11710
|
+
*
|
|
11711
|
+
* POSTs `/api/v3/baas/entities/prepare-create` with `entityType: 'agent'`. The cluster
|
|
11712
|
+
* runs the per-entity DKG (persists the binding, submits nothing on-chain) and
|
|
11713
|
+
* returns the unsigned payer-funding `Payment`(s) the caller signs + submits with
|
|
11714
|
+
* their own wallet — mirroring `prepareCreateAccount`. The agent's primary chain
|
|
11715
|
+
* is relayed as `chain` (the generic prepare/execute DTO key) so the host's
|
|
11716
|
+
* chain-bound preparer runs; `name` / `agentType` / `ruleRef` ride along.
|
|
11717
|
+
*/
|
|
11718
|
+
async prepareCreateAgent(req) {
|
|
11719
|
+
const { primaryChain, ...rest } = req;
|
|
11720
|
+
return this.http.post("/api/v3/baas/entities/prepare-create", {
|
|
11721
|
+
entityType: "agent",
|
|
11722
|
+
chain: primaryChain,
|
|
11723
|
+
...rest
|
|
11724
|
+
});
|
|
11725
|
+
}
|
|
11726
|
+
/**
|
|
11727
|
+
* EXECUTE half of the payer-funded agent-create flow.
|
|
11728
|
+
*
|
|
11729
|
+
* POSTs `/api/v3/baas/entities/execute-create` with `entityType: 'agent'`. The entity
|
|
11730
|
+
* already exists (its DKG ran during prepare); pass `signedFundingBlob` for the
|
|
11731
|
+
* validator to submit the payer's signed funding tx (XRPL/Stellar account-model
|
|
11732
|
+
* relay), or omit it when the caller already submitted the funding tx themselves.
|
|
11733
|
+
* `createTxId` is the Hedera receipt thread (the prepared create's
|
|
11734
|
+
* `transactionId`); ignored for non-Hedera chains. Mirrors
|
|
11735
|
+
* `executeCreateAccount` but tags `entityType: 'agent'`.
|
|
11736
|
+
*/
|
|
11737
|
+
async executeCreateAgent(req) {
|
|
11738
|
+
const { createTxId, signedFundingBlob, ...rest } = req;
|
|
11739
|
+
return this.http.post("/api/v3/baas/entities/execute-create", {
|
|
11740
|
+
...rest,
|
|
11741
|
+
...createTxId !== void 0 ? { createTxId } : {},
|
|
11742
|
+
...signedFundingBlob !== void 0 ? { signedFundingBlob } : {},
|
|
11743
|
+
entityType: "agent"
|
|
11744
|
+
});
|
|
11745
|
+
}
|
|
11599
11746
|
/**
|
|
11600
11747
|
* Mega-helper: build a token rule with a launchpad ModuleEntry attached,
|
|
11601
11748
|
* publish it, create the token, and return the combined result in one HTTP
|
|
@@ -13883,9 +14030,11 @@ exports.forToken = forToken;
|
|
|
13883
14030
|
exports.forTopic = forTopic;
|
|
13884
14031
|
exports.governance = governance_exports;
|
|
13885
14032
|
exports.inferJson = inferJson;
|
|
14033
|
+
exports.isAgentFundPending = isAgentFundPending;
|
|
13886
14034
|
exports.isKnownNetwork = isKnownNetwork;
|
|
13887
14035
|
exports.isPersonhoodVerifierNotConfigured = isPersonhoodVerifierNotConfigured;
|
|
13888
14036
|
exports.isRuleRejected = isRuleRejected;
|
|
14037
|
+
exports.isSmartEngineSdkError = isSmartEngineSdkError;
|
|
13889
14038
|
exports.managedAccount = managedAccount;
|
|
13890
14039
|
exports.membershipNft = membershipNft;
|
|
13891
14040
|
exports.module_ = module_;
|
|
@@ -13909,6 +14058,7 @@ exports.subscriptionNft = subscriptionNft;
|
|
|
13909
14058
|
exports.systemTopic = systemTopic;
|
|
13910
14059
|
exports.template = template;
|
|
13911
14060
|
exports.tieredIDO = tieredIDO;
|
|
14061
|
+
exports.toHttpError = toHttpError;
|
|
13912
14062
|
exports.tokenDAO = tokenDAO;
|
|
13913
14063
|
exports.tokens = tokens_exports;
|
|
13914
14064
|
exports.tradingAgent = tradingAgent;
|