@bytexbyte/nxtlinq-ai-agent-sdk 1.0.8 → 1.1.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.
@@ -0,0 +1,3 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ export default function useLocalStorage<T>(key: string, defaultValue: T): [T, Dispatch<SetStateAction<T>>, boolean];
3
+ //# sourceMappingURL=useLocalStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../../src/core/lib/useLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,OAAO,CAAC;AAEtE,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAoBlH"}
@@ -0,0 +1,18 @@
1
+ import { useEffect, useState } from 'react';
2
+ export default function useLocalStorage(key, defaultValue) {
3
+ const [storedValue, setStoredValue] = useState(defaultValue);
4
+ const [isInitialized, setIsInitialized] = useState(false);
5
+ useEffect(() => {
6
+ const storageValue = localStorage.getItem(key);
7
+ if (storageValue) {
8
+ setStoredValue(JSON.parse(storageValue));
9
+ }
10
+ setIsInitialized(true);
11
+ }, [key]);
12
+ useEffect(() => {
13
+ if (isInitialized) {
14
+ localStorage.setItem(key, JSON.stringify(storedValue));
15
+ }
16
+ }, [storedValue, isInitialized, key]);
17
+ return [storedValue, setStoredValue, isInitialized];
18
+ }
@@ -0,0 +1,4 @@
1
+ import { MetaKeep } from 'metakeep';
2
+ declare const metakeepClient: MetaKeep;
3
+ export default metakeepClient;
4
+ //# sourceMappingURL=metakeepClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metakeepClient.d.ts","sourceRoot":"","sources":["../../src/core/metakeepClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,QAAA,MAAM,cAAc,UAQlB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { MetaKeep } from 'metakeep';
2
+ const metakeepClient = new MetaKeep({
3
+ appId: 'e7d521f7-3eea-42d7-af42-4d8b962d9a6d',
4
+ chainId: 80002,
5
+ /* RPC node urls map */
6
+ rpcNodeUrls: {
7
+ // Update with your node API key
8
+ 80002: 'https://rpc-amoy.polygon.technology'
9
+ }
10
+ });
11
+ export default metakeepClient;
@@ -0,0 +1,14 @@
1
+ import { NxtlinqAITSDK } from '../index';
2
+ import { AITInfo, WalletInfo } from '../types/ait-api';
3
+ export declare function useNxtlinqAIT(sdk: NxtlinqAITSDK): {
4
+ walletAddress: string | null;
5
+ walletInfo: WalletInfo | null;
6
+ ait: AITInfo | null;
7
+ isLoading: boolean;
8
+ error: string | null;
9
+ connectWallet: () => Promise<void>;
10
+ verifyWallet: (token: string, method: string) => Promise<WalletInfo>;
11
+ signInWithWallet: () => Promise<string>;
12
+ generateAndRegisterAIT: (permissions: string[]) => Promise<AITInfo>;
13
+ };
14
+ //# sourceMappingURL=useNxtlinqAIT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNxtlinqAIT.d.ts","sourceRoot":"","sources":["../../src/hooks/useNxtlinqAIT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa;;;;;;;0BAoBX,MAAM,UAAU,MAAM;;0CA6BN,MAAM,EAAE;EA6C5D"}
@@ -0,0 +1,98 @@
1
+ import { useEffect, useState } from 'react';
2
+ export function useNxtlinqAIT(sdk) {
3
+ const [walletAddress, setWalletAddress] = useState(null);
4
+ const [walletInfo, setWalletInfo] = useState(null);
5
+ const [ait, setAit] = useState(null);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const connectWallet = async () => {
9
+ try {
10
+ setIsLoading(true);
11
+ setError(null);
12
+ const address = await sdk.connectWallet();
13
+ setWalletAddress(address);
14
+ }
15
+ catch (err) {
16
+ setError(err instanceof Error ? err.message : 'Failed to connect wallet');
17
+ }
18
+ finally {
19
+ setIsLoading(false);
20
+ }
21
+ };
22
+ const verifyWallet = async (token, method) => {
23
+ try {
24
+ setIsLoading(true);
25
+ setError(null);
26
+ const info = await sdk.verifyWallet(token, method);
27
+ setWalletInfo(info);
28
+ return info;
29
+ }
30
+ catch (err) {
31
+ setError(err instanceof Error ? err.message : 'Failed to verify wallet');
32
+ throw err;
33
+ }
34
+ finally {
35
+ setIsLoading(false);
36
+ }
37
+ };
38
+ const signInWithWallet = async () => {
39
+ try {
40
+ setIsLoading(true);
41
+ setError(null);
42
+ const token = await sdk.signInWithWallet();
43
+ return token;
44
+ }
45
+ catch (err) {
46
+ setError(err instanceof Error ? err.message : 'Failed to sign in with wallet');
47
+ throw err;
48
+ }
49
+ finally {
50
+ setIsLoading(false);
51
+ }
52
+ };
53
+ const generateAndRegisterAIT = async (permissions) => {
54
+ try {
55
+ setIsLoading(true);
56
+ setError(null);
57
+ const aitInfo = await sdk.generateAndRegisterAIT(permissions);
58
+ setAit(aitInfo);
59
+ return aitInfo;
60
+ }
61
+ catch (err) {
62
+ setError(err instanceof Error ? err.message : 'Failed to generate AIT');
63
+ throw err;
64
+ }
65
+ finally {
66
+ setIsLoading(false);
67
+ }
68
+ };
69
+ useEffect(() => {
70
+ const loadData = async () => {
71
+ if (walletAddress) {
72
+ try {
73
+ const [walletInfo, aitInfo] = await Promise.all([
74
+ sdk.getWalletInfo(),
75
+ sdk.getAIT()
76
+ ]);
77
+ setWalletInfo(walletInfo);
78
+ setAit(aitInfo);
79
+ }
80
+ catch (err) {
81
+ console.error('Failed to load wallet info or AIT:', err);
82
+ }
83
+ }
84
+ };
85
+ loadData();
86
+ }, [walletAddress, sdk]);
87
+ return {
88
+ walletAddress,
89
+ walletInfo,
90
+ ait,
91
+ isLoading,
92
+ error,
93
+ connectWallet,
94
+ verifyWallet,
95
+ signInWithWallet,
96
+ generateAndRegisterAIT
97
+ };
98
+ }
@@ -0,0 +1,114 @@
1
+ import { ethers } from 'ethers';
2
+ import { AITInfo, AITMetadata, PermissionGroup, PermissionOption, WalletInfo, CreateAITParams, CreateMetadataParams, VerifyWalletParams, SignInParams } from './types/ait-api';
3
+ export { ChatBot } from './components/ChatBot';
4
+ export type { Message, PresetMessage, ToolUse, ChatBotProps } from './components/ChatBot';
5
+ export type { AITInfo, AITMetadata, PermissionGroup, PermissionOption, WalletInfo, CreateAITParams, CreateMetadataParams, VerifyWalletParams, SignInParams };
6
+ export interface AITPermission {
7
+ hasPermission: boolean;
8
+ reason?: string;
9
+ permissions?: string[];
10
+ }
11
+ export interface AIT {
12
+ aitId: string;
13
+ controller: string;
14
+ metadata: AITMetadata;
15
+ metadataHash: string;
16
+ metadataCid: string;
17
+ signature: string;
18
+ }
19
+ export interface GenerateAITOptions {
20
+ hitAddress: string;
21
+ signer: ethers.Signer;
22
+ permissions: string[];
23
+ serviceId: string;
24
+ }
25
+ export interface MessageResponse {
26
+ reply: string;
27
+ timestamp: string;
28
+ }
29
+ export declare class NxtlinqAITSDK {
30
+ private serviceId;
31
+ private signer;
32
+ private walletAddress;
33
+ private api;
34
+ constructor(serviceId: string, apiKey: string, apiSecret: string);
35
+ connectWallet(): Promise<string>;
36
+ verifyWallet(token: string, method: string): Promise<WalletInfo>;
37
+ signInWithWallet(): Promise<string>;
38
+ generateAndRegisterAIT(permissions: string[]): Promise<AITInfo>;
39
+ getAIT(): Promise<AITInfo | null>;
40
+ getWalletInfo(): Promise<WalletInfo | null>;
41
+ createPermissionForm(permissionGroups: PermissionGroup[]): PermissionGroup[];
42
+ getSelectedPermissions(form: PermissionGroup[]): string[];
43
+ }
44
+ export declare class NxtlinqAIAgent {
45
+ private projectId;
46
+ private apiKey?;
47
+ private ait?;
48
+ private permissions;
49
+ private signer?;
50
+ private api;
51
+ constructor(projectId: string, apiKey: string, apiSecret: string);
52
+ setAIT(ait: AIT, signer?: ethers.Signer): void;
53
+ private hasPermission;
54
+ private checkAITPermission;
55
+ generateAIT(options: GenerateAITOptions): Promise<AIT>;
56
+ getAITInfo(serviceId: string, controller: string, signer?: ethers.Signer): Promise<AIT | null>;
57
+ sendMessage(message: string, toolName?: string): Promise<MessageResponse>;
58
+ }
59
+ export interface AITApi {
60
+ ait: {
61
+ getAITByServiceIdAndController: (params: {
62
+ serviceId: string;
63
+ controller: string;
64
+ }, token: string) => Promise<AITInfo | {
65
+ error: string;
66
+ }>;
67
+ createAIT: (params: CreateAITParams, token: string) => Promise<AITInfo | {
68
+ error: string;
69
+ }>;
70
+ };
71
+ wallet: {
72
+ verifyWallet: (params: VerifyWalletParams, token: string) => Promise<WalletInfo | {
73
+ error: string;
74
+ }>;
75
+ getWallet: (params: {
76
+ address: string;
77
+ }, token: string) => Promise<WalletInfo | {
78
+ error: string;
79
+ }>;
80
+ };
81
+ metadata: {
82
+ createMetadata: (metadata: CreateMetadataParams, token: string) => Promise<{
83
+ metadataCid: string;
84
+ } | {
85
+ error: string;
86
+ }>;
87
+ };
88
+ auth: {
89
+ getNonce: (params: {
90
+ address: string;
91
+ }) => Promise<{
92
+ code: string;
93
+ timestamp: number;
94
+ } | {
95
+ error: string;
96
+ }>;
97
+ signIn: (params: SignInParams) => Promise<{
98
+ accessToken: string;
99
+ } | {
100
+ error: string;
101
+ }>;
102
+ };
103
+ agent: {
104
+ sendMessage: (params: {
105
+ message: string;
106
+ projectId: string;
107
+ }) => Promise<{
108
+ reply: string;
109
+ } | {
110
+ error: string;
111
+ }>;
112
+ };
113
+ }
114
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/K,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1F,YAAY,EACV,OAAO,EACP,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACb,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,GAAG,CAAS;gBAER,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAK1D,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAWhC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBhE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IA+BnC,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA4D/D,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAsBjC,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBjD,oBAAoB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAU5E,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE;CAK1D;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAM;IAClB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,GAAG,CAAS;gBAER,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMhE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM;YAQzB,aAAa;YAOb,kBAAkB;IA+B1B,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAgEtD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IA6B9F,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAqChF;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE;QACH,8BAA8B,EAAE,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3I,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7F,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrG,SAAS,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpG,CAAC;IACF,QAAQ,EAAE;QACR,cAAc,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzH,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5G,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,CAAC;IACF,KAAK,EAAE;QACL,WAAW,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjH,CAAC;CACH"}
package/dist/index.js CHANGED
@@ -1,131 +1,6 @@
1
1
  import { ethers } from 'ethers';
