struere 0.10.0 → 0.10.2

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.
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
+ var __require = import.meta.require;
3
4
 
4
5
  // src/cli/index.ts
5
6
  import { program } from "commander";
@@ -461,6 +462,111 @@ async function compilePrompt(options) {
461
462
  }
462
463
  return { error: `Unexpected response: ${text}` };
463
464
  }
465
+ async function runTool(options) {
466
+ const credentials = loadCredentials();
467
+ const apiKey = getApiKey();
468
+ if (apiKey && !credentials?.token) {
469
+ const siteUrl = getSiteUrl();
470
+ try {
471
+ const response2 = await fetch(`${siteUrl}/v1/run-tool`, {
472
+ method: "POST",
473
+ headers: {
474
+ "Content-Type": "application/json",
475
+ Authorization: `Bearer ${apiKey}`
476
+ },
477
+ body: JSON.stringify({
478
+ agentSlug: options.agentSlug,
479
+ toolName: options.toolName,
480
+ args: options.toolArgs
481
+ }),
482
+ signal: AbortSignal.timeout(30000)
483
+ });
484
+ const text2 = await response2.text();
485
+ let json2;
486
+ try {
487
+ json2 = JSON.parse(text2);
488
+ } catch {
489
+ return { error: text2 || `HTTP ${response2.status}` };
490
+ }
491
+ if (!response2.ok) {
492
+ return { error: json2.error || text2 };
493
+ }
494
+ return { result: json2 };
495
+ } catch (err) {
496
+ if (err instanceof DOMException && err.name === "TimeoutError") {
497
+ return { error: "Request timed out after 30s" };
498
+ }
499
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
500
+ }
501
+ }
502
+ if (credentials?.sessionId) {
503
+ await refreshToken();
504
+ }
505
+ const freshCredentials = loadCredentials();
506
+ const token = apiKey || freshCredentials?.token;
507
+ if (!token) {
508
+ return { error: "Not authenticated" };
509
+ }
510
+ const agentResponse = await fetch(`${CONVEX_URL}/api/query`, {
511
+ method: "POST",
512
+ headers: {
513
+ "Content-Type": "application/json",
514
+ Authorization: `Bearer ${token}`
515
+ },
516
+ body: JSON.stringify({
517
+ path: "agents:getBySlug",
518
+ args: { slug: options.agentSlug, organizationId: options.organizationId }
519
+ })
520
+ });
521
+ if (!agentResponse.ok) {
522
+ return { error: await agentResponse.text() };
523
+ }
524
+ const agentResult = await agentResponse.json();
525
+ if (agentResult.status === "error") {
526
+ return { error: agentResult.errorMessage || "Failed to look up agent" };
527
+ }
528
+ if (!agentResult.value) {
529
+ return { error: `Agent not found: ${options.agentSlug}` };
530
+ }
531
+ const response = await fetch(`${CONVEX_URL}/api/action`, {
532
+ method: "POST",
533
+ headers: {
534
+ "Content-Type": "application/json",
535
+ Authorization: `Bearer ${token}`
536
+ },
537
+ body: JSON.stringify({
538
+ path: "toolTesting:runTool",
539
+ args: {
540
+ agentId: agentResult.value._id,
541
+ environment: options.environment,
542
+ toolName: options.toolName,
543
+ toolArgs: options.toolArgs
544
+ }
545
+ }),
546
+ signal: AbortSignal.timeout(30000)
547
+ });
548
+ const text = await response.text();
549
+ let json;
550
+ try {
551
+ json = JSON.parse(text);
552
+ } catch {
553
+ return { error: text || `HTTP ${response.status}` };
554
+ }
555
+ if (!response.ok) {
556
+ const msg = json.errorData?.message || json.errorMessage || text;
557
+ return { error: msg };
558
+ }
559
+ if (json.status === "success" && json.value) {
560
+ return { result: json.value };
561
+ }
562
+ if (json.status === "success" && json.value === null) {
563
+ return { error: `Agent not found or no config for environment: ${options.environment}` };
564
+ }
565
+ if (json.status === "error") {
566
+ return { error: json.errorData?.message || json.errorMessage || "Unknown error from Convex" };
567
+ }
568
+ return { error: `Unexpected response: ${text}` };
569
+ }
464
570
  async function getPullState(organizationId, environment = "development") {
465
571
  const credentials = loadCredentials();
466
572
  const apiKey = getApiKey();
@@ -6695,10 +6801,165 @@ var compilePromptCommand = new Command17("compile-prompt").description("Compile
6695
6801
  console.log(chalk19.gray("\u2500".repeat(60)));
6696
6802
  }
6697
6803
  });
