struere 0.9.1 → 0.9.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.
@@ -20573,6 +20573,7 @@ var TYPE_DECLARATIONS = `declare module 'struere' {
20573
20573
  systemPrompt: string | (() => string | Promise<string>)
20574
20574
  model?: ModelConfig
20575
20575
  tools?: string[]
20576
+ firstMessageSuggestions?: string[]
20576
20577
  }
20577
20578
 
20578
20579
  export interface JSONSchemaProperty {
@@ -21450,7 +21451,14 @@ var BUILTIN_TOOLS = [
21450
21451
  "whatsapp.listTemplates",
21451
21452
  "whatsapp.getConversation",
21452
21453
  "whatsapp.getStatus",
21453
- "agent.chat"
21454
+ "agent.chat",
21455
+ "airtable.listBases",
21456
+ "airtable.listTables",
21457
+ "airtable.listRecords",
21458
+ "airtable.getRecord",
21459
+ "airtable.createRecords",
21460
+ "airtable.updateRecords",
21461
+ "airtable.deleteRecords"
21454
21462
  ];
21455
21463
  function extractSyncPayload(resources) {
21456
21464
  const customToolsMap = new Map;
@@ -21580,6 +21588,8 @@ function extractAgentPayload(agent, customToolsMap) {
21580
21588
  slug: agent.slug,
21581
21589
  version: agent.version,
21582
21590
  description: agent.description,
21591
+ firstMessageSuggestions: agent.firstMessageSuggestions,
21592
+ threadContextParams: agent.threadContextParams,
21583
21593
  systemPrompt,
21584
21594
  model: {
21585
21595
  provider: agent.model?.provider || "xai",
@@ -21613,7 +21623,14 @@ function getBuiltinToolDescription(name) {
21613
21623
  "whatsapp.listTemplates": "List available WhatsApp message templates",
21614
21624
  "whatsapp.getConversation": "Get WhatsApp conversation history with a phone number",
21615
21625
  "whatsapp.getStatus": "Get WhatsApp connection status for this organization",
21616
- "agent.chat": "Send a message to another agent and get its response"
21626
+ "agent.chat": "Send a message to another agent and get its response",
21627
+ "airtable.listBases": "List all Airtable bases accessible with the configured token",
21628
+ "airtable.listTables": "List all tables in an Airtable base",
21629
+ "airtable.listRecords": "List records from an Airtable table with optional filtering and sorting",
21630
+ "airtable.getRecord": "Get a single record from an Airtable table by ID",
21631
+ "airtable.createRecords": "Create up to 10 records in an Airtable table",
21632
+ "airtable.updateRecords": "Update up to 10 records in an Airtable table",
21633
+ "airtable.deleteRecords": "Delete up to 10 records from an Airtable table"
21617
21634
  };
21618
21635
  return descriptions[name] || name;
21619
21636
  }
@@ -21849,6 +21866,67 @@ function getBuiltinToolParameters(name) {
21849
21866
  context: { type: "object", description: "Optional context data to pass to the target agent" }
21850
21867
  },
21851
21868
  required: ["agent", "message"]
21869
+ },
21870
+ "airtable.listBases": {
21871
+ type: "object",
21872
+ properties: {}
21873
+ },
21874
+ "airtable.listTables": {
21875
+ type: "object",
21876
+ properties: {
21877
+ baseId: { type: "string", description: 'Airtable base ID (e.g., "appXXXXXXXXXXXXXX")' }
21878
+ },
21879
+ required: ["baseId"]
21880
+ },
21881
+ "airtable.listRecords": {
21882
+ type: "object",
21883
+ properties: {
21884
+ baseId: { type: "string", description: "Airtable base ID" },
21885
+ tableIdOrName: { type: "string", description: "Table ID or name" },
21886
+ pageSize: { type: "number", description: "Number of records per page (max 100)" },
21887
+ offset: { type: "string", description: "Pagination offset from a previous response" },
21888
+ filterByFormula: { type: "string", description: `Airtable formula to filter records (e.g., "{Status} = 'Active'")` },
21889
+ sort: { type: "array", items: { type: "object", properties: { field: { type: "string" }, direction: { type: "string", enum: ["asc", "desc"] } }, required: ["field"] }, description: "Sort configuration" },
21890
+ fields: { type: "array", items: { type: "string" }, description: "Only return specific field names" },
21891
+ view: { type: "string", description: "Name or ID of an Airtable view to use" }
21892
+ },
21893
+ required: ["baseId", "tableIdOrName"]
21894
+ },
21895
+ "airtable.getRecord": {
21896
+ type: "object",
21897
+ properties: {
21898
+ baseId: { type: "string", description: "Airtable base ID" },
21899
+ tableIdOrName: { type: "string", description: "Table ID or name" },
21900
+ recordId: { type: "string", description: 'Record ID (e.g., "recXXXXXXXXXXXXXX")' }
21901
+ },
21902
+ required: ["baseId", "tableIdOrName", "recordId"]
21903
+ },
21904
+ "airtable.createRecords": {
21905
+ type: "object",
21906
+ properties: {
21907
+ baseId: { type: "string", description: "Airtable base ID" },
21908
+ tableIdOrName: { type: "string", description: "Table ID or name" },
21909
+ records: { type: "array", items: { type: "object", properties: { fields: { type: "object", description: "Field values for the record" } }, required: ["fields"] }, description: "Array of records to create (max 10)" }
21910
+ },
21911
+ required: ["baseId", "tableIdOrName", "records"]
21912
+ },
21913
+ "airtable.updateRecords": {
21914
+ type: "object",
21915
+ properties: {
21916
+ baseId: { type: "string", description: "Airtable base ID" },
21917
+ tableIdOrName: { type: "string", description: "Table ID or name" },
21918
+ records: { type: "array", items: { type: "object", properties: { id: { type: "string", description: "Record ID to update" }, fields: { type: "object", description: "Field values to update" } }, required: ["id", "fields"] }, description: "Array of records to update (max 10)" }
21919
+ },
21920
+ required: ["baseId", "tableIdOrName", "records"]
21921
+ },
21922
+ "airtable.deleteRecords": {
21923
+ type: "object",
21924
+ properties: {
21925
+ baseId: { type: "string", description: "Airtable base ID" },
21926
+ tableIdOrName: { type: "string", description: "Table ID or name" },
21927
+ recordIds: { type: "array", items: { type: "string" }, description: "Array of record IDs to delete (max 10)" }
21928
+ },
21929
+ required: ["baseId", "tableIdOrName", "recordIds"]
21852
21930
  }
21853
21931
  };
21854
21932
  return schemas[name] || { type: "object", properties: {} };
@@ -24535,11 +24613,47 @@ import { readFileSync as readFileSync4 } from "fs";
24535
24613
 
24536
24614
  // src/cli/utils/whatsapp.ts
24537
24615
  var CONVEX_URL4 = process.env.STRUERE_CONVEX_URL || "https://rapid-wildebeest-172.convex.cloud";
24616
+ function getSiteUrl2() {
24617
+ return CONVEX_URL4.replace(".cloud", ".site");
24618
+ }
24538
24619
  function getToken3() {
24539
24620
  const credentials = loadCredentials();
24540
24621
  const apiKey = getApiKey();
24541
24622
  return apiKey || credentials?.token || null;
24542
24623
  }
24624
+ async function httpPost(path, body) {
24625
+ const apiKey = getApiKey();
24626
+ if (!apiKey)
24627
+ return { error: "Not authenticated" };
24628
+ const siteUrl = getSiteUrl2();
24629
+ try {
24630
+ const response = await fetch(`${siteUrl}${path}`, {
24631
+ method: "POST",
24632
+ headers: {
24633
+ "Content-Type": "application/json",
24634
+ Authorization: `Bearer ${apiKey}`
24635
+ },
24636
+ body: JSON.stringify(body),
24637
+ signal: AbortSignal.timeout(30000)
24638
+ });
24639
+ const text = await response.text();
24640
+ let json;
24641
+ try {
24642
+ json = JSON.parse(text);
24643
+ } catch {
24644
+ return { error: text || `HTTP ${response.status}` };
24645
+ }
24646
+ if (!response.ok) {
24647
+ return { error: String(json.error || json.message || text) };
24648
+ }
24649
+ return { data: json };
24650
+ } catch (err) {
24651
+ if (err instanceof DOMException && err.name === "TimeoutError") {
24652
+ return { error: "Request timed out after 30s" };
24653
+ }
24654
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
24655
+ }
24656
+ }
24543
24657
  async function convexAction(path, args) {
24544
24658
  const token = getToken3();
24545
24659
  if (!token)
@@ -24599,15 +24713,34 @@ async function convexQuery3(path, args) {
24599
24713
  return { error: `Unexpected response: ${text}` };
24600
24714
  }
24601
24715
  async function listWhatsAppConnections(env2) {
24716
+ if (getApiKey()) {
24717
+ const result = await httpPost("/v1/templates/connections", {});
24718
+ if (result.error)
24719
+ return result;
24720
+ return { data: result.data.data };
24721
+ }
24602
24722
  return convexQuery3("whatsapp:listConnections", { environment: env2 });
24603
24723
  }
24604
24724
  async function listTemplates(connectionId, env2) {
24725
+ if (getApiKey()) {
24726
+ return httpPost("/v1/templates/list", { connectionId });
24727
+ }
24605
24728
  return convexAction("whatsappActions:listTemplates", {
24606
24729
  connectionId,
24607
24730
  environment: env2
24608
24731
  });
24609
24732
  }
24610
24733
  async function createTemplate(connectionId, env2, name, language, category, components, allowCategoryChange) {
24734
+ if (getApiKey()) {
24735
+ return httpPost("/v1/templates/create", {
24736
+ connectionId,
24737
+ name,
24738
+ language,
24739
+ category,
24740
+ components,
24741
+ ...allowCategoryChange !== undefined && { allowCategoryChange }
24742
+ });
24743
+ }
24611
24744
  return convexAction("whatsappActions:createTemplate", {
24612
24745
  connectionId,
24613
24746
  environment: env2,
@@ -24619,6 +24752,9 @@ async function createTemplate(connectionId, env2, name, language, category, comp
24619
24752
  });
24620
24753
  }
24621
24754
  async function deleteTemplate(connectionId, env2, name) {
24755
+ if (getApiKey()) {
24756
+ return httpPost("/v1/templates/delete", { connectionId, name });
24757
+ }
24622
24758
  return convexAction("whatsappActions:deleteTemplate", {
24623
24759
  connectionId,
24624
24760
  environment: env2,
@@ -24626,6 +24762,9 @@ async function deleteTemplate(connectionId, env2, name) {
24626
24762
  });
24627
24763
  }
24628
24764
  async function getTemplateStatus(connectionId, env2, name) {
24765
+ if (getApiKey()) {
24766
+ return httpPost("/v1/templates/status", { connectionId, name });
24767
+ }
24629
24768
  return convexAction("whatsappActions:getTemplateStatus", {
24630
24769
  connectionId,
24631
24770
  environment: env2,
@@ -24671,27 +24810,34 @@ async function ensureAuth2() {
24671
24810
  async function resolveConnectionId(env2, connectionIdFlag) {
24672
24811
  if (connectionIdFlag)
24673
24812
  return connectionIdFlag;
24674
- const spinner = ora("Fetching WhatsApp connections").start();
24813
+ const out = createOutput();
24814
+ out.start("Fetching WhatsApp connections");
24675
24815
  const { data, error } = await listWhatsAppConnections(env2);
24676
24816
  if (error || !data) {
24677
- spinner.fail("Failed to fetch connections");
24678
- console.log(source_default.red("Error:"), error);
24817
+ out.fail("Failed to fetch connections");
24818
+ out.error(error ?? "Unknown error");
24679
24819
  process.exit(1);
24680
24820
  }
24681
24821
  const connections = data;
24682
24822
  const connected = connections.filter((c) => c.status === "connected");
24683
24823
  if (connected.length === 0) {
24684
- spinner.fail("No connected WhatsApp numbers found");
24685
- console.log(source_default.gray("Connect a phone number in the dashboard first"));
24824
+ out.fail("No connected WhatsApp numbers found");
24825
+ out.info("Connect a phone number in the dashboard first");
24686
24826
  process.exit(1);
24687
24827
  }
24688
24828
  if (connected.length === 1) {
24689
24829
  const c = connected[0];
24690
24830
  const label = c.label || (c.phoneNumber ? `+${c.phoneNumber}` : c._id);
24691
- spinner.succeed(`Using connection: ${label}`);
24831
+ out.succeed(`Using connection: ${label}`);
24692
24832
  return c._id;
24693
24833
  }
24694
- spinner.succeed(`Found ${connected.length} connections`);
24834
+ if (!isInteractive2()) {
24835
+ const c = connected[0];
24836
+ const label = c.label || (c.phoneNumber ? `+${c.phoneNumber}` : c._id);
24837
+ out.succeed(`Auto-selected connection: ${label}`);
24838
+ return c._id;
24839
+ }
24840
+ out.succeed(`Found ${connected.length} connections`);
24695
24841
  console.log();
24696
24842
  for (let i = 0;i < connected.length; i++) {
24697
24843
  const c = connected[i];
@@ -24721,16 +24867,17 @@ templatesCommand.command("list").description("List all message templates").optio
24721
24867
  await ensureAuth2();
24722
24868
  const env2 = opts.env;
24723
24869
  const connectionId = await resolveConnectionId(env2, opts.connection);
24724
- const spinner = ora("Fetching templates").start();
24870
+ const out = createOutput();
24871
+ out.start("Fetching templates");
24725
24872
  const { data, error } = await listTemplates(connectionId, env2);
24726
24873
  if (error) {
24727
- spinner.fail("Failed to fetch templates");
24728
- console.log(source_default.red("Error:"), error);
24874
+ out.fail("Failed to fetch templates");
24875
+ out.error(error);
24729
24876
  process.exit(1);
24730
24877
  }
24731
24878
  const result = data;
24732
24879
  const templates = result?.data ?? [];
24733
- spinner.succeed(`Found ${templates.length} templates`);
24880
+ out.succeed(`Found ${templates.length} templates`);
24734
24881
  if (opts.json) {
24735
24882
  console.log(JSON.stringify(templates, null, 2));
24736
24883
  return;
@@ -24783,15 +24930,16 @@ templatesCommand.command("create <name>").description("Create a new message temp
24783
24930
  console.log(source_default.red("Components must be a JSON array"));
24784
24931
  process.exit(1);
24785
24932
  }
24786
- const spinner = ora(`Creating template "${name}"`).start();
24933
+ const out = createOutput();
24934
+ out.start(`Creating template "${name}"`);
24787
24935
  const { data, error } = await createTemplate(connectionId, env2, name, opts.language, opts.category.toUpperCase(), components, opts.allowCategoryChange);
24788
24936
  if (error) {
24789
- spinner.fail("Failed to create template");
24790
- console.log(source_default.red("Error:"), error);
24937
+ out.fail("Failed to create template");
24938
+ out.error(error);
24791
24939
  process.exit(1);
24792
24940
  }
24793
24941
  const result = data;
24794
- spinner.succeed(`Template "${name}" created`);
24942
+ out.succeed(`Template "${name}" created`);
24795
24943
  if (opts.json) {
24796
24944
  console.log(JSON.stringify(result, null, 2));
24797
24945
  } else {
@@ -24816,34 +24964,36 @@ templatesCommand.command("delete <name>").description("Delete a message template
24816
24964
  return;
24817
24965
  }
24818
24966
  }
24819
- const spinner = ora(`Deleting template "${name}"`).start();
24967
+ const out = createOutput();
24968
+ out.start(`Deleting template "${name}"`);
24820
24969
  const { error } = await deleteTemplate(connectionId, env2, name);
24821
24970
  if (error) {
24822
- spinner.fail("Failed to delete template");
24823
- console.log(source_default.red("Error:"), error);
24971
+ out.fail("Failed to delete template");
24972
+ out.error(error);
24824
24973
  process.exit(1);
24825
24974
  }
24826
- spinner.succeed(`Template "${name}" deleted`);
24975
+ out.succeed(`Template "${name}" deleted`);
24827
24976
  console.log();
24828
24977
  });
24829
24978
  templatesCommand.command("status <name>").description("Check template approval status").option("--env <environment>", "Environment (development|production)", "development").option("--connection <id>", "WhatsApp connection ID").option("--json", "Output raw JSON").action(async (name, opts) => {
24830
24979
  await ensureAuth2();
24831
24980
  const env2 = opts.env;
24832
24981
  const connectionId = await resolveConnectionId(env2, opts.connection);
24833
- const spinner = ora(`Checking status for "${name}"`).start();
24982
+ const out = createOutput();
24983
+ out.start(`Checking status for "${name}"`);
24834
24984
  const { data, error } = await getTemplateStatus(connectionId, env2, name);
24835
24985
  if (error) {
24836
- spinner.fail("Failed to fetch template status");
24837
- console.log(source_default.red("Error:"), error);
24986
+ out.fail("Failed to fetch template status");
24987
+ out.error(error);
24838
24988
  process.exit(1);
24839
24989
  }
24840
24990
  const result = data;
24841
24991
  const templates = result?.data ?? [];
24842
24992
  if (templates.length === 0) {
24843
- spinner.fail(`Template "${name}" not found`);
24993
+ out.fail(`Template "${name}" not found`);
24844
24994
  process.exit(1);
24845
24995
  }
24846
- spinner.succeed(`Template "${name}" found`);
24996
+ out.succeed(`Template "${name}" found`);
24847
24997
  if (opts.json) {
24848
24998
  console.log(JSON.stringify(templates, null, 2));
24849
24999
  return;
@@ -24865,7 +25015,7 @@ templatesCommand.command("status <name>").description("Check template approval s
24865
25015
  // package.json
24866
25016
  var package_default = {
24867
25017
  name: "struere",
24868
- version: "0.9.1",
25018
+ version: "0.9.2",
24869
25019
  description: "Build, test, and deploy AI agents",
24870
25020
  keywords: [
24871
25021
  "ai",
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8GnC,eAAO,MAAM,gBAAgB,SACsB,CAAA"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqHnC,eAAO,MAAM,gBAAgB,SACsB,CAAA"}
package/dist/cli/index.js CHANGED
@@ -1236,6 +1236,7 @@ var TYPE_DECLARATIONS = `declare module 'struere' {
1236
1236
  systemPrompt: string | (() => string | Promise<string>)
1237
1237
  model?: ModelConfig
1238
1238
  tools?: string[]
1239
+ firstMessageSuggestions?: string[]
1239
1240
  }
