@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 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
- return await this.env.generateTextByProject({
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
- return await this.env.generateTextByPrompt({
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.env.logger.error(
4263
- new Error("Failed to generate object by project"),
4264
- { projectId, params }
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.env.logger.error(
4277
- new Error("Failed to generate object by prompt"),
4278
- { promptId, params }
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.env.logger.debug("Generated image URL", { imageUrl });
4287
- return imageUrl;
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(bookingServicesDetailsExample, null, 2);
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(new Error("Failed to get first/default staff member"), {
12273
- projectId: prompts.serviceGenerationProjectId,
12274
- businessDescription,
12275
- lng
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
- const bookingServices = itemsWithImages.map((service) => mapBookingServiceDetailsToServerService(service, firstStaffMember));
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
- return await this.llmService.generateImage(imagePrompt, {
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
- env.logger.info(`[${VERTICAL_NAME}-plugin-install] starting installation`);
12325
- env.logger.info(`[${VERTICAL_NAME}-plugin-install] unzipping and merging plugin files...`);
12326
- env.logger.info(`[${VERTICAL_NAME}-plugin-install] downloading from: ${PLUGIN_FILES_ZIP_URL}`);
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
- env.logger.info(`
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 {