6804
+
6805
+ // src/cli/commands/run-tool.ts
6806
+ import { Command as Command18 } from "commander";
6807
+ import chalk20 from "chalk";
6808
+ import ora14 from "ora";
6809
+ var runToolCommand = new Command18("run-tool").description("Run a tool as it would execute during a real agent conversation").argument("<agent-slug>", "Agent slug").argument("<tool-name>", "Tool name (e.g., entity.query)").option("--env <environment>", "Environment: development | production | eval", "development").option("--args <json>", "Tool arguments as JSON string", "{}").option("--args-file <path>", "Read tool arguments from a JSON file").option("--json", "Output full JSON result").option("--confirm", "Skip production confirmation prompt").action(async (agentSlug, toolName, options) => {
6810
+ const spinner = ora14();
6811
+ const cwd = process.cwd();
6812
+ const nonInteractive = !isInteractive();
6813
+ const jsonMode = !!options.json;
6814
+ if (!hasProject(cwd)) {
6815
+ if (nonInteractive) {
6816
+ if (jsonMode) {
6817
+ console.log(JSON.stringify({ success: false, error: "No struere.json found" }));
6818
+ } else {
6819
+ console.log(chalk20.red("No struere.json found. Run struere init first."));
6820
+ }
6821
+ process.exit(1);
6822
+ }
6823
+ console.log(chalk20.yellow("No struere.json found - initializing project..."));
6824
+ console.log();
6825
+ const success = await runInit(cwd);
6826
+ if (!success) {
6827
+ process.exit(1);
6828
+ }
6829
+ console.log();
6830
+ }
6831
+ const project = loadProject(cwd);
6832
+ if (!project) {
6833
+ if (jsonMode) {
6834
+ console.log(JSON.stringify({ success: false, error: "Failed to load struere.json" }));
6835
+ } else {
6836
+ console.log(chalk20.red("Failed to load struere.json"));
6837
+ }
6838
+ process.exit(1);
6839
+ }
6840
+ let credentials = loadCredentials();
6841
+ const apiKey = getApiKey();
6842
+ if (!credentials && !apiKey) {
6843
+ if (nonInteractive) {
6844
+ if (jsonMode) {
6845
+ console.log(JSON.stringify({ success: false, error: "Not authenticated. Set STRUERE_API_KEY or run struere login." }));
6846
+ } else {
6847
+ console.log(chalk20.red("Not authenticated. Set STRUERE_API_KEY or run struere login."));
6848
+ }
6849
+ process.exit(1);
6850
+ }
6851
+ console.log(chalk20.yellow("Not logged in - authenticating..."));
6852
+ console.log();
6853
+ credentials = await performLogin();
6854
+ if (!credentials) {
6855
+ console.log(chalk20.red("Authentication failed"));
6856
+ process.exit(1);
6857
+ }
6858
+ console.log();
6859
+ }
6860
+ let toolArgs;
6861
+ try {
6862
+ if (options.argsFile) {
6863
+ const fs = await import("fs");
6864
+ const content = fs.readFileSync(options.argsFile, "utf-8");
6865
+ toolArgs = JSON.parse(content);
6866
+ } else {
6867
+ toolArgs = JSON.parse(options.args);
6868
+ }
6869
+ } catch (err) {
6870
+ if (jsonMode) {
6871
+ console.log(JSON.stringify({ success: false, error: `Invalid JSON: ${err instanceof Error ? err.message : String(err)}` }));
6872
+ } else {
6873
+ console.log(chalk20.red(`Invalid JSON: ${err instanceof Error ? err.message : String(err)}`));
6874
+ }
6875
+ process.exit(1);
6876
+ }
6877
+ const environment = options.env;
6878
+ if (environment === "production" && !options.confirm && !nonInteractive) {
6879
+ const readline = await import("readline");
6880
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
6881
+ await new Promise((resolve) => {
6882
+ rl.question(chalk20.yellow(`WARNING: Running tool against PRODUCTION environment.
6883
+ This will execute real operations with real data.
6884
+ Press Enter to continue or Ctrl+C to cancel: `), resolve);
6885
+ });
6886
+ rl.close();
6887
+ }
6888
+ if (!jsonMode) {
6889
+ spinner.start(`Running ${chalk20.cyan(toolName)} on ${chalk20.cyan(agentSlug)} (${environment})`);
6890
+ }
6891
+ const doRunTool = async () => {
6892
+ return runTool({
6893
+ agentSlug,
6894
+ toolName,
6895
+ toolArgs,
6896
+ environment,
6897
+ organizationId: project?.organization.id
6898
+ });
6899
+ };
6900
+ let { result, error } = await doRunTool();
6901
+ if (error && isAuthError(error) && !nonInteractive) {
6902
+ if (!jsonMode)
6903
+ spinner.fail("Session expired - re-authenticating...");
6904
+ clearCredentials();
6905
+ credentials = await performLogin();
6906
+ if (!credentials) {
6907
+ if (jsonMode) {
6908
+ console.log(JSON.stringify({ success: false, error: "Authentication failed" }));
6909
+ } else {
6910
+ console.log(chalk20.red("Authentication failed"));
6911
+ }
6912
+ process.exit(1);
6913
+ }
6914
+ const retry = await doRunTool();
6915
+ result = retry.result;
6916
+ error = retry.error;
6917
+ if (!jsonMode && !error)
6918
+ spinner.succeed(`Ran ${chalk20.cyan(toolName)}`);
6919
+ }
6920
+ if (error) {
6921
+ if (jsonMode) {
6922
+ console.log(JSON.stringify({ success: false, error }));
6923
+ } else {
6924
+ spinner.fail("Failed to run tool");
6925
+ console.log(chalk20.red("Error:"), error);
6926
+ }
6927
+ process.exit(1);
6928
+ }
6929
+ if (!result) {
6930
+ if (jsonMode) {
6931
+ console.log(JSON.stringify({ success: false, error: "No result returned" }));
6932
+ } else {
6933
+ spinner.fail("No result returned");
6934
+ }
6935
+ process.exit(1);
6936
+ }
6937
+ if (result.error) {
6938
+ if (jsonMode) {
6939
+ console.log(JSON.stringify({ success: false, error: `${result.errorType}: ${result.message}`, result }));
6940
+ } else {
6941
+ spinner.fail(chalk20.red(`${result.errorType}: ${result.message}`));
6942
+ }
6943
+ process.exit(1);
6944
+ }
6945
+ if (!jsonMode) {
6946
+ spinner.succeed(`Ran ${chalk20.cyan(toolName)} on ${chalk20.cyan(result.agent.slug)} (${result.environment}) in ${result.durationMs}ms`);
6947
+ }
6948
+ if (jsonMode) {
6949
+ console.log(JSON.stringify(result, null, 2));
6950
+ } else {
6951
+ console.log();
6952
+ console.log(chalk20.dim("\u2500".repeat(50)));
6953
+ console.log(JSON.stringify(result.result, null, 2));
6954
+ console.log(chalk20.dim("\u2500".repeat(50)));
6955
+ console.log();
6956
+ console.log(chalk20.dim(`Identity: ${result.identity.actorType} (${result.identity.identityMode} mode)`));
6957
+ }
6958
+ });
6698
6959
  // package.json