1240
1241
 
1241
1242
  export interface JSONSchemaProperty {
@@ -2126,7 +2127,14 @@ var BUILTIN_TOOLS = [
2126
2127
  "whatsapp.listTemplates",
2127
2128
  "whatsapp.getConversation",
2128
2129
  "whatsapp.getStatus",
2129
- "agent.chat"
2130
+ "agent.chat",
2131
+ "airtable.listBases",
2132
+ "airtable.listTables",
2133
+ "airtable.listRecords",
2134
+ "airtable.getRecord",
2135
+ "airtable.createRecords",
2136
+ "airtable.updateRecords",
2137
+ "airtable.deleteRecords"
2130
2138
  ];
2131
2139
  function extractSyncPayload(resources) {
2132
2140
  const customToolsMap = new Map;
@@ -2256,6 +2264,8 @@ function extractAgentPayload(agent, customToolsMap) {
2256
2264
  slug: agent.slug,
2257
2265
  version: agent.version,
2258
2266
  description: agent.description,
2267
+ firstMessageSuggestions: agent.firstMessageSuggestions,
2268
+ threadContextParams: agent.threadContextParams,
2259
2269
  systemPrompt,
2260
2270
  model: {
2261
2271
  provider: agent.model?.provider || "xai",
@@ -2289,7 +2299,14 @@ function getBuiltinToolDescription(name) {
2289
2299
  "whatsapp.listTemplates": "List available WhatsApp message templates",
2290
2300
  "whatsapp.getConversation": "Get WhatsApp conversation history with a phone number",
2291
2301
  "whatsapp.getStatus": "Get WhatsApp connection status for this organization",
2292
- "agent.chat": "Send a message to another agent and get its response"
2302
+ "agent.chat": "Send a message to another agent and get its response",
2303
+ "airtable.listBases": "List all Airtable bases accessible with the configured token",
2304
+ "airtable.listTables": "List all tables in an Airtable base",
2305
+ "airtable.listRecords": "List records from an Airtable table with optional filtering and sorting",
2306
+ "airtable.getRecord": "Get a single record from an Airtable table by ID",
2307
+ "airtable.createRecords": "Create up to 10 records in an Airtable table",
2308
+ "airtable.updateRecords": "Update up to 10 records in an Airtable table",
2309
+ "airtable.deleteRecords": "Delete up to 10 records from an Airtable table"
2293
2310
  };
2294
2311
  return descriptions[name] || name;
2295
2312
  }
@@ -2525,6 +2542,67 @@ function getBuiltinToolParameters(name) {
2525
2542
  context: { type: "object", description: "Optional context data to pass to the target agent" }
2526
2543
  },
2527
2544
  required: ["agent", "message"]
2545
+ },
2546
+ "airtable.listBases": {
2547
+ type: "object",
2548
+ properties: {}
2549
+ },
2550
+ "airtable.listTables": {
2551
+ type: "object",
2552
+ properties: {
2553
+ baseId: { type: "string", description: 'Airtable base ID (e.g., "appXXXXXXXXXXXXXX")' }
2554
+ },
2555
+ required: ["baseId"]
2556
+ },
2557
+ "airtable.listRecords": {
2558
+ type: "object",
2559
+ properties: {
2560
+ baseId: { type: "string", description: "Airtable base ID" },
2561
+ tableIdOrName: { type: "string", description: "Table ID or name" },
2562
+ pageSize: { type: "number", description: "Number of records per page (max 100)" },
2563
+ offset: { type: "string", description: "Pagination offset from a previous response" },
2564
+ filterByFormula: { type: "string", description: `Airtable formula to filter records (e.g., "{Status} = 'Active'")` },
2565
+ sort: { type: "array", items: { type: "object", properties: { field: { type: "string" }, direction: { type: "string", enum: ["asc", "desc"] } }, required: ["field"] }, description: "Sort configuration" },
2566
+ fields: { type: "array", items: { type: "string" }, description: "Only return specific field names" },
2567
+ view: { type: "string", description: "Name or ID of an Airtable view to use" }
2568
+ },
2569
+ required: ["baseId", "tableIdOrName"]
2570
+ },
2571
+ "airtable.getRecord": {
2572
+ type: "object",
2573
+ properties: {
2574
+ baseId: { type: "string", description: "Airtable base ID" },
2575
+ tableIdOrName: { type: "string", description: "Table ID or name" },
2576
+ recordId: { type: "string", description: 'Record ID (e.g., "recXXXXXXXXXXXXXX")' }
2577
+ },
2578
+ required: ["baseId", "tableIdOrName", "recordId"]
2579
+ },
2580
+ "airtable.createRecords": {
2581
+ type: "object",
2582
+ properties: {
2583
+ baseId: { type: "string", description: "Airtable base ID" },
2584
+ tableIdOrName: { type: "string", description: "Table ID or name" },
2585
+ records: { type: "array", items: { type: "object", properties: { fields: { type: "object", description: "Field values for the record" } }, required: ["fields"] }, description: "Array of records to create (max 10)" }
2586
+ },
2587
+ required: ["baseId", "tableIdOrName", "records"]
2588
+ },
2589
+ "airtable.updateRecords": {
2590
+ type: "object",
2591
+ properties: {
2592
+ baseId: { type: "string", description: "Airtable base ID" },
2593
+ tableIdOrName: { type: "string", description: "Table ID or name" },
2594
+ records: { type: "array", items: { type: "object", properties: { id: { type: "string", description: "Record ID to update" }, fields: { type: "object", description: "Field values to update" } }, required: ["id", "fields"] }, description: "Array of records to update (max 10)" }
2595
+ },
2596
+ required: ["baseId", "tableIdOrName", "records"]
2597
+ },
2598
+ "airtable.deleteRecords": {
2599
+ type: "object",
2600
+ properties: {
2601
+ baseId: { type: "string", description: "Airtable base ID" },
2602
+ tableIdOrName: { type: "string", description: "Table ID or name" },
2603
+ recordIds: { type: "array", items: { type: "string" }, description: "Array of record IDs to delete (max 10)" }
2604
+ },
2605
+ required: ["baseId", "tableIdOrName", "recordIds"]
2528
2606
  }
2529
2607
  };
2530
2608
  return schemas[name] || { type: "object", properties: {} };
@@ -5237,17 +5315,52 @@ evalCommand.addCommand(runCommand);
5237
5315
  // src/cli/commands/templates.ts
5238
5316
  import { Command as Command14 } from "commander";
5239
5317
  import chalk16 from "chalk";
5240
- import ora12 from "ora";
5241
5318
  import { readFileSync as readFileSync4 } from "fs";
5242
5319
  import { confirm as confirm5 } from "@inquirer/prompts";
5243
5320
 
5244
5321
  // src/cli/utils/whatsapp.ts
5245
5322
  var CONVEX_URL4 = process.env.STRUERE_CONVEX_URL || "https://rapid-wildebeest-172.convex.cloud";
5323
+ function getSiteUrl2() {
5324
+ return CONVEX_URL4.replace(".cloud", ".site");
5325
+ }
5246
5326
  function getToken3() {
5247
5327
  const credentials = loadCredentials();
5248
5328
  const apiKey = getApiKey();
5249
5329
  return apiKey || credentials?.token || null;
5250
5330
  }
5331
+ async function httpPost(path, body) {
5332
+ const apiKey = getApiKey();
5333
+ if (!apiKey)
5334
+ return { error: "Not authenticated" };
5335
+ const siteUrl = getSiteUrl2();
5336
+ try {
5337
+ const response = await fetch(`${siteUrl}${path}`, {
5338
+ method: "POST",
5339
+ headers: {
5340
+ "Content-Type": "application/json",
5341
+ Authorization: `Bearer ${apiKey}`
5342
+ },
5343
+ body: JSON.stringify(body),
5344
+ signal: AbortSignal.timeout(30000)
5345
+ });
5346
+ const text = await response.text();
5347
+ let json;
5348
+ try {
5349
+ json = JSON.parse(text);
5350
+ } catch {
5351
+ return { error: text || `HTTP ${response.status}` };
5352
+ }
5353
+ if (!response.ok) {
5354
+ return { error: String(json.error || json.message || text) };
5355
+ }
5356
+ return { data: json };
5357
+ } catch (err) {
5358
+ if (err instanceof DOMException && err.name === "TimeoutError") {
5359
+ return { error: "Request timed out after 30s" };
5360
+ }
5361
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
5362
+ }
5363
+ }
5251
5364
  async function convexAction(path, args) {
5252
5365
  const token = getToken3();
5253
5366
  if (!token)
@@ -5307,15 +5420,34 @@ async function convexQuery3(path, args) {
5307
5420
  return { error: `Unexpected response: ${text}` };
5308
5421
  }
5309
5422
  async function listWhatsAppConnections(env) {
5423
+ if (getApiKey()) {
5424
+ const result = await httpPost("/v1/templates/connections", {});
5425
+ if (result.error)
5426
+ return result;
5427
+ return { data: result.data.data };
5428
+ }
5310
5429
  return convexQuery3("whatsapp:listConnections", { environment: env });
5311
5430
  }
5312
5431
  async function listTemplates(connectionId, env) {
5432
+ if (getApiKey()) {
5433
+ return httpPost("/v1/templates/list", { connectionId });
5434
+ }
5313
5435
  return convexAction("whatsappActions:listTemplates", {
5314
5436
  connectionId,
5315
5437
  environment: env
5316
5438
  });
5317
5439
  }
5318
5440
  async function createTemplate(connectionId, env, name, language, category, components, allowCategoryChange) {
5441
+ if (getApiKey()) {
5442
+ return httpPost("/v1/templates/create", {
5443
+ connectionId,
5444
+ name,
5445
+ language,
5446
+ category,
5447
+ components,
5448
+ ...allowCategoryChange !== undefined && { allowCategoryChange }
5449
+ });
5450
+ }
5319
5451
  return convexAction("whatsappActions:createTemplate", {
5320
5452
  connectionId,
5321
5453
  environment: env,
@@ -5327,6 +5459,9 @@ async function createTemplate(connectionId, env, name, language, category, compo
5327
5459
  });
5328
5460
  }
5329
5461
  async function deleteTemplate(connectionId, env, name) {
5462
+ if (getApiKey()) {
5463
+ return httpPost("/v1/templates/delete", { connectionId, name });
5464
+ }
5330
5465
  return convexAction("whatsappActions:deleteTemplate", {
5331
5466
  connectionId,
5332
5467
  environment: env,
@@ -5334,6 +5469,9 @@ async function deleteTemplate(connectionId, env, name) {
5334
5469
  });
5335
5470
  }
5336
5471
  async function getTemplateStatus(connectionId, env, name) {
5472
+ if (getApiKey()) {
5473
+ return httpPost("/v1/templates/status", { connectionId, name });
5474
+ }
5337
5475
  return convexAction("whatsappActions:getTemplateStatus", {
5338
5476
  connectionId,
5339
5477
  environment: env,
@@ -5379,27 +5517,34 @@ async function ensureAuth2() {
5379
5517
  async function resolveConnectionId(env, connectionIdFlag) {
5380
5518
  if (connectionIdFlag)
5381
5519
  return connectionIdFlag;
5382
- const spinner = ora12("Fetching WhatsApp connections").start();
5520
+ const out = createOutput();
5521
+ out.start("Fetching WhatsApp connections");
5383
5522
  const { data, error } = await listWhatsAppConnections(env);
5384
5523
  if (error || !data) {
5385
- spinner.fail("Failed to fetch connections");
5386
- console.log(chalk16.red("Error:"), error);
5524
+ out.fail("Failed to fetch connections");
5525
+ out.error(error ?? "Unknown error");
5387
5526
  process.exit(1);
5388
5527
  }
5389
5528
  const connections = data;
5390
5529
  const connected = connections.filter((c) => c.status === "connected");
5391
5530
  if (connected.length === 0) {
5392
- spinner.fail("No connected WhatsApp numbers found");
5393
- console.log(chalk16.gray("Connect a phone number in the dashboard first"));
5531
+ out.fail("No connected WhatsApp numbers found");
5532
+ out.info("Connect a phone number in the dashboard first");
5394
5533
  process.exit(1);
5395
5534
  }
5396
5535
  if (connected.length === 1) {
5397
5536
  const c = connected[0];
5398
5537
  const label = c.label || (c.phoneNumber ? `+${c.phoneNumber}` : c._id);
5399
- spinner.succeed(`Using connection: ${label}`);
5538
+ out.succeed(`Using connection: ${label}`);
5539
+ return c._id;
5540
+ }
5541
+ if (!isInteractive()) {
5542
+ const c = connected[0];
5543
+ const label = c.label || (c.phoneNumber ? `+${c.phoneNumber}` : c._id);
5544
+ out.succeed(`Auto-selected connection: ${label}`);
5400
5545
  return c._id;
5401
5546
  }
5402
- spinner.succeed(`Found ${connected.length} connections`);
5547
+ out.succeed(`Found ${connected.length} connections`);
5403
5548
  console.log();
5404
5549
  for (let i = 0;i < connected.length; i++) {
5405
5550
  const c = connected[i];
@@ -5429,16 +5574,17 @@ templatesCommand.command("list").description("List all message templates").optio
5429
5574
  await ensureAuth2();
5430
5575
  const env = opts.env;
5431
5576
  const connectionId = await resolveConnectionId(env, opts.connection);
5432
- const spinner = ora12("Fetching templates").start();
5577
+ const out = createOutput();
5578
+ out.start("Fetching templates");
5433
5579
  const { data, error } = await listTemplates(connectionId, env);
5434
5580
  if (error) {
5435
- spinner.fail("Failed to fetch templates");
5436
- console.log(chalk16.red("Error:"), error);
5581
+ out.fail("Failed to fetch templates");
5582
+ out.error(error);
5437
5583
  process.exit(1);
5438
5584
  }
5439
5585
  const result = data;
5440
5586
  const templates = result?.data ?? [];
5441
- spinner.succeed(`Found ${templates.length} templates`);
5587
+ out.succeed(`Found ${templates.length} templates`);
5442
5588
  if (opts.json) {
5443
5589
  console.log(JSON.stringify(templates, null, 2));
5444
5590
  return;
@@ -5491,15 +5637,16 @@ templatesCommand.command("create <name>").description("Create a new message temp
5491
5637
  console.log(chalk16.red("Components must be a JSON array"));
5492
5638
  process.exit(1);
5493
5639
  }
5494
- const spinner = ora12(`Creating template "${name}"`).start();
5640
+ const out = createOutput();
5641
+ out.start(`Creating template "${name}"`);
5495
5642
  const { data, error } = await createTemplate(connectionId, env, name, opts.language, opts.category.toUpperCase(), components, opts.allowCategoryChange);
5496
5643
  if (error) {
5497
- spinner.fail("Failed to create template");
5498
- console.log(chalk16.red("Error:"), error);
5644
+ out.fail("Failed to create template");
5645
+ out.error(error);
5499
5646
  process.exit(1);
5500
5647
  }
5501
5648
  const result = data;
5502
- spinner.succeed(`Template "${name}" created`);
5649
+ out.succeed(`Template "${name}" created`);
5503
5650
  if (opts.json) {
5504
5651
  console.log(JSON.stringify(result, null, 2));
5505
5652
  } else {
@@ -5524,34 +5671,36 @@ templatesCommand.command("delete <name>").description("Delete a message template
5524
5671
  return;
5525
5672
  }
5526
5673
  }
5527
- const spinner = ora12(`Deleting template "${name}"`).start();
5674
+ const out = createOutput();
5675
+ out.start(`Deleting template "${name}"`);
5528
5676
  const { error } = await deleteTemplate(connectionId, env, name);
5529
5677
  if (error) {
5530
- spinner.fail("Failed to delete template");
5531
- console.log(chalk16.red("Error:"), error);
5678
+ out.fail("Failed to delete template");
5679
+ out.error(error);
5532
5680
  process.exit(1);
5533
5681
  }
5534
- spinner.succeed(`Template "${name}" deleted`);
5682
+ out.succeed(`Template "${name}" deleted`);
5535
5683
  console.log();
5536
5684
  });
5537
5685
  templatesCommand.command("status <name>").description("Check template approval status").option("--env <environment>", "Environment (development|production)", "development").option("--connection <id>", "WhatsApp connection ID").option("--json", "Output raw JSON").action(async (name, opts) => {
5538
5686
  await ensureAuth2();
5539
5687
  const env = opts.env;
5540
5688
  const connectionId = await resolveConnectionId(env, opts.connection);
5541
- const spinner = ora12(`Checking status for "${name}"`).start();
5689
+ const out = createOutput();
5690
+ out.start(`Checking status for "${name}"`);
5542
5691
  const { data, error } = await getTemplateStatus(connectionId, env, name);
5543
5692
  if (error) {
5544
- spinner.fail("Failed to fetch template status");
5545
- console.log(chalk16.red("Error:"), error);
5693
+ out.fail("Failed to fetch template status");
5694
+ out.error(error);
5546
5695
  process.exit(1);
5547
5696
  }
5548
5697
  const result = data;
5549
5698
  const templates = result?.data ?? [];
5550
5699
  if (templates.length === 0) {
5551
- spinner.fail(`Template "${name}" not found`);
5700
+ out.fail(`Template "${name}" not found`);
5552
5701
  process.exit(1);
5553
5702
  }
5554
- spinner.succeed(`Template "${name}" found`);
5703
+ out.succeed(`Template "${name}" found`);
5555
5704
  if (opts.json) {
5556
5705
  console.log(JSON.stringify(templates, null, 2));
5557
5706
  return;
@@ -5573,7 +5722,7 @@ templatesCommand.command("status <name>").description("Check template approval s
5573
5722
  // package.json
5574
5723
  var package_default = {
5575
5724
  name: "struere",
5576
- version: "0.9.1",
5725
+ version: "0.9.2",
5577
5726
  description: "Build, test, and deploy AI agents",
5578
5727
  keywords: [
5579
5728
  "ai",
@@ -5,6 +5,13 @@ export interface SyncPayload {
5
5
  slug: string;
6
6
  version: string;
7
7
  description?: string;
8
+ firstMessageSuggestions?: string[];
9
+ threadContextParams?: Array<{
10
+ name: string;
11
+ type: 'string' | 'number' | 'boolean';
12
+ required?: boolean;
13
+ description?: string;
14
+ }>;
8
15
  systemPrompt: string;
9
16
  model: {
10
17
  provider: string;
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/plugin.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,88JA6HjC,CAAA;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAkB5C;AAqKD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAc1D"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/plugin.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,88JA6HjC,CAAA;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAkB5C;AAsKD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAc1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/whatsapp.ts"],"names":[],"mappings":"AAIA,KAAK,WAAW,GAAG,aAAa,GAAG,YAAY,CAAA;AAsE/C,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,WAAW;WA/B4B,OAAO;YAAU,MAAM;GAiChH;AAED,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WAlEiB,OAAO;YAAU,MAAM;GAuEjH;AAED,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1C,mBAAmB,CAAC,EAAE,OAAO;WAhF4D,OAAO;YAAU,MAAM;GA2FjH;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;WA7FE,OAAO;YAAU,MAAM;GAmGjH;AAED,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;WArGD,OAAO;YAAU,MAAM;GA2GjH"}
1
+ {"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/whatsapp.ts"],"names":[],"mappings":"AAIA,KAAK,WAAW,GAAG,aAAa,GAAG,YAAY,CAAA;AA+G/C,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,WAAW;WAnGyB,OAAO;YAAU,MAAM;GA0G7G;AAED,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;WA5Ga,OAAO;YAAU,MAAM;GAoH7G;AAED,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1C,mBAAmB,CAAC,EAAE,OAAO;WA7HwD,OAAO;YAAU,MAAM;GAkJ7G;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;WApJF,OAAO;YAAU,MAAM;GA6J7G;AAED,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;WA/JL,OAAO;YAAU,MAAM;GAwK7G"}
package/dist/types.d.ts CHANGED
@@ -189,6 +189,12 @@ export interface StruereProject {
189
189
  name: string;
190
190
  };
191
191
  }
192
+ export interface ThreadContextParam {
193
+ name: string;
194
+ type: 'string' | 'number' | 'boolean';
195
+ required?: boolean;
196
+ description?: string;
197
+ }
192
198
  export interface AgentConfig {
193
199
  name: string;
194
200
  slug: string;
@@ -197,6 +203,8 @@ export interface AgentConfig {
197
203
  systemPrompt: string | (() => string | Promise<string>);
198
204
  model?: ModelConfig;
199
205
  tools?: string[];
206
+ firstMessageSuggestions?: string[];
207
+ threadContextParams?: ThreadContextParam[];
200
208
  }
201
209
  export interface TriggerAction {
202
210
  tool: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "struere",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Build, test, and deploy AI agents",
5
5
  "keywords": [
6
6
  "ai",