@superblocksteam/cli 2.0.3-next.148 → 2.0.3-next.150

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 CHANGED
@@ -14,7 +14,7 @@ $ npm install -g @superblocksteam/cli
14
14
  $ superblocks COMMAND
15
15
  running command...
16
16
  $ superblocks (--version)
17
- @superblocksteam/cli/2.0.3-next.148 linux-x64 node-v20.19.0
17
+ @superblocksteam/cli/2.0.3-next.150 linux-x64 node-v20.19.0
18
18
  $ superblocks --help [COMMAND]
19
19
  USAGE
20
20
  $ superblocks COMMAND
package/dist/index.js CHANGED
@@ -175965,7 +175965,7 @@ var require_main2 = __commonJS({
175965
175965
  var { getPrepareStackTrace, kSymbolPrepareStackTrace } = require_stack_trace2();
175966
175966
  var { cacheRewrittenSourceMap, getOriginalPathAndLineFromSourceMap } = require_source_map();
175967
175967
  var getNameAndVersion = require_module_details();
175968
- var yaml4 = require_js_yaml();
175968
+ var yaml3 = require_js_yaml();
175969
175969
  var DummyRewriter = class {
175970
175970
  rewrite(code, file, passes, moduleName2, moduleVersion) {
175971
175971
  return {
@@ -175986,7 +175986,7 @@ var require_main2 = __commonJS({
175986
175986
  this.nativeRewriter = new DummyRewriter();
175987
175987
  }
175988
175988
  if (config2?.orchestrion) {
175989
- const { instrumentations } = yaml4.load(config2.orchestrion);
175989
+ const { instrumentations } = yaml3.load(config2.orchestrion);
175990
175990
  this.orchestrionModules = new Set(instrumentations.map((i2) => i2.module_name));
175991
175991
  }
175992
175992
  }
@@ -331222,7 +331222,7 @@ var import_dd_trace = __toESM(require_dd_trace2(), 1);
331222
331222
  // ../sdk/package.json
331223
331223
  var package_default = {
331224
331224
  name: "@superblocksteam/sdk",
331225
- version: "2.0.3-next.148",
331225
+ version: "2.0.3-next.150",
331226
331226
  type: "module",
331227
331227
  description: "Superblocks JS SDK",
331228
331228
  homepage: "https://www.superblocks.com",
@@ -331252,8 +331252,8 @@ var package_default = {
331252
331252
  "@rollup/wasm-node": "^4.35.0",
331253
331253
  "@superblocksteam/bucketeer-sdk": "0.4.1",
331254
331254
  "@superblocksteam/shared": "0.9115.0",
331255
- "@superblocksteam/util": "2.0.3-next.148",
331256
- "@superblocksteam/vite-plugin-file-sync": "2.0.3-next.148",
331255
+ "@superblocksteam/util": "2.0.3-next.150",
331256
+ "@superblocksteam/vite-plugin-file-sync": "2.0.3-next.150",
331257
331257
  "@vitejs/plugin-react": "^4.3.4",
331258
331258
  axios: "^1.4.0",
331259
331259
  chokidar: "^4.0.3",
@@ -372193,6 +372193,23 @@ var fileSyncVitePlugin = (pluginParams, options8) => {
372193
372193
  res.setHeader("Content-Type", "application/json");
372194
372194
  return res.end(JSON.stringify(appScope));
372195
372195
  });
372196
+ server.middlewares.use("/sb-ping", async (req, res, _next) => {
372197
+ if (req.method !== "GET" && req.method !== "OPTIONS") {
372198
+ res.statusCode = 405;
372199
+ res.end("Method not allowed");
372200
+ return res.end();
372201
+ }
372202
+ res.setHeader("Access-Control-Allow-Origin", "*");
372203
+ res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
372204
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type");
372205
+ if (req.method === "OPTIONS") {
372206
+ res.statusCode = 204;
372207
+ res.end();
372208
+ return;
372209
+ }
372210
+ res.setHeader("Content-Type", "application/json");
372211
+ return res.end(JSON.stringify({ status: "ok", timestamp: Date.now() }));
372212
+ });
372196
372213
  const socketManager = new SocketManager();
372197
372214
  socketManager.startSocketServer({
372198
372215
  server: httpServer2,
@@ -375836,7 +375853,7 @@ async function startVite({ app, httpServer: httpServer2, root: root2, mode, port
375836
375853
  };
375837
375854
  const isCustomBuildEnabled2 = await isCustomComponentsEnabled();
375838
375855
  const customFolder = path21.join(root2, "custom");
375839
- const cdnUrl = "https://assets-cdn.superblocks.com/library/2.0.3-next.148";
375856
+ const cdnUrl = "https://assets-cdn.superblocks.com/library/2.0.3-next.150";
375840
375857
  const env3 = loadEnv(mode, root2, "");
375841
375858
  const hmrPort = await getFreePort();
375842
375859
  const hmrOptions = {
@@ -382180,7 +382197,7 @@ var TemplateRenderer = class {
382180
382197
  this.nodeModuleDirs = {};
382181
382198
  if (prefetchNodeModules) {
382182
382199
  for (const [templateName, template] of Object.entries(templates)) {
382183
- console.debug("Pre-fetching node_modules for", templateName);
382200
+ getLogger().debug("[ai-service] Pre-fetching node_modules for", templateName);
382184
382201
  this.templateModulesDir(templateName, template);
382185
382202
  }
382186
382203
  }
@@ -382192,7 +382209,7 @@ var TemplateRenderer = class {
382192
382209
  const template = templates[templateName];
382193
382210
  const templateNodeModules = await this.templateModulesDir(templateName, template);
382194
382211
  const templateDir = path25.join(this.workDir, templateName, `gen-${randomUUID()}`);
382195
- console.debug("Rendering template", templateName, "to", templateDir);
382212
+ getLogger().debug("[ai-service] Rendering template", templateName, "to", templateDir);
382196
382213
  reifyTemplate(templateDir, templates[templateName]);
382197
382214
  if (templateNodeModules) {
382198
382215
  await fs12.cp(templateNodeModules, path25.join(templateDir, "node_modules"), {
@@ -382330,16 +382347,22 @@ var FSM = class {
382330
382347
  async send(event) {
382331
382348
  const fromState = this.state;
382332
382349
  const toState = this.transitions[fromState]?.[event.type];
382350
+ const logger3 = getLogger();
382333
382351
  if (!toState) {
382334
- console.warn(`No transition for event '${event.type}' from state '${fromState}'`);
382352
+ logger3.warn(`[ai-service] No transition for event '${event.type}' from state '${fromState}'`);
382335
382353
  return;
382336
382354
  }
382337
382355
  this._state = toState;
382338
- await this.onTransition?.({
382339
- from: fromState,
382340
- to: toState,
382341
- event
382342
- });
382356
+ try {
382357
+ await this.onTransition?.({
382358
+ from: fromState,
382359
+ to: toState,
382360
+ event
382361
+ });
382362
+ } catch (error) {
382363
+ logger3.error(`[ai-service] Transition handler threw an error for ${toState}:`, getErrorMeta(error));
382364
+ throw error;
382365
+ }
382343
382366
  }
382344
382367
  };
382345
382368
 
@@ -382545,10 +382568,13 @@ var generated = {};
382545
382568
  try {
382546
382569
  generated = await import("./generated-RWPUAFSG.js");
382547
382570
  } catch (_error) {
382548
- console.warn("Generated markdown modules not found. Run `pnpm generate:markdown` first.");
382571
+ getLogger().warn("[ai-service] Generated markdown modules not found. Run `pnpm generate:markdown` first.");
382549
382572
  }
382550
382573
  var processedCache = /* @__PURE__ */ new Map();
382551
382574
  function loadSubprompt(path45, variables = {}) {
382575
+ if (!path45.includes("/")) {
382576
+ getLogger().warn(`Subprompt path "${path45}" should include module and name (e.g., "api/create")`);
382577
+ }
382552
382578
  const cacheKey = JSON.stringify(variables);
382553
382579
  if (!processedCache.has(path45)) {
382554
382580
  processedCache.set(path45, /* @__PURE__ */ new Map());
@@ -382566,10 +382592,12 @@ function loadSubprompt(path45, variables = {}) {
382566
382592
  content2 = generated[module2][name17] || "";
382567
382593
  }
382568
382594
  } else {
382569
- console.warn(`Invalid path format: ${path45}. Expected "module/name"`);
382595
+ getLogger().warn(`[ai-service] Invalid path format: ${path45}. Expected "module/name"`);
382596
+ return "";
382570
382597
  }
382571
- } catch (_error) {
382572
- console.warn(`Could not load subprompt: ${path45}`);
382598
+ } catch (error) {
382599
+ getLogger().warn(`[ai-service] Failed to load subprompt at ${path45}:`, error instanceof Error ? error.message : String(error));
382600
+ return "";
382573
382601
  }
382574
382602
  let processedContent = content2;
382575
382603
  Object.entries(variables).forEach(([key2, value2]) => {
@@ -382583,7 +382611,7 @@ function loadLibraryComponent(name17) {
382583
382611
  try {
382584
382612
  return generated.library_components?.[fileName] || "";
382585
382613
  } catch (_error) {
382586
- console.warn(`Could not load library component: ${name17}, using file name: ${fileName}`);
382614
+ getLogger().warn(`[ai-service] Could not load library component: ${name17}, using file name: ${fileName}`);
382587
382615
  return "";
382588
382616
  }
382589
382617
  }
@@ -382800,6 +382828,7 @@ var renderPath = (path45, params) => {
382800
382828
  };
382801
382829
  var pathKey = Symbol("pathKey");
382802
382830
  async function applyFileTransformations(files, transformers2) {
382831
+ const logger3 = getLogger();
382803
382832
  let currentFiles = files;
382804
382833
  for (const transformer of transformers2) {
382805
382834
  const matchingInput = {};
@@ -382818,13 +382847,13 @@ async function applyFileTransformations(files, transformers2) {
382818
382847
  }).filter(Boolean);
382819
382848
  }
382820
382849
  if (Object.values(matchingInput).every((arr) => arr.length === 0)) {
382821
- console.debug("No files matched any patterns", {
382850
+ logger3.debug("[ai-service] No files matched any patterns", {
382822
382851
  transformer: transformer.constructor.name,
382823
382852
  inputFiles: currentFiles.map((file) => file.filePath)
382824
382853
  });
382825
382854
  continue;
382826
382855
  }
382827
- console.debug("Transforming files", {
382856
+ logger3.debug("[ai-service] Transforming files", {
382828
382857
  transformer: transformer.constructor.name,
382829
382858
  matchingFilesMap: Object.fromEntries(Object.entries(matchingInput).map(([key2, inputs]) => [
382830
382859
  key2,
@@ -382852,7 +382881,7 @@ async function applyFileTransformations(files, transformers2) {
382852
382881
  }
382853
382882
  }
382854
382883
  } catch (error) {
382855
- console.error(`Error in transformer ${transformer.constructor.name}:`, error, "matchingFilesMap:", matchingInput);
382884
+ logger3.error(`[ai-service] Error in transformer ${transformer.constructor.name}:`, error, "matchingFilesMap:", matchingInput);
382856
382885
  throw error;
382857
382886
  }
382858
382887
  const matchedFilePaths = /* @__PURE__ */ new Set();
@@ -382879,10 +382908,11 @@ var ApiBuilderTransformer = class extends FileTransformer {
382879
382908
  }
382880
382909
  runEvaluation(cwd) {
382881
382910
  return new Promise((resolve8, reject) => {
382882
- console.debug("Evaluating in", cwd);
382911
+ const logger3 = getLogger();
382912
+ logger3.debug("[ai-service] Evaluating in", cwd);
382883
382913
  const tsc = spawn3("npx", ["tsc", "--noEmitOnError", "false"], { cwd });
382884
382914
  tsc.stdout.on("data", (data) => {
382885
- console.log("tsc stdout", data.toString());
382915
+ logger3.info("[ai-service] tsc stdout", data.toString());
382886
382916
  });
382887
382917
  tsc.on("close", (code) => {
382888
382918
  if (code !== 0) {
@@ -383217,10 +383247,11 @@ ${artifactContext.content}
383217
383247
  `;
383218
383248
  }
383219
383249
  if (LOG_SYSTEM_PROMPT) {
383220
- console.log("=".repeat(80));
383221
- console.log("SYSTEM PROMPT:");
383222
- console.log(systemPrompt);
383223
- console.log("=".repeat(80));
383250
+ const logger3 = getLogger();
383251
+ logger3.info("[ai-service] " + "=".repeat(80));
383252
+ logger3.info("SYSTEM PROMPT:");
383253
+ logger3.info(systemPrompt);
383254
+ logger3.info("[ai-service] " + "=".repeat(80));
383224
383255
  }
383225
383256
  return systemPrompt;
383226
383257
  };
@@ -389415,6 +389446,7 @@ var doLLMGenerating = (clark, { anthropicProvider, artifactProcessor }) => {
389415
389446
  const transitionTo = transitionFrom(clark);
389416
389447
  const sendUserMessage = sendUserMessageChannel(clark);
389417
389448
  const sendUserCompletion = sendUserCompletionChannel(clark);
389449
+ const logger3 = getLogger();
389418
389450
  return async ({ event }) => {
389419
389451
  switch (event.type) {
389420
389452
  case AGENT_PLANNED: {
@@ -389474,15 +389506,15 @@ var doLLMGenerating = (clark, { anthropicProvider, artifactProcessor }) => {
389474
389506
  case "file":
389475
389507
  break;
389476
389508
  case "step-start":
389477
- console.debug("Step started:", chunk.messageId);
389509
+ logger3.debug("[ai-service] Step started:", chunk.messageId);
389478
389510
  break;
389479
389511
  case "step-finish":
389480
389512
  resultBuffer.maybeFlush(true);
389481
- console.debug("Step finished:", chunk.messageId);
389513
+ logger3.debug("[ai-service] Step finished:", chunk.messageId);
389482
389514
  break;
389483
389515
  case "error":
389484
389516
  {
389485
- console.error("LLM error chunk:", chunk);
389517
+ logger3.error("[ai-service] LLM error chunk:", chunk);
389486
389518
  let error = {
389487
389519
  type: "unknown"
389488
389520
  };
@@ -389534,7 +389566,7 @@ var doLLMGenerating = (clark, { anthropicProvider, artifactProcessor }) => {
389534
389566
  case "source":
389535
389567
  break;
389536
389568
  default:
389537
- console.error("Unhandled chunk type:", chunk.type);
389569
+ logger3.error("[ai-service] Unhandled chunk type:", chunk.type);
389538
389570
  break;
389539
389571
  }
389540
389572
  }
@@ -389560,7 +389592,7 @@ init_cjs_shims();
389560
389592
 
389561
389593
  // ../../../vite-plugin-file-sync/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js
389562
389594
  init_cjs_shims();
389563
- var yaml3 = __toESM(require_dist(), 1);
389595
+ var import_yaml4 = __toESM(require_dist(), 1);
389564
389596
  var src2 = { apis: Paths.ApiYamls };
389565
389597
  var dest2 = src2;
389566
389598
  var AddMetadataToApiYamlTransformer = class extends FileTransformer {
@@ -389573,7 +389605,7 @@ var AddMetadataToApiYamlTransformer = class extends FileTransformer {
389573
389605
  const transformed = [];
389574
389606
  for (const api of src6.apis) {
389575
389607
  try {
389576
- const apiDefinition = yaml3.parse(api.content);
389608
+ const apiDefinition = (0, import_yaml4.parse)(api.content);
389577
389609
  if (!apiDefinition.metadata) {
389578
389610
  apiDefinition.metadata = {};
389579
389611
  }
@@ -389585,7 +389617,7 @@ var AddMetadataToApiYamlTransformer = class extends FileTransformer {
389585
389617
  apiDefinition.trigger.application = {};
389586
389618
  }
389587
389619
  apiDefinition.trigger.application.id = this.config.applicationId;
389588
- const updatedContent = yaml3.stringify(apiDefinition, {
389620
+ const updatedContent = (0, import_yaml4.stringify)(apiDefinition, {
389589
389621
  aliasDuplicateObjects: false,
389590
389622
  lineWidth: 120
389591
389623
  });
@@ -389594,7 +389626,7 @@ var AddMetadataToApiYamlTransformer = class extends FileTransformer {
389594
389626
  content: updatedContent
389595
389627
  });
389596
389628
  } catch (error) {
389597
- console.error(`Failed to add metadata:`, error, "yaml:", api);
389629
+ getLogger().error(`[ai-service] Failed to add metadata:`, error, "yaml:", api);
389598
389630
  transformed.push(api);
389599
389631
  }
389600
389632
  }
@@ -389901,7 +389933,7 @@ var AiService = class extends EventEmitter10 {
389901
389933
  if (!handler) {
389902
389934
  throw new Error(`No handler for state ${to}`);
389903
389935
  }
389904
- console.log(`Transitioned from ${from} to ${to} with event ${event.type}`);
389936
+ getLogger().info(`[ai-service] Transitioned from ${from} to ${to} with event ${event.type}`);
389905
389937
  await handler(transition);
389906
389938
  };
389907
389939
  };
@@ -389911,7 +389943,7 @@ var AiService = class extends EventEmitter10 {
389911
389943
  throw new Error("Service is unavailable");
389912
389944
  }
389913
389945
  if (this.isBusy()) {
389914
- console.error("Service is busy. state:", this.clark.state);
389946
+ getLogger().warn("[ai-service] Service is busy. State:", this.clark.state);
389915
389947
  throw new Error("Service is busy");
389916
389948
  }
389917
389949
  const transitionTo = transitionFrom(this.clark);
@@ -389947,7 +389979,7 @@ var AiService = class extends EventEmitter10 {
389947
389979
  }
389948
389980
  handleBuildSystemError(error) {
389949
389981
  if (this.clark.state !== ClarkStateNames.RuntimeReviewing) {
389950
- console.warn("Build system error occurred but AI service is not in runtime reviewing state", error);
389982
+ getLogger().warn("[ai-service] Build system error occurred but AI service is not in runtime reviewing state", getErrorMeta(error));
389951
389983
  return;
389952
389984
  }
389953
389985
  const transitionTo = transitionFrom(this.clark);
@@ -509,5 +509,5 @@
509
509
  "strict": true
510
510
  }
511
511
  },
512
- "version": "2.0.3-next.148"
512
+ "version": "2.0.3-next.150"
513
513
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/cli",
3
- "version": "2.0.3-next.148",
3
+ "version": "2.0.3-next.150",
4
4
  "type": "module",
5
5
  "description": "Official Superblocks CLI",
6
6
  "homepage": "https://www.superblocks.com",
@@ -42,9 +42,9 @@
42
42
  "devDependencies": {
43
43
  "@eslint/js": "^9.16.0",
44
44
  "@oclif/test": "^4.1.11",
45
- "@superblocksteam/sdk": "2.0.3-next.148",
45
+ "@superblocksteam/sdk": "2.0.3-next.150",
46
46
  "@superblocksteam/shared": "0.9115.0",
47
- "@superblocksteam/util": "2.0.3-next.148",
47
+ "@superblocksteam/util": "2.0.3-next.150",
48
48
  "@types/babel__core": "^7.20.0",
49
49
  "@types/chai": "^4",
50
50
  "@types/fs-extra": "^11.0.1",