6699
6960
  var package_default = {
6700
6961
  name: "struere",
6701
- version: "0.10.0",
6962
+ version: "0.10.2",
6702
6963
  description: "Build, test, and deploy AI agents",
6703
6964
  keywords: [
6704
6965
  "ai",
@@ -6815,4 +7076,5 @@ program.addCommand(evalCommand);
6815
7076
  program.addCommand(templatesCommand);
6816
7077
  program.addCommand(integrationCommand);
6817
7078
  program.addCommand(compilePromptCommand);
7079
+ program.addCommand(runToolCommand);
6818
7080
  program.parse();
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const runToolCommand: Command;
3
+ //# sourceMappingURL=run-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tool.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,eAAO,MAAM,cAAc,SA0KvB,CAAA"}
package/dist/cli/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
+ var __require = import.meta.require;
3
4
 
4
5
  // src/cli/index.ts
5
6
  import { program } from "commander";
@@ -461,6 +462,111 @@ async function compilePrompt(options) {
461
462
  }
462
463
  return { error: `Unexpected response: ${text}` };
463
464
  }
465
+ async function runTool(options) {
466
+ const credentials = loadCredentials();
467
+ const apiKey = getApiKey();
468
+ if (apiKey && !credentials?.token) {
469
+ const siteUrl = getSiteUrl();
470
+ try {
471
+ const response2 = await fetch(`${siteUrl}/v1/run-tool`, {
472
+ method: "POST",
473
+ headers: {
474
+ "Content-Type": "application/json",
475
+ Authorization: `Bearer ${apiKey}`
476
+ },
477
+ body: JSON.stringify({
478
+ agentSlug: options.agentSlug,
479
+ toolName: options.toolName,
480
+ args: options.toolArgs
481
+ }),
482
+ signal: AbortSignal.timeout(30000)
483
+ });
484
+ const text2 = await response2.text();
485
+ let json2;
486
+ try {
487
+ json2 = JSON.parse(text2);
488
+ } catch {
489
+ return { error: text2 || `HTTP ${response2.status}` };
490
+ }
491
+ if (!response2.ok) {
492
+ return { error: json2.error || text2 };
493
+ }
494
+ return { result: json2 };
495
+ } catch (err) {
496
+ if (err instanceof DOMException && err.name === "TimeoutError") {
497
+ return { error: "Request timed out after 30s" };
498
+ }
499
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
500
+ }
501
+ }
502
+ if (credentials?.sessionId) {
503
+ await refreshToken();
504
+ }
505
+ const freshCredentials = loadCredentials();
506
+ const token = apiKey || freshCredentials?.token;
507
+ if (!token) {
508
+ return { error: "Not authenticated" };
509
+ }
510
+ const agentResponse = await fetch(`${CONVEX_URL}/api/query`, {
511
+ method: "POST",
512
+ headers: {
513
+ "Content-Type": "application/json",
514
+ Authorization: `Bearer ${token}`
515
+ },
516
+ body: JSON.stringify({
517
+ path: "agents:getBySlug",
518
+ args: { slug: options.agentSlug, organizationId: options.organizationId }
519
+ })
520
+ });
521
+ if (!agentResponse.ok) {
522
+ return { error: await agentResponse.text() };
523
+ }
524
+ const agentResult = await agentResponse.json();
525
+ if (agentResult.status === "error") {
526
+ return { error: agentResult.errorMessage || "Failed to look up agent" };
527
+ }
528
+ if (!agentResult.value) {
529
+ return { error: `Agent not found: ${options.agentSlug}` };
530
+ }
531
+ const response = await fetch(`${CONVEX_URL}/api/action`, {
532
+ method: "POST",
533
+ headers: {
534
+ "Content-Type": "application/json",
535
+ Authorization: `Bearer ${token}`
536
+ },
537
+ body: JSON.stringify({
538
+ path: "toolTesting:runTool",
539
+ args: {
540
+ agentId: agentResult.value._id,
541
+ environment: options.environment,
542
+ toolName: options.toolName,
543
+ toolArgs: options.toolArgs
544
+ }
545
+ }),
546
+ signal: AbortSignal.timeout(30000)
547
+ });
548
+ const text = await response.text();
549
+ let json;
550
+ try {
551
+ json = JSON.parse(text);
552
+ } catch {
553
+ return { error: text || `HTTP ${response.status}` };
554
+ }
555
+ if (!response.ok) {
556
+ const msg = json.errorData?.message || json.errorMessage || text;
557
+ return { error: msg };
558
+ }
559
+ if (json.status === "success" && json.value) {
560
+ return { result: json.value };
561
+ }
562
+ if (json.status === "success" && json.value === null) {
563
+ return { error: `Agent not found or no config for environment: ${options.environment}` };
564
+ }
565
+ if (json.status === "error") {
566
+ return { error: json.errorData?.message || json.errorMessage || "Unknown error from Convex" };
567
+ }
568
+ return { error: `Unexpected response: ${text}` };
569
+ }
464
570
  async function getPullState(organizationId, environment = "development") {
465
571
  const credentials = loadCredentials();
466
572
  const apiKey = getApiKey();
@@ -6695,10 +6801,165 @@ var compilePromptCommand = new Command17("compile-prompt").description("Compile
6695
6801
  console.log(chalk19.gray("\u2500".repeat(60)));
6696
6802
  }
6697
6803
  });