2
2
  import stringify from 'json-stable-stringify';
3
- const AI_AGENT_API_HOST = 'https://ai-agent.nxtlinq.ai';
4
- const AIT_SERVICE_API_HOST = 'https://staging-ait-service.nxtlinq.ai';
5
- export const createNxtlinqApi = (apiKey, apiSecret) => {
6
- const getAuthHeader = () => {
7
- const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
8
- return token ? { 'Authorization': `Bearer ${JSON.parse(token)}` } : {};
9
- };
10
- return {
11
- ait: {
12
- getAITByServiceIdAndController: async (params, token) => {
13
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/ait/service/${params.serviceId}/controller/${params.controller}`, {
14
- method: 'GET',
15
- headers: {
16
- 'X-API-Key': apiKey,
17
- 'X-API-Secret': apiSecret,
18
- ...getAuthHeader()
19
- }
20
- });
21
- return response.json();
22
- },
23
- createAIT: async (params, token) => {
24
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/ait`, {
25
- method: 'POST',
26
- headers: {
27
- 'X-API-Key': apiKey,
28
- 'X-API-Secret': apiSecret,
29
- 'Content-Type': 'application/json',
30
- ...getAuthHeader()
31
- },
32
- body: JSON.stringify(params)
33
- });
34
- return response.json();
35
- }
36
- },
37
- wallet: {
38
- verifyWallet: async (params, token) => {
39
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/wallet`, {
40
- method: 'POST',
41
- headers: {
42
- 'X-API-Key': apiKey,
43
- 'X-API-Secret': apiSecret,
44
- 'Content-Type': 'application/json',
45
- ...getAuthHeader()
46
- },
47
- body: JSON.stringify(params)
48
- });
49
- return response.json();
50
- },
51
- getWallet: async (params, token) => {
52
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/wallet/address/${params.address}`, {
53
- method: 'GET',
54
- headers: {
55
- 'X-API-Key': apiKey,
56
- 'X-API-Secret': apiSecret,
57
- ...getAuthHeader()
58
- }
59
- });
60
- return response.json();
61
- }
62
- },
63
- metadata: {
64
- createMetadata: async (metadata, token) => {
65
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/metadata`, {
66
- method: 'POST',
67
- headers: {
68
- 'X-API-Key': apiKey,
69
- 'X-API-Secret': apiSecret,
70
- 'Content-Type': 'application/json',
71
- ...getAuthHeader()
72
- },
73
- body: JSON.stringify(metadata)
74
- });
75
- return response.json();
76
- }
77
- },
78
- auth: {
79
- getNonce: async (params) => {
80
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/auth/address/${params.address}/nonce`, {
81
- method: 'GET',
82
- headers: {
83
- 'X-API-Key': apiKey,
84
- 'X-API-Secret': apiSecret,
85
- ...getAuthHeader()
86
- }
87
- });
88
- return response.json();
89
- },
90
- signIn: async (params) => {
91
- const response = await fetch(`${AIT_SERVICE_API_HOST}/api/auth`, {
92
- method: 'POST',
93
- headers: {
94
- 'X-API-Key': apiKey,
95
- 'X-API-Secret': apiSecret,
96
- 'Content-Type': 'application/json',
97
- ...getAuthHeader()
98
- },
99
- body: JSON.stringify(params)
100
- });
101
- return response.json();
102
- }
103
- },
104
- agent: {
105
- sendMessage: async (params) => {
106
- try {
107
- const response = await fetch(`${AI_AGENT_API_HOST}/api/agent/message`, {
108
- method: 'POST',
109
- headers: {
110
- 'X-API-Key': apiKey,
111
- 'X-API-Secret': apiSecret,
112
- 'Content-Type': 'application/json',
113
- ...getAuthHeader()
114
- },
115
- body: JSON.stringify(params)
116
- });
117
- if (!response.ok) {
118
- throw new Error('发送消息失败');
119
- }
120
- return await response.json();
121
- }
122
- catch (error) {
123
- return { error: error instanceof Error ? error.message : '发送消息失败' };
124
- }
125
- }
126
- }
127
- };
128
- };
3
+ import { createNxtlinqApi } from './api/nxtlinq-api';
129
4
  export { ChatBot } from './components/ChatBot';
130
5
  export class NxtlinqAITSDK {
131
6
  constructor(serviceId, apiKey, apiSecret) {
@@ -188,7 +63,7 @@ export class NxtlinqAITSDK {
188
63
  }
189
64
  const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
190
65
  if (!token) {
191
- throw new Error('未找到访问令牌');
66
+ throw new Error('Access token not found');
192
67
  }
193
68
  const timestamp = Math.floor(Date.now() / 1000);
194
69
  const aitId = `did:polygon:ike-dashboard:${this.walletAddress}:${timestamp}`;
@@ -232,7 +107,7 @@ export class NxtlinqAITSDK {
232
107
  }
233
108
  const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
234
109
  if (!token) {
235
- throw new Error('未找到访问令牌');
110
+ throw new Error('Access token not found');
236
111
  }
237
112
  const response = await this.api.ait.getAITByServiceIdAndController({
238
113
  serviceId: this.serviceId,
@@ -249,7 +124,7 @@ export class NxtlinqAITSDK {
249
124
  }
250
125
  const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
251
126
  if (!token) {
252
- throw new Error('未找到访问令牌');
127
+ throw new Error('Access token not found');
253
128
  }
254
129
  const response = await this.api.wallet.getWallet({ address: this.walletAddress }, token);
255
130
  if ('error' in response) {
@@ -286,7 +161,7 @@ export class NxtlinqAIAgent {
286
161
  }
287
162
  async hasPermission(toolName) {
288
163
  if (!this.ait) {
289
- throw new Error('请先连接钱包以访问权限');
164
+ throw new Error('Please connect wallet first to access permissions');
290
165
  }
291
166
  return this.permissions.includes(toolName);
292
167
  }
@@ -295,7 +170,7 @@ export class NxtlinqAIAgent {
295
170
  if (!this.ait) {
296
171
  return {
297
172
  hasPermission: false,
298
- reason: '请先连接钱包以访问权限'
173
+ reason: 'Please connect wallet first to access permissions'
299
174
  };
300
175
  }
301
176
  if (!toolName) {
@@ -307,14 +182,14 @@ export class NxtlinqAIAgent {
307
182
  const hasPermission = await this.hasPermission(toolName);
308
183
  return {
309
184
  hasPermission,
310
- reason: hasPermission ? undefined : '没有权限使用该工具',
185
+ reason: hasPermission ? undefined : 'No permission to use this tool',
311
186
  permissions: this.permissions
312
187
  };
313
188
  }
314
189
  catch (error) {
315
190
  return {
316
191
  hasPermission: false,
317
- reason: error instanceof Error ? error.message : '未知错误',
192
+ reason: error instanceof Error ? error.message : 'Unknown error',
318
193
  permissions: this.permissions
319
194
  };
320
195
  }
@@ -323,7 +198,7 @@ export class NxtlinqAIAgent {
323
198
  const { hitAddress, signer, permissions, serviceId } = options;
324
199
  const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
325
200
  if (!token) {
326
- throw new Error('未找到访问令牌');
201
+ throw new Error('Access token not found');
327
202
  }
328
203
  const timestamp = Math.floor(Date.now() / 1000);
329
204
  const aitId = `did:polygon:ike-dashboard:${hitAddress}:${timestamp}`;
@@ -371,7 +246,7 @@ export class NxtlinqAIAgent {
371
246
  async getAITInfo(serviceId, controller, signer) {
372
247
  const token = localStorage.getItem('nxtlinqAITServiceAccessToken');
373
248
  if (!token) {
374
- throw new Error('未找到访问令牌');
249
+ throw new Error('Access token not found');
375
250
  }
376
251
  const response = await this.api.ait.getAITByServiceIdAndController({
377
252
  serviceId,
@@ -395,10 +270,10 @@ export class NxtlinqAIAgent {
395
270
  async sendMessage(message, toolName) {
396
271
  const permission = await this.checkAITPermission(toolName);
397
272
  if (!permission.hasPermission) {
398
- throw new Error(permission.reason || '没有权限使用该工具');
273
+ throw new Error(permission.reason || 'No permission to use this tool');
399
274
  }
400
275
  if (!this.ait || !this.signer) {
401
- throw new Error('请先连接钱包以访问权限');
276
+ throw new Error('Please connect wallet first to access permissions');
402
277
  }
403
278
  const timestamp = Math.floor(Date.now() / 1000);
404
279
  const stringToSign = stringify({
@@ -413,7 +288,7 @@ export class NxtlinqAIAgent {
413
288
  const signature = await this.signer.signMessage(stringToSign);
414
289
  const response = await this.api.agent.sendMessage({
415
290
  message,
416
- serviceId: this.projectId,
291
+ projectId: this.projectId,
417
292
  });
418
293
  if ('error' in response) {
419
294
  throw new Error(response.error);
@@ -0,0 +1,127 @@
1
+ export interface AIT {
2
+ aitId: string;
3
+ controller: string;
4
+ metadata: AITMetadata;
5
+ metadataHash: string;
6
+ metadataCid: string;
7
+ signature: string;
8
+ }
9
+ export interface AITMetadata {
10
+ model: string;
11
+ permissions: string[];
12
+ issuedBy: string;
13
+ serviceId?: string;
14
+ }
15
+ export interface AITInfo {
16
+ aitId: string;
17
+ controller: string;
18
+ metadata: AITMetadata;
19
+ metadataHash: string;
20
+ metadataCid: string;
21
+ signature: string;
22
+ }
23
+ export interface WalletInfo {
24
+ id: string;
25
+ address: string;
26
+ verified: boolean;
27
+ method?: string;
28
+ }
29
+ export interface PermissionGroup {
30
+ label: string;
31
+ options: PermissionOption[];
32
+ }
33
+ export interface PermissionOption {
34
+ label: string;
35
+ value: string;
36
+ isChecked: boolean;
37
+ }
38
+ export interface CreateAITParams {
39
+ aitId: string;
40
+ controller: string;
41
+ serviceId: string;
42
+ metadataHash: string;
43
+ metadataCid: string;
44
+ timestamp: number;
45
+ signature: string;
46
+ }
47
+ export interface CreateMetadataParams extends AITMetadata {
48
+ controller: string;
49
+ }
50
+ export interface VerifyWalletParams {
51
+ address: string;
52
+ token: string;
53
+ method: string;
54
+ timestamp: number;
55
+ }
56
+ export interface SignInParams {
57
+ address: string;
58
+ code: string;
59
+ timestamp: number;
60
+ signature: string;
61
+ }
62
+ export interface MessageContext {
63
+ aitId?: string;
64
+ walletAddress?: string | null;
65
+ }
66
+ export interface SendMessageParams {
67
+ message: string;
68
+ projectId?: string;
69
+ serviceId: string;
70
+ context: MessageContext;
71
+ }
72
+ export interface AITApi {
73
+ ait: {
74
+ getAITByServiceIdAndController: (params: {
75
+ serviceId: string;
76
+ controller: string;
77
+ }, token: string) => Promise<AITInfo | {
78
+ error: string;
79
+ }>;
80
+ createAIT: (params: CreateAITParams, token: string) => Promise<AITInfo | {
81
+ error: string;
82
+ }>;
83
+ };
84
+ wallet: {
85
+ verifyWallet: (params: VerifyWalletParams, token: string) => Promise<WalletInfo | {
86
+ error: string;
87
+ }>;
88
+ getWallet: (params: {
89
+ address: string;
90
+ }, token: string) => Promise<WalletInfo | {
91
+ error: string;
92
+ }>;
93
+ };
94
+ metadata: {
95
+ createMetadata: (metadata: CreateMetadataParams, token: string) => Promise<{
96
+ metadataCid: string;
97
+ } | {
98
+ error: string;
99
+ }>;
100
+ };
101
+ auth: {
102
+ getNonce: (params: {
103
+ address: string;
104
+ }) => Promise<{
105
+ code: string;
106
+ timestamp: number;
107
+ } | {
108
+ error: string;
109
+ }>;
110
+ signIn: (params: SignInParams) => Promise<{
111
+ accessToken: string;
112
+ } | {
113
+ error: string;
114
+ }>;
115
+ };
116
+ agent: {
117
+ sendMessage: (params: {
118
+ message: string;
119
+ projectId: string;
120
+ }) => Promise<{
121
+ reply: string;
122
+ } | {
123
+ error: string;
124
+ }>;
125
+ };
126
+ }
127
+ //# sourceMappingURL=ait-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ait-api.d.ts","sourceRoot":"","sources":["../../src/types/ait-api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE;QACH,8BAA8B,EAAE,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3I,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7F,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrG,SAAS,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpG,CAAC;IACF,QAAQ,EAAE;QACR,cAAc,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzH,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5G,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,CAAC;IACF,KAAK,EAAE;QACL,WAAW,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjH,CAAC;CACH"}
@@ -0,0 +1 @@
1
+ export {};