struere 0.3.7 → 0.3.8
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/bin/struere.js +64 -11
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/index.js +64 -11
- package/package.json +1 -1
package/dist/bin/struere.js
CHANGED
|
@@ -18124,6 +18124,7 @@ function readLine() {
|
|
|
18124
18124
|
// src/cli/commands/dev.ts
|
|
18125
18125
|
var import_chokidar = __toESM(require_chokidar(), 1);
|
|
18126
18126
|
import { join as join7, basename as basename2 } from "path";
|
|
18127
|
+
import { existsSync as existsSync5, writeFileSync as writeFileSync4 } from "fs";
|
|
18127
18128
|
|
|
18128
18129
|
// src/cli/utils/config.ts
|
|
18129
18130
|
import { join as join5 } from "path";
|
|
@@ -18223,14 +18224,21 @@ var devCommand = new Command("dev").description("Sync agent to development envir
|
|
|
18223
18224
|
spinner.start("Loading agent");
|
|
18224
18225
|
let agent = await loadAgent(cwd);
|
|
18225
18226
|
spinner.succeed(`Agent "${agent.name}" loaded`);
|
|
18226
|
-
const
|
|
18227
|
+
const claudeMdPath = join7(cwd, ".claude.md");
|
|
18228
|
+
if (!existsSync5(claudeMdPath)) {
|
|
18229
|
+
writeFileSync4(claudeMdPath, getClaudeMd(project.agent.slug));
|
|
18230
|
+
console.log(source_default.green("\u2713"), "Created .claude.md");
|
|
18231
|
+
}
|
|
18232
|
+
let credentials = loadCredentials();
|
|
18227
18233
|
const apiKey = getApiKey();
|
|
18228
18234
|
if (!credentials && !apiKey) {
|
|
18229
|
-
|
|
18230
|
-
console.log();
|
|
18231
|
-
console.log(source_default.gray("Run"), source_default.cyan("struere login"), source_default.gray("to authenticate"));
|
|
18235
|
+
console.log(source_default.gray("Authentication required"));
|
|
18232
18236
|
console.log();
|
|
18233
|
-
|
|
18237
|
+
credentials = await performLogin();
|
|
18238
|
+
if (!credentials) {
|
|
18239
|
+
console.log(source_default.red("Authentication failed"));
|
|
18240
|
+
process.exit(1);
|
|
18241
|
+
}
|
|
18234
18242
|
}
|
|
18235
18243
|
spinner.start("Syncing to Convex");
|
|
18236
18244
|
const performSync = async () => {
|
|
@@ -18245,13 +18253,38 @@ var devCommand = new Command("dev").description("Sync agent to development envir
|
|
|
18245
18253
|
throw error;
|
|
18246
18254
|
}
|
|
18247
18255
|
};
|
|
18256
|
+
const isAuthError = (error) => {
|
|
18257
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
18258
|
+
return message.includes("Unauthenticated") || message.includes("OIDC") || message.includes("token") || message.includes("expired");
|
|
18259
|
+
};
|
|
18248
18260
|
try {
|
|
18249
18261
|
await performSync();
|
|
18250
18262
|
spinner.succeed("Synced to development");
|
|
18251
18263
|
} catch (error) {
|
|
18252
|
-
|
|
18253
|
-
|
|
18254
|
-
|
|
18264
|
+
if (isAuthError(error)) {
|
|
18265
|
+
spinner.fail("Session expired");
|
|
18266
|
+
console.log();
|
|
18267
|
+
console.log(source_default.gray("Re-authenticating..."));
|
|
18268
|
+
clearCredentials();
|
|
18269
|
+
credentials = await performLogin();
|
|
18270
|
+
if (!credentials) {
|
|
18271
|
+
console.log(source_default.red("Authentication failed"));
|
|
18272
|
+
process.exit(1);
|
|
18273
|
+
}
|
|
18274
|
+
spinner.start("Syncing to Convex");
|
|
18275
|
+
try {
|
|
18276
|
+
await performSync();
|
|
18277
|
+
spinner.succeed("Synced to development");
|
|
18278
|
+
} catch (retryError) {
|
|
18279
|
+
spinner.fail("Sync failed");
|
|
18280
|
+
console.log(source_default.red("Error:"), retryError instanceof Error ? retryError.message : String(retryError));
|
|
18281
|
+
process.exit(1);
|
|
18282
|
+
}
|
|
18283
|
+
} else {
|
|
18284
|
+
spinner.fail("Sync failed");
|
|
18285
|
+
console.log(source_default.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
18286
|
+
process.exit(1);
|
|
18287
|
+
}
|
|
18255
18288
|
}
|
|
18256
18289
|
const devUrl = `https://${project.agent.slug}-dev.struere.dev`;
|
|
18257
18290
|
console.log();
|
|
@@ -18272,8 +18305,28 @@ var devCommand = new Command("dev").description("Sync agent to development envir
|
|
|
18272
18305
|
await performSync();
|
|
18273
18306
|
syncSpinner.succeed("Synced");
|
|
18274
18307
|
} catch (error) {
|
|
18275
|
-
|
|
18276
|
-
|
|
18308
|
+
if (isAuthError(error)) {
|
|
18309
|
+
syncSpinner.fail("Session expired");
|
|
18310
|
+
console.log();
|
|
18311
|
+
console.log(source_default.gray("Re-authenticating..."));
|
|
18312
|
+
clearCredentials();
|
|
18313
|
+
const newCredentials = await performLogin();
|
|
18314
|
+
if (!newCredentials) {
|
|
18315
|
+
console.log(source_default.red("Authentication failed"));
|
|
18316
|
+
return;
|
|
18317
|
+
}
|
|
18318
|
+
const retrySyncSpinner = ora("Syncing...").start();
|
|
18319
|
+
try {
|
|
18320
|
+
await performSync();
|
|
18321
|
+
retrySyncSpinner.succeed("Synced");
|
|
18322
|
+
} catch (retryError) {
|
|
18323
|
+
retrySyncSpinner.fail("Sync failed");
|
|
18324
|
+
console.log(source_default.red("Error:"), retryError instanceof Error ? retryError.message : String(retryError));
|
|
18325
|
+
}
|
|
18326
|
+
} else {
|
|
18327
|
+
syncSpinner.fail("Sync failed");
|
|
18328
|
+
console.log(source_default.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
18329
|
+
}
|
|
18277
18330
|
}
|
|
18278
18331
|
});
|
|
18279
18332
|
process.on("SIGINT", () => {
|
|
@@ -19095,7 +19148,7 @@ var whoamiCommand = new Command("whoami").description("Show current logged in us
|
|
|
19095
19148
|
// package.json
|
|
19096
19149
|
var package_default = {
|
|
19097
19150
|
name: "struere",
|
|
19098
|
-
version: "0.3.
|
|
19151
|
+
version: "0.3.8",
|
|
19099
19152
|
description: "Build, test, and deploy AI agents",
|
|
19100
19153
|
keywords: [
|
|
19101
19154
|
"ai",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAenC,eAAO,MAAM,UAAU,SAuKnB,CAAA"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1466,6 +1466,7 @@ import chalk3 from "chalk";
|
|
|
1466
1466
|
import ora3 from "ora";
|
|
1467
1467
|
import chokidar from "chokidar";
|
|
1468
1468
|
import { join as join7, basename as basename2 } from "path";
|
|
1469
|
+
import { existsSync as existsSync5, writeFileSync as writeFileSync4 } from "fs";
|
|
1469
1470
|
|
|
1470
1471
|
// src/cli/utils/config.ts
|
|
1471
1472
|
import { join as join5 } from "path";
|
|
@@ -1565,14 +1566,21 @@ var devCommand = new Command3("dev").description("Sync agent to development envi
|
|
|
1565
1566
|
spinner.start("Loading agent");
|
|
1566
1567
|
let agent = await loadAgent(cwd);
|
|
1567
1568
|
spinner.succeed(`Agent "${agent.name}" loaded`);
|
|
1568
|
-
const
|
|
1569
|
+
const claudeMdPath = join7(cwd, ".claude.md");
|
|
1570
|
+
if (!existsSync5(claudeMdPath)) {
|
|
1571
|
+
writeFileSync4(claudeMdPath, getClaudeMd(project.agent.slug));
|
|
1572
|
+
console.log(chalk3.green("\u2713"), "Created .claude.md");
|
|
1573
|
+
}
|
|
1574
|
+
let credentials = loadCredentials();
|
|
1569
1575
|
const apiKey = getApiKey();
|
|
1570
1576
|
if (!credentials && !apiKey) {
|
|
1571
|
-
|
|
1572
|
-
console.log();
|
|
1573
|
-
console.log(chalk3.gray("Run"), chalk3.cyan("struere login"), chalk3.gray("to authenticate"));
|
|
1577
|
+
console.log(chalk3.gray("Authentication required"));
|
|
1574
1578
|
console.log();
|
|
1575
|
-
|
|
1579
|
+
credentials = await performLogin();
|
|
1580
|
+
if (!credentials) {
|
|
1581
|
+
console.log(chalk3.red("Authentication failed"));
|
|
1582
|
+
process.exit(1);
|
|
1583
|
+
}
|
|
1576
1584
|
}
|
|
1577
1585
|
spinner.start("Syncing to Convex");
|
|
1578
1586
|
const performSync = async () => {
|
|
@@ -1587,13 +1595,38 @@ var devCommand = new Command3("dev").description("Sync agent to development envi
|
|
|
1587
1595
|
throw error;
|
|
1588
1596
|
}
|
|
1589
1597
|
};
|
|
1598
|
+
const isAuthError = (error) => {
|
|
1599
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1600
|
+
return message.includes("Unauthenticated") || message.includes("OIDC") || message.includes("token") || message.includes("expired");
|
|
1601
|
+
};
|
|
1590
1602
|
try {
|
|
1591
1603
|
await performSync();
|
|
1592
1604
|
spinner.succeed("Synced to development");
|
|
1593
1605
|
} catch (error) {
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1606
|
+
if (isAuthError(error)) {
|
|
1607
|
+
spinner.fail("Session expired");
|
|
1608
|
+
console.log();
|
|
1609
|
+
console.log(chalk3.gray("Re-authenticating..."));
|
|
1610
|
+
clearCredentials();
|
|
1611
|
+
credentials = await performLogin();
|
|
1612
|
+
if (!credentials) {
|
|
1613
|
+
console.log(chalk3.red("Authentication failed"));
|
|
1614
|
+
process.exit(1);
|
|
1615
|
+
}
|
|
1616
|
+
spinner.start("Syncing to Convex");
|
|
1617
|
+
try {
|
|
1618
|
+
await performSync();
|
|
1619
|
+
spinner.succeed("Synced to development");
|
|
1620
|
+
} catch (retryError) {
|
|
1621
|
+
spinner.fail("Sync failed");
|
|
1622
|
+
console.log(chalk3.red("Error:"), retryError instanceof Error ? retryError.message : String(retryError));
|
|
1623
|
+
process.exit(1);
|
|
1624
|
+
}
|
|
1625
|
+
} else {
|
|
1626
|
+
spinner.fail("Sync failed");
|
|
1627
|
+
console.log(chalk3.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
1628
|
+
process.exit(1);
|
|
1629
|
+
}
|
|
1597
1630
|
}
|
|
1598
1631
|
const devUrl = `https://${project.agent.slug}-dev.struere.dev`;
|
|
1599
1632
|
console.log();
|
|
@@ -1614,8 +1647,28 @@ var devCommand = new Command3("dev").description("Sync agent to development envi
|
|
|
1614
1647
|
await performSync();
|
|
1615
1648
|
syncSpinner.succeed("Synced");
|
|
1616
1649
|
} catch (error) {
|
|
1617
|
-
|
|
1618
|
-
|
|
1650
|
+
if (isAuthError(error)) {
|
|
1651
|
+
syncSpinner.fail("Session expired");
|
|
1652
|
+
console.log();
|
|
1653
|
+
console.log(chalk3.gray("Re-authenticating..."));
|
|
1654
|
+
clearCredentials();
|
|
1655
|
+
const newCredentials = await performLogin();
|
|
1656
|
+
if (!newCredentials) {
|
|
1657
|
+
console.log(chalk3.red("Authentication failed"));
|
|
1658
|
+
return;
|
|
1659
|
+
}
|
|
1660
|
+
const retrySyncSpinner = ora3("Syncing...").start();
|
|
1661
|
+
try {
|
|
1662
|
+
await performSync();
|
|
1663
|
+
retrySyncSpinner.succeed("Synced");
|
|
1664
|
+
} catch (retryError) {
|
|
1665
|
+
retrySyncSpinner.fail("Sync failed");
|
|
1666
|
+
console.log(chalk3.red("Error:"), retryError instanceof Error ? retryError.message : String(retryError));
|
|
1667
|
+
}
|
|
1668
|
+
} else {
|
|
1669
|
+
syncSpinner.fail("Sync failed");
|
|
1670
|
+
console.log(chalk3.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
1671
|
+
}
|
|
1619
1672
|
}
|
|
1620
1673
|
});
|
|
1621
1674
|
process.on("SIGINT", () => {
|
|
@@ -2460,7 +2513,7 @@ var whoamiCommand = new Command11("whoami").description("Show current logged in
|
|
|
2460
2513
|
// package.json
|
|
2461
2514
|
var package_default = {
|
|
2462
2515
|
name: "struere",
|
|
2463
|
-
version: "0.3.
|
|
2516
|
+
version: "0.3.8",
|
|
2464
2517
|
description: "Build, test, and deploy AI agents",
|
|
2465
2518
|
keywords: [
|
|
2466
2519
|
"ai",
|