@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 +1 -1
- package/dist/index.js +71 -39
- package/oclif.manifest.json +1 -1
- package/package.json +3 -3
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.
|
|
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
|
|
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 } =
|
|
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.
|
|
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.
|
|
331256
|
-
"@superblocksteam/vite-plugin-file-sync": "2.0.3-next.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
382339
|
-
|
|
382340
|
-
|
|
382341
|
-
|
|
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
|
-
|
|
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
|
-
|
|
382595
|
+
getLogger().warn(`[ai-service] Invalid path format: ${path45}. Expected "module/name"`);
|
|
382596
|
+
return "";
|
|
382570
382597
|
}
|
|
382571
|
-
} catch (
|
|
382572
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
383221
|
-
|
|
383222
|
-
|
|
383223
|
-
|
|
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
|
-
|
|
389509
|
+
logger3.debug("[ai-service] Step started:", chunk.messageId);
|
|
389478
389510
|
break;
|
|
389479
389511
|
case "step-finish":
|
|
389480
389512
|
resultBuffer.maybeFlush(true);
|
|
389481
|
-
|
|
389513
|
+
logger3.debug("[ai-service] Step finished:", chunk.messageId);
|
|
389482
389514
|
break;
|
|
389483
389515
|
case "error":
|
|
389484
389516
|
{
|
|
389485
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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);
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superblocksteam/cli",
|
|
3
|
-
"version": "2.0.3-next.
|
|
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.
|
|
45
|
+
"@superblocksteam/sdk": "2.0.3-next.150",
|
|
46
46
|
"@superblocksteam/shared": "0.9115.0",
|
|
47
|
-
"@superblocksteam/util": "2.0.3-next.
|
|
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",
|