6804
+
6805
+ // src/cli/commands/run-tool.ts
6806
+ import { Command as Command18 } from "commander";
6807
+ import chalk20 from "chalk";
6808
+ import ora14 from "ora";
6809
+ var runToolCommand = new Command18("run-tool").description("Run a tool as it would execute during a real agent conversation").argument("<agent-slug>", "Agent slug").argument("<tool-name>", "Tool name (e.g., entity.query)").option("--env <environment>", "Environment: development | production | eval", "development").option("--args <json>", "Tool arguments as JSON string", "{}").option("--args-file <path>", "Read tool arguments from a JSON file").option("--json", "Output full JSON result").option("--confirm", "Skip production confirmation prompt").action(async (agentSlug, toolName, options) => {
6810
+ const spinner = ora14();
6811
+ const cwd = process.cwd();
6812
+ const nonInteractive = !isInteractive();
6813
+ const jsonMode = !!options.json;
6814
+ if (!hasProject(cwd)) {
6815
+ if (nonInteractive) {
6816
+ if (jsonMode) {
6817
+ console.log(JSON.stringify({ success: false, error: "No struere.json found" }));
6818
+ } else {
6819
+ console.log(chalk20.red("No struere.json found. Run struere init first."));
6820
+ }
6821
+ process.exit(1);
6822
+ }
6823
+ console.log(chalk20.yellow("No struere.json found - initializing project..."));
6824
+ console.log();
6825
+ const success = await runInit(cwd);
6826
+ if (!success) {
6827
+ process.exit(1);
6828
+ }
6829
+ console.log();
6830
+ }
6831
+ const project = loadProject(cwd);
6832
+ if (!project) {
6833
+ if (jsonMode) {
6834
+ console.log(JSON.stringify({ success: false, error: "Failed to load struere.json" }));
6835
+ } else {
6836
+ console.log(chalk20.red("Failed to load struere.json"));
6837
+ }
6838
+ process.exit(1);
6839
+ }
6840
+ let credentials = loadCredentials();
6841
+ const apiKey = getApiKey();
6842
+ if (!credentials && !apiKey) {
6843
+ if (nonInteractive) {
6844
+ if (jsonMode) {
6845
+ console.log(JSON.stringify({ success: false, error: "Not authenticated. Set STRUERE_API_KEY or run struere login." }));
6846
+ } else {
6847
+ console.log(chalk20.red("Not authenticated. Set STRUERE_API_KEY or run struere login."));
6848
+ }
6849
+ process.exit(1);
6850
+ }
6851
+ console.log(chalk20.yellow("Not logged in - authenticating..."));
6852
+ console.log();
6853
+ credentials = await performLogin();
6854
+ if (!credentials) {
6855
+ console.log(chalk20.red("Authentication failed"));
6856
+ process.exit(1);
6857
+ }
6858
+ console.log();
6859
+ }
6860
+ let toolArgs;
6861
+ try {
6862
+ if (options.argsFile) {
6863
+ const fs = await import("fs");
6864
+ const content = fs.readFileSync(options.argsFile, "utf-8");
6865
+ toolArgs = JSON.parse(content);
6866
+ } else {
6867
+ toolArgs = JSON.parse(options.args);
6868
+ }
6869
+ } catch (err) {
6870
+ if (jsonMode) {
6871
+ console.log(JSON.stringify({ success: false, error: `Invalid JSON: ${err instanceof Error ? err.message : String(err)}` }));
6872
+ } else {
6873
+ console.log(chalk20.red(`Invalid JSON: ${err instanceof Error ? err.message : String(err)}`));
6874
+ }
6875
+ process.exit(1);
6876
+ }
6877
+ const environment = options.env;
6878
+ if (environment === "production" && !options.confirm && !nonInteractive) {
6879
+ const readline = await import("readline");
6880
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
6881
+ await new Promise((resolve) => {
6882
+ rl.question(chalk20.yellow(`WARNING: Running tool against PRODUCTION environment.
6883
+ This will execute real operations with real data.
6884
+ Press Enter to continue or Ctrl+C to cancel: `), resolve);
6885
+ });
6886
+ rl.close();
6887
+ }
6888
+ if (!jsonMode) {
6889
+ spinner.start(`Running ${chalk20.cyan(toolName)} on ${chalk20.cyan(agentSlug)} (${environment})`);
6890
+ }
6891
+ const doRunTool = async () => {
6892
+ return runTool({
6893
+ agentSlug,
6894
+ toolName,
6895
+ toolArgs,
6896
+ environment,
6897
+ organizationId: project?.organization.id
6898
+ });
6899
+ };
6900
+ let { result, error } = await doRunTool();
6901
+ if (error && isAuthError(error) && !nonInteractive) {
6902
+ if (!jsonMode)
6903
+ spinner.fail("Session expired - re-authenticating...");
6904
+ clearCredentials();
6905
+ credentials = await performLogin();
6906
+ if (!credentials) {
6907
+ if (jsonMode) {
6908
+ console.log(JSON.stringify({ success: false, error: "Authentication failed" }));
6909
+ } else {
6910
+ console.log(chalk20.red("Authentication failed"));
6911
+ }
6912
+ process.exit(1);
6913
+ }
6914
+ const retry = await doRunTool();
6915
+ result = retry.result;
6916
+ error = retry.error;
6917
+ if (!jsonMode && !error)
6918
+ spinner.succeed(`Ran ${chalk20.cyan(toolName)}`);
6919
+ }
6920
+ if (error) {
6921
+ if (jsonMode) {
6922
+ console.log(JSON.stringify({ success: false, error }));
6923
+ } else {
6924
+ spinner.fail("Failed to run tool");
6925
+ console.log(chalk20.red("Error:"), error);
6926
+ }
6927
+ process.exit(1);
6928
+ }
6929
+ if (!result) {
6930
+ if (jsonMode) {
6931
+ console.log(JSON.stringify({ success: false, error: "No result returned" }));
6932
+ } else {
6933
+ spinner.fail("No result returned");
6934
+ }
6935
+ process.exit(1);
6936
+ }
6937
+ if (result.error) {
6938
+ if (jsonMode) {
6939
+ console.log(JSON.stringify({ success: false, error: `${result.errorType}: ${result.message}`, result }));
6940
+ } else {
6941
+ spinner.fail(chalk20.red(`${result.errorType}: ${result.message}`));
6942
+ }
6943
+ process.exit(1);
6944
+ }
6945
+ if (!jsonMode) {
6946
+ spinner.succeed(`Ran ${chalk20.cyan(toolName)} on ${chalk20.cyan(result.agent.slug)} (${result.environment}) in ${result.durationMs}ms`);
6947
+ }
6948
+ if (jsonMode) {
6949
+ console.log(JSON.stringify(result, null, 2));
6950
+ } else {
6951
+ console.log();
6952
+ console.log(chalk20.dim("\u2500".repeat(50)));
6953
+ console.log(JSON.stringify(result.result, null, 2));
6954
+ console.log(chalk20.dim("\u2500".repeat(50)));
6955
+ console.log();
6956
+ console.log(chalk20.dim(`Identity: ${result.identity.actorType} (${result.identity.identityMode} mode)`));
6957
+ }
6958
+ });
6698
6959
  // package.json
