struere 0.8.1 → 0.8.3

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.
@@ -15511,9 +15511,9 @@ var require_nodefs_handler = __commonJS((exports, module) => {
15511
15511
  if (this.fsw.closed) {
15512
15512
  return;
15513
15513
  }
15514
- const dirname4 = sysPath.dirname(file);
15514
+ const dirname3 = sysPath.dirname(file);
15515
15515
  const basename3 = sysPath.basename(file);
15516
- const parent = this.fsw._getWatchedDir(dirname4);
15516
+ const parent = this.fsw._getWatchedDir(dirname3);
15517
15517
  let prevStats = stats;
15518
15518
  if (parent.has(basename3))
15519
15519
  return;
@@ -15538,7 +15538,7 @@ var require_nodefs_handler = __commonJS((exports, module) => {
15538
15538
  prevStats = newStats2;
15539
15539
  }
15540
15540
  } catch (error) {
15541
- this.fsw._remove(dirname4, basename3);
15541
+ this.fsw._remove(dirname3, basename3);
15542
15542
  }
15543
15543
  } else if (parent.has(basename3)) {
15544
15544
  const at = newStats.atimeMs;
@@ -20370,6 +20370,7 @@ function scaffoldFixture(cwd, name, slug) {
20370
20370
  // src/cli/utils/plugin.ts
20371
20371
  import { existsSync as existsSync4, mkdirSync as mkdirSync3, writeFileSync as writeFileSync3 } from "fs";
20372
20372
  import { join as join4 } from "path";
20373
+ var registered = false;
20373
20374
  var VIRTUAL_MODULE_SOURCE = `
20374
20375
  function defineAgent(config) {
20375
20376
  if (!config.name) throw new Error('Agent name is required')
@@ -20496,6 +20497,24 @@ function defineConfig(config) {
20496
20497
 
20497
20498
  export { defineAgent, defineRole, defineEntityType, defineTrigger, defineTools, defineConfig }
20498
20499
  `;
20500
+ function registerStruerePlugin() {
20501
+ if (registered)
20502
+ return;
20503
+ registered = true;
20504
+ Bun.plugin({
20505
+ name: "struere-virtual",
20506
+ setup(build) {
20507
+ build.onResolve({ filter: /^struere$/ }, () => ({
20508
+ path: "struere",
20509
+ namespace: "struere-virtual"
20510
+ }));
20511
+ build.onLoad({ filter: /.*/, namespace: "struere-virtual" }, () => ({
20512
+ contents: VIRTUAL_MODULE_SOURCE,
20513
+ loader: "js"
20514
+ }));
20515
+ }
20516
+ });
20517
+ }
20499
20518
  var TYPE_DECLARATIONS = `declare module 'struere' {
20500
20519
  export interface ModelConfig {
20501
20520
  provider: 'anthropic' | 'openai' | 'google' | 'xai' | 'custom'
@@ -20670,47 +20689,32 @@ function generateTypeDeclarations(cwd) {
20670
20689
  mkdirSync3(shimDir, { recursive: true });
20671
20690
  writeFileSync3(join4(shimDir, "index.js"), VIRTUAL_MODULE_SOURCE);
20672
20691
  writeFileSync3(join4(shimDir, "index.d.ts"), TYPE_DECLARATIONS);
20673
- writeFileSync3(join4(shimDir, "package.json"), JSON.stringify({ name: "struere", version: "0.0.0", main: "index.js", types: "index.d.ts" }));
20692
+ writeFileSync3(join4(shimDir, "package.json"), JSON.stringify({ name: "struere", version: "0.0.0", type: "module", main: "index.js", types: "index.d.ts" }));
20674
20693
  }
20675
20694
 
20676
20695
  // src/cli/commands/docs.ts
20677
- import { join as join6, dirname as dirname3 } from "path";
20678
- import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as writeFileSync5 } from "fs";
20696
+ import { join as join6, dirname as dirname2 } from "path";
20697
+ import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as writeFileSync4 } from "fs";
20679
20698
 
20680
20699
  // src/cli/utils/loader.ts
20681
20700
  var import_yaml = __toESM(require_dist(), 1);
20682
- import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync4, unlinkSync as unlinkSync2 } from "fs";
20683
- import { join as join5, dirname as dirname2, basename } from "path";
20684
- var IMPORT_STRUERE_RE = /import\s+\{[^}]*\}\s*from\s*['"]struere['"]\s*;?\n?/g;
20701
+ import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3 } from "fs";
20702
+ import { join as join5, basename } from "path";
20703
+ var pluginRegistered = false;
20685
20704
  var importCounter = 0;
20686
20705
  async function importUserFile(filePath) {
20687
- const source = readFileSync3(filePath, "utf-8");
20688
- const uid = `${Date.now()}-${importCounter++}`;
20689
- if (!source.includes("'struere'") && !source.includes('"struere"')) {
20690
- try {
20691
- return await import(`${filePath}?v=${uid}`);
20692
- } catch (err) {
20693
- const detail = err instanceof Error ? err.stack || err.message : String(err);
20694
- throw new Error(`Import error in ${basename(filePath)}:
20695
- ${detail}`);
20696
- }
20706
+ if (!pluginRegistered) {
20707
+ registerStruerePlugin();
20708
+ pluginRegistered = true;
20697
20709
  }
20698
- const stripped = source.replace(IMPORT_STRUERE_RE, "");
20699
- const inlined = VIRTUAL_MODULE_SOURCE.trim() + `
20700
- ` + stripped;
20710
+ const uid = `${Date.now()}-${importCounter++}`;
20701
20711
  const name = basename(filePath, ".ts");
20702
- const tmpPath = join5(dirname2(filePath), `.struere-tmp-${name}-${uid}.ts`);
20703
- writeFileSync4(tmpPath, inlined);
20704
20712
  try {
20705
- return await import(`${tmpPath}?v=${uid}`);
20713
+ return await import(`${filePath}?v=${uid}`);
20706
20714
  } catch (err) {
20707
20715
  const detail = err instanceof Error ? err.stack || err.message : String(err);
20708
20716
  throw new Error(`Import error in ${name}.ts:
20709
20717
  ${detail}`);
20710
- } finally {
20711
- try {
20712
- unlinkSync2(tmpPath);
20713
- } catch {}
20714
20718
  }
20715
20719
  }
20716
20720
  async function loadAllResources(cwd) {
@@ -21063,11 +21067,11 @@ function buildDocument(projectContext) {
21063
21067
  }
21064
21068
  function writeTarget(cwd, target, content) {
21065
21069
  const filePath = join6(cwd, TARGET_FILES[target]);
21066
- const dir = dirname3(filePath);
21070
+ const dir = dirname2(filePath);
21067
21071
  if (!existsSync6(dir)) {
21068
21072
  mkdirSync4(dir, { recursive: true });
21069
21073
  }
21070
- writeFileSync5(filePath, content);
21074
+ writeFileSync4(filePath, content);
21071
21075
  }
21072
21076
  async function generateDocs(cwd, targets) {
21073
21077
  const generated = [];
@@ -22611,7 +22615,7 @@ var statusCommand = new Command("status").description("Compare local vs remote s
22611
22615
  });
22612
22616
 
22613
22617
  // src/cli/commands/pull.ts
22614
- import { existsSync as existsSync8, mkdirSync as mkdirSync5, writeFileSync as writeFileSync6 } from "fs";
22618
+ import { existsSync as existsSync8, mkdirSync as mkdirSync5, writeFileSync as writeFileSync5 } from "fs";
22615
22619
  import { join as join8 } from "path";
22616
22620
 
22617
22621
  // src/cli/utils/generator.ts
@@ -22967,7 +22971,7 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
22967
22971
  return true;
22968
22972
  }
22969
22973
  ensureDir2(join8(cwd, relativePath.split("/").slice(0, -1).join("/")));
22970
- writeFileSync6(fullPath, content);
22974
+ writeFileSync5(fullPath, content);
22971
22975
  created.push(relativePath);
22972
22976
  return true;
22973
22977
  };
@@ -23540,7 +23544,7 @@ entitiesCommand.command("search <type> <query>").description("Search entities").
23540
23544
 
23541
23545
  // src/cli/commands/eval.ts
23542
23546
  import { join as join9 } from "path";
23543
- import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync7 } from "fs";
23547
+ import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync6 } from "fs";
23544
23548
 
23545
23549
  // src/cli/utils/evals.ts
23546
23550
  var CONVEX_URL3 = process.env.STRUERE_CONVEX_URL || "https://rapid-wildebeest-172.convex.cloud";
@@ -23968,12 +23972,12 @@ var runCommand = new Command("run").description("Run an eval suite").argument("<
23968
23972
  const outDir = join9(cwd, "evals", "runs", folderName);
23969
23973
  mkdirSync6(outDir, { recursive: true });
23970
23974
  const summaryMd = generateSummaryMd(suite.name, suite.slug, agentSlug, run, results);
23971
- writeFileSync7(join9(outDir, "_summary.md"), summaryMd);
23975
+ writeFileSync6(join9(outDir, "_summary.md"), summaryMd);
23972
23976
  for (const r of results) {
23973
23977
  const label = statusLabel(r);
23974
23978
  const fileName = `${label}_${slugify3(r.caseName)}.md`;
23975
23979
  const caseMd = generateCaseMd(r);
23976
- writeFileSync7(join9(outDir, fileName), caseMd);
23980
+ writeFileSync6(join9(outDir, fileName), caseMd);
23977
23981
  }
23978
23982
  const relativePath = `evals/runs/${folderName}/`;
23979
23983
  console.log();
@@ -24310,7 +24314,7 @@ templatesCommand.command("status <name>").description("Check template approval s
24310
24314
  // package.json
24311
24315
  var package_default = {
24312
24316
  name: "struere",
24313
- version: "0.8.1",
24317
+ version: "0.8.3",
24314
24318
  description: "Build, test, and deploy AI agents",
24315
24319
  keywords: [
24316
24320
  "ai",
package/dist/cli/index.js CHANGED
@@ -1033,6 +1033,7 @@ function scaffoldFixture(cwd, name, slug) {
1033
1033
  // src/cli/utils/plugin.ts
1034
1034
  import { existsSync as existsSync4, mkdirSync as mkdirSync3, writeFileSync as writeFileSync3 } from "fs";
1035
1035
  import { join as join4 } from "path";
1036
+ var registered = false;
1036
1037
  var VIRTUAL_MODULE_SOURCE = `
1037
1038
  function defineAgent(config) {
1038
1039
  if (!config.name) throw new Error('Agent name is required')
@@ -1159,6 +1160,24 @@ function defineConfig(config) {
1159
1160
 
1160
1161
  export { defineAgent, defineRole, defineEntityType, defineTrigger, defineTools, defineConfig }
1161
1162
  `;
1163
+ function registerStruerePlugin() {
1164
+ if (registered)
1165
+ return;
1166
+ registered = true;
1167
+ Bun.plugin({
1168
+ name: "struere-virtual",
1169
+ setup(build) {
1170
+ build.onResolve({ filter: /^struere$/ }, () => ({
1171
+ path: "struere",
1172
+ namespace: "struere-virtual"
1173
+ }));
1174
+ build.onLoad({ filter: /.*/, namespace: "struere-virtual" }, () => ({
1175
+ contents: VIRTUAL_MODULE_SOURCE,
1176
+ loader: "js"
1177
+ }));
1178
+ }
1179
+ });
1180
+ }
1162
1181
  var TYPE_DECLARATIONS = `declare module 'struere' {
1163
1182
  export interface ModelConfig {
1164
1183
  provider: 'anthropic' | 'openai' | 'google' | 'xai' | 'custom'
@@ -1333,50 +1352,35 @@ function generateTypeDeclarations(cwd) {
1333
1352
  mkdirSync3(shimDir, { recursive: true });
1334
1353
  writeFileSync3(join4(shimDir, "index.js"), VIRTUAL_MODULE_SOURCE);
1335
1354
  writeFileSync3(join4(shimDir, "index.d.ts"), TYPE_DECLARATIONS);
1336
- writeFileSync3(join4(shimDir, "package.json"), JSON.stringify({ name: "struere", version: "0.0.0", main: "index.js", types: "index.d.ts" }));
1355
+ writeFileSync3(join4(shimDir, "package.json"), JSON.stringify({ name: "struere", version: "0.0.0", type: "module", main: "index.js", types: "index.d.ts" }));
1337
1356
  }
1338
1357
 
1339
1358
  // src/cli/commands/docs.ts
1340
1359
  import { Command as Command2 } from "commander";
1341
1360
  import chalk2 from "chalk";
1342
1361
  import ora2 from "ora";
1343
- import { join as join6, dirname as dirname3 } from "path";
1344
- import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as writeFileSync5 } from "fs";
1362
+ import { join as join6, dirname as dirname2 } from "path";
1363
+ import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as writeFileSync4 } from "fs";
1345
1364
 
1346
1365
  // src/cli/utils/loader.ts
1347
- import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync4, unlinkSync as unlinkSync2 } from "fs";
1348
- import { join as join5, dirname as dirname2, basename } from "path";
1366
+ import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3 } from "fs";
1367
+ import { join as join5, basename } from "path";
1349
1368
  import YAML from "yaml";
1350
- var IMPORT_STRUERE_RE = /import\s+\{[^}]*\}\s*from\s*['"]struere['"]\s*;?\n?/g;
1369
+ var pluginRegistered = false;
1351
1370
  var importCounter = 0;
1352
1371
  async function importUserFile(filePath) {
1353
- const source = readFileSync3(filePath, "utf-8");
1354
- const uid = `${Date.now()}-${importCounter++}`;
1355
- if (!source.includes("'struere'") && !source.includes('"struere"')) {
1356
- try {
1357
- return await import(`${filePath}?v=${uid}`);
1358
- } catch (err) {
1359
- const detail = err instanceof Error ? err.stack || err.message : String(err);
1360
- throw new Error(`Import error in ${basename(filePath)}:
1361
- ${detail}`);
1362
- }
1372
+ if (!pluginRegistered) {
1373
+ registerStruerePlugin();
1374
+ pluginRegistered = true;
1363
1375
  }
1364
- const stripped = source.replace(IMPORT_STRUERE_RE, "");
1365
- const inlined = VIRTUAL_MODULE_SOURCE.trim() + `
1366
- ` + stripped;
1376
+ const uid = `${Date.now()}-${importCounter++}`;
1367
1377
  const name = basename(filePath, ".ts");
1368
- const tmpPath = join5(dirname2(filePath), `.struere-tmp-${name}-${uid}.ts`);
1369
- writeFileSync4(tmpPath, inlined);
1370
1378
  try {
1371
- return await import(`${tmpPath}?v=${uid}`);
1379
+ return await import(`${filePath}?v=${uid}`);
1372
1380
  } catch (err) {
1373
1381
  const detail = err instanceof Error ? err.stack || err.message : String(err);
1374
1382
  throw new Error(`Import error in ${name}.ts:
1375
1383
  ${detail}`);
1376
- } finally {
1377
- try {
1378
- unlinkSync2(tmpPath);
1379
- } catch {}
1380
1384
  }
1381
1385
  }
1382
1386
  async function loadAllResources(cwd) {
@@ -1729,11 +1733,11 @@ function buildDocument(projectContext) {
1729
1733
  }
1730
1734
  function writeTarget(cwd, target, content) {
1731
1735
  const filePath = join6(cwd, TARGET_FILES[target]);
1732
- const dir = dirname3(filePath);
1736
+ const dir = dirname2(filePath);
1733
1737
  if (!existsSync6(dir)) {
1734
1738
  mkdirSync4(dir, { recursive: true });
1735
1739
  }
1736
- writeFileSync5(filePath, content);
1740
+ writeFileSync4(filePath, content);
1737
1741
  }
1738
1742
  async function generateDocs(cwd, targets) {
1739
1743
  const generated = [];
@@ -3298,7 +3302,7 @@ var statusCommand = new Command9("status").description("Compare local vs remote
3298
3302
  import { Command as Command10 } from "commander";
3299
3303
  import chalk10 from "chalk";
3300
3304
  import ora8 from "ora";
3301
- import { existsSync as existsSync8, mkdirSync as mkdirSync5, writeFileSync as writeFileSync6 } from "fs";
3305
+ import { existsSync as existsSync8, mkdirSync as mkdirSync5, writeFileSync as writeFileSync5 } from "fs";
3302
3306
  import { join as join8 } from "path";
3303
3307
 
3304
3308
  // src/cli/utils/generator.ts
@@ -3654,7 +3658,7 @@ var pullCommand = new Command10("pull").description("Pull remote resources to lo
3654
3658
  return true;
3655
3659
  }
3656
3660
  ensureDir2(join8(cwd, relativePath.split("/").slice(0, -1).join("/")));
3657
- writeFileSync6(fullPath, content);
3661
+ writeFileSync5(fullPath, content);
3658
3662
  created.push(relativePath);
3659
3663
  return true;
3660
3664
  };
@@ -4237,7 +4241,7 @@ import { Command as Command12 } from "commander";
4237
4241
  import chalk13 from "chalk";
4238
4242
  import ora10 from "ora";
4239
4243
  import { join as join9 } from "path";
4240
- import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync7 } from "fs";
4244
+ import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync6 } from "fs";
4241
4245
 
4242
4246
  // src/cli/utils/evals.ts
4243
4247
  var CONVEX_URL3 = process.env.STRUERE_CONVEX_URL || "https://rapid-wildebeest-172.convex.cloud";
@@ -4665,12 +4669,12 @@ var runCommand = new Command12("run").description("Run an eval suite").argument(
4665
4669
  const outDir = join9(cwd, "evals", "runs", folderName);
4666
4670
  mkdirSync6(outDir, { recursive: true });
4667
4671
  const summaryMd = generateSummaryMd(suite.name, suite.slug, agentSlug, run, results);
4668
- writeFileSync7(join9(outDir, "_summary.md"), summaryMd);
4672
+ writeFileSync6(join9(outDir, "_summary.md"), summaryMd);
4669
4673
  for (const r of results) {
4670
4674
  const label = statusLabel(r);
4671
4675
  const fileName = `${label}_${slugify3(r.caseName)}.md`;
4672
4676
  const caseMd = generateCaseMd(r);
4673
- writeFileSync7(join9(outDir, fileName), caseMd);
4677
+ writeFileSync6(join9(outDir, fileName), caseMd);
4674
4678
  }
4675
4679
  const relativePath = `evals/runs/${folderName}/`;
4676
4680
  console.log();
@@ -5011,7 +5015,7 @@ templatesCommand.command("status <name>").description("Check template approval s
5011
5015
  // package.json
5012
5016
  var package_default = {
5013
5017
  name: "struere",
5014
- version: "0.8.1",
5018
+ version: "0.8.3",
5015
5019
  description: "Build, test, and deploy AI agents",
5016
5020
  keywords: [
5017
5021
  "ai",
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAmClJ,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB5E;AAuGD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAUA"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAsBlJ,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB5E;AAuGD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAUA"}
@@ -1,4 +1,7 @@
1
1
  export { defineAgent } from './agent';
2
+ export { defineRole } from './role';
3
+ export { defineEntityType } from './entityType';
4
+ export { defineTrigger } from './trigger';
2
5
  export { defineTools } from './tools';
3
6
  export { defineConfig } from './config';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/define/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/define/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "struere",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "Build, test, and deploy AI agents",
5
5
  "keywords": [
6
6
  "ai",