@wix/vibe-bookings-plugin 0.10.0 → 0.11.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/dist/index.cjs +108 -28
- package/dist/index.cjs.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -4234,57 +4234,117 @@ var JsonParserService = class {
|
|
|
4234
4234
|
}
|
|
4235
4235
|
};
|
|
4236
4236
|
|
|
4237
|
+
// src/services/logger.service.ts
|
|
4238
|
+
var Logger = class {
|
|
4239
|
+
prefix;
|
|
4240
|
+
baseLogger;
|
|
4241
|
+
constructor(env, context) {
|
|
4242
|
+
this.baseLogger = env.logger;
|
|
4243
|
+
this.prefix = context ? `[${VERTICAL_NAME}-plugin-${context}]` : `[${VERTICAL_NAME}-plugin]`;
|
|
4244
|
+
}
|
|
4245
|
+
/**
|
|
4246
|
+
* Formats a message with the prefix
|
|
4247
|
+
*/
|
|
4248
|
+
formatMessage(message) {
|
|
4249
|
+
return `${this.prefix} ${message}`;
|
|
4250
|
+
}
|
|
4251
|
+
/**
|
|
4252
|
+
* Logs an info message
|
|
4253
|
+
*/
|
|
4254
|
+
info(message, data) {
|
|
4255
|
+
this.baseLogger.info(this.formatMessage(message), data);
|
|
4256
|
+
}
|
|
4257
|
+
/**
|
|
4258
|
+
* Logs a debug message
|
|
4259
|
+
*/
|
|
4260
|
+
debug(message, data) {
|
|
4261
|
+
this.baseLogger.debug(this.formatMessage(message), data);
|
|
4262
|
+
}
|
|
4263
|
+
/**
|
|
4264
|
+
* Logs an error with better handling
|
|
4265
|
+
* Creates an Error object from the message and includes data in the context
|
|
4266
|
+
*/
|
|
4267
|
+
error(message, data) {
|
|
4268
|
+
const errorObject = new Error(this.formatMessage(message));
|
|
4269
|
+
this.baseLogger.error(errorObject, data);
|
|
4270
|
+
}
|
|
4271
|
+
/**
|
|
4272
|
+
* Logs a warning message
|
|
4273
|
+
*/
|
|
4274
|
+
warn(message, data) {
|
|
4275
|
+
this.baseLogger.warn(this.formatMessage(message), data);
|
|
4276
|
+
}
|
|
4277
|
+
};
|
|
4278
|
+
|
|
4237
4279
|
// src/services/llm.service.ts
|
|
4238
4280
|
var LLMService = class {
|
|
4239
|
-
constructor(env) {
|
|
4281
|
+
constructor(env, logger) {
|
|
4240
4282
|
this.env = env;
|
|
4283
|
+
this.logger = logger;
|
|
4284
|
+
this.logger = logger || new Logger(this.env, "llm");
|
|
4241
4285
|
this.jsonParserService = new JsonParserService(this.env);
|
|
4242
4286
|
}
|
|
4243
4287
|
jsonParserService;
|
|
4244
4288
|
async generateTextByProject(projectId, params) {
|
|
4245
|
-
|
|
4289
|
+
this.logger.debug("generating text by project", { projectId, params });
|
|
4290
|
+
const response = await this.env.generateTextByProject({
|
|
4246
4291
|
projectId,
|
|
4247
4292
|
params
|
|
4248
4293
|
});
|
|
4294
|
+
this.logger.debug("generated text by project", { response });
|
|
4295
|
+
return response;
|
|
4249
4296
|
}
|
|
4250
4297
|
async generateTextByPrompt(promptId, params) {
|
|
4251
|
-
|
|
4298
|
+
this.logger.debug("generating text by prompt", { promptId, params });
|
|
4299
|
+
const response = await this.env.generateTextByPrompt({
|
|
4252
4300
|
promptId,
|
|
4253
4301
|
params
|
|
4254
4302
|
});
|
|
4303
|
+
this.logger.debug("generated text by prompt", { response });
|
|
4304
|
+
return response;
|
|
4255
4305
|
}
|
|
4256
4306
|
async generateObjectByProject(projectId, params) {
|
|
4307
|
+
this.logger.debug("generating object by project", { projectId, params });
|
|
4257
4308
|
const response = await this.env.generateTextByProject({
|
|
4258
4309
|
projectId,
|
|
4259
4310
|
params
|
|
4260
4311
|
});
|
|
4312
|
+
this.logger.debug("generated object by project", { response });
|
|
4261
4313
|
if (!response) {
|
|
4262
|
-
this.
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
);
|
|
4314
|
+
this.logger.error("Failed to generate object by project", {
|
|
4315
|
+
projectId,
|
|
4316
|
+
params
|
|
4317
|
+
});
|
|
4266
4318
|
return null;
|
|
4267
4319
|
}
|
|
4320
|
+
this.logger.debug("generated object by project", { response });
|
|
4268
4321
|
return this.jsonParserService.parseJson(response);
|
|
4269
4322
|
}
|
|
4270
4323
|
async generateObjectByPrompt(promptId, params) {
|
|
4324
|
+
this.logger.debug("generating object by prompt", { promptId, params });
|
|
4271
4325
|
const response = await this.env.generateTextByPrompt({
|
|
4272
4326
|
promptId,
|
|
4273
4327
|
params
|
|
4274
4328
|
});
|
|
4275
4329
|
if (!response) {
|
|
4276
|
-
this.
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
);
|
|
4330
|
+
this.logger.error("Failed to generate object by prompt", {
|
|
4331
|
+
promptId,
|
|
4332
|
+
params
|
|
4333
|
+
});
|
|
4280
4334
|
return null;
|
|
4281
4335
|
}
|
|
4336
|
+
this.logger.debug("generated object by prompt", { response });
|
|
4282
4337
|
return this.jsonParserService.parseJson(response);
|
|
4283
4338
|
}
|
|
4284
4339
|
async generateImage(basePrompt, options) {
|
|
4340
|
+
this.logger.debug("generating image", { basePrompt, options });
|
|
4285
4341
|
const imageUrl = await this.env.generateImage(basePrompt, options);
|
|
4286
|
-
this.
|
|
4287
|
-
|
|
4342
|
+
this.logger.debug("generated image", { imageUrl });
|
|
4343
|
+
const imageId = imageUrl.split("https://static.wixstatic.com/media/")[1].split("?")[0];
|
|
4344
|
+
return {
|
|
4345
|
+
imageId,
|
|
4346
|
+
imageUrl
|
|
4347
|
+
};
|
|
4288
4348
|
}
|
|
4289
4349
|
};
|
|
4290
4350
|
|
|
@@ -12237,8 +12297,10 @@ var bookingServicesDetailsExample = {
|
|
|
12237
12297
|
]
|
|
12238
12298
|
};
|
|
12239
12299
|
var ContentInjectionService = class {
|
|
12240
|
-
constructor(env) {
|
|
12300
|
+
constructor(env, logger) {
|
|
12241
12301
|
this.env = env;
|
|
12302
|
+
this.logger = logger;
|
|
12303
|
+
this.logger = logger || new Logger(this.env, "contentInjection");
|
|
12242
12304
|
this.llmService = new LLMService(this.env);
|
|
12243
12305
|
this.bookingsServicesAPIClient = new BookingsServicesAPIClient(this.env);
|
|
12244
12306
|
this.staffMembersAPIClient = new StaffMembersAPIClient(this.env);
|
|
@@ -12247,9 +12309,14 @@ var ContentInjectionService = class {
|
|
|
12247
12309
|
bookingsServicesAPIClient;
|
|
12248
12310
|
staffMembersAPIClient;
|
|
12249
12311
|
async generateServices() {
|
|
12312
|
+
this.logger.info("generating services");
|
|
12250
12313
|
const businessDescription = this.env.userRequest;
|
|
12251
12314
|
const lng = "English";
|
|
12252
|
-
const responseExample = JSON.stringify(
|
|
12315
|
+
const responseExample = JSON.stringify(
|
|
12316
|
+
bookingServicesDetailsExample,
|
|
12317
|
+
null,
|
|
12318
|
+
2
|
|
12319
|
+
);
|
|
12253
12320
|
const response = await this.llmService.generateObjectByProject(
|
|
12254
12321
|
prompts.serviceGenerationProjectId,
|
|
12255
12322
|
{
|
|
@@ -12266,18 +12333,29 @@ var ContentInjectionService = class {
|
|
|
12266
12333
|
});
|
|
12267
12334
|
return;
|
|
12268
12335
|
}
|
|
12336
|
+
this.logger.info("generated services", { response });
|
|
12337
|
+
this.logger.info("getting staff members");
|
|
12269
12338
|
const staffMembers2 = await this.staffMembersAPIClient.queryStaffMembers(1);
|
|
12270
12339
|
const firstStaffMember = staffMembers2?.items?.[0];
|
|
12271
12340
|
if (!firstStaffMember) {
|
|
12272
|
-
this.env.logger.error(
|
|
12273
|
-
|
|
12274
|
-
|
|
12275
|
-
|
|
12276
|
-
|
|
12341
|
+
this.env.logger.error(
|
|
12342
|
+
new Error("Failed to get first/default staff member"),
|
|
12343
|
+
{
|
|
12344
|
+
projectId: prompts.serviceGenerationProjectId,
|
|
12345
|
+
businessDescription,
|
|
12346
|
+
lng
|
|
12347
|
+
}
|
|
12348
|
+
);
|
|
12277
12349
|
return;
|
|
12278
12350
|
}
|
|
12351
|
+
this.logger.info("first staff member", { firstStaffMember });
|
|
12352
|
+
this.logger.info("generating service images");
|
|
12279
12353
|
const itemsWithImages = await this.generateServiceImages(response.items);
|
|
12280
|
-
|
|
12354
|
+
this.logger.info("mapping booking services");
|
|
12355
|
+
const bookingServices = itemsWithImages.map(
|
|
12356
|
+
(service) => mapBookingServiceDetailsToServerService(service, firstStaffMember)
|
|
12357
|
+
);
|
|
12358
|
+
this.logger.info("creating services");
|
|
12281
12359
|
const createServicesResponse = await this.bookingsServicesAPIClient.createServices(bookingServices);
|
|
12282
12360
|
return createServicesResponse;
|
|
12283
12361
|
}
|
|
@@ -12312,24 +12390,26 @@ var ContentInjectionService = class {
|
|
|
12312
12390
|
---
|
|
12313
12391
|
Generate a service image for the service that is part of an inquiry services service
|
|
12314
12392
|
`;
|
|
12315
|
-
|
|
12393
|
+
const { imageId } = await this.llmService.generateImage(imagePrompt, {
|
|
12316
12394
|
width: 1024,
|
|
12317
12395
|
height: 768
|
|
12318
12396
|
});
|
|
12397
|
+
return imageId;
|
|
12319
12398
|
}
|
|
12320
12399
|
};
|
|
12321
12400
|
|
|
12322
12401
|
// src/index.ts
|
|
12323
12402
|
var install = async (env) => {
|
|
12324
|
-
|
|
12325
|
-
|
|
12326
|
-
|
|
12403
|
+
const logger = new Logger(env, "install");
|
|
12404
|
+
logger.info("starting installation");
|
|
12405
|
+
logger.info("unzipping and merging plugin files...");
|
|
12406
|
+
logger.info(`downloading from: ${PLUGIN_FILES_ZIP_URL}`);
|
|
12327
12407
|
await (0, import_vibe_plugin_utils2.unzipAndMergePluginFiles)(env, PLUGIN_FILES_ZIP_URL, VERTICAL_NAME);
|
|
12328
|
-
|
|
12329
|
-
\x1B[34m ==== Bookings installation completed ==== \x1B[0m
|
|
12330
|
-
`);
|
|
12408
|
+
logger.info(`\u2705 bookings installation completed`);
|
|
12331
12409
|
};
|
|
12332
12410
|
var generateData = async (env) => {
|
|
12411
|
+
const logger = new Logger(env, "generateData");
|
|
12412
|
+
logger.info("starting data generation");
|
|
12333
12413
|
const contentInjectionService = new ContentInjectionService(env);
|
|
12334
12414
|
const services = await contentInjectionService.generateServices();
|
|
12335
12415
|
return {
|