struere 0.7.0 → 0.7.1
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 +122 -18
- package/dist/cli/index.js +112 -8
- package/dist/cli/utils/extractor.d.ts.map +1 -1
- package/dist/cli/utils/loader.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/bin/struere.js
CHANGED
|
@@ -13559,9 +13559,9 @@ var require_readdirp = __commonJS((exports, module) => {
|
|
|
13559
13559
|
async _formatEntry(dirent, path) {
|
|
13560
13560
|
let entry;
|
|
13561
13561
|
try {
|
|
13562
|
-
const
|
|
13563
|
-
const fullPath = sysPath.resolve(sysPath.join(path,
|
|
13564
|
-
entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename:
|
|
13562
|
+
const basename3 = this._isDirent ? dirent.name : dirent;
|
|
13563
|
+
const fullPath = sysPath.resolve(sysPath.join(path, basename3));
|
|
13564
|
+
entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename: basename3 };
|
|
13565
13565
|
entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
|
|
13566
13566
|
} catch (err) {
|
|
13567
13567
|
this._onError(err);
|
|
@@ -15484,16 +15484,16 @@ var require_nodefs_handler = __commonJS((exports, module) => {
|
|
|
15484
15484
|
_watchWithNodeFs(path, listener) {
|
|
15485
15485
|
const opts = this.fsw.options;
|
|
15486
15486
|
const directory = sysPath.dirname(path);
|
|
15487
|
-
const
|
|
15487
|
+
const basename3 = sysPath.basename(path);
|
|
15488
15488
|
const parent = this.fsw._getWatchedDir(directory);
|
|
15489
|
-
parent.add(
|
|
15489
|
+
parent.add(basename3);
|
|
15490
15490
|
const absolutePath = sysPath.resolve(path);
|
|
15491
15491
|
const options = { persistent: opts.persistent };
|
|
15492
15492
|
if (!listener)
|
|
15493
15493
|
listener = EMPTY_FN;
|
|
15494
15494
|
let closer;
|
|
15495
15495
|
if (opts.usePolling) {
|
|
15496
|
-
options.interval = opts.enableBinaryInterval && isBinaryPath(
|
|
15496
|
+
options.interval = opts.enableBinaryInterval && isBinaryPath(basename3) ? opts.binaryInterval : opts.interval;
|
|
15497
15497
|
closer = setFsWatchFileListener(path, absolutePath, options, {
|
|
15498
15498
|
listener,
|
|
15499
15499
|
rawEmitter: this.fsw._emitRaw
|
|
@@ -15512,10 +15512,10 @@ var require_nodefs_handler = __commonJS((exports, module) => {
|
|
|
15512
15512
|
return;
|
|
15513
15513
|
}
|
|
15514
15514
|
const dirname4 = sysPath.dirname(file);
|
|
15515
|
-
const
|
|
15515
|
+
const basename3 = sysPath.basename(file);
|
|
15516
15516
|
const parent = this.fsw._getWatchedDir(dirname4);
|
|
15517
15517
|
let prevStats = stats;
|
|
15518
|
-
if (parent.has(
|
|
15518
|
+
if (parent.has(basename3))
|
|
15519
15519
|
return;
|
|
15520
15520
|
const listener = async (path, newStats) => {
|
|
15521
15521
|
if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5))
|
|
@@ -15538,9 +15538,9 @@ var require_nodefs_handler = __commonJS((exports, module) => {
|
|
|
15538
15538
|
prevStats = newStats2;
|
|
15539
15539
|
}
|
|
15540
15540
|
} catch (error) {
|
|
15541
|
-
this.fsw._remove(dirname4,
|
|
15541
|
+
this.fsw._remove(dirname4, basename3);
|
|
15542
15542
|
}
|
|
15543
|
-
} else if (parent.has(
|
|
15543
|
+
} else if (parent.has(basename3)) {
|
|
15544
15544
|
const at = newStats.atimeMs;
|
|
15545
15545
|
const mt = newStats.mtimeMs;
|
|
15546
15546
|
if (!at || at <= mt || mt !== prevStats.mtimeMs) {
|
|
@@ -19351,7 +19351,7 @@ var esm_default4 = createPrompt((config, done) => {
|
|
|
19351
19351
|
return `${lines}${cursorHide}`;
|
|
19352
19352
|
});
|
|
19353
19353
|
// src/cli/commands/init.ts
|
|
19354
|
-
import { basename } from "path";
|
|
19354
|
+
import { basename as basename2 } from "path";
|
|
19355
19355
|
|
|
19356
19356
|
// src/cli/utils/credentials.ts
|
|
19357
19357
|
import { homedir } from "os";
|
|
@@ -20549,20 +20549,23 @@ import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as wr
|
|
|
20549
20549
|
// src/cli/utils/loader.ts
|
|
20550
20550
|
var import_yaml = __toESM(require_dist(), 1);
|
|
20551
20551
|
import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync4, unlinkSync as unlinkSync2 } from "fs";
|
|
20552
|
-
import { join as join5, dirname as dirname2 } from "path";
|
|
20552
|
+
import { join as join5, dirname as dirname2, basename } from "path";
|
|
20553
20553
|
var IMPORT_STRUERE_RE = /import\s+\{[^}]*\}\s*from\s*['"]struere['"]\s*;?\n?/g;
|
|
20554
|
+
var importCounter = 0;
|
|
20554
20555
|
async function importUserFile(filePath) {
|
|
20555
20556
|
const source = readFileSync3(filePath, "utf-8");
|
|
20557
|
+
const uid = `${Date.now()}-${importCounter++}`;
|
|
20556
20558
|
if (!source.includes("'struere'") && !source.includes('"struere"')) {
|
|
20557
|
-
return await import(`${filePath}?
|
|
20559
|
+
return await import(`${filePath}?v=${uid}`);
|
|
20558
20560
|
}
|
|
20559
20561
|
const stripped = source.replace(IMPORT_STRUERE_RE, "");
|
|
20560
20562
|
const inlined = VIRTUAL_MODULE_SOURCE.trim() + `
|
|
20561
20563
|
` + stripped;
|
|
20562
|
-
const
|
|
20564
|
+
const name = basename(filePath, ".ts");
|
|
20565
|
+
const tmpPath = join5(dirname2(filePath), `.struere-tmp-${name}-${uid}.ts`);
|
|
20563
20566
|
writeFileSync4(tmpPath, inlined);
|
|
20564
20567
|
try {
|
|
20565
|
-
return await import(`${tmpPath}?
|
|
20568
|
+
return await import(`${tmpPath}?v=${uid}`);
|
|
20566
20569
|
} finally {
|
|
20567
20570
|
try {
|
|
20568
20571
|
unlinkSync2(tmpPath);
|
|
@@ -20855,7 +20858,7 @@ async function runInit(cwd, selectedOrg) {
|
|
|
20855
20858
|
}
|
|
20856
20859
|
console.log(source_default.gray(" Organization:"), source_default.cyan(org.name));
|
|
20857
20860
|
console.log();
|
|
20858
|
-
const projectName = slugify(
|
|
20861
|
+
const projectName = slugify(basename2(cwd));
|
|
20859
20862
|
spinner.start("Creating project structure");
|
|
20860
20863
|
const scaffoldResult = scaffoldProject(cwd, {
|
|
20861
20864
|
projectName,
|
|
@@ -20939,7 +20942,7 @@ var initCommand = new Command("init").description("Initialize a new Struere orga
|
|
|
20939
20942
|
console.log();
|
|
20940
20943
|
let projectName = projectNameArg;
|
|
20941
20944
|
if (!projectName) {
|
|
20942
|
-
projectName = slugify(
|
|
20945
|
+
projectName = slugify(basename2(cwd));
|
|
20943
20946
|
}
|
|
20944
20947
|
projectName = slugify(projectName);
|
|
20945
20948
|
spinner.start("Creating project structure");
|
|
@@ -21009,6 +21012,13 @@ var BUILTIN_TOOLS = [
|
|
|
21009
21012
|
"calendar.update",
|
|
21010
21013
|
"calendar.delete",
|
|
21011
21014
|
"calendar.freeBusy",
|
|
21015
|
+
"whatsapp.send",
|
|
21016
|
+
"whatsapp.sendTemplate",
|
|
21017
|
+
"whatsapp.sendInteractive",
|
|
21018
|
+
"whatsapp.sendMedia",
|
|
21019
|
+
"whatsapp.listTemplates",
|
|
21020
|
+
"whatsapp.getConversation",
|
|
21021
|
+
"whatsapp.getStatus",
|
|
21012
21022
|
"agent.chat"
|
|
21013
21023
|
];
|
|
21014
21024
|
function extractSyncPayload(resources) {
|
|
@@ -21149,6 +21159,13 @@ function getBuiltinToolDescription(name) {
|
|
|
21149
21159
|
"calendar.update": "Update an existing Google Calendar event",
|
|
21150
21160
|
"calendar.delete": "Delete a Google Calendar event",
|
|
21151
21161
|
"calendar.freeBusy": "Check free/busy availability on a user's Google Calendar",
|
|
21162
|
+
"whatsapp.send": "Send a text message via WhatsApp",
|
|
21163
|
+
"whatsapp.sendTemplate": "Send a pre-approved template message via WhatsApp (works outside 24h window)",
|
|
21164
|
+
"whatsapp.sendInteractive": "Send an interactive button message via WhatsApp (max 3 buttons)",
|
|
21165
|
+
"whatsapp.sendMedia": "Send an image or audio message via WhatsApp",
|
|
21166
|
+
"whatsapp.listTemplates": "List available WhatsApp message templates",
|
|
21167
|
+
"whatsapp.getConversation": "Get WhatsApp conversation history with a phone number",
|
|
21168
|
+
"whatsapp.getStatus": "Get WhatsApp connection status for this organization",
|
|
21152
21169
|
"agent.chat": "Send a message to another agent and get its response"
|
|
21153
21170
|
};
|
|
21154
21171
|
return descriptions[name] || name;
|
|
@@ -21290,6 +21307,93 @@ function getBuiltinToolParameters(name) {
|
|
|
21290
21307
|
},
|
|
21291
21308
|
required: ["userId", "timeMin", "timeMax"]
|
|
21292
21309
|
},
|
|
21310
|
+
"whatsapp.send": {
|
|
21311
|
+
type: "object",
|
|
21312
|
+
properties: {
|
|
21313
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
21314
|
+
text: { type: "string", description: "The text message to send" }
|
|
21315
|
+
},
|
|
21316
|
+
required: ["to", "text"]
|
|
21317
|
+
},
|
|
21318
|
+
"whatsapp.sendTemplate": {
|
|
21319
|
+
type: "object",
|
|
21320
|
+
properties: {
|
|
21321
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
21322
|
+
templateName: { type: "string", description: "Name of the approved template to send" },
|
|
21323
|
+
language: { type: "string", description: 'Template language code (e.g., "en_US")' },
|
|
21324
|
+
components: {
|
|
21325
|
+
type: "array",
|
|
21326
|
+
description: "Optional template components with parameter values",
|
|
21327
|
+
items: {
|
|
21328
|
+
type: "object",
|
|
21329
|
+
properties: {
|
|
21330
|
+
type: { type: "string", description: 'Component type (e.g., "body", "header")' },
|
|
21331
|
+
parameters: {
|
|
21332
|
+
type: "array",
|
|
21333
|
+
items: {
|
|
21334
|
+
type: "object",
|
|
21335
|
+
properties: {
|
|
21336
|
+
type: { type: "string", description: 'Parameter type (e.g., "text")' },
|
|
21337
|
+
text: { type: "string", description: "Parameter text value" },
|
|
21338
|
+
parameterName: { type: "string", description: "Named parameter name (for NAMED format templates)" }
|
|
21339
|
+
},
|
|
21340
|
+
required: ["type"]
|
|
21341
|
+
}
|
|
21342
|
+
}
|
|
21343
|
+
},
|
|
21344
|
+
required: ["type", "parameters"]
|
|
21345
|
+
}
|
|
21346
|
+
}
|
|
21347
|
+
},
|
|
21348
|
+
required: ["to", "templateName", "language"]
|
|
21349
|
+
},
|
|
21350
|
+
"whatsapp.sendInteractive": {
|
|
21351
|
+
type: "object",
|
|
21352
|
+
properties: {
|
|
21353
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
21354
|
+
bodyText: { type: "string", description: "The message body text" },
|
|
21355
|
+
buttons: {
|
|
21356
|
+
type: "array",
|
|
21357
|
+
description: "Action buttons (1-3 buttons, max 20 chars per title)",
|
|
21358
|
+
items: {
|
|
21359
|
+
type: "object",
|
|
21360
|
+
properties: {
|
|
21361
|
+
id: { type: "string", description: "Unique button identifier returned on click" },
|
|
21362
|
+
title: { type: "string", description: "Button label shown to user (max 20 characters)" }
|
|
21363
|
+
},
|
|
21364
|
+
required: ["id", "title"]
|
|
21365
|
+
}
|
|
21366
|
+
},
|
|
21367
|
+
footerText: { type: "string", description: "Optional footer text below the buttons" }
|
|
21368
|
+
},
|
|
21369
|
+
required: ["to", "bodyText", "buttons"]
|
|
21370
|
+
},
|
|
21371
|
+
"whatsapp.sendMedia": {
|
|
21372
|
+
type: "object",
|
|
21373
|
+
properties: {
|
|
21374
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
21375
|
+
mediaUrl: { type: "string", description: "Public URL of the media file to send" },
|
|
21376
|
+
mediaType: { type: "string", enum: ["image", "audio"], description: "Type of media to send" },
|
|
21377
|
+
caption: { type: "string", description: "Optional caption (only supported for images)" }
|
|
21378
|
+
},
|
|
21379
|
+
required: ["to", "mediaUrl", "mediaType"]
|
|
21380
|
+
},
|
|
21381
|
+
"whatsapp.listTemplates": {
|
|
21382
|
+
type: "object",
|
|
21383
|
+
properties: {}
|
|
21384
|
+
},
|
|
21385
|
+
"whatsapp.getConversation": {
|
|
21386
|
+
type: "object",
|
|
21387
|
+
properties: {
|
|
21388
|
+
phoneNumber: { type: "string", description: "Phone number to get conversation history for" },
|
|
21389
|
+
limit: { type: "number", description: "Maximum number of messages to return" }
|
|
21390
|
+
},
|
|
21391
|
+
required: ["phoneNumber"]
|
|
21392
|
+
},
|
|
21393
|
+
"whatsapp.getStatus": {
|
|
21394
|
+
type: "object",
|
|
21395
|
+
properties: {}
|
|
21396
|
+
},
|
|
21293
21397
|
"agent.chat": {
|
|
21294
21398
|
type: "object",
|
|
21295
21399
|
properties: {
|
|
@@ -23056,7 +23160,7 @@ entitiesCommand.command("search <type> <query>").description("Search entities").
|
|
|
23056
23160
|
// package.json
|
|
23057
23161
|
var package_default = {
|
|
23058
23162
|
name: "struere",
|
|
23059
|
-
version: "0.7.
|
|
23163
|
+
version: "0.7.1",
|
|
23060
23164
|
description: "Build, test, and deploy AI agents",
|
|
23061
23165
|
keywords: [
|
|
23062
23166
|
"ai",
|
package/dist/cli/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { Command as Command3 } from "commander";
|
|
|
9
9
|
import chalk3 from "chalk";
|
|
10
10
|
import ora3 from "ora";
|
|
11
11
|
import { select } from "@inquirer/prompts";
|
|
12
|
-
import { basename } from "path";
|
|
12
|
+
import { basename as basename2 } from "path";
|
|
13
13
|
|
|
14
14
|
// src/cli/utils/credentials.ts
|
|
15
15
|
import { homedir } from "os";
|
|
@@ -1214,21 +1214,24 @@ import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as wr
|
|
|
1214
1214
|
|
|
1215
1215
|
// src/cli/utils/loader.ts
|
|
1216
1216
|
import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync4, unlinkSync as unlinkSync2 } from "fs";
|
|
1217
|
-
import { join as join5, dirname as dirname2 } from "path";
|
|
1217
|
+
import { join as join5, dirname as dirname2, basename } from "path";
|
|
1218
1218
|
import YAML from "yaml";
|
|
1219
1219
|
var IMPORT_STRUERE_RE = /import\s+\{[^}]*\}\s*from\s*['"]struere['"]\s*;?\n?/g;
|
|
1220
|
+
var importCounter = 0;
|
|
1220
1221
|
async function importUserFile(filePath) {
|
|
1221
1222
|
const source = readFileSync3(filePath, "utf-8");
|
|
1223
|
+
const uid = `${Date.now()}-${importCounter++}`;
|
|
1222
1224
|
if (!source.includes("'struere'") && !source.includes('"struere"')) {
|
|
1223
|
-
return await import(`${filePath}?
|
|
1225
|
+
return await import(`${filePath}?v=${uid}`);
|
|
1224
1226
|
}
|
|
1225
1227
|
const stripped = source.replace(IMPORT_STRUERE_RE, "");
|
|
1226
1228
|
const inlined = VIRTUAL_MODULE_SOURCE.trim() + `
|
|
1227
1229
|
` + stripped;
|
|
1228
|
-
const
|
|
1230
|
+
const name = basename(filePath, ".ts");
|
|
1231
|
+
const tmpPath = join5(dirname2(filePath), `.struere-tmp-${name}-${uid}.ts`);
|
|
1229
1232
|
writeFileSync4(tmpPath, inlined);
|
|
1230
1233
|
try {
|
|
1231
|
-
return await import(`${tmpPath}?
|
|
1234
|
+
return await import(`${tmpPath}?v=${uid}`);
|
|
1232
1235
|
} finally {
|
|
1233
1236
|
try {
|
|
1234
1237
|
unlinkSync2(tmpPath);
|
|
@@ -1521,7 +1524,7 @@ async function runInit(cwd, selectedOrg) {
|
|
|
1521
1524
|
}
|
|
1522
1525
|
console.log(chalk3.gray(" Organization:"), chalk3.cyan(org.name));
|
|
1523
1526
|
console.log();
|
|
1524
|
-
const projectName = slugify(
|
|
1527
|
+
const projectName = slugify(basename2(cwd));
|
|
1525
1528
|
spinner.start("Creating project structure");
|
|
1526
1529
|
const scaffoldResult = scaffoldProject(cwd, {
|
|
1527
1530
|
projectName,
|
|
@@ -1605,7 +1608,7 @@ var initCommand = new Command3("init").description("Initialize a new Struere org
|
|
|
1605
1608
|
console.log();
|
|
1606
1609
|
let projectName = projectNameArg;
|
|
1607
1610
|
if (!projectName) {
|
|
1608
|
-
projectName = slugify(
|
|
1611
|
+
projectName = slugify(basename2(cwd));
|
|
1609
1612
|
}
|
|
1610
1613
|
projectName = slugify(projectName);
|
|
1611
1614
|
spinner.start("Creating project structure");
|
|
@@ -1679,6 +1682,13 @@ var BUILTIN_TOOLS = [
|
|
|
1679
1682
|
"calendar.update",
|
|
1680
1683
|
"calendar.delete",
|
|
1681
1684
|
"calendar.freeBusy",
|
|
1685
|
+
"whatsapp.send",
|
|
1686
|
+
"whatsapp.sendTemplate",
|
|
1687
|
+
"whatsapp.sendInteractive",
|
|
1688
|
+
"whatsapp.sendMedia",
|
|
1689
|
+
"whatsapp.listTemplates",
|
|
1690
|
+
"whatsapp.getConversation",
|
|
1691
|
+
"whatsapp.getStatus",
|
|
1682
1692
|
"agent.chat"
|
|
1683
1693
|
];
|
|
1684
1694
|
function extractSyncPayload(resources) {
|
|
@@ -1819,6 +1829,13 @@ function getBuiltinToolDescription(name) {
|
|
|
1819
1829
|
"calendar.update": "Update an existing Google Calendar event",
|
|
1820
1830
|
"calendar.delete": "Delete a Google Calendar event",
|
|
1821
1831
|
"calendar.freeBusy": "Check free/busy availability on a user's Google Calendar",
|
|
1832
|
+
"whatsapp.send": "Send a text message via WhatsApp",
|
|
1833
|
+
"whatsapp.sendTemplate": "Send a pre-approved template message via WhatsApp (works outside 24h window)",
|
|
1834
|
+
"whatsapp.sendInteractive": "Send an interactive button message via WhatsApp (max 3 buttons)",
|
|
1835
|
+
"whatsapp.sendMedia": "Send an image or audio message via WhatsApp",
|
|
1836
|
+
"whatsapp.listTemplates": "List available WhatsApp message templates",
|
|
1837
|
+
"whatsapp.getConversation": "Get WhatsApp conversation history with a phone number",
|
|
1838
|
+
"whatsapp.getStatus": "Get WhatsApp connection status for this organization",
|
|
1822
1839
|
"agent.chat": "Send a message to another agent and get its response"
|
|
1823
1840
|
};
|
|
1824
1841
|
return descriptions[name] || name;
|
|
@@ -1960,6 +1977,93 @@ function getBuiltinToolParameters(name) {
|
|
|
1960
1977
|
},
|
|
1961
1978
|
required: ["userId", "timeMin", "timeMax"]
|
|
1962
1979
|
},
|
|
1980
|
+
"whatsapp.send": {
|
|
1981
|
+
type: "object",
|
|
1982
|
+
properties: {
|
|
1983
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
1984
|
+
text: { type: "string", description: "The text message to send" }
|
|
1985
|
+
},
|
|
1986
|
+
required: ["to", "text"]
|
|
1987
|
+
},
|
|
1988
|
+
"whatsapp.sendTemplate": {
|
|
1989
|
+
type: "object",
|
|
1990
|
+
properties: {
|
|
1991
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
1992
|
+
templateName: { type: "string", description: "Name of the approved template to send" },
|
|
1993
|
+
language: { type: "string", description: 'Template language code (e.g., "en_US")' },
|
|
1994
|
+
components: {
|
|
1995
|
+
type: "array",
|
|
1996
|
+
description: "Optional template components with parameter values",
|
|
1997
|
+
items: {
|
|
1998
|
+
type: "object",
|
|
1999
|
+
properties: {
|
|
2000
|
+
type: { type: "string", description: 'Component type (e.g., "body", "header")' },
|
|
2001
|
+
parameters: {
|
|
2002
|
+
type: "array",
|
|
2003
|
+
items: {
|
|
2004
|
+
type: "object",
|
|
2005
|
+
properties: {
|
|
2006
|
+
type: { type: "string", description: 'Parameter type (e.g., "text")' },
|
|
2007
|
+
text: { type: "string", description: "Parameter text value" },
|
|
2008
|
+
parameterName: { type: "string", description: "Named parameter name (for NAMED format templates)" }
|
|
2009
|
+
},
|
|
2010
|
+
required: ["type"]
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
},
|
|
2014
|
+
required: ["type", "parameters"]
|
|
2015
|
+
}
|
|
2016
|
+
}
|
|
2017
|
+
},
|
|
2018
|
+
required: ["to", "templateName", "language"]
|
|
2019
|
+
},
|
|
2020
|
+
"whatsapp.sendInteractive": {
|
|
2021
|
+
type: "object",
|
|
2022
|
+
properties: {
|
|
2023
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
2024
|
+
bodyText: { type: "string", description: "The message body text" },
|
|
2025
|
+
buttons: {
|
|
2026
|
+
type: "array",
|
|
2027
|
+
description: "Action buttons (1-3 buttons, max 20 chars per title)",
|
|
2028
|
+
items: {
|
|
2029
|
+
type: "object",
|
|
2030
|
+
properties: {
|
|
2031
|
+
id: { type: "string", description: "Unique button identifier returned on click" },
|
|
2032
|
+
title: { type: "string", description: "Button label shown to user (max 20 characters)" }
|
|
2033
|
+
},
|
|
2034
|
+
required: ["id", "title"]
|
|
2035
|
+
}
|
|
2036
|
+
},
|
|
2037
|
+
footerText: { type: "string", description: "Optional footer text below the buttons" }
|
|
2038
|
+
},
|
|
2039
|
+
required: ["to", "bodyText", "buttons"]
|
|
2040
|
+
},
|
|
2041
|
+
"whatsapp.sendMedia": {
|
|
2042
|
+
type: "object",
|
|
2043
|
+
properties: {
|
|
2044
|
+
to: { type: "string", description: 'Recipient phone number in E.164 format (e.g., "+15551234567")' },
|
|
2045
|
+
mediaUrl: { type: "string", description: "Public URL of the media file to send" },
|
|
2046
|
+
mediaType: { type: "string", enum: ["image", "audio"], description: "Type of media to send" },
|
|
2047
|
+
caption: { type: "string", description: "Optional caption (only supported for images)" }
|
|
2048
|
+
},
|
|
2049
|
+
required: ["to", "mediaUrl", "mediaType"]
|
|
2050
|
+
},
|
|
2051
|
+
"whatsapp.listTemplates": {
|
|
2052
|
+
type: "object",
|
|
2053
|
+
properties: {}
|
|
2054
|
+
},
|
|
2055
|
+
"whatsapp.getConversation": {
|
|
2056
|
+
type: "object",
|
|
2057
|
+
properties: {
|
|
2058
|
+
phoneNumber: { type: "string", description: "Phone number to get conversation history for" },
|
|
2059
|
+
limit: { type: "number", description: "Maximum number of messages to return" }
|
|
2060
|
+
},
|
|
2061
|
+
required: ["phoneNumber"]
|
|
2062
|
+
},
|
|
2063
|
+
"whatsapp.getStatus": {
|
|
2064
|
+
type: "object",
|
|
2065
|
+
properties: {}
|
|
2066
|
+
},
|
|
1963
2067
|
"agent.chat": {
|
|
1964
2068
|
type: "object",
|
|
1965
2069
|
properties: {
|
|
@@ -3750,7 +3854,7 @@ entitiesCommand.command("search <type> <query>").description("Search entities").
|
|
|
3750
3854
|
// package.json
|
|
3751
3855
|
var package_default = {
|
|
3752
3856
|
name: "struere",
|
|
3753
|
-
version: "0.7.
|
|
3857
|
+
version: "0.7.1",
|
|
3754
3858
|
description: "Build, test, and deploy AI agents",
|
|
3755
3859
|
keywords: [
|
|
3756
3860
|
"ai",
|
|
@@ -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":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA2B/H,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAc5E;AA8ED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB,CASA"}
|