6699
6960
  var package_default = {
6700
6961
  name: "struere",
6701
- version: "0.10.0",
6962
+ version: "0.10.2",
6702
6963
  description: "Build, test, and deploy AI agents",
6703
6964
  keywords: [
6704
6965
  "ai",
@@ -6815,4 +7076,5 @@ program.addCommand(evalCommand);
6815
7076
  program.addCommand(templatesCommand);
6816
7077
  program.addCommand(integrationCommand);
6817
7078
  program.addCommand(compilePromptCommand);
7079
+ program.addCommand(runToolCommand);
6818
7080
  program.parse();
@@ -302,6 +302,37 @@ export declare function compilePrompt(options: CompilePromptOptions): Promise<{
302
302
  result?: CompilePromptResult;
303
303
  error?: string;
304
304
  }>;
305
+ export interface RunToolOptions {
306
+ agentSlug: string;
307
+ toolName: string;
308
+ toolArgs: Record<string, unknown>;
309
+ environment: 'development' | 'production' | 'eval';
310
+ organizationId?: string;
311
+ }
312
+ export interface RunToolResult {
313
+ tool: {
314
+ name: string;
315
+ isBuiltin: boolean;
316
+ };
317
+ agent: {
318
+ name: string;
319
+ slug: string;
320
+ };
321
+ environment: string;
322
+ result: unknown;
323
+ durationMs: number;
324
+ identity: {
325
+ actorType: string;
326
+ identityMode: string;
327
+ };
328
+ error?: boolean;
329
+ errorType?: string;
330
+ message?: string;
331
+ }
332
+ export declare function runTool(options: RunToolOptions): Promise<{
333
+ result?: RunToolResult;
334
+ error?: string;
335
+ }>;
305
336
  export declare function getPullState(organizationId?: string, environment?: 'development' | 'production' | 'eval'): Promise<{
306
337
  state?: PullState;
307
338
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "struere",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "Build, test, and deploy AI agents",
5
5
  "keywords": [
6
6
  "ai",