struere 0.6.1 → 0.6.3
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 +287 -58
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/index.js +240 -55
- package/dist/cli/templates/index.d.ts.map +1 -1
- package/dist/cli/utils/convex.d.ts +24 -0
- package/dist/cli/utils/convex.d.ts.map +1 -1
- package/dist/cli/utils/extractor.d.ts +10 -0
- package/dist/cli/utils/extractor.d.ts.map +1 -1
- package/dist/cli/utils/generator.d.ts +3 -2
- package/dist/cli/utils/generator.d.ts.map +1 -1
- package/dist/define/trigger.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/bin/struere.js
CHANGED
|
@@ -18204,6 +18204,7 @@ function ora(options) {
|
|
|
18204
18204
|
var isUpKey = (key, keybindings = []) => key.name === "up" || keybindings.includes("vim") && key.name === "k" || keybindings.includes("emacs") && key.ctrl && key.name === "p";
|
|
18205
18205
|
var isDownKey = (key, keybindings = []) => key.name === "down" || keybindings.includes("vim") && key.name === "j" || keybindings.includes("emacs") && key.ctrl && key.name === "n";
|
|
18206
18206
|
var isBackspaceKey = (key) => key.name === "backspace";
|
|
18207
|
+
var isTabKey = (key) => key.name === "tab";
|
|
18207
18208
|
var isNumberKey = (key) => "1234567890".includes(key.name);
|
|
18208
18209
|
var isEnterKey = (key) => key.name === "enter" || key.name === "return";
|
|
18209
18210
|
// ../../node_modules/.bun/@inquirer+core@10.3.2+c8db042c65d7bfc4/node_modules/@inquirer/core/dist/esm/lib/errors.js
|
|
@@ -19056,6 +19057,51 @@ class Separator {
|
|
|
19056
19057
|
return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
|
|
19057
19058
|
}
|
|
19058
19059
|
}
|
|
19060
|
+
// ../../node_modules/.bun/@inquirer+confirm@5.1.21+c8db042c65d7bfc4/node_modules/@inquirer/confirm/dist/esm/index.js
|
|
19061
|
+
function getBooleanValue(value, defaultValue) {
|
|
19062
|
+
let answer = defaultValue !== false;
|
|
19063
|
+
if (/^(y|yes)/i.test(value))
|
|
19064
|
+
answer = true;
|
|
19065
|
+
else if (/^(n|no)/i.test(value))
|
|
19066
|
+
answer = false;
|
|
19067
|
+
return answer;
|
|
19068
|
+
}
|
|
19069
|
+
function boolToString(value) {
|
|
19070
|
+
return value ? "Yes" : "No";
|
|
19071
|
+
}
|
|
19072
|
+
var esm_default2 = createPrompt((config, done) => {
|
|
19073
|
+
const { transformer = boolToString } = config;
|
|
19074
|
+
const [status, setStatus] = useState("idle");
|
|
19075
|
+
const [value, setValue] = useState("");
|
|
19076
|
+
const theme = makeTheme(config.theme);
|
|
19077
|
+
const prefix = usePrefix({ status, theme });
|
|
19078
|
+
useKeypress((key, rl) => {
|
|
19079
|
+
if (status !== "idle")
|
|
19080
|
+
return;
|
|
19081
|
+
if (isEnterKey(key)) {
|
|
19082
|
+
const answer = getBooleanValue(value, config.default);
|
|
19083
|
+
setValue(transformer(answer));
|
|
19084
|
+
setStatus("done");
|
|
19085
|
+
done(answer);
|
|
19086
|
+
} else if (isTabKey(key)) {
|
|
19087
|
+
const answer = boolToString(!getBooleanValue(value, config.default));
|
|
19088
|
+
rl.clearLine(0);
|
|
19089
|
+
rl.write(answer);
|
|
19090
|
+
setValue(answer);
|
|
19091
|
+
} else {
|
|
19092
|
+
setValue(rl.line);
|
|
19093
|
+
}
|
|
19094
|
+
});
|
|
19095
|
+
let formattedValue = value;
|
|
19096
|
+
let defaultValue = "";
|
|
19097
|
+
if (status === "done") {
|
|
19098
|
+
formattedValue = theme.style.answer(value);
|
|
19099
|
+
} else {
|
|
19100
|
+
defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? "y/N" : "Y/n")}`;
|
|
19101
|
+
}
|
|
19102
|
+
const message = theme.style.message(config.message, status);
|
|
19103
|
+
return `${prefix} ${message}${defaultValue} ${formattedValue}`;
|
|
19104
|
+
});
|
|
19059
19105
|
// ../../node_modules/.bun/@inquirer+select@4.4.2+c8db042c65d7bfc4/node_modules/@inquirer/select/dist/esm/index.js
|
|
19060
19106
|
var import_yoctocolors_cjs3 = __toESM(require_yoctocolors_cjs(), 1);
|
|
19061
19107
|
var selectTheme = {
|
|
@@ -19097,7 +19143,7 @@ function normalizeChoices(choices) {
|
|
|
19097
19143
|
return normalizedChoice;
|
|
19098
19144
|
});
|
|
19099
19145
|
}
|
|
19100
|
-
var
|
|
19146
|
+
var esm_default3 = createPrompt((config, done) => {
|
|
19101
19147
|
const { loop = true, pageSize = 7 } = config;
|
|
19102
19148
|
const theme = makeTheme(selectTheme, config.theme);
|
|
19103
19149
|
const { keybindings } = theme;
|
|
@@ -19944,7 +19990,7 @@ function getClaudeMD(orgName) {
|
|
|
19944
19990
|
|
|
19945
19991
|
> **This is a workspace project**, not the Struere framework source code. You define agents, entity types, roles, and custom tools here. The CLI syncs them to Convex. Framework source: github.com/struere/struere
|
|
19946
19992
|
|
|
19947
|
-
Struere is a framework for building production AI agents with Convex as the real-time backend. Agents can manage entities (business data), emit events, and
|
|
19993
|
+
Struere is a framework for building production AI agents with Convex as the real-time backend. Agents can manage entities (business data), emit events, and automate workflows with triggers\u2014all with built-in RBAC permissions.
|
|
19948
19994
|
|
|
19949
19995
|
## How It Works
|
|
19950
19996
|
|
|
@@ -19962,7 +20008,7 @@ Struere is a framework for building production AI agents with Convex as the real
|
|
|
19962
20008
|
\u25BC
|
|
19963
20009
|
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
19964
20010
|
\u2502 Convex (Real-time Backend) \u2502
|
|
19965
|
-
\u2502 \u2022 Stores agent configs, entities, events,
|
|
20011
|
+
\u2502 \u2022 Stores agent configs, entities, events, triggers \u2502
|
|
19966
20012
|
\u2502 \u2022 Runs LLM calls (Anthropic/OpenAI) \u2502
|
|
19967
20013
|
\u2502 \u2022 Enforces RBAC on every operation \u2502
|
|
19968
20014
|
\u2502 \u2022 Executes custom tools via Cloudflare Worker \u2502
|
|
@@ -20363,6 +20409,8 @@ export default defineTrigger({
|
|
|
20363
20409
|
| \\\`on.entityType\\\` | Yes | Entity type slug to watch |
|
|
20364
20410
|
| \\\`on.action\\\` | Yes | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
20365
20411
|
| \\\`on.condition\\\` | No | Dot-notation equality conditions on entity data |
|
|
20412
|
+
| \\\`schedule\\\` | No | Delay or schedule execution (see Scheduled Triggers) |
|
|
20413
|
+
| \\\`retry\\\` | No | Retry on failure (see Retry Options) |
|
|
20366
20414
|
| \\\`actions\\\` | Yes | Ordered list of tool calls to execute |
|
|
20367
20415
|
|
|
20368
20416
|
### Action Pipeline
|
|
@@ -20406,6 +20454,47 @@ condition: {
|
|
|
20406
20454
|
- **Events**: Emits \\\`trigger.executed\\\` on success, \\\`trigger.failed\\\` on error
|
|
20407
20455
|
- **Both paths**: Triggers fire from dashboard CRUD, agent tool calls, and API mutations
|
|
20408
20456
|
|
|
20457
|
+
### Scheduled Triggers
|
|
20458
|
+
|
|
20459
|
+
Add \\\`schedule\\\` to delay execution or run at a specific time derived from entity data:
|
|
20460
|
+
|
|
20461
|
+
\\\`\\\`\\\`typescript
|
|
20462
|
+
defineTrigger({
|
|
20463
|
+
name: "Session Reminder",
|
|
20464
|
+
slug: "session-reminder",
|
|
20465
|
+
on: { entityType: "session", action: "created" },
|
|
20466
|
+
schedule: {
|
|
20467
|
+
at: "{{trigger.data.startTime}}",
|
|
20468
|
+
offset: -3600000,
|
|
20469
|
+
},
|
|
20470
|
+
retry: { maxAttempts: 3, backoffMs: 60000 },
|
|
20471
|
+
actions: [
|
|
20472
|
+
{ tool: "entity.get", args: { id: "{{trigger.entityId}}" }, as: "session" },
|
|
20473
|
+
{ tool: "event.emit", args: { eventType: "session.reminder", entityId: "{{trigger.entityId}}" } },
|
|
20474
|
+
],
|
|
20475
|
+
})
|
|
20476
|
+
\\\`\\\`\\\`
|
|
20477
|
+
|
|
20478
|
+
**Schedule Options:**
|
|
20479
|
+
|
|
20480
|
+
| Field | Type | Description |
|
|
20481
|
+
|-------|------|-------------|
|
|
20482
|
+
| \\\`delay\\\` | number | Fixed delay in ms after entity mutation |
|
|
20483
|
+
| \\\`at\\\` | string | Template expression resolving to a timestamp (e.g. \\\`"{{trigger.data.startTime}}"\\\`) |
|
|
20484
|
+
| \\\`offset\\\` | number | Offset from \\\`at\\\` time in ms (negative = before, positive = after) |
|
|
20485
|
+
| \\\`cancelPrevious\\\` | boolean | Cancel pending runs for same trigger+entity when new run created |
|
|
20486
|
+
|
|
20487
|
+
Cannot use both \\\`delay\\\` and \\\`at\\\` on the same trigger.
|
|
20488
|
+
|
|
20489
|
+
**Retry Options:**
|
|
20490
|
+
|
|
20491
|
+
| Field | Type | Default | Description |
|
|
20492
|
+
|-------|------|---------|-------------|
|
|
20493
|
+
| \\\`maxAttempts\\\` | number | 1 | Max execution attempts |
|
|
20494
|
+
| \\\`backoffMs\\\` | number | 60000 | Base backoff (exponential: \\\`min(backoffMs * 2^(attempt-1), 3600000)\\\`) |
|
|
20495
|
+
|
|
20496
|
+
Scheduled triggers create **trigger runs** visible in the dashboard with status tracking (pending \u2192 running \u2192 completed/failed/dead).
|
|
20497
|
+
|
|
20409
20498
|
### Scaffold a new trigger
|
|
20410
20499
|
|
|
20411
20500
|
\\\`\\\`\\\`bash
|
|
@@ -20453,23 +20542,6 @@ Creates \\\`triggers/my-trigger.ts\\\` with a starter template.
|
|
|
20453
20542
|
|
|
20454
20543
|
Events are immutable audit logs. Use for analytics, debugging, compliance.
|
|
20455
20544
|
|
|
20456
|
-
### Job Tools
|
|
20457
|
-
|
|
20458
|
-
\`\`\`typescript
|
|
20459
|
-
// job.enqueue - Schedule background work
|
|
20460
|
-
{
|
|
20461
|
-
jobType: "send_reminder",
|
|
20462
|
-
payload: { customerId: "ent_abc", message: "Your trial ends soon" },
|
|
20463
|
-
runAt: 1706832000000 // Unix timestamp (optional, runs immediately if omitted)
|
|
20464
|
-
}
|
|
20465
|
-
|
|
20466
|
-
// job.status - Check job status
|
|
20467
|
-
{ jobId: "job_xyz123" }
|
|
20468
|
-
// Returns: { status: "pending" | "running" | "completed" | "failed", result: {...} }
|
|
20469
|
-
\`\`\`
|
|
20470
|
-
|
|
20471
|
-
Jobs run asynchronously with retry logic. Use for: emails, notifications, data sync.
|
|
20472
|
-
|
|
20473
20545
|
### Calendar Tools
|
|
20474
20546
|
|
|
20475
20547
|
Requires a connected Google Calendar (via Settings > Integrations). The \`userId\` must be a user with a linked Google account.
|
|
@@ -20718,7 +20790,7 @@ export default defineAgent({
|
|
|
20718
20790
|
Check teacher availability before booking. Create session entities for confirmed bookings.
|
|
20719
20791
|
Send confirmation via the send_notification custom tool.\\\`,
|
|
20720
20792
|
model: { provider: "anthropic", name: "claude-haiku-4-5" },
|
|
20721
|
-
tools: ["entity.create", "entity.query", "
|
|
20793
|
+
tools: ["entity.create", "entity.query", "event.emit", "send_notification"],
|
|
20722
20794
|
})
|
|
20723
20795
|
\`\`\`
|
|
20724
20796
|
|
|
@@ -21242,7 +21314,7 @@ async function runInit(cwd, selectedOrg) {
|
|
|
21242
21314
|
if (organizations.length === 1) {
|
|
21243
21315
|
org = organizations[0];
|
|
21244
21316
|
} else {
|
|
21245
|
-
org = await
|
|
21317
|
+
org = await esm_default3({
|
|
21246
21318
|
message: "Select organization:",
|
|
21247
21319
|
choices: organizations.map((o) => ({
|
|
21248
21320
|
name: `${o.name} (${o.slug})`,
|
|
@@ -21317,7 +21389,7 @@ var initCommand = new Command("init").description("Initialize a new Struere orga
|
|
|
21317
21389
|
} else if (organizations.length === 1) {
|
|
21318
21390
|
selectedOrg = organizations[0];
|
|
21319
21391
|
} else {
|
|
21320
|
-
selectedOrg = await
|
|
21392
|
+
selectedOrg = await esm_default3({
|
|
21321
21393
|
message: "Select organization:",
|
|
21322
21394
|
choices: organizations.map((o) => ({
|
|
21323
21395
|
name: `${o.name} (${o.slug})`,
|
|
@@ -21493,8 +21565,6 @@ var BUILTIN_TOOLS = [
|
|
|
21493
21565
|
"entity.unlink",
|
|
21494
21566
|
"event.emit",
|
|
21495
21567
|
"event.query",
|
|
21496
|
-
"job.enqueue",
|
|
21497
|
-
"job.status",
|
|
21498
21568
|
"calendar.list",
|
|
21499
21569
|
"calendar.create",
|
|
21500
21570
|
"calendar.update",
|
|
@@ -21569,7 +21639,9 @@ function extractSyncPayload(resources) {
|
|
|
21569
21639
|
tool: a.tool,
|
|
21570
21640
|
args: a.args,
|
|
21571
21641
|
as: a.as
|
|
21572
|
-
}))
|
|
21642
|
+
})),
|
|
21643
|
+
schedule: t.schedule,
|
|
21644
|
+
retry: t.retry
|
|
21573
21645
|
})) : undefined;
|
|
21574
21646
|
return { agents, entityTypes, roles, evalSuites, triggers };
|
|
21575
21647
|
}
|
|
@@ -21633,8 +21705,6 @@ function getBuiltinToolDescription(name) {
|
|
|
21633
21705
|
"entity.unlink": "Remove a relation between two entities",
|
|
21634
21706
|
"event.emit": "Emit a custom event for audit logging",
|
|
21635
21707
|
"event.query": "Query historical events with optional filters",
|
|
21636
|
-
"job.enqueue": "Schedule a background job to run later",
|
|
21637
|
-
"job.status": "Get the status of a scheduled job",
|
|
21638
21708
|
"calendar.list": "List Google Calendar events for a user within a time range",
|
|
21639
21709
|
"calendar.create": "Create a Google Calendar event on a user's calendar",
|
|
21640
21710
|
"calendar.update": "Update an existing Google Calendar event",
|
|
@@ -21727,26 +21797,6 @@ function getBuiltinToolParameters(name) {
|
|
|
21727
21797
|
limit: { type: "number", description: "Maximum number of results" }
|
|
21728
21798
|
}
|
|
21729
21799
|
},
|
|
21730
|
-
"job.enqueue": {
|
|
21731
|
-
type: "object",
|
|
21732
|
-
properties: {
|
|
21733
|
-
jobType: { type: "string", description: "The type of job to schedule" },
|
|
21734
|
-
payload: { type: "object", description: "Job payload data" },
|
|
21735
|
-
scheduledFor: { type: "number", description: "Unix timestamp when job should run (optional, runs immediately if omitted)" },
|
|
21736
|
-
priority: { type: "number", description: "Job priority (higher runs first)" },
|
|
21737
|
-
maxAttempts: { type: "number", description: "Maximum retry attempts" },
|
|
21738
|
-
idempotencyKey: { type: "string", description: "Unique key to prevent duplicate jobs" },
|
|
21739
|
-
entityId: { type: "string", description: "Optional entity ID this job relates to" }
|
|
21740
|
-
},
|
|
21741
|
-
required: ["jobType"]
|
|
21742
|
-
},
|
|
21743
|
-
"job.status": {
|
|
21744
|
-
type: "object",
|
|
21745
|
-
properties: {
|
|
21746
|
-
id: { type: "string", description: "The job ID to check" }
|
|
21747
|
-
},
|
|
21748
|
-
required: ["id"]
|
|
21749
|
-
},
|
|
21750
21800
|
"calendar.list": {
|
|
21751
21801
|
type: "object",
|
|
21752
21802
|
properties: {
|
|
@@ -21831,7 +21881,7 @@ function extractHandlerCode(handler) {
|
|
|
21831
21881
|
}
|
|
21832
21882
|
|
|
21833
21883
|
// src/cli/commands/dev.ts
|
|
21834
|
-
var devCommand = new Command("dev").description("Sync all resources to development environment").action(async () => {
|
|
21884
|
+
var devCommand = new Command("dev").description("Sync all resources to development environment").option("--force", "Skip destructive sync confirmation").action(async (options) => {
|
|
21835
21885
|
const spinner = ora();
|
|
21836
21886
|
const cwd = process.cwd();
|
|
21837
21887
|
console.log();
|
|
@@ -21895,20 +21945,78 @@ var devCommand = new Command("dev").description("Sync all resources to developme
|
|
|
21895
21945
|
return true;
|
|
21896
21946
|
};
|
|
21897
21947
|
let initialSyncOk = false;
|
|
21948
|
+
let loadedResources = null;
|
|
21898
21949
|
spinner.start("Loading resources");
|
|
21899
21950
|
try {
|
|
21900
|
-
|
|
21901
|
-
spinner.succeed(`Loaded ${
|
|
21902
|
-
for (const err of
|
|
21951
|
+
loadedResources = await loadAllResources(cwd);
|
|
21952
|
+
spinner.succeed(`Loaded ${loadedResources.agents.length} agents, ${loadedResources.entityTypes.length} entity types, ${loadedResources.roles.length} roles, ${loadedResources.customTools.length} custom tools, ${loadedResources.evalSuites.length} eval suites, ${loadedResources.triggers.length} triggers`);
|
|
21953
|
+
for (const err of loadedResources.errors) {
|
|
21903
21954
|
console.log(source_default.red(" \u2716"), err);
|
|
21904
21955
|
}
|
|
21905
|
-
if (
|
|
21956
|
+
if (loadedResources.errors.length === 0) {
|
|
21906
21957
|
initialSyncOk = true;
|
|
21907
21958
|
}
|
|
21908
21959
|
} catch (error) {
|
|
21909
21960
|
spinner.fail("Failed to load resources");
|
|
21910
21961
|
console.log(source_default.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
21911
21962
|
}
|
|
21963
|
+
if (initialSyncOk && !options.force && loadedResources) {
|
|
21964
|
+
spinner.start("Checking remote state");
|
|
21965
|
+
try {
|
|
21966
|
+
const { state: remoteState } = await getSyncState(project.organization.id, "development");
|
|
21967
|
+
spinner.stop();
|
|
21968
|
+
if (remoteState) {
|
|
21969
|
+
const payload = extractSyncPayload(loadedResources);
|
|
21970
|
+
const localSlugs = {
|
|
21971
|
+
agents: new Set(payload.agents.map((a) => a.slug)),
|
|
21972
|
+
entityTypes: new Set(payload.entityTypes.map((et) => et.slug)),
|
|
21973
|
+
roles: new Set(payload.roles.map((r) => r.name)),
|
|
21974
|
+
evalSuites: new Set((payload.evalSuites || []).map((es) => es.slug)),
|
|
21975
|
+
triggers: new Set((payload.triggers || []).map((t) => t.slug))
|
|
21976
|
+
};
|
|
21977
|
+
const deletions = [];
|
|
21978
|
+
const deletedAgents = remoteState.agents.filter((a) => !localSlugs.agents.has(a.slug)).map((a) => a.name);
|
|
21979
|
+
if (deletedAgents.length > 0)
|
|
21980
|
+
deletions.push({ type: "Agents", remote: remoteState.agents.length, local: payload.agents.length, deleted: deletedAgents });
|
|
21981
|
+
const deletedEntityTypes = remoteState.entityTypes.filter((et) => !localSlugs.entityTypes.has(et.slug)).map((et) => et.name);
|
|
21982
|
+
if (deletedEntityTypes.length > 0)
|
|
21983
|
+
deletions.push({ type: "Entity types", remote: remoteState.entityTypes.length, local: payload.entityTypes.length, deleted: deletedEntityTypes });
|
|
21984
|
+
const deletedRoles = remoteState.roles.filter((r) => !localSlugs.roles.has(r.name)).map((r) => r.name);
|
|
21985
|
+
if (deletedRoles.length > 0)
|
|
21986
|
+
deletions.push({ type: "Roles", remote: remoteState.roles.length, local: payload.roles.length, deleted: deletedRoles });
|
|
21987
|
+
const remoteEvalSuites = remoteState.evalSuites || [];
|
|
21988
|
+
const deletedEvalSuites = remoteEvalSuites.filter((es) => !localSlugs.evalSuites.has(es.slug)).map((es) => es.name);
|
|
21989
|
+
if (deletedEvalSuites.length > 0)
|
|
21990
|
+
deletions.push({ type: "Eval suites", remote: remoteEvalSuites.length, local: (payload.evalSuites || []).length, deleted: deletedEvalSuites });
|
|
21991
|
+
const remoteTriggers = remoteState.triggers || [];
|
|
21992
|
+
const deletedTriggers = remoteTriggers.filter((t) => !localSlugs.triggers.has(t.slug)).map((t) => t.name);
|
|
21993
|
+
if (deletedTriggers.length > 0)
|
|
21994
|
+
deletions.push({ type: "Triggers", remote: remoteTriggers.length, local: (payload.triggers || []).length, deleted: deletedTriggers });
|
|
21995
|
+
if (deletions.length > 0) {
|
|
21996
|
+
console.log(source_default.yellow.bold(" Warning: this sync will DELETE remote resources:"));
|
|
21997
|
+
console.log();
|
|
21998
|
+
for (const d of deletions) {
|
|
21999
|
+
console.log(source_default.yellow(` ${d.type}:`.padEnd(20)), `${d.remote} remote \u2192 ${d.local} local`, source_default.red(`(${d.deleted.length} will be deleted)`));
|
|
22000
|
+
for (const name of d.deleted) {
|
|
22001
|
+
console.log(source_default.red(` - ${name}`));
|
|
22002
|
+
}
|
|
22003
|
+
}
|
|
22004
|
+
console.log();
|
|
22005
|
+
console.log(source_default.gray(" Run"), source_default.cyan("struere pull"), source_default.gray("first to download remote resources."));
|
|
22006
|
+
console.log();
|
|
22007
|
+
const shouldContinue = await esm_default2({ message: "Continue anyway?", default: false });
|
|
22008
|
+
if (!shouldContinue) {
|
|
22009
|
+
console.log();
|
|
22010
|
+
console.log(source_default.gray("Aborted."));
|
|
22011
|
+
process.exit(0);
|
|
22012
|
+
}
|
|
22013
|
+
console.log();
|
|
22014
|
+
}
|
|
22015
|
+
}
|
|
22016
|
+
} catch {
|
|
22017
|
+
spinner.stop();
|
|
22018
|
+
}
|
|
22019
|
+
}
|
|
21912
22020
|
if (initialSyncOk) {
|
|
21913
22021
|
spinner.start("Syncing to Convex");
|
|
21914
22022
|
try {
|
|
@@ -22095,6 +22203,41 @@ var deployCommand = new Command("deploy").description("Deploy all resources to p
|
|
|
22095
22203
|
console.log();
|
|
22096
22204
|
return;
|
|
22097
22205
|
}
|
|
22206
|
+
const payload = extractSyncPayload(resources);
|
|
22207
|
+
spinner.start("Checking remote state");
|
|
22208
|
+
let deletions = [];
|
|
22209
|
+
try {
|
|
22210
|
+
const { state: remoteState } = await getSyncState(project.organization.id, "production");
|
|
22211
|
+
spinner.stop();
|
|
22212
|
+
if (remoteState) {
|
|
22213
|
+
const localSlugs = {
|
|
22214
|
+
agents: new Set(payload.agents.map((a) => a.slug)),
|
|
22215
|
+
entityTypes: new Set(payload.entityTypes.map((et) => et.slug)),
|
|
22216
|
+
roles: new Set(payload.roles.map((r) => r.name)),
|
|
22217
|
+
evalSuites: new Set((payload.evalSuites || []).map((es) => es.slug)),
|
|
22218
|
+
triggers: new Set((payload.triggers || []).map((t) => t.slug))
|
|
22219
|
+
};
|
|
22220
|
+
const deletedAgents = remoteState.agents.filter((a) => !localSlugs.agents.has(a.slug)).map((a) => a.name);
|
|
22221
|
+
if (deletedAgents.length > 0)
|
|
22222
|
+
deletions.push({ type: "Agents", remote: remoteState.agents.length, local: payload.agents.length, deleted: deletedAgents });
|
|
22223
|
+
const deletedEntityTypes = remoteState.entityTypes.filter((et) => !localSlugs.entityTypes.has(et.slug)).map((et) => et.name);
|
|
22224
|
+
if (deletedEntityTypes.length > 0)
|
|
22225
|
+
deletions.push({ type: "Entity types", remote: remoteState.entityTypes.length, local: payload.entityTypes.length, deleted: deletedEntityTypes });
|
|
22226
|
+
const deletedRoles = remoteState.roles.filter((r) => !localSlugs.roles.has(r.name)).map((r) => r.name);
|
|
22227
|
+
if (deletedRoles.length > 0)
|
|
22228
|
+
deletions.push({ type: "Roles", remote: remoteState.roles.length, local: payload.roles.length, deleted: deletedRoles });
|
|
22229
|
+
const remoteEvalSuites = remoteState.evalSuites || [];
|
|
22230
|
+
const deletedEvalSuites = remoteEvalSuites.filter((es) => !localSlugs.evalSuites.has(es.slug)).map((es) => es.name);
|
|
22231
|
+
if (deletedEvalSuites.length > 0)
|
|
22232
|
+
deletions.push({ type: "Eval suites", remote: remoteEvalSuites.length, local: (payload.evalSuites || []).length, deleted: deletedEvalSuites });
|
|
22233
|
+
const remoteTriggers = remoteState.triggers || [];
|
|
22234
|
+
const deletedTriggers = remoteTriggers.filter((t) => !localSlugs.triggers.has(t.slug)).map((t) => t.name);
|
|
22235
|
+
if (deletedTriggers.length > 0)
|
|
22236
|
+
deletions.push({ type: "Triggers", remote: remoteTriggers.length, local: (payload.triggers || []).length, deleted: deletedTriggers });
|
|
22237
|
+
}
|
|
22238
|
+
} catch {
|
|
22239
|
+
spinner.stop();
|
|
22240
|
+
}
|
|
22098
22241
|
if (options.dryRun) {
|
|
22099
22242
|
console.log();
|
|
22100
22243
|
console.log(source_default.yellow("Dry run mode - no changes will be made"));
|
|
@@ -22120,12 +22263,38 @@ var deployCommand = new Command("deploy").description("Deploy all resources to p
|
|
|
22120
22263
|
console.log(source_default.gray(" -"), source_default.cyan(suite.suite), source_default.gray(`(${suite.cases.length} cases)`));
|
|
22121
22264
|
}
|
|
22122
22265
|
}
|
|
22266
|
+
if (deletions.length > 0) {
|
|
22267
|
+
console.log();
|
|
22268
|
+
console.log(source_default.red.bold("Would DELETE:"));
|
|
22269
|
+
for (const d of deletions) {
|
|
22270
|
+
for (const name of d.deleted) {
|
|
22271
|
+
console.log(source_default.red(` - ${d.type.toLowerCase()}: ${name}`));
|
|
22272
|
+
}
|
|
22273
|
+
}
|
|
22274
|
+
}
|
|
22123
22275
|
console.log();
|
|
22124
22276
|
return;
|
|
22125
22277
|
}
|
|
22278
|
+
if (deletions.length > 0) {
|
|
22279
|
+
console.log(source_default.yellow.bold(" Warning: this deploy will DELETE production resources:"));
|
|
22280
|
+
console.log();
|
|
22281
|
+
for (const d of deletions) {
|
|
22282
|
+
console.log(source_default.yellow(` ${d.type}:`.padEnd(20)), `${d.remote} remote \u2192 ${d.local} local`, source_default.red(`(${d.deleted.length} will be deleted)`));
|
|
22283
|
+
for (const name of d.deleted) {
|
|
22284
|
+
console.log(source_default.red(` - ${name}`));
|
|
22285
|
+
}
|
|
22286
|
+
}
|
|
22287
|
+
console.log();
|
|
22288
|
+
const shouldContinue = await esm_default2({ message: "Continue anyway?", default: false });
|
|
22289
|
+
if (!shouldContinue) {
|
|
22290
|
+
console.log();
|
|
22291
|
+
console.log(source_default.gray("Aborted."));
|
|
22292
|
+
process.exit(0);
|
|
22293
|
+
}
|
|
22294
|
+
console.log();
|
|
22295
|
+
}
|
|
22126
22296
|
spinner.start("Deploying to production");
|
|
22127
22297
|
try {
|
|
22128
|
-
const payload = extractSyncPayload(resources);
|
|
22129
22298
|
const syncResult = await syncOrganization({
|
|
22130
22299
|
...payload,
|
|
22131
22300
|
organizationId: project.organization.id,
|
|
@@ -22167,7 +22336,6 @@ var deployCommand = new Command("deploy").description("Deploy all resources to p
|
|
|
22167
22336
|
}
|
|
22168
22337
|
spinner.start("Deploying to production");
|
|
22169
22338
|
try {
|
|
22170
|
-
const payload = extractSyncPayload(resources);
|
|
22171
22339
|
const syncResult = await syncOrganization({
|
|
22172
22340
|
...payload,
|
|
22173
22341
|
organizationId: project.organization.id,
|
|
@@ -22528,8 +22696,7 @@ var BUILTIN_TOOLS2 = [
|
|
|
22528
22696
|
"entity.unlink",
|
|
22529
22697
|
"event.emit",
|
|
22530
22698
|
"event.query",
|
|
22531
|
-
"
|
|
22532
|
-
"job.status"
|
|
22699
|
+
"agent.chat"
|
|
22533
22700
|
];
|
|
22534
22701
|
function escapeTemplateLiteral(str) {
|
|
22535
22702
|
return str.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
|
|
@@ -22728,6 +22895,56 @@ ${toolEntries.join(`,
|
|
|
22728
22895
|
])
|
|
22729
22896
|
`;
|
|
22730
22897
|
}
|
|
22898
|
+
function generateTriggerFile(trigger) {
|
|
22899
|
+
const onParts = [
|
|
22900
|
+
` entityType: "${trigger.entityType}"`,
|
|
22901
|
+
` action: "${trigger.action}"`
|
|
22902
|
+
];
|
|
22903
|
+
if (trigger.condition && Object.keys(trigger.condition).length > 0) {
|
|
22904
|
+
onParts.push(` condition: ${stringifyValue(trigger.condition, 4)}`);
|
|
22905
|
+
}
|
|
22906
|
+
const actionLines = trigger.actions.map((a) => {
|
|
22907
|
+
const aParts = [
|
|
22908
|
+
` tool: "${a.tool}"`,
|
|
22909
|
+
` args: ${stringifyValue(a.args, 6)}`
|
|
22910
|
+
];
|
|
22911
|
+
if (a.as) {
|
|
22912
|
+
aParts.push(` as: "${a.as}"`);
|
|
22913
|
+
}
|
|
22914
|
+
return ` {
|
|
22915
|
+
${aParts.join(`,
|
|
22916
|
+
`)},
|
|
22917
|
+
}`;
|
|
22918
|
+
});
|
|
22919
|
+
const parts = [
|
|
22920
|
+
` name: "${trigger.name}"`,
|
|
22921
|
+
` slug: "${trigger.slug}"`
|
|
22922
|
+
];
|
|
22923
|
+
if (trigger.description) {
|
|
22924
|
+
parts.push(` description: "${trigger.description}"`);
|
|
22925
|
+
}
|
|
22926
|
+
parts.push(` on: {
|
|
22927
|
+
${onParts.join(`,
|
|
22928
|
+
`)},
|
|
22929
|
+
}`);
|
|
22930
|
+
parts.push(` actions: [
|
|
22931
|
+
${actionLines.join(`,
|
|
22932
|
+
`)},
|
|
22933
|
+
]`);
|
|
22934
|
+
if (trigger.schedule) {
|
|
22935
|
+
parts.push(` schedule: ${stringifyValue(trigger.schedule, 2)}`);
|
|
22936
|
+
}
|
|
22937
|
+
if (trigger.retry) {
|
|
22938
|
+
parts.push(` retry: ${stringifyValue(trigger.retry, 2)}`);
|
|
22939
|
+
}
|
|
22940
|
+
return `import { defineTrigger } from 'struere'
|
|
22941
|
+
|
|
22942
|
+
export default defineTrigger({
|
|
22943
|
+
${parts.join(`,
|
|
22944
|
+
`)},
|
|
22945
|
+
})
|
|
22946
|
+
`;
|
|
22947
|
+
}
|
|
22731
22948
|
function generateIndexFile(type, slugs) {
|
|
22732
22949
|
if (slugs.length === 0) {
|
|
22733
22950
|
return "";
|
|
@@ -22828,6 +23045,7 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
|
|
|
22828
23045
|
ensureDir2(join7(cwd, "agents"));
|
|
22829
23046
|
ensureDir2(join7(cwd, "entity-types"));
|
|
22830
23047
|
ensureDir2(join7(cwd, "roles"));
|
|
23048
|
+
ensureDir2(join7(cwd, "triggers"));
|
|
22831
23049
|
ensureDir2(join7(cwd, "tools"));
|
|
22832
23050
|
const agentSlugs = [];
|
|
22833
23051
|
for (const agent of state.agents) {
|
|
@@ -22849,6 +23067,12 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
|
|
|
22849
23067
|
const content = generateRoleFile(role);
|
|
22850
23068
|
writeOrSkip(`roles/${role.name}.ts`, content);
|
|
22851
23069
|
}
|
|
23070
|
+
const triggerSlugs = [];
|
|
23071
|
+
for (const trigger of state.triggers || []) {
|
|
23072
|
+
triggerSlugs.push(trigger.slug);
|
|
23073
|
+
const content = generateTriggerFile(trigger);
|
|
23074
|
+
writeOrSkip(`triggers/${trigger.slug}.ts`, content);
|
|
23075
|
+
}
|
|
22852
23076
|
const customTools = collectCustomTools(state.agents);
|
|
22853
23077
|
if (customTools.length > 0) {
|
|
22854
23078
|
const content = generateToolsFile(customTools);
|
|
@@ -22869,6 +23093,11 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
|
|
|
22869
23093
|
if (content)
|
|
22870
23094
|
writeOrSkip("roles/index.ts", content);
|
|
22871
23095
|
}
|
|
23096
|
+
if (triggerSlugs.length > 0) {
|
|
23097
|
+
const content = generateIndexFile("triggers", triggerSlugs);
|
|
23098
|
+
if (content)
|
|
23099
|
+
writeOrSkip("triggers/index.ts", content);
|
|
23100
|
+
}
|
|
22872
23101
|
if (options.dryRun) {
|
|
22873
23102
|
console.log(source_default.cyan("Dry run - no files written"));
|
|
22874
23103
|
console.log();
|
|
@@ -22899,7 +23128,7 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
|
|
|
22899
23128
|
// package.json
|
|
22900
23129
|
var package_default = {
|
|
22901
23130
|
name: "struere",
|
|
22902
|
-
version: "0.6.
|
|
23131
|
+
version: "0.6.3",
|
|
22903
23132
|
description: "Build, test, and deploy AI agents",
|
|
22904
23133
|
keywords: [
|
|
22905
23134
|
"ai",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2BnC,eAAO,MAAM,aAAa,SA6PtB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,eAAO,MAAM,UAAU,SAoSnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,eAAO,MAAM,WAAW,SAiLpB,CAAA"}
|
package/dist/cli/index.js
CHANGED
|
@@ -737,7 +737,7 @@ function getClaudeMD(orgName) {
|
|
|
737
737
|
|
|
738
738
|
> **This is a workspace project**, not the Struere framework source code. You define agents, entity types, roles, and custom tools here. The CLI syncs them to Convex. Framework source: github.com/struere/struere
|
|
739
739
|
|
|
740
|
-
Struere is a framework for building production AI agents with Convex as the real-time backend. Agents can manage entities (business data), emit events, and
|
|
740
|
+
Struere is a framework for building production AI agents with Convex as the real-time backend. Agents can manage entities (business data), emit events, and automate workflows with triggers\u2014all with built-in RBAC permissions.
|
|
741
741
|
|
|
742
742
|
## How It Works
|
|
743
743
|
|
|
@@ -755,7 +755,7 @@ Struere is a framework for building production AI agents with Convex as the real
|
|
|
755
755
|
\u25BC
|
|
756
756
|
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
757
757
|
\u2502 Convex (Real-time Backend) \u2502
|
|
758
|
-
\u2502 \u2022 Stores agent configs, entities, events,
|
|
758
|
+
\u2502 \u2022 Stores agent configs, entities, events, triggers \u2502
|
|
759
759
|
\u2502 \u2022 Runs LLM calls (Anthropic/OpenAI) \u2502
|
|
760
760
|
\u2502 \u2022 Enforces RBAC on every operation \u2502
|
|
761
761
|
\u2502 \u2022 Executes custom tools via Cloudflare Worker \u2502
|
|
@@ -1156,6 +1156,8 @@ export default defineTrigger({
|
|
|
1156
1156
|
| \\\`on.entityType\\\` | Yes | Entity type slug to watch |
|
|
1157
1157
|
| \\\`on.action\\\` | Yes | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
1158
1158
|
| \\\`on.condition\\\` | No | Dot-notation equality conditions on entity data |
|
|
1159
|
+
| \\\`schedule\\\` | No | Delay or schedule execution (see Scheduled Triggers) |
|
|
1160
|
+
| \\\`retry\\\` | No | Retry on failure (see Retry Options) |
|
|
1159
1161
|
| \\\`actions\\\` | Yes | Ordered list of tool calls to execute |
|
|
1160
1162
|
|
|
1161
1163
|
### Action Pipeline
|
|
@@ -1199,6 +1201,47 @@ condition: {
|
|
|
1199
1201
|
- **Events**: Emits \\\`trigger.executed\\\` on success, \\\`trigger.failed\\\` on error
|
|
1200
1202
|
- **Both paths**: Triggers fire from dashboard CRUD, agent tool calls, and API mutations
|
|
1201
1203
|
|
|
1204
|
+
### Scheduled Triggers
|
|
1205
|
+
|
|
1206
|
+
Add \\\`schedule\\\` to delay execution or run at a specific time derived from entity data:
|
|
1207
|
+
|
|
1208
|
+
\\\`\\\`\\\`typescript
|
|
1209
|
+
defineTrigger({
|
|
1210
|
+
name: "Session Reminder",
|
|
1211
|
+
slug: "session-reminder",
|
|
1212
|
+
on: { entityType: "session", action: "created" },
|
|
1213
|
+
schedule: {
|
|
1214
|
+
at: "{{trigger.data.startTime}}",
|
|
1215
|
+
offset: -3600000,
|
|
1216
|
+
},
|
|
1217
|
+
retry: { maxAttempts: 3, backoffMs: 60000 },
|
|
1218
|
+
actions: [
|
|
1219
|
+
{ tool: "entity.get", args: { id: "{{trigger.entityId}}" }, as: "session" },
|
|
1220
|
+
{ tool: "event.emit", args: { eventType: "session.reminder", entityId: "{{trigger.entityId}}" } },
|
|
1221
|
+
],
|
|
1222
|
+
})
|
|
1223
|
+
\\\`\\\`\\\`
|
|
1224
|
+
|
|
1225
|
+
**Schedule Options:**
|
|
1226
|
+
|
|
1227
|
+
| Field | Type | Description |
|
|
1228
|
+
|-------|------|-------------|
|
|
1229
|
+
| \\\`delay\\\` | number | Fixed delay in ms after entity mutation |
|
|
1230
|
+
| \\\`at\\\` | string | Template expression resolving to a timestamp (e.g. \\\`"{{trigger.data.startTime}}"\\\`) |
|
|
1231
|
+
| \\\`offset\\\` | number | Offset from \\\`at\\\` time in ms (negative = before, positive = after) |
|
|
1232
|
+
| \\\`cancelPrevious\\\` | boolean | Cancel pending runs for same trigger+entity when new run created |
|
|
1233
|
+
|
|
1234
|
+
Cannot use both \\\`delay\\\` and \\\`at\\\` on the same trigger.
|
|
1235
|
+
|
|
1236
|
+
**Retry Options:**
|
|
1237
|
+
|
|
1238
|
+
| Field | Type | Default | Description |
|
|
1239
|
+
|-------|------|---------|-------------|
|
|
1240
|
+
| \\\`maxAttempts\\\` | number | 1 | Max execution attempts |
|
|
1241
|
+
| \\\`backoffMs\\\` | number | 60000 | Base backoff (exponential: \\\`min(backoffMs * 2^(attempt-1), 3600000)\\\`) |
|
|
1242
|
+
|
|
1243
|
+
Scheduled triggers create **trigger runs** visible in the dashboard with status tracking (pending \u2192 running \u2192 completed/failed/dead).
|
|
1244
|
+
|
|
1202
1245
|
### Scaffold a new trigger
|
|
1203
1246
|
|
|
1204
1247
|
\\\`\\\`\\\`bash
|
|
@@ -1246,23 +1289,6 @@ Creates \\\`triggers/my-trigger.ts\\\` with a starter template.
|
|
|
1246
1289
|
|
|
1247
1290
|
Events are immutable audit logs. Use for analytics, debugging, compliance.
|
|
1248
1291
|
|
|
1249
|
-
### Job Tools
|
|
1250
|
-
|
|
1251
|
-
\`\`\`typescript
|
|
1252
|
-
// job.enqueue - Schedule background work
|
|
1253
|
-
{
|
|
1254
|
-
jobType: "send_reminder",
|
|
1255
|
-
payload: { customerId: "ent_abc", message: "Your trial ends soon" },
|
|
1256
|
-
runAt: 1706832000000 // Unix timestamp (optional, runs immediately if omitted)
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
// job.status - Check job status
|
|
1260
|
-
{ jobId: "job_xyz123" }
|
|
1261
|
-
// Returns: { status: "pending" | "running" | "completed" | "failed", result: {...} }
|
|
1262
|
-
\`\`\`
|
|
1263
|
-
|
|
1264
|
-
Jobs run asynchronously with retry logic. Use for: emails, notifications, data sync.
|
|
1265
|
-
|
|
1266
1292
|
### Calendar Tools
|
|
1267
1293
|
|
|
1268
1294
|
Requires a connected Google Calendar (via Settings > Integrations). The \`userId\` must be a user with a linked Google account.
|
|
@@ -1511,7 +1537,7 @@ export default defineAgent({
|
|
|
1511
1537
|
Check teacher availability before booking. Create session entities for confirmed bookings.
|
|
1512
1538
|
Send confirmation via the send_notification custom tool.\\\`,
|
|
1513
1539
|
model: { provider: "anthropic", name: "claude-haiku-4-5" },
|
|
1514
|
-
tools: ["entity.create", "entity.query", "
|
|
1540
|
+
tools: ["entity.create", "entity.query", "event.emit", "send_notification"],
|
|
1515
1541
|
})
|
|
1516
1542
|
\`\`\`
|
|
1517
1543
|
|
|
@@ -2163,6 +2189,7 @@ import ora3 from "ora";
|
|
|
2163
2189
|
import chokidar from "chokidar";
|
|
2164
2190
|
import { join as join6 } from "path";
|
|
2165
2191
|
import { existsSync as existsSync6, writeFileSync as writeFileSync5 } from "fs";
|
|
2192
|
+
import { confirm } from "@inquirer/prompts";
|
|
2166
2193
|
|
|
2167
2194
|
// src/cli/utils/loader.ts
|
|
2168
2195
|
import { existsSync as existsSync5, readdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync4, unlinkSync as unlinkSync2 } from "fs";
|
|
@@ -2289,8 +2316,6 @@ var BUILTIN_TOOLS = [
|
|
|
2289
2316
|
"entity.unlink",
|
|
2290
2317
|
"event.emit",
|
|
2291
2318
|
"event.query",
|
|
2292
|
-
"job.enqueue",
|
|
2293
|
-
"job.status",
|
|
2294
2319
|
"calendar.list",
|
|
2295
2320
|
"calendar.create",
|
|
2296
2321
|
"calendar.update",
|
|
@@ -2365,7 +2390,9 @@ function extractSyncPayload(resources) {
|
|
|
2365
2390
|
tool: a.tool,
|
|
2366
2391
|
args: a.args,
|
|
2367
2392
|
as: a.as
|
|
2368
|
-
}))
|
|
2393
|
+
})),
|
|
2394
|
+
schedule: t.schedule,
|
|
2395
|
+
retry: t.retry
|
|
2369
2396
|
})) : undefined;
|
|
2370
2397
|
return { agents, entityTypes, roles, evalSuites, triggers };
|
|
2371
2398
|
}
|
|
@@ -2429,8 +2456,6 @@ function getBuiltinToolDescription(name) {
|
|
|
2429
2456
|
"entity.unlink": "Remove a relation between two entities",
|
|
2430
2457
|
"event.emit": "Emit a custom event for audit logging",
|
|
2431
2458
|
"event.query": "Query historical events with optional filters",
|
|
2432
|
-
"job.enqueue": "Schedule a background job to run later",
|
|
2433
|
-
"job.status": "Get the status of a scheduled job",
|
|
2434
2459
|
"calendar.list": "List Google Calendar events for a user within a time range",
|
|
2435
2460
|
"calendar.create": "Create a Google Calendar event on a user's calendar",
|
|
2436
2461
|
"calendar.update": "Update an existing Google Calendar event",
|
|
@@ -2523,26 +2548,6 @@ function getBuiltinToolParameters(name) {
|
|
|
2523
2548
|
limit: { type: "number", description: "Maximum number of results" }
|
|
2524
2549
|
}
|
|
2525
2550
|
},
|
|
2526
|
-
"job.enqueue": {
|
|
2527
|
-
type: "object",
|
|
2528
|
-
properties: {
|
|
2529
|
-
jobType: { type: "string", description: "The type of job to schedule" },
|
|
2530
|
-
payload: { type: "object", description: "Job payload data" },
|
|
2531
|
-
scheduledFor: { type: "number", description: "Unix timestamp when job should run (optional, runs immediately if omitted)" },
|
|
2532
|
-
priority: { type: "number", description: "Job priority (higher runs first)" },
|
|
2533
|
-
maxAttempts: { type: "number", description: "Maximum retry attempts" },
|
|
2534
|
-
idempotencyKey: { type: "string", description: "Unique key to prevent duplicate jobs" },
|
|
2535
|
-
entityId: { type: "string", description: "Optional entity ID this job relates to" }
|
|
2536
|
-
},
|
|
2537
|
-
required: ["jobType"]
|
|
2538
|
-
},
|
|
2539
|
-
"job.status": {
|
|
2540
|
-
type: "object",
|
|
2541
|
-
properties: {
|
|
2542
|
-
id: { type: "string", description: "The job ID to check" }
|
|
2543
|
-
},
|
|
2544
|
-
required: ["id"]
|
|
2545
|
-
},
|
|
2546
2551
|
"calendar.list": {
|
|
2547
2552
|
type: "object",
|
|
2548
2553
|
properties: {
|
|
@@ -2627,7 +2632,7 @@ function extractHandlerCode(handler) {
|
|
|
2627
2632
|
}
|
|
2628
2633
|
|
|
2629
2634
|
// src/cli/commands/dev.ts
|
|
2630
|
-
var devCommand = new Command3("dev").description("Sync all resources to development environment").action(async () => {
|
|
2635
|
+
var devCommand = new Command3("dev").description("Sync all resources to development environment").option("--force", "Skip destructive sync confirmation").action(async (options) => {
|
|
2631
2636
|
const spinner = ora3();
|
|
2632
2637
|
const cwd = process.cwd();
|
|
2633
2638
|
console.log();
|
|
@@ -2691,20 +2696,78 @@ var devCommand = new Command3("dev").description("Sync all resources to developm
|
|
|
2691
2696
|
return true;
|
|
2692
2697
|
};
|
|
2693
2698
|
let initialSyncOk = false;
|
|
2699
|
+
let loadedResources = null;
|
|
2694
2700
|
spinner.start("Loading resources");
|
|
2695
2701
|
try {
|
|
2696
|
-
|
|
2697
|
-
spinner.succeed(`Loaded ${
|
|
2698
|
-
for (const err of
|
|
2702
|
+
loadedResources = await loadAllResources(cwd);
|
|
2703
|
+
spinner.succeed(`Loaded ${loadedResources.agents.length} agents, ${loadedResources.entityTypes.length} entity types, ${loadedResources.roles.length} roles, ${loadedResources.customTools.length} custom tools, ${loadedResources.evalSuites.length} eval suites, ${loadedResources.triggers.length} triggers`);
|
|
2704
|
+
for (const err of loadedResources.errors) {
|
|
2699
2705
|
console.log(chalk3.red(" \u2716"), err);
|
|
2700
2706
|
}
|
|
2701
|
-
if (
|
|
2707
|
+
if (loadedResources.errors.length === 0) {
|
|
2702
2708
|
initialSyncOk = true;
|
|
2703
2709
|
}
|
|
2704
2710
|
} catch (error) {
|
|
2705
2711
|
spinner.fail("Failed to load resources");
|
|
2706
2712
|
console.log(chalk3.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
2707
2713
|
}
|
|
2714
|
+
if (initialSyncOk && !options.force && loadedResources) {
|
|
2715
|
+
spinner.start("Checking remote state");
|
|
2716
|
+
try {
|
|
2717
|
+
const { state: remoteState } = await getSyncState(project.organization.id, "development");
|
|
2718
|
+
spinner.stop();
|
|
2719
|
+
if (remoteState) {
|
|
2720
|
+
const payload = extractSyncPayload(loadedResources);
|
|
2721
|
+
const localSlugs = {
|
|
2722
|
+
agents: new Set(payload.agents.map((a) => a.slug)),
|
|
2723
|
+
entityTypes: new Set(payload.entityTypes.map((et) => et.slug)),
|
|
2724
|
+
roles: new Set(payload.roles.map((r) => r.name)),
|
|
2725
|
+
evalSuites: new Set((payload.evalSuites || []).map((es) => es.slug)),
|
|
2726
|
+
triggers: new Set((payload.triggers || []).map((t) => t.slug))
|
|
2727
|
+
};
|
|
2728
|
+
const deletions = [];
|
|
2729
|
+
const deletedAgents = remoteState.agents.filter((a) => !localSlugs.agents.has(a.slug)).map((a) => a.name);
|
|
2730
|
+
if (deletedAgents.length > 0)
|
|
2731
|
+
deletions.push({ type: "Agents", remote: remoteState.agents.length, local: payload.agents.length, deleted: deletedAgents });
|
|
2732
|
+
const deletedEntityTypes = remoteState.entityTypes.filter((et) => !localSlugs.entityTypes.has(et.slug)).map((et) => et.name);
|
|
2733
|
+
if (deletedEntityTypes.length > 0)
|
|
2734
|
+
deletions.push({ type: "Entity types", remote: remoteState.entityTypes.length, local: payload.entityTypes.length, deleted: deletedEntityTypes });
|
|
2735
|
+
const deletedRoles = remoteState.roles.filter((r) => !localSlugs.roles.has(r.name)).map((r) => r.name);
|
|
2736
|
+
if (deletedRoles.length > 0)
|
|
2737
|
+
deletions.push({ type: "Roles", remote: remoteState.roles.length, local: payload.roles.length, deleted: deletedRoles });
|
|
2738
|
+
const remoteEvalSuites = remoteState.evalSuites || [];
|
|
2739
|
+
const deletedEvalSuites = remoteEvalSuites.filter((es) => !localSlugs.evalSuites.has(es.slug)).map((es) => es.name);
|
|
2740
|
+
if (deletedEvalSuites.length > 0)
|
|
2741
|
+
deletions.push({ type: "Eval suites", remote: remoteEvalSuites.length, local: (payload.evalSuites || []).length, deleted: deletedEvalSuites });
|
|
2742
|
+
const remoteTriggers = remoteState.triggers || [];
|
|
2743
|
+
const deletedTriggers = remoteTriggers.filter((t) => !localSlugs.triggers.has(t.slug)).map((t) => t.name);
|
|
2744
|
+
if (deletedTriggers.length > 0)
|
|
2745
|
+
deletions.push({ type: "Triggers", remote: remoteTriggers.length, local: (payload.triggers || []).length, deleted: deletedTriggers });
|
|
2746
|
+
if (deletions.length > 0) {
|
|
2747
|
+
console.log(chalk3.yellow.bold(" Warning: this sync will DELETE remote resources:"));
|
|
2748
|
+
console.log();
|
|
2749
|
+
for (const d of deletions) {
|
|
2750
|
+
console.log(chalk3.yellow(` ${d.type}:`.padEnd(20)), `${d.remote} remote \u2192 ${d.local} local`, chalk3.red(`(${d.deleted.length} will be deleted)`));
|
|
2751
|
+
for (const name of d.deleted) {
|
|
2752
|
+
console.log(chalk3.red(` - ${name}`));
|
|
2753
|
+
}
|
|
2754
|
+
}
|
|
2755
|
+
console.log();
|
|
2756
|
+
console.log(chalk3.gray(" Run"), chalk3.cyan("struere pull"), chalk3.gray("first to download remote resources."));
|
|
2757
|
+
console.log();
|
|
2758
|
+
const shouldContinue = await confirm({ message: "Continue anyway?", default: false });
|
|
2759
|
+
if (!shouldContinue) {
|
|
2760
|
+
console.log();
|
|
2761
|
+
console.log(chalk3.gray("Aborted."));
|
|
2762
|
+
process.exit(0);
|
|
2763
|
+
}
|
|
2764
|
+
console.log();
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
} catch {
|
|
2768
|
+
spinner.stop();
|
|
2769
|
+
}
|
|
2770
|
+
}
|
|
2708
2771
|
if (initialSyncOk) {
|
|
2709
2772
|
spinner.start("Syncing to Convex");
|
|
2710
2773
|
try {
|
|
@@ -2827,6 +2890,7 @@ var devCommand = new Command3("dev").description("Sync all resources to developm
|
|
|
2827
2890
|
import { Command as Command4 } from "commander";
|
|
2828
2891
|
import chalk4 from "chalk";
|
|
2829
2892
|
import ora4 from "ora";
|
|
2893
|
+
import { confirm as confirm2 } from "@inquirer/prompts";
|
|
2830
2894
|
var isAuthError = (error) => {
|
|
2831
2895
|
const message = error instanceof Error ? error.message : String(error);
|
|
2832
2896
|
return message.includes("Unauthenticated") || message.includes("OIDC") || message.includes("token") || message.includes("expired");
|
|
@@ -2894,6 +2958,41 @@ var deployCommand = new Command4("deploy").description("Deploy all resources to
|
|
|
2894
2958
|
console.log();
|
|
2895
2959
|
return;
|
|
2896
2960
|
}
|
|
2961
|
+
const payload = extractSyncPayload(resources);
|
|
2962
|
+
spinner.start("Checking remote state");
|
|
2963
|
+
let deletions = [];
|
|
2964
|
+
try {
|
|
2965
|
+
const { state: remoteState } = await getSyncState(project.organization.id, "production");
|
|
2966
|
+
spinner.stop();
|
|
2967
|
+
if (remoteState) {
|
|
2968
|
+
const localSlugs = {
|
|
2969
|
+
agents: new Set(payload.agents.map((a) => a.slug)),
|
|
2970
|
+
entityTypes: new Set(payload.entityTypes.map((et) => et.slug)),
|
|
2971
|
+
roles: new Set(payload.roles.map((r) => r.name)),
|
|
2972
|
+
evalSuites: new Set((payload.evalSuites || []).map((es) => es.slug)),
|
|
2973
|
+
triggers: new Set((payload.triggers || []).map((t) => t.slug))
|
|
2974
|
+
};
|
|
2975
|
+
const deletedAgents = remoteState.agents.filter((a) => !localSlugs.agents.has(a.slug)).map((a) => a.name);
|
|
2976
|
+
if (deletedAgents.length > 0)
|
|
2977
|
+
deletions.push({ type: "Agents", remote: remoteState.agents.length, local: payload.agents.length, deleted: deletedAgents });
|
|
2978
|
+
const deletedEntityTypes = remoteState.entityTypes.filter((et) => !localSlugs.entityTypes.has(et.slug)).map((et) => et.name);
|
|
2979
|
+
if (deletedEntityTypes.length > 0)
|
|
2980
|
+
deletions.push({ type: "Entity types", remote: remoteState.entityTypes.length, local: payload.entityTypes.length, deleted: deletedEntityTypes });
|
|
2981
|
+
const deletedRoles = remoteState.roles.filter((r) => !localSlugs.roles.has(r.name)).map((r) => r.name);
|
|
2982
|
+
if (deletedRoles.length > 0)
|
|
2983
|
+
deletions.push({ type: "Roles", remote: remoteState.roles.length, local: payload.roles.length, deleted: deletedRoles });
|
|
2984
|
+
const remoteEvalSuites = remoteState.evalSuites || [];
|
|
2985
|
+
const deletedEvalSuites = remoteEvalSuites.filter((es) => !localSlugs.evalSuites.has(es.slug)).map((es) => es.name);
|
|
2986
|
+
if (deletedEvalSuites.length > 0)
|
|
2987
|
+
deletions.push({ type: "Eval suites", remote: remoteEvalSuites.length, local: (payload.evalSuites || []).length, deleted: deletedEvalSuites });
|
|
2988
|
+
const remoteTriggers = remoteState.triggers || [];
|
|
2989
|
+
const deletedTriggers = remoteTriggers.filter((t) => !localSlugs.triggers.has(t.slug)).map((t) => t.name);
|
|
2990
|
+
if (deletedTriggers.length > 0)
|
|
2991
|
+
deletions.push({ type: "Triggers", remote: remoteTriggers.length, local: (payload.triggers || []).length, deleted: deletedTriggers });
|
|
2992
|
+
}
|
|
2993
|
+
} catch {
|
|
2994
|
+
spinner.stop();
|
|
2995
|
+
}
|
|
2897
2996
|
if (options.dryRun) {
|
|
2898
2997
|
console.log();
|
|
2899
2998
|
console.log(chalk4.yellow("Dry run mode - no changes will be made"));
|
|
@@ -2919,12 +3018,38 @@ var deployCommand = new Command4("deploy").description("Deploy all resources to
|
|
|
2919
3018
|
console.log(chalk4.gray(" -"), chalk4.cyan(suite.suite), chalk4.gray(`(${suite.cases.length} cases)`));
|
|
2920
3019
|
}
|
|
2921
3020
|
}
|
|
3021
|
+
if (deletions.length > 0) {
|
|
3022
|
+
console.log();
|
|
3023
|
+
console.log(chalk4.red.bold("Would DELETE:"));
|
|
3024
|
+
for (const d of deletions) {
|
|
3025
|
+
for (const name of d.deleted) {
|
|
3026
|
+
console.log(chalk4.red(` - ${d.type.toLowerCase()}: ${name}`));
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
2922
3030
|
console.log();
|
|
2923
3031
|
return;
|
|
2924
3032
|
}
|
|
3033
|
+
if (deletions.length > 0) {
|
|
3034
|
+
console.log(chalk4.yellow.bold(" Warning: this deploy will DELETE production resources:"));
|
|
3035
|
+
console.log();
|
|
3036
|
+
for (const d of deletions) {
|
|
3037
|
+
console.log(chalk4.yellow(` ${d.type}:`.padEnd(20)), `${d.remote} remote \u2192 ${d.local} local`, chalk4.red(`(${d.deleted.length} will be deleted)`));
|
|
3038
|
+
for (const name of d.deleted) {
|
|
3039
|
+
console.log(chalk4.red(` - ${name}`));
|
|
3040
|
+
}
|
|
3041
|
+
}
|
|
3042
|
+
console.log();
|
|
3043
|
+
const shouldContinue = await confirm2({ message: "Continue anyway?", default: false });
|
|
3044
|
+
if (!shouldContinue) {
|
|
3045
|
+
console.log();
|
|
3046
|
+
console.log(chalk4.gray("Aborted."));
|
|
3047
|
+
process.exit(0);
|
|
3048
|
+
}
|
|
3049
|
+
console.log();
|
|
3050
|
+
}
|
|
2925
3051
|
spinner.start("Deploying to production");
|
|
2926
3052
|
try {
|
|
2927
|
-
const payload = extractSyncPayload(resources);
|
|
2928
3053
|
const syncResult = await syncOrganization({
|
|
2929
3054
|
...payload,
|
|
2930
3055
|
organizationId: project.organization.id,
|
|
@@ -2966,7 +3091,6 @@ var deployCommand = new Command4("deploy").description("Deploy all resources to
|
|
|
2966
3091
|
}
|
|
2967
3092
|
spinner.start("Deploying to production");
|
|
2968
3093
|
try {
|
|
2969
|
-
const payload = extractSyncPayload(resources);
|
|
2970
3094
|
const syncResult = await syncOrganization({
|
|
2971
3095
|
...payload,
|
|
2972
3096
|
organizationId: project.organization.id,
|
|
@@ -3340,8 +3464,7 @@ var BUILTIN_TOOLS2 = [
|
|
|
3340
3464
|
"entity.unlink",
|
|
3341
3465
|
"event.emit",
|
|
3342
3466
|
"event.query",
|
|
3343
|
-
"
|
|
3344
|
-
"job.status"
|
|
3467
|
+
"agent.chat"
|
|
3345
3468
|
];
|
|
3346
3469
|
function escapeTemplateLiteral(str) {
|
|
3347
3470
|
return str.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
|
|
@@ -3540,6 +3663,56 @@ ${toolEntries.join(`,
|
|
|
3540
3663
|
])
|
|
3541
3664
|
`;
|
|
3542
3665
|
}
|
|
3666
|
+
function generateTriggerFile(trigger) {
|
|
3667
|
+
const onParts = [
|
|
3668
|
+
` entityType: "${trigger.entityType}"`,
|
|
3669
|
+
` action: "${trigger.action}"`
|
|
3670
|
+
];
|
|
3671
|
+
if (trigger.condition && Object.keys(trigger.condition).length > 0) {
|
|
3672
|
+
onParts.push(` condition: ${stringifyValue(trigger.condition, 4)}`);
|
|
3673
|
+
}
|
|
3674
|
+
const actionLines = trigger.actions.map((a) => {
|
|
3675
|
+
const aParts = [
|
|
3676
|
+
` tool: "${a.tool}"`,
|
|
3677
|
+
` args: ${stringifyValue(a.args, 6)}`
|
|
3678
|
+
];
|
|
3679
|
+
if (a.as) {
|
|
3680
|
+
aParts.push(` as: "${a.as}"`);
|
|
3681
|
+
}
|
|
3682
|
+
return ` {
|
|
3683
|
+
${aParts.join(`,
|
|
3684
|
+
`)},
|
|
3685
|
+
}`;
|
|
3686
|
+
});
|
|
3687
|
+
const parts = [
|
|
3688
|
+
` name: "${trigger.name}"`,
|
|
3689
|
+
` slug: "${trigger.slug}"`
|
|
3690
|
+
];
|
|
3691
|
+
if (trigger.description) {
|
|
3692
|
+
parts.push(` description: "${trigger.description}"`);
|
|
3693
|
+
}
|
|
3694
|
+
parts.push(` on: {
|
|
3695
|
+
${onParts.join(`,
|
|
3696
|
+
`)},
|
|
3697
|
+
}`);
|
|
3698
|
+
parts.push(` actions: [
|
|
3699
|
+
${actionLines.join(`,
|
|
3700
|
+
`)},
|
|
3701
|
+
]`);
|
|
3702
|
+
if (trigger.schedule) {
|
|
3703
|
+
parts.push(` schedule: ${stringifyValue(trigger.schedule, 2)}`);
|
|
3704
|
+
}
|
|
3705
|
+
if (trigger.retry) {
|
|
3706
|
+
parts.push(` retry: ${stringifyValue(trigger.retry, 2)}`);
|
|
3707
|
+
}
|
|
3708
|
+
return `import { defineTrigger } from 'struere'
|
|
3709
|
+
|
|
3710
|
+
export default defineTrigger({
|
|
3711
|
+
${parts.join(`,
|
|
3712
|
+
`)},
|
|
3713
|
+
})
|
|
3714
|
+
`;
|
|
3715
|
+
}
|
|
3543
3716
|
function generateIndexFile(type, slugs) {
|
|
3544
3717
|
if (slugs.length === 0) {
|
|
3545
3718
|
return "";
|
|
@@ -3640,6 +3813,7 @@ var pullCommand = new Command9("pull").description("Pull remote resources to loc
|
|
|
3640
3813
|
ensureDir2(join7(cwd, "agents"));
|
|
3641
3814
|
ensureDir2(join7(cwd, "entity-types"));
|
|
3642
3815
|
ensureDir2(join7(cwd, "roles"));
|
|
3816
|
+
ensureDir2(join7(cwd, "triggers"));
|
|
3643
3817
|
ensureDir2(join7(cwd, "tools"));
|
|
3644
3818
|
const agentSlugs = [];
|
|
3645
3819
|
for (const agent of state.agents) {
|
|
@@ -3661,6 +3835,12 @@ var pullCommand = new Command9("pull").description("Pull remote resources to loc
|
|
|
3661
3835
|
const content = generateRoleFile(role);
|
|
3662
3836
|
writeOrSkip(`roles/${role.name}.ts`, content);
|
|
3663
3837
|
}
|
|
3838
|
+
const triggerSlugs = [];
|
|
3839
|
+
for (const trigger of state.triggers || []) {
|
|
3840
|
+
triggerSlugs.push(trigger.slug);
|
|
3841
|
+
const content = generateTriggerFile(trigger);
|
|
3842
|
+
writeOrSkip(`triggers/${trigger.slug}.ts`, content);
|
|
3843
|
+
}
|
|
3664
3844
|
const customTools = collectCustomTools(state.agents);
|
|
3665
3845
|
if (customTools.length > 0) {
|
|
3666
3846
|
const content = generateToolsFile(customTools);
|
|
@@ -3681,6 +3861,11 @@ var pullCommand = new Command9("pull").description("Pull remote resources to loc
|
|
|
3681
3861
|
if (content)
|
|
3682
3862
|
writeOrSkip("roles/index.ts", content);
|
|
3683
3863
|
}
|
|
3864
|
+
if (triggerSlugs.length > 0) {
|
|
3865
|
+
const content = generateIndexFile("triggers", triggerSlugs);
|
|
3866
|
+
if (content)
|
|
3867
|
+
writeOrSkip("triggers/index.ts", content);
|
|
3868
|
+
}
|
|
3684
3869
|
if (options.dryRun) {
|
|
3685
3870
|
console.log(chalk9.cyan("Dry run - no files written"));
|
|
3686
3871
|
console.log();
|
|
@@ -3711,7 +3896,7 @@ var pullCommand = new Command9("pull").description("Pull remote resources to loc
|
|
|
3711
3896
|
// package.json
|
|
3712
3897
|
var package_default = {
|
|
3713
3898
|
name: "struere",
|
|
3714
|
-
version: "0.6.
|
|
3899
|
+
version: "0.6.3",
|
|
3715
3900
|
description: "Build, test, and deploy AI agents",
|
|
3716
3901
|
keywords: [
|
|
3717
3902
|
"ai",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,IAAI,MAAM,CAyBpC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwD5D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB9F;AAED,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAiBrC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BlE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC7D;AAED,wBAAgB,eAAe,IAAI,MAAM,CAsExC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAatF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,IAAI,MAAM,CAyBpC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwD5D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB9F;AAED,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAiBrC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BlE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC7D;AAED,wBAAgB,eAAe,IAAI,MAAM,CAsExC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAatF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyzBnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB/D"}
|
|
@@ -212,10 +212,34 @@ export interface PullStateRole {
|
|
|
212
212
|
maskConfig?: Record<string, unknown>;
|
|
213
213
|
}>;
|
|
214
214
|
}
|
|
215
|
+
export interface PullStateTrigger {
|
|
216
|
+
name: string;
|
|
217
|
+
slug: string;
|
|
218
|
+
description?: string;
|
|
219
|
+
entityType: string;
|
|
220
|
+
action: string;
|
|
221
|
+
condition?: Record<string, unknown>;
|
|
222
|
+
actions: Array<{
|
|
223
|
+
tool: string;
|
|
224
|
+
args: Record<string, unknown>;
|
|
225
|
+
as?: string;
|
|
226
|
+
}>;
|
|
227
|
+
schedule?: {
|
|
228
|
+
delay?: number;
|
|
229
|
+
at?: string;
|
|
230
|
+
offset?: number;
|
|
231
|
+
cancelPrevious?: boolean;
|
|
232
|
+
};
|
|
233
|
+
retry?: {
|
|
234
|
+
maxAttempts?: number;
|
|
235
|
+
backoffMs?: number;
|
|
236
|
+
};
|
|
237
|
+
}
|
|
215
238
|
export interface PullState {
|
|
216
239
|
agents: PullStateAgent[];
|
|
217
240
|
entityTypes: PullStateEntityType[];
|
|
218
241
|
roles: PullStateRole[];
|
|
242
|
+
triggers: PullStateTrigger[];
|
|
219
243
|
}
|
|
220
244
|
export declare function getPullState(organizationId?: string, environment?: 'development' | 'production'): Promise<{
|
|
221
245
|
state?: PullState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,aAAa,EAAE,OAAO,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB9G;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwDjG;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE;YACL,QAAQ,EAAE,MAAM,CAAA;YAChB,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,SAAS,CAAC,EAAE,MAAM,CAAA;SACnB,CAAA;QACD,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,OAAO,CAAA;YACnB,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,SAAS,EAAE,OAAO,CAAA;SACnB,CAAC,CAAA;KACH,CAAC,CAAA;IACF,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAC,CAAA;IACF,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,KAAK,CAAC;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,OAAO,EAAE,MAAM,EAAE,CAAA;YACjB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;SACzB,CAAC,CAAA;QACF,UAAU,CAAC,EAAE,KAAK,CAAC;YACjB,UAAU,EAAE,MAAM,CAAA;YAClB,KAAK,EAAE,MAAM,CAAA;YACb,QAAQ,EAAE,MAAM,CAAA;YAChB,KAAK,EAAE,MAAM,CAAA;SACd,CAAC,CAAA;QACF,UAAU,CAAC,EAAE,KAAK,CAAC;YACjB,UAAU,EAAE,MAAM,CAAA;YAClB,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;YAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SACrC,CAAC,CAAA;KACH,CAAC,CAAA;IACF,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,UAAU,CAAC,EAAE;YACX,QAAQ,EAAE,MAAM,CAAA;YAChB,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;YACf,KAAK,EAAE,KAAK,CAAC;gBACX,WAAW,EAAE,MAAM,CAAA;gBACnB,UAAU,CAAC,EAAE,KAAK,CAAC;oBACjB,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,iBAAiB,CAAA;oBAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;oBACjB,KAAK,CAAC,EAAE,MAAM,CAAA;oBACd,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAC,CAAA;aACH,CAAC,CAAA;YACF,eAAe,CAAC,EAAE,KAAK,CAAC;gBACtB,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,iBAAiB,CAAA;gBAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,KAAK,CAAC,EAAE,MAAM,CAAA;gBACd,MAAM,CAAC,EAAE,MAAM,CAAA;aAChB,CAAC,CAAA;SACH,CAAC,CAAA;KACH,CAAC,CAAA;CACH;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACzE,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACnE,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACpE,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,aAAa,GAAG,YAAY,CAAA;CAC1C;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDhF;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAClF,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnE,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrF;AAED,wBAAsB,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCtJ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnF,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACnH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxE,UAAU,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzF,UAAU,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;CACrH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5E,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IACrF,KAAK,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,WAAW,EAAE,mBAAmB,EAAE,CAAA;IAClC,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,wBAAsB,YAAY,CAChC,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,GAAE,aAAa,GAAG,YAA4B,GACxD,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqChD"}
|
|
@@ -95,6 +95,16 @@ export interface SyncPayload {
|
|
|
95
95
|
args: Record<string, unknown>;
|
|
96
96
|
as?: string;
|
|
97
97
|
}>;
|
|
98
|
+
schedule?: {
|
|
99
|
+
delay?: number;
|
|
100
|
+
at?: string;
|
|
101
|
+
offset?: number;
|
|
102
|
+
cancelPrevious?: boolean;
|
|
103
|
+
};
|
|
104
|
+
retry?: {
|
|
105
|
+
maxAttempts?: number;
|
|
106
|
+
backoffMs?: number;
|
|
107
|
+
};
|
|
98
108
|
}>;
|
|
99
109
|
}
|
|
100
110
|
export declare function extractSyncPayload(resources: LoadedResources): SyncPayload;
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import type { PullStateAgent, PullStateEntityType, PullStateRole } from './convex';
|
|
1
|
+
import type { PullStateAgent, PullStateEntityType, PullStateRole, PullStateTrigger } from './convex';
|
|
2
2
|
export declare function generateAgentFile(agent: PullStateAgent): string;
|
|
3
3
|
export declare function generateEntityTypeFile(entityType: PullStateEntityType): string;
|
|
4
4
|
export declare function generateRoleFile(role: PullStateRole): string;
|
|
@@ -9,7 +9,8 @@ interface CustomTool {
|
|
|
9
9
|
handlerCode?: string;
|
|
10
10
|
}
|
|
11
11
|
export declare function generateToolsFile(customTools: CustomTool[]): string;
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function generateTriggerFile(trigger: PullStateTrigger): string;
|
|
13
|
+
export declare function generateIndexFile(type: 'agents' | 'entity-types' | 'roles' | 'triggers', slugs: string[]): string;
|
|
13
14
|
export declare function collectCustomTools(agents: PullStateAgent[]): CustomTool[];
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AA2CpG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAmC/D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAqB9E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAsD5D;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CA8BnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA8CrE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAWjH;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAiBzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/define/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/define/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAqDlE"}
|
package/dist/index.js
CHANGED
|
@@ -179,6 +179,27 @@ function defineTrigger(config) {
|
|
|
179
179
|
throw new Error("Trigger action args must be an object");
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
+
if (config.schedule) {
|
|
183
|
+
const { delay, at } = config.schedule;
|
|
184
|
+
if (delay !== undefined && at !== undefined) {
|
|
185
|
+
throw new Error('Trigger schedule cannot have both "delay" and "at"');
|
|
186
|
+
}
|
|
187
|
+
if (delay !== undefined && (typeof delay !== "number" || delay <= 0)) {
|
|
188
|
+
throw new Error("Trigger schedule.delay must be a positive number");
|
|
189
|
+
}
|
|
190
|
+
if (at !== undefined && typeof at !== "string") {
|
|
191
|
+
throw new Error("Trigger schedule.at must be a string template expression");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (config.retry) {
|
|
195
|
+
const { maxAttempts, backoffMs } = config.retry;
|
|
196
|
+
if (maxAttempts !== undefined && (typeof maxAttempts !== "number" || maxAttempts < 1)) {
|
|
197
|
+
throw new Error("Trigger retry.maxAttempts must be >= 1");
|
|
198
|
+
}
|
|
199
|
+
if (backoffMs !== undefined && (typeof backoffMs !== "number" || backoffMs <= 0)) {
|
|
200
|
+
throw new Error("Trigger retry.backoffMs must be a positive number");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
182
203
|
return config;
|
|
183
204
|
}
|
|
184
205
|
export {
|
package/dist/types.d.ts
CHANGED
|
@@ -185,6 +185,16 @@ export interface TriggerAction {
|
|
|
185
185
|
args: Record<string, unknown>;
|
|
186
186
|
as?: string;
|
|
187
187
|
}
|
|
188
|
+
export interface TriggerSchedule {
|
|
189
|
+
delay?: number;
|
|
190
|
+
at?: string;
|
|
191
|
+
offset?: number;
|
|
192
|
+
cancelPrevious?: boolean;
|
|
193
|
+
}
|
|
194
|
+
export interface TriggerRetry {
|
|
195
|
+
maxAttempts?: number;
|
|
196
|
+
backoffMs?: number;
|
|
197
|
+
}
|
|
188
198
|
export interface TriggerConfig {
|
|
189
199
|
name: string;
|
|
190
200
|
slug: string;
|
|
@@ -194,6 +204,8 @@ export interface TriggerConfig {
|
|
|
194
204
|
action: 'created' | 'updated' | 'deleted';
|
|
195
205
|
condition?: Record<string, unknown>;
|
|
196
206
|
};
|
|
207
|
+
schedule?: TriggerSchedule;
|
|
208
|
+
retry?: TriggerRetry;
|
|
197
209
|
actions: TriggerAction[];
|
|
198
210
|
}
|
|
199
211
|
export interface SyncPayload {
|
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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"}
|