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.
- package/dist/bin/struere.js +177 -27
- package/dist/cli/commands/templates.d.ts.map +1 -1
- package/dist/cli/index.js +177 -28
- package/dist/cli/utils/extractor.d.ts +7 -0
- package/dist/cli/utils/extractor.d.ts.map +1 -1
- package/dist/cli/utils/plugin.d.ts.map +1 -1
- package/dist/cli/utils/whatsapp.d.ts.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/bin/struere.js
CHANGED
|
@@ -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
|
|
24813
|
+
const out = createOutput();
|
|
24814
|
+
out.start("Fetching WhatsApp connections");
|
|
24675
24815
|
const { data, error } = await listWhatsAppConnections(env2);
|
|
24676
24816
|
if (error || !data) {
|
|
24677
|
-
|
|
24678
|
-
|
|
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
|
-
|
|
24685
|
-
|
|
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
|
-
|
|
24831
|
+
out.succeed(`Using connection: ${label}`);
|
|
24692
24832
|
return c._id;
|
|
24693
24833
|
}
|
|
24694
|
-
|
|
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
|
|
24870
|
+
const out = createOutput();
|
|
24871
|
+
out.start("Fetching templates");
|
|
24725
24872
|
const { data, error } = await listTemplates(connectionId, env2);
|
|
24726
24873
|
if (error) {
|
|
24727
|
-
|
|
24728
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
24790
|
-
|
|
24937
|
+
out.fail("Failed to create template");
|
|
24938
|
+
out.error(error);
|
|
24791
24939
|
process.exit(1);
|
|
24792
24940
|
}
|
|
24793
24941
|
const result = data;
|
|
24794
|
-
|
|
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
|
|
24967
|
+
const out = createOutput();
|
|
24968
|
+
out.start(`Deleting template "${name}"`);
|
|
24820
24969
|
const { error } = await deleteTemplate(connectionId, env2, name);
|
|
24821
24970
|
if (error) {
|
|
24822
|
-
|
|
24823
|
-
|
|
24971
|
+
out.fail("Failed to delete template");
|
|
24972
|
+
out.error(error);
|
|
24824
24973
|
process.exit(1);
|
|
24825
24974
|
}
|
|
24826
|
-
|
|
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
|
|
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
|
-
|
|
24837
|
-
|
|
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
|
-
|
|
24993
|
+
out.fail(`Template "${name}" not found`);
|
|
24844
24994
|
process.exit(1);
|
|
24845
24995
|
}
|
|
24846
|
-
|
|
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.
|
|
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;
|
|
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
|
|
5520
|
+
const out = createOutput();
|
|
5521
|
+
out.start("Fetching WhatsApp connections");
|
|
5383
5522
|
const { data, error } = await listWhatsAppConnections(env);
|
|
5384
5523
|
if (error || !data) {
|
|
5385
|
-
|
|
5386
|
-
|
|
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
|
-
|
|
5393
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
5577
|
+
const out = createOutput();
|
|
5578
|
+
out.start("Fetching templates");
|
|
5433
5579
|
const { data, error } = await listTemplates(connectionId, env);
|
|
5434
5580
|
if (error) {
|
|
5435
|
-
|
|
5436
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
5498
|
-
|
|
5644
|
+
out.fail("Failed to create template");
|
|
5645
|
+
out.error(error);
|
|
5499
5646
|
process.exit(1);
|
|
5500
5647
|
}
|
|
5501
5648
|
const result = data;
|
|
5502
|
-
|
|
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
|
|
5674
|
+
const out = createOutput();
|
|
5675
|
+
out.start(`Deleting template "${name}"`);
|
|
5528
5676
|
const { error } = await deleteTemplate(connectionId, env, name);
|
|
5529
5677
|
if (error) {
|
|
5530
|
-
|
|
5531
|
-
|
|
5678
|
+
out.fail("Failed to delete template");
|
|
5679
|
+
out.error(error);
|
|
5532
5680
|
process.exit(1);
|
|
5533
5681
|
}
|
|
5534
|
-
|
|
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
|
|
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
|
-
|
|
5545
|
-
|
|
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
|
-
|
|
5700
|
+
out.fail(`Template "${name}" not found`);
|
|
5552
5701
|
process.exit(1);
|
|
5553
5702
|
}
|
|
5554
|
-
|
|
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.
|
|
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":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
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;
|
|
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;
|
|
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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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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"}
|