struere 0.14.5 → 0.14.7

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.
@@ -7296,11 +7296,11 @@ async function listIntegrationConfigs(env) {
7296
7296
  async function setIntegrationStatus(provider, env, status) {
7297
7297
  return convexMutation4("integrations:setConfigStatus", { provider, environment: env, status });
7298
7298
  }
7299
- async function createVoiceConnection(args) {
7300
- return convexMutation4("voiceConnections:createConnection", args);
7299
+ async function createVoiceConnectionWithAssignment(args) {
7300
+ return convexMutation4("voiceConnections:createConnectionWithAssignment", args);
7301
7301
  }
7302
- async function setVoicePhoneAgent(args) {
7303
- return convexMutation4("voiceConnections:setPhoneAgentBySlug", args);
7302
+ async function removeVoiceConnectionByPhone(args) {
7303
+ return convexMutation4("voiceConnections:removeConnectionByPhone", args);
7304
7304
  }
7305
7305
 
7306
7306
  // src/cli/commands/integration.ts
@@ -7414,7 +7414,7 @@ function buildConfigFromOpts(provider, opts) {
7414
7414
  }
7415
7415
  return null;
7416
7416
  }
7417
- var integrationCommand = new Command17("integration").description("Manage integrations").argument("[provider]", "Integration provider (airtable, resend, flow)").option("--env <environment>", "Environment (development|production)", "development").option("--token <pat>", "Personal access token (airtable)").option("--base-id <id>", "Default base ID (airtable)").option("--from-email <email>", "From email address (resend)").option("--from-name <name>", "From display name (resend)").option("--reply-to <email>", "Reply-to address (resend)").option("--api-url <url>", "API URL (flow)").option("--api-key <key>", "API key (flow)").option("--secret-key <secret>", "Secret key (flow)").option("--return-url <url>", "Return URL after payment (flow)").option("--account-sid <sid>", "Twilio Account SID (twilio)").option("--auth-token <token>", "Twilio Auth Token (twilio)").option("--phone-number <number>", "Twilio phone number in E.164 format (twilio)").option("--router <slug>", "Router slug to assign to phone number (twilio)").option("--agent <slug>", "Agent slug to assign to phone number (twilio)").option("--test", "Test the connection after saving").option("--remove", "Remove integration config").option("--enable", "Enable integration").option("--disable", "Disable integration").option("--status", "Show current config status").option("--yes", "Skip confirmation prompts").option("--json", "Output raw JSON").action(async (provider, opts) => {
7417
+ var integrationCommand = new Command17("integration").description("Manage integrations").argument("[provider]", "Integration provider (airtable, resend, flow)").option("--env <environment>", "Environment (development|production)", "development").option("--token <pat>", "Personal access token (airtable)").option("--base-id <id>", "Default base ID (airtable)").option("--from-email <email>", "From email address (resend)").option("--from-name <name>", "From display name (resend)").option("--reply-to <email>", "Reply-to address (resend)").option("--api-url <url>", "API URL (flow)").option("--api-key <key>", "API key (flow)").option("--secret-key <secret>", "Secret key (flow)").option("--return-url <url>", "Return URL after payment (flow)").option("--account-sid <sid>", "Twilio Account SID (twilio)").option("--auth-token <token>", "Twilio Auth Token (twilio)").option("--phone-number <number>", "Twilio phone number in E.164 format (twilio)").option("--router <slug>", "Router slug to assign to phone number (twilio)").option("--agent <slug>", "Agent slug to assign to phone number (twilio)").option("--test", "Test the connection after saving").option("--remove-phone <number>", "Disconnect a single phone number's voice connection (does not remove Twilio credentials)").option("--remove", "Remove integration config").option("--enable", "Enable integration").option("--disable", "Disable integration").option("--status", "Show current config status").option("--yes", "Skip confirmation prompts").option("--json", "Output raw JSON").action(async (provider, opts) => {
7418
7418
  await ensureAuth4();
7419
7419
  const env = opts.env;
7420
7420
  const out = opts.json ? createSilentOutput() : createOutput();
@@ -7458,6 +7458,36 @@ var integrationCommand = new Command17("integration").description("Manage integr
7458
7458
  console.log(` ${chalk19.gray("Available:")} ${VALID_PROVIDERS.join(", ")}`);
7459
7459
  process.exit(1);
7460
7460
  }
7461
+ if (opts.removePhone) {
7462
+ if (provider !== "twilio") {
7463
+ out.fail(`--remove-phone is only supported for twilio`);
7464
+ process.exit(1);
7465
+ }
7466
+ const phoneNumber = String(opts.removePhone).trim();
7467
+ if (!/^\+[1-9]\d{6,14}$/.test(phoneNumber)) {
7468
+ out.fail(`Invalid phone number: ${phoneNumber}`);
7469
+ console.log(` ${chalk19.gray("Expected E.164 format, e.g. +14155551234")}`);
7470
+ process.exit(1);
7471
+ }
7472
+ out.start(`Removing voice connection for ${phoneNumber}`);
7473
+ const { data, error } = await removeVoiceConnectionByPhone({
7474
+ environment: env,
7475
+ twilioPhoneNumber: phoneNumber
7476
+ });
7477
+ if (error) {
7478
+ out.fail(`Failed to remove voice connection`);
7479
+ out.error(error);
7480
+ process.exit(1);
7481
+ }
7482
+ const result = data;
7483
+ if (result?.removed) {
7484
+ out.succeed(`Removed voice connection for ${phoneNumber}`);
7485
+ } else {
7486
+ out.info(`No active voice connection found for ${phoneNumber}`);
7487
+ }
7488
+ console.log();
7489
+ return;
7490
+ }
7461
7491
  if (opts.remove) {
7462
7492
  if (!opts.yes && isInteractive()) {
7463
7493
  const confirmed = await confirm7({
@@ -7516,34 +7546,27 @@ var integrationCommand = new Command17("integration").description("Manage integr
7516
7546
  if (provider === "twilio" && opts.phoneNumber) {
7517
7547
  const phoneNumber = opts.phoneNumber.startsWith("+") ? opts.phoneNumber : `+${opts.phoneNumber}`;
7518
7548
  out.start(`Adding voice connection for ${phoneNumber}`);
7519
- const { data: connData, error: connError } = await createVoiceConnection({
7549
+ const createArgs = {
7550
+ environment: env,
7520
7551
  twilioAccountSid: config.accountSid,
7521
7552
  twilioPhoneNumber: phoneNumber,
7522
- label: `Twilio ${phoneNumber}`,
7523
- environment: env
7524
- });
7553
+ label: `Twilio ${phoneNumber}`
7554
+ };
7555
+ if (opts.router)
7556
+ createArgs.routerSlug = opts.router;
7557
+ if (opts.agent)
7558
+ createArgs.agentSlug = opts.agent;
7559
+ const { error: connError } = await createVoiceConnectionWithAssignment(createArgs);
7525
7560
  if (connError) {
7526
7561
  out.fail(`Failed to create voice connection`);
7527
7562
  out.error(connError);
7528
- } else {
7529
- out.succeed(`Voice connection created for ${phoneNumber}`);
7530
- const conn = connData;
7531
- if (connData && (opts.router || opts.agent)) {
7532
- out.start(`Assigning ${opts.router ? "router" : "agent"}`);
7533
- const connectionId = connData;
7534
- const assignArgs = { connectionId };
7535
- if (opts.router)
7536
- assignArgs.routerSlug = opts.router;
7537
- if (opts.agent)
7538
- assignArgs.agentSlug = opts.agent;
7539
- const { error: assignError } = await setVoicePhoneAgent(assignArgs);
7540
- if (assignError) {
7541
- out.fail(`Failed to assign`);
7542
- out.error(assignError);
7543
- } else {
7544
- out.succeed(`Assigned to ${opts.router ? `router: ${opts.router}` : `agent: ${opts.agent}`}`);
7545
- }
7546
- }
7563
+ process.exit(1);
7564
+ }
7565
+ out.succeed(`Voice connection created for ${phoneNumber}`);
7566
+ if (opts.router || opts.agent) {
7567
+ const slug = opts.router ?? opts.agent;
7568
+ const kind = opts.router ? "router" : "agent";
7569
+ out.info(`Assigned to ${kind}: ${slug}`);
7547
7570
  }
7548
7571
  }
7549
7572
  if (opts.test) {
@@ -11083,7 +11106,7 @@ keysCommand.command("revoke <id-or-prefix>").description("Revoke an API key (del
11083
11106
  // package.json
11084
11107
  var package_default = {
11085
11108
  name: "struere",
11086
- version: "0.14.5",
11109
+ version: "0.14.7",
11087
11110
  description: "Build, test, and deploy AI agents",
11088
11111
  keywords: [
11089
11112
  "ai",
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+HnC,eAAO,MAAM,kBAAkB,SAgR3B,CAAA"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiInC,eAAO,MAAM,kBAAkB,SAqT3B,CAAA"}
package/dist/cli/index.js CHANGED
@@ -7296,11 +7296,11 @@ async function listIntegrationConfigs(env) {
7296
7296
  async function setIntegrationStatus(provider, env, status) {
7297
7297
  return convexMutation4("integrations:setConfigStatus", { provider, environment: env, status });
7298
7298
  }
7299
- async function createVoiceConnection(args) {
7300
- return convexMutation4("voiceConnections:createConnection", args);
7299
+ async function createVoiceConnectionWithAssignment(args) {
7300
+ return convexMutation4("voiceConnections:createConnectionWithAssignment", args);
7301
7301
  }
7302
- async function setVoicePhoneAgent(args) {
7303
- return convexMutation4("voiceConnections:setPhoneAgentBySlug", args);
7302
+ async function removeVoiceConnectionByPhone(args) {
7303
+ return convexMutation4("voiceConnections:removeConnectionByPhone", args);
7304
7304
  }
7305
7305
 
7306
7306
  // src/cli/commands/integration.ts
@@ -7414,7 +7414,7 @@ function buildConfigFromOpts(provider, opts) {
7414
7414
  }
7415
7415
  return null;
7416
7416
  }
7417
- var integrationCommand = new Command17("integration").description("Manage integrations").argument("[provider]", "Integration provider (airtable, resend, flow)").option("--env <environment>", "Environment (development|production)", "development").option("--token <pat>", "Personal access token (airtable)").option("--base-id <id>", "Default base ID (airtable)").option("--from-email <email>", "From email address (resend)").option("--from-name <name>", "From display name (resend)").option("--reply-to <email>", "Reply-to address (resend)").option("--api-url <url>", "API URL (flow)").option("--api-key <key>", "API key (flow)").option("--secret-key <secret>", "Secret key (flow)").option("--return-url <url>", "Return URL after payment (flow)").option("--account-sid <sid>", "Twilio Account SID (twilio)").option("--auth-token <token>", "Twilio Auth Token (twilio)").option("--phone-number <number>", "Twilio phone number in E.164 format (twilio)").option("--router <slug>", "Router slug to assign to phone number (twilio)").option("--agent <slug>", "Agent slug to assign to phone number (twilio)").option("--test", "Test the connection after saving").option("--remove", "Remove integration config").option("--enable", "Enable integration").option("--disable", "Disable integration").option("--status", "Show current config status").option("--yes", "Skip confirmation prompts").option("--json", "Output raw JSON").action(async (provider, opts) => {
7417
+ var integrationCommand = new Command17("integration").description("Manage integrations").argument("[provider]", "Integration provider (airtable, resend, flow)").option("--env <environment>", "Environment (development|production)", "development").option("--token <pat>", "Personal access token (airtable)").option("--base-id <id>", "Default base ID (airtable)").option("--from-email <email>", "From email address (resend)").option("--from-name <name>", "From display name (resend)").option("--reply-to <email>", "Reply-to address (resend)").option("--api-url <url>", "API URL (flow)").option("--api-key <key>", "API key (flow)").option("--secret-key <secret>", "Secret key (flow)").option("--return-url <url>", "Return URL after payment (flow)").option("--account-sid <sid>", "Twilio Account SID (twilio)").option("--auth-token <token>", "Twilio Auth Token (twilio)").option("--phone-number <number>", "Twilio phone number in E.164 format (twilio)").option("--router <slug>", "Router slug to assign to phone number (twilio)").option("--agent <slug>", "Agent slug to assign to phone number (twilio)").option("--test", "Test the connection after saving").option("--remove-phone <number>", "Disconnect a single phone number's voice connection (does not remove Twilio credentials)").option("--remove", "Remove integration config").option("--enable", "Enable integration").option("--disable", "Disable integration").option("--status", "Show current config status").option("--yes", "Skip confirmation prompts").option("--json", "Output raw JSON").action(async (provider, opts) => {
7418
7418
  await ensureAuth4();
7419
7419
  const env = opts.env;
7420
7420
  const out = opts.json ? createSilentOutput() : createOutput();
@@ -7458,6 +7458,36 @@ var integrationCommand = new Command17("integration").description("Manage integr
7458
7458
  console.log(` ${chalk19.gray("Available:")} ${VALID_PROVIDERS.join(", ")}`);
7459
7459
  process.exit(1);
7460
7460
  }
7461
+ if (opts.removePhone) {
7462
+ if (provider !== "twilio") {
7463
+ out.fail(`--remove-phone is only supported for twilio`);
7464
+ process.exit(1);
7465
+ }
7466
+ const phoneNumber = String(opts.removePhone).trim();
7467
+ if (!/^\+[1-9]\d{6,14}$/.test(phoneNumber)) {
7468
+ out.fail(`Invalid phone number: ${phoneNumber}`);
7469
+ console.log(` ${chalk19.gray("Expected E.164 format, e.g. +14155551234")}`);
7470
+ process.exit(1);
7471
+ }
7472
+ out.start(`Removing voice connection for ${phoneNumber}`);
7473
+ const { data, error } = await removeVoiceConnectionByPhone({
7474
+ environment: env,
7475
+ twilioPhoneNumber: phoneNumber
7476
+ });
7477
+ if (error) {
7478
+ out.fail(`Failed to remove voice connection`);
7479
+ out.error(error);
7480
+ process.exit(1);
7481
+ }
7482
+ const result = data;
7483
+ if (result?.removed) {
7484
+ out.succeed(`Removed voice connection for ${phoneNumber}`);
7485
+ } else {
7486
+ out.info(`No active voice connection found for ${phoneNumber}`);
7487
+ }
7488
+ console.log();
7489
+ return;
7490
+ }
7461
7491
  if (opts.remove) {
7462
7492
  if (!opts.yes && isInteractive()) {
7463
7493
  const confirmed = await confirm7({
@@ -7516,34 +7546,27 @@ var integrationCommand = new Command17("integration").description("Manage integr
7516
7546
  if (provider === "twilio" && opts.phoneNumber) {
7517
7547
  const phoneNumber = opts.phoneNumber.startsWith("+") ? opts.phoneNumber : `+${opts.phoneNumber}`;
7518
7548
  out.start(`Adding voice connection for ${phoneNumber}`);
7519
- const { data: connData, error: connError } = await createVoiceConnection({
7549
+ const createArgs = {
7550
+ environment: env,
7520
7551
  twilioAccountSid: config.accountSid,
7521
7552
  twilioPhoneNumber: phoneNumber,
7522
- label: `Twilio ${phoneNumber}`,
7523
- environment: env
7524
- });
7553
+ label: `Twilio ${phoneNumber}`
7554
+ };
7555
+ if (opts.router)
7556
+ createArgs.routerSlug = opts.router;
7557
+ if (opts.agent)
7558
+ createArgs.agentSlug = opts.agent;
7559
+ const { error: connError } = await createVoiceConnectionWithAssignment(createArgs);
7525
7560
  if (connError) {
7526
7561
  out.fail(`Failed to create voice connection`);
7527
7562
  out.error(connError);
7528
- } else {
7529
- out.succeed(`Voice connection created for ${phoneNumber}`);
7530
- const conn = connData;
7531
- if (connData && (opts.router || opts.agent)) {
7532
- out.start(`Assigning ${opts.router ? "router" : "agent"}`);
7533
- const connectionId = connData;
7534
- const assignArgs = { connectionId };
7535
- if (opts.router)
7536
- assignArgs.routerSlug = opts.router;
7537
- if (opts.agent)
7538
- assignArgs.agentSlug = opts.agent;
7539
- const { error: assignError } = await setVoicePhoneAgent(assignArgs);
7540
- if (assignError) {
7541
- out.fail(`Failed to assign`);
7542
- out.error(assignError);
7543
- } else {
7544
- out.succeed(`Assigned to ${opts.router ? `router: ${opts.router}` : `agent: ${opts.agent}`}`);
7545
- }
7546
- }
7563
+ process.exit(1);
7564
+ }
7565
+ out.succeed(`Voice connection created for ${phoneNumber}`);
7566
+ if (opts.router || opts.agent) {
7567
+ const slug = opts.router ?? opts.agent;
7568
+ const kind = opts.router ? "router" : "agent";
7569
+ out.info(`Assigned to ${kind}: ${slug}`);
7547
7570
  }
7548
7571
  }
7549
7572
  if (opts.test) {
@@ -11083,7 +11106,7 @@ keysCommand.command("revoke <id-or-prefix>").description("Revoke an API key (del
11083
11106
  // package.json
11084
11107
  var package_default = {
11085
11108
  name: "struere",
11086
- version: "0.14.5",
11109
+ version: "0.14.7",
11087
11110
  description: "Build, test, and deploy AI agents",
11088
11111
  keywords: [
11089
11112
  "ai",
@@ -40,9 +40,28 @@ export declare function setVoicePhoneAgent(args: {
40
40
  data?: unknown;
41
41
  error?: string;
42
42
  }>;
43
+ export declare function createVoiceConnectionWithAssignment(args: {
44
+ environment: Environment;
45
+ twilioAccountSid: string;
46
+ twilioPhoneNumber: string;
47
+ label?: string;
48
+ phoneNumberSid?: string;
49
+ routerSlug?: string;
50
+ agentSlug?: string;
51
+ }): Promise<{
52
+ data?: unknown;
53
+ error?: string;
54
+ }>;
43
55
  export declare function listVoiceConnections(): Promise<{
44
56
  data?: unknown;
45
57
  error?: string;
46
58
  }>;
59
+ export declare function removeVoiceConnectionByPhone(args: {
60
+ environment: Environment;
61
+ twilioPhoneNumber: string;
62
+ }): Promise<{
63
+ data?: unknown;
64
+ error?: string;
65
+ }>;
47
66
  export {};
48
67
  //# sourceMappingURL=integrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/integrations.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG,aAAa,GAAG,YAAY,CAAA;AAkG/C,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WAhGa,OAAO;YAAU,MAAM;GAkGhH;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;WApEpB,OAAO;YAAU,MAAM;GAsEnH;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WAxCS,OAAO;YAAU,MAAM;GA0CjH;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WA5Ea,OAAO;YAAU,MAAM;GA8EnH;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,WAAW;WAhH6B,OAAO;YAAU,MAAM;GAkHhH;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU;WApFf,OAAO;YAAU,MAAM;GAsFnH;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;WA7F4F,OAAO;YAAU,MAAM;GA+FnH;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;WArG4F,OAAO;YAAU,MAAM;GAuGnH;AAED,wBAAsB,oBAAoB;WAzIgD,OAAO;YAAU,MAAM;GA2IhH"}
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/integrations.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG,aAAa,GAAG,YAAY,CAAA;AAkG/C,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WAhGa,OAAO;YAAU,MAAM;GAkGhH;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;WApEpB,OAAO;YAAU,MAAM;GAsEnH;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WAxCS,OAAO;YAAU,MAAM;GA0CjH;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WA5Ea,OAAO;YAAU,MAAM;GA8EnH;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,WAAW;WAhH6B,OAAO;YAAU,MAAM;GAkHhH;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU;WApFf,OAAO;YAAU,MAAM;GAsFnH;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;WA7F4F,OAAO;YAAU,MAAM;GA+FnH;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;WArG4F,OAAO;YAAU,MAAM;GAuGnH;AAED,wBAAsB,mCAAmC,CAAC,IAAI,EAAE;IAC9D,WAAW,EAAE,WAAW,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;WAjH4F,OAAO;YAAU,MAAM;GAmHnH;AAED,wBAAsB,oBAAoB;WArJgD,OAAO;YAAU,MAAM;GAuJhH;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;WA5H4F,OAAO;YAAU,MAAM;GA8HnH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "struere",
3
- "version": "0.14.5",
3
+ "version": "0.14.7",
4
4
  "description": "Build, test, and deploy AI agents",
5
5
  "keywords": [
6
6
  "ai",