ttc-ai-chat-sdk 0.0.1-beta

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 ADDED
@@ -0,0 +1,2 @@
1
+
2
+ App is currently in alpha version. Use at your own risk.
@@ -0,0 +1,8 @@
1
+ export declare class TTCContruct {
2
+ description: string;
3
+ callbacks: Record<string, (data: any) => void>;
4
+ constructor(description: string);
5
+ randId: () => string;
6
+ run(conversation_id: string, instruction: string): Promise<any>;
7
+ }
8
+ //# sourceMappingURL=construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../src/construct.ts"],"names":[],"mappings":"AAOA,qBAAa,WAAW;IAEpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAM;gBACxC,WAAW,EAAE,MAAM;IAI/B,MAAM,eAKL;IAED,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAsBnD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TTCContruct = void 0;
4
+ const core_1 = require("./core");
5
+ class TTCContruct {
6
+ constructor(description) {
7
+ this.callbacks = {};
8
+ this.randId = () => {
9
+ return 'xxxxxx'.replace(/[x]/g, () => {
10
+ const r = Math.random() * 16 | 0;
11
+ return r.toString(16);
12
+ });
13
+ };
14
+ this.description = description;
15
+ }
16
+ run(conversation_id, instruction) {
17
+ const request_id = this.randId();
18
+ core_1.ttc.server.TCC.invoke_construct(conversation_id, {
19
+ description: this.description,
20
+ instruction: instruction,
21
+ construct_id: request_id
22
+ });
23
+ return new Promise((resolve, reject) => {
24
+ this.callbacks[request_id] = (data) => {
25
+ resolve(data);
26
+ delete this.callbacks[request_id];
27
+ };
28
+ // Optionally, you can add a timeout to reject the promise if no response is received
29
+ setTimeout(() => {
30
+ if (this.callbacks[request_id]) {
31
+ reject(new Error('Timeout waiting for construct response'));
32
+ delete this.callbacks[request_id];
33
+ }
34
+ }, 30000); // 30 seconds timeout
35
+ });
36
+ }
37
+ }
38
+ exports.TTCContruct = TTCContruct;
39
+ //# sourceMappingURL=construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct.js","sourceRoot":"","sources":["../src/construct.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAO7B,MAAa,WAAW;IAIpB,YAAY,WAAmB;QAD/B,cAAS,GAAwC,EAAE,CAAC;QAKpD,WAAM,GAAG,GAAG,EAAE;YACV,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC,CAAA;QARG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IASD,GAAG,CAAC,eAAuB,EAAE,WAAmB;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,UAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE;YAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,UAAU;SAC3B,CAAC,CAAA;QAEF,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAS,EAAE,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC;YACF,qFAAqF;YACrF,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;oBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;iBACrC;YACL,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AArCD,kCAqCC"}
package/dist/core.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ import "reflect-metadata";
2
+ import { ZodSchema } from "zod";
3
+ import { Socket } from "socket.io-client";
4
+ import { ttcAI } from "./ttcAI";
5
+ import { ClassType, f_call, RegistryEntry, RPCMethodInfo, rpcResponseType, ttc_event } from "./types";
6
+ import { RPCClient } from "./ttc_server";
7
+ import { TTCContruct } from "./construct";
8
+ export declare class ttc {
9
+ private static publickKey;
10
+ private static rpcRegistry;
11
+ static server: RPCClient;
12
+ static socket?: Socket;
13
+ private static event;
14
+ static ai: ttcAI;
15
+ static app_id: string;
16
+ static permissions: Record<string, (permitted: boolean) => void>;
17
+ private static socketCb;
18
+ private static createZodSchemaFromParams;
19
+ private static getZodTypeName;
20
+ static instance<T extends ClassType | string>(name: T): T extends ClassType ? InstanceType<T> : T extends string ? any : never;
21
+ static describe: (config?: {
22
+ doc?: string;
23
+ inputSchema?: ZodSchema<any>;
24
+ outputSchema?: ZodSchema<any>;
25
+ validate?: boolean;
26
+ }) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
27
+ static requestContext(args: IArguments): {
28
+ socket?: Socket;
29
+ _scid: string;
30
+ };
31
+ static invoke(method: string, args: any[], requestConfig: {
32
+ socket?: Socket;
33
+ _scid: string;
34
+ }): Promise<rpcResponseType>;
35
+ static init(config: {
36
+ app_id: string;
37
+ publickKey?: string;
38
+ modules: any[];
39
+ socketCb?: (socket: Socket) => Promise<any>;
40
+ }): typeof ttc;
41
+ private static handleSocket;
42
+ static hook(modules: ClassType[]): void;
43
+ static connect(): void;
44
+ static getRegistry(): Record<string, RegistryEntry>;
45
+ static generateRPCMethodsList(): Promise<RPCMethodInfo[]>;
46
+ private static getOriginFunctions;
47
+ private static fetchOriginFunction;
48
+ private static invoke_origin;
49
+ static createConstruct(description: string): Promise<TTCContruct>;
50
+ static approveFunction(id: string, approval: boolean): Promise<void>;
51
+ static askPermission(id: string, func: f_call, cb: (permitted: boolean) => void): Promise<void>;
52
+ static subscribe(event: ttc_event, cb: (payload: {
53
+ id: string;
54
+ payload: any;
55
+ }) => void): Promise<void>;
56
+ static emit(event: ttc_event, data: {
57
+ id: string;
58
+ payload: any;
59
+ }): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAU,SAAS,EAAK,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAY,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,qBAAa,GAAG;IACZ,OAAO,CAAC,MAAM,CAAC,UAAU,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,WAAW,CAGnB;IAEP,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAM;IAC1B,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;IACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC,CAAM;IAEtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAG1D,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAyCxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAc7B,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GACjD,CAAC,SAAS,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GACrC,CAAC,SAAS,MAAM,GAAG,GAAG,GACtB,KAAK;IAWT,MAAM,CAAC,QAAQ,YAAa;QACxB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;QAC7B,YAAY,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,cACW,GAAG,eACE,MAAM,cACP,kBAAkB,UAiF7B;IAEL,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB;WAWY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE;QAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,eAAe,CAAC;IA+F5B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KAC/C;IAmCD,OAAO,CAAC,MAAM,CAAC,YAAY,CAuB1B;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;IAIhC,MAAM,CAAC,OAAO;IAId,MAAM,CAAC,WAAW;WAIL,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;mBA8C1C,kBAAkB;mBAwClB,mBAAmB;mBAyBnB,aAAa;WA8BrB,eAAe,CAAC,WAAW,EAAE,MAAM;WAMnC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;WAS7C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;WAQxE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;QACnD,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAC3B,KAAK,IAAI;WAIG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QACtC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAC3B;CAGJ"}
package/dist/core.js ADDED
@@ -0,0 +1,460 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var _a;
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ttc = void 0;
8
+ require("reflect-metadata");
9
+ const typedi_1 = __importDefault(require("typedi"));
10
+ const zod_1 = require("zod");
11
+ const ttcAI_1 = require("./ttcAI");
12
+ // Choose appropriate EventEmitter for runtime (Node or Browser)
13
+ const eventEmitter_1 = require("./utils/eventEmitter");
14
+ const ttc_server_1 = require("./ttc_server");
15
+ const zodToTs_1 = require("./utils/zodToTs");
16
+ const construct_1 = require("./construct");
17
+ const EventEmitter = (0, eventEmitter_1.getEventEmitterClass)();
18
+ const zodToJsonSchema = zod_1.z.toJSONSchema;
19
+ class ttc {
20
+ // Helper function to convert TypeScript types to Zod schemas
21
+ static createZodSchemaFromParams(paramNames, paramTypes) {
22
+ if (paramNames.length === 0) {
23
+ return zod_1.z.object({});
24
+ }
25
+ const schemaFields = {};
26
+ paramNames.forEach((name, index) => {
27
+ const type = paramTypes[index];
28
+ const typeName = type?.name?.toLowerCase() || 'unknown';
29
+ switch (typeName) {
30
+ case 'string':
31
+ schemaFields[name] = zod_1.z.string();
32
+ break;
33
+ case 'number':
34
+ schemaFields[name] = zod_1.z.number();
35
+ break;
36
+ case 'boolean':
37
+ schemaFields[name] = zod_1.z.boolean();
38
+ break;
39
+ case 'array':
40
+ schemaFields[name] = zod_1.z.array(zod_1.z.any());
41
+ break;
42
+ case 'object':
43
+ schemaFields[name] = zod_1.z.object({}).passthrough();
44
+ break;
45
+ case 'date':
46
+ schemaFields[name] = zod_1.z.date();
47
+ break;
48
+ default:
49
+ // For unknown types, use z.any()
50
+ schemaFields[name] = zod_1.z.any();
51
+ break;
52
+ }
53
+ });
54
+ return zod_1.z.object(schemaFields);
55
+ }
56
+ // Helper function to extract type names from Zod schemas
57
+ static getZodTypeName(properties) {
58
+ const params = {};
59
+ for (const key in properties) {
60
+ if (properties.hasOwnProperty(key)) {
61
+ if (properties[key].type === 'object' && properties[key].properties) {
62
+ params[key] = _a.getZodTypeName(properties[key].properties);
63
+ }
64
+ else {
65
+ params[key] = properties[key].type || "any";
66
+ }
67
+ }
68
+ }
69
+ return params;
70
+ }
71
+ static instance(name) {
72
+ const finalName = typeof name === 'string' ? name : name.name;
73
+ const cls = typedi_1.default.get(finalName);
74
+ if (!cls) {
75
+ return null;
76
+ }
77
+ return cls;
78
+ }
79
+ static requestContext(args) {
80
+ const context = args[args.length - 1];
81
+ if (!context) {
82
+ return {};
83
+ }
84
+ return {
85
+ socket: context.socket,
86
+ _scid: context._scid
87
+ };
88
+ }
89
+ static async invoke(method, args, requestConfig) {
90
+ const parts = method.split(".");
91
+ // console.log(parts, 'Method parts');
92
+ if (parts.length === 3) {
93
+ // this is an origin function
94
+ return await this.invoke_origin(parts, { function: method, arguments: args }, requestConfig._scid);
95
+ }
96
+ const [className, methodName] = parts;
97
+ // let auth_data = null;
98
+ if (!typedi_1.default.has(className)) {
99
+ // throw new Error(`Service ${className} not found`);
100
+ return {
101
+ status: "error",
102
+ data: `${className} does not exist in api`,
103
+ };
104
+ }
105
+ const serviceInstance = typedi_1.default.get(className);
106
+ if (!serviceInstance[methodName]) {
107
+ return {
108
+ status: "error",
109
+ data: `function ${methodName} does not exist in ${className} module`,
110
+ };
111
+ }
112
+ const funcRegistry = this.rpcRegistry[method];
113
+ // Ensure args is an array
114
+ if (!Array.isArray(args)) {
115
+ args = args ? [args] : [];
116
+ }
117
+ // Validate input using schema if available
118
+ if (funcRegistry.validate && funcRegistry.inputSchema && args.length > 0) {
119
+ try {
120
+ // For single parameter methods, validate the first argument directly
121
+ if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {
122
+ const validatedArgs = funcRegistry.inputSchema.parse(args[0]);
123
+ args[0] = validatedArgs;
124
+ }
125
+ else if (args.length > 1) {
126
+ // For multiple parameters, create an object from parameter names and validate
127
+ const paramNames = Object.keys(funcRegistry.params);
128
+ const paramObj = {};
129
+ paramNames.forEach((name, index) => {
130
+ if (index < args.length) {
131
+ paramObj[name] = args[index];
132
+ }
133
+ });
134
+ const validatedObj = funcRegistry.inputSchema.parse(paramObj);
135
+ // Update args array with validated values
136
+ paramNames.forEach((name, index) => {
137
+ if (index < args.length) {
138
+ args[index] = validatedObj[name];
139
+ }
140
+ });
141
+ }
142
+ }
143
+ catch (validationError) {
144
+ return {
145
+ status: 'error',
146
+ data: `Validation error: ${validationError.message}`
147
+ };
148
+ }
149
+ }
150
+ // console.log(args, 'VALIDATED INPUT ARGS')
151
+ args[funcRegistry.param_index] = {
152
+ socket: requestConfig.socket
153
+ };
154
+ // const args_ =
155
+ try {
156
+ const response = await serviceInstance[methodName](...args);
157
+ if (response) {
158
+ return {
159
+ status: 'success',
160
+ data: response
161
+ };
162
+ }
163
+ }
164
+ catch (error) {
165
+ return {
166
+ status: 'error',
167
+ data: error.message
168
+ };
169
+ }
170
+ }
171
+ static init(config) {
172
+ const { modules, socketCb, publickKey, app_id } = config;
173
+ this.app_id = app_id;
174
+ if (!app_id) {
175
+ throw new Error("app_id is required");
176
+ }
177
+ if (!publickKey) {
178
+ throw new Error("publickKey is required");
179
+ }
180
+ this.socketCb = socketCb;
181
+ this.publickKey = publickKey;
182
+ // instantiate emitter appropriate for environment
183
+ _a.event = (0, eventEmitter_1.createEmitter)();
184
+ _a.ai = new ttcAI_1.ttcAI();
185
+ this.server = new ttc_server_1.RPCClient(ttcAI_1.ttcAI.ttc_Uri, async () => {
186
+ const apikey = this.publickKey || '';
187
+ return apikey;
188
+ }, async (socket) => {
189
+ this.handleSocket(socket);
190
+ if (socketCb)
191
+ await socketCb(socket);
192
+ });
193
+ _a.ai.init();
194
+ // just to trick TypeScript into recognizing the service decorators
195
+ return this;
196
+ }
197
+ static hook(modules) {
198
+ // just for decorator processing and registring
199
+ }
200
+ static connect() {
201
+ }
202
+ static getRegistry() {
203
+ return this.rpcRegistry;
204
+ }
205
+ static async generateRPCMethodsList() {
206
+ const methods = [];
207
+ // Get the registry through the public method
208
+ const registry = _a.getRegistry();
209
+ for (const [fullMethodName, registryEntryRaw] of Object.entries(registry)) {
210
+ const registryEntry = registryEntryRaw;
211
+ const [serviceName, methodName] = fullMethodName.split('.');
212
+ const methodInfo = {
213
+ name: fullMethodName,
214
+ description: registryEntry.doc,
215
+ permission: registryEntry.auth
216
+ };
217
+ // Convert input schema to TypeScript type if it exists
218
+ if (registryEntry.inputSchema) {
219
+ try {
220
+ methodInfo.input_schema = (0, zodToTs_1.zodToTs)(registryEntry.inputSchema);
221
+ }
222
+ catch (error) {
223
+ // console.warn(`Failed to convert input schema for ${fullMethodName}:`, error);
224
+ methodInfo.input_schema = null;
225
+ }
226
+ }
227
+ // Convert output schema to TypeScript type if it exists
228
+ if (registryEntry.outputSchema) {
229
+ try {
230
+ methodInfo.output_schema = (0, zodToTs_1.zodToTs)(registryEntry.outputSchema);
231
+ }
232
+ catch (error) {
233
+ // console.warn(`Failed to convert output schema for ${fullMethodName}:`, error);
234
+ methodInfo.output_schema = null;
235
+ }
236
+ }
237
+ methods.push(methodInfo);
238
+ }
239
+ const origin_functions = await this.getOriginFunctions();
240
+ // console.log(origin_functions, 'Origin functions fetched and added to method list.');
241
+ return [...methods, ...origin_functions];
242
+ }
243
+ static async getOriginFunctions() {
244
+ // fetch origins from server if not already fetched
245
+ try {
246
+ if (Object.keys(ttcAI_1.ttcAI.origins).length === 0) {
247
+ try {
248
+ const response = await _a.server.ttcCore.fetchOrigins(_a.app_id);
249
+ // console.log(response, 'Fetched origins from server:');
250
+ if (response.status === 'success') {
251
+ ttcAI_1.ttcAI.origins = response.data.reduce((acc, origin) => {
252
+ acc[origin.name] = origin;
253
+ return acc;
254
+ }, {});
255
+ // console.log(ttcAI.origins, 'Stored origins:');
256
+ }
257
+ }
258
+ catch (error) {
259
+ console.log('Error fetching origins:', error);
260
+ return [];
261
+ }
262
+ }
263
+ let origin_functions = [];
264
+ for (const origin of Object.values(ttcAI_1.ttcAI.origins)) {
265
+ const origin_result = await this.fetchOriginFunction(origin.url);
266
+ const edited_origin_result = origin_result.map((func) => ({
267
+ ...func,
268
+ name: `${origin.name}.${func.name}` // Prefix function name with origin name
269
+ }));
270
+ origin_functions = [...origin_functions, ...edited_origin_result];
271
+ }
272
+ // console.log(origin_functions, 'Fetched origin functions:');
273
+ return origin_functions;
274
+ }
275
+ catch (error) {
276
+ // console.log('Unable to fetch origins from server, confirm the server is running and the URL is correct.');
277
+ return [];
278
+ }
279
+ }
280
+ static async fetchOriginFunction(url) {
281
+ try {
282
+ const query = `?sapikey=attaboy_bullshit`;
283
+ const response = await fetch(`${url}/api-docs${query}`, {
284
+ method: 'GET',
285
+ headers: {
286
+ 'Content-Type': 'application/json',
287
+ 'Authorization': `Bearer ${_a.publickKey}`
288
+ },
289
+ });
290
+ const result = await response.json();
291
+ // convert to array
292
+ const final_array = Object.entries(result.services).flatMap(([serviceName, funcs]) => funcs.map(func => ({ ...func, name: `${serviceName}.${func.name}` })));
293
+ return final_array;
294
+ }
295
+ catch (error) {
296
+ // console.log('Unable to fetch functions from server, confirm the server is running and the URL is correct and ask ttc to fetch functions again.');
297
+ return [];
298
+ }
299
+ }
300
+ static async invoke_origin(parts, call, _scid) {
301
+ try {
302
+ const [originName, className, methodName] = parts;
303
+ const origin = ttcAI_1.ttcAI.origins[originName];
304
+ if (!origin.url)
305
+ throw new Error(`Unknown origin: ${originName}`);
306
+ const response = await fetch(`${origin.url}/rpc`, {
307
+ method: 'POST',
308
+ headers: {
309
+ 'Content-Type': 'application/json',
310
+ Authorization: `Bearer ${origin.apikey}`
311
+ },
312
+ body: JSON.stringify({
313
+ method: `${className}.${methodName}`,
314
+ params: Object.values(call.arguments)
315
+ })
316
+ });
317
+ if (!response.ok) {
318
+ // console.log(url, call, response);
319
+ return response.statusText;
320
+ // throw new Error(`API error: ${response.status} ${response.statusText}`);
321
+ }
322
+ return await response.json();
323
+ }
324
+ catch (error) {
325
+ console.error("Error calling API:", error);
326
+ throw error;
327
+ }
328
+ }
329
+ static async createConstruct(description) {
330
+ let construct = new construct_1.TTCContruct(description);
331
+ return construct;
332
+ }
333
+ static async approveFunction(id, approval) {
334
+ const cb = this.permissions[id];
335
+ // console.log(cb, 'Approved');
336
+ if (cb) {
337
+ cb(approval);
338
+ delete this.permissions[id];
339
+ }
340
+ }
341
+ static async askPermission(id, func, cb) {
342
+ const key = `${id}-${func.function}`;
343
+ if (!this.permissions[key]) {
344
+ this.permissions[key] = cb;
345
+ }
346
+ await this.emit('permission', { id: key, payload: func });
347
+ }
348
+ static async subscribe(event, cb) {
349
+ this.event.on(event, cb);
350
+ }
351
+ static async emit(event, data) {
352
+ this.event.emit(event, data);
353
+ }
354
+ }
355
+ exports.ttc = ttc;
356
+ _a = ttc;
357
+ ttc.rpcRegistry = {};
358
+ ttc.permissions = {};
359
+ ttc.describe = (config) => (target, propertyKey, descriptor) => {
360
+ const className = target.constructor.name;
361
+ const method = descriptor.value;
362
+ let params = {};
363
+ let generatedInputSchema;
364
+ const paramRegex = /\(([^)]*)\)/;
365
+ const paramsMatch = paramRegex.exec(method.toString());
366
+ const paramNames = paramsMatch
367
+ ? paramsMatch[1]
368
+ .split(",")
369
+ .map((p) => p.trim())
370
+ .filter(Boolean)
371
+ : [];
372
+ // Get parameter types from reflection
373
+ const types = Reflect.getMetadata("design:paramtypes", target, propertyKey) || [];
374
+ const paramTypes = types.map((type) => type?.name || "unknown");
375
+ if (config?.inputSchema) {
376
+ // Use provided schema
377
+ const schemaAsJson = zodToJsonSchema(config.inputSchema);
378
+ const schemaProperties = _a.getZodTypeName(schemaAsJson.properties || {});
379
+ // If the method has one argument, assume the schema defines its type.
380
+ if (paramNames.length === 1) {
381
+ const singleParam = paramNames[0];
382
+ // If the schemaProperties describes the inner fields of the single parameter
383
+ // (e.g. { name: 'string', email: 'string' }) keep it as the param value.
384
+ // If schemaProperties describes a single primitive (e.g. { userId: 'string' }),
385
+ // unwrap it to avoid double-nesting: { userId: { userId: 'string' } } -> { userId: 'string' }.
386
+ if (Object.keys(schemaProperties).length === 1 && schemaProperties.hasOwnProperty(singleParam)) {
387
+ params[singleParam] = schemaProperties[singleParam];
388
+ }
389
+ else {
390
+ params[singleParam] = schemaProperties;
391
+ }
392
+ }
393
+ else {
394
+ // Otherwise, map schema properties to parameter names.
395
+ params = schemaProperties;
396
+ }
397
+ generatedInputSchema = config.inputSchema;
398
+ }
399
+ else {
400
+ // Generate schema from parameter types
401
+ if (paramNames.length > 0) {
402
+ generatedInputSchema = _a.createZodSchemaFromParams(paramNames, types);
403
+ // Extract params from generated schema for compatibility
404
+ const schemaAsJson = zodToJsonSchema(generatedInputSchema);
405
+ const schemaProperties = _a.getZodTypeName(schemaAsJson.properties || {});
406
+ if (paramNames.length === 1) {
407
+ const singleParam = paramNames[0];
408
+ if (Object.keys(schemaProperties).length === 1 && schemaProperties.hasOwnProperty(singleParam)) {
409
+ params[singleParam] = schemaProperties[singleParam];
410
+ }
411
+ else {
412
+ params[singleParam] = schemaProperties;
413
+ }
414
+ }
415
+ else {
416
+ params = schemaProperties;
417
+ }
418
+ }
419
+ else {
420
+ // No parameters, create empty schema
421
+ generatedInputSchema = zod_1.z.object({});
422
+ }
423
+ }
424
+ if (!typedi_1.default.has(className)) {
425
+ typedi_1.default.set(className, new target.constructor());
426
+ }
427
+ const key = `${className}.${propertyKey}`;
428
+ _a.rpcRegistry[key] = {
429
+ params,
430
+ param_index: paramNames.length,
431
+ inputSchema: generatedInputSchema,
432
+ outputSchema: config?.outputSchema,
433
+ doc: config?.doc,
434
+ validate: config?.validate
435
+ };
436
+ };
437
+ ttc.handleSocket = async (socket) => {
438
+ _a.socket = socket;
439
+ socket.on("connect_error", (err) => {
440
+ console.error("Socket connection error:", err.message || err);
441
+ });
442
+ socket.on("function_call", async (data) => {
443
+ const { conversation_id, functions } = data;
444
+ await _a.ai.processFunctionCall(conversation_id, functions);
445
+ });
446
+ socket.on('sentinel_dispatch', async (data) => {
447
+ _a.emit('sentinel_dispatch', data);
448
+ });
449
+ socket.on('sentinel_terminated', async (data) => {
450
+ _a.emit('sentinel_terminated', data);
451
+ });
452
+ socket.on("construct", async (data) => {
453
+ const { conversation_id, construct_id, response } = data;
454
+ _a.emit("construct", {
455
+ id: construct_id,
456
+ payload: response
457
+ });
458
+ });
459
+ };
460
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}