struere 0.5.14 → 0.5.16
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 +262 -18
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/index.js +262 -18
- package/dist/cli/templates/index.d.ts +2 -1
- package/dist/cli/templates/index.d.ts.map +1 -1
- package/dist/cli/utils/convex.d.ts +6 -2
- package/dist/cli/utils/convex.d.ts.map +1 -1
- package/dist/cli/utils/extractor.d.ts +13 -1
- package/dist/cli/utils/extractor.d.ts.map +1 -1
- package/dist/cli/utils/generator.d.ts.map +1 -1
- package/dist/cli/utils/loader.d.ts +4 -1
- package/dist/cli/utils/loader.d.ts.map +1 -1
- package/dist/cli/utils/scaffold.d.ts +1 -0
- package/dist/cli/utils/scaffold.d.ts.map +1 -1
- package/dist/define/role.d.ts.map +1 -1
- package/dist/define/trigger.d.ts +3 -0
- package/dist/define/trigger.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -4
- package/dist/types.d.ts +23 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/bin/struere.js
CHANGED
|
@@ -19939,7 +19939,7 @@ export default defineRole({
|
|
|
19939
19939
|
name: "${name}",
|
|
19940
19940
|
description: "${name.charAt(0).toUpperCase() + name.slice(1)} role",
|
|
19941
19941
|
policies: [
|
|
19942
|
-
{ resource: "*", actions: ["list", "read"], effect: "allow"
|
|
19942
|
+
{ resource: "*", actions: ["list", "read"], effect: "allow" },
|
|
19943
19943
|
],
|
|
19944
19944
|
scopeRules: [],
|
|
19945
19945
|
fieldMasks: [],
|
|
@@ -20096,6 +20096,7 @@ Struere is a framework for building production AI agents with Convex as the real
|
|
|
20096
20096
|
\u2502 \u251C\u2500\u2500 agents/*.ts \u2192 Agent configs synced to Convex \u2502
|
|
20097
20097
|
\u2502 \u251C\u2500\u2500 entity-types/*.ts \u2192 Schema definitions synced to Convex \u2502
|
|
20098
20098
|
\u2502 \u251C\u2500\u2500 roles/*.ts \u2192 RBAC policies synced to Convex \u2502
|
|
20099
|
+
\u2502 \u251C\u2500\u2500 triggers/*.ts \u2192 Automation rules synced to Convex \u2502
|
|
20099
20100
|
\u2502 \u251C\u2500\u2500 tools/index.ts \u2192 Custom tools (run on CF Worker) \u2502
|
|
20100
20101
|
\u2502 \u2514\u2500\u2500 evals/*.eval.yaml \u2192 Test suites (synced + executed) \u2502
|
|
20101
20102
|
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\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\u2518
|
|
@@ -20134,6 +20135,10 @@ roles/ # RBAC: who can do what
|
|
|
20134
20135
|
\u251C\u2500\u2500 support.ts # Limited access
|
|
20135
20136
|
\u2514\u2500\u2500 index.ts
|
|
20136
20137
|
|
|
20138
|
+
triggers/ # Automation rules (react to entity changes)
|
|
20139
|
+
\u251C\u2500\u2500 notify-on-create.ts
|
|
20140
|
+
\u2514\u2500\u2500 index.ts
|
|
20141
|
+
|
|
20137
20142
|
tools/ # Custom tools shared by all agents
|
|
20138
20143
|
\u2514\u2500\u2500 index.ts # defineTools([...])
|
|
20139
20144
|
|
|
@@ -20174,6 +20179,7 @@ export default defineConfig({
|
|
|
20174
20179
|
| \`struere add agent <name>\` | Create agents/name.ts with template |
|
|
20175
20180
|
| \`struere add entity-type <name>\` | Create entity-types/name.ts |
|
|
20176
20181
|
| \`struere add role <name>\` | Create roles/name.ts |
|
|
20182
|
+
| \`struere add trigger <name>\` | Create triggers/name.ts with template |
|
|
20177
20183
|
| \`struere add eval <name>\` | Create evals/name.eval.yaml with template |
|
|
20178
20184
|
| \`struere eval\` | Run all eval suites |
|
|
20179
20185
|
| \`struere eval --suite <name>\` | Run a specific eval suite |
|
|
@@ -20296,9 +20302,9 @@ export default defineRole({
|
|
|
20296
20302
|
|
|
20297
20303
|
// What actions are allowed/denied
|
|
20298
20304
|
policies: [
|
|
20299
|
-
{ resource: "customer", actions: ["list", "read"], effect: "allow"
|
|
20300
|
-
{ resource: "customer", actions: ["delete"], effect: "deny"
|
|
20301
|
-
{ resource: "payment", actions: ["*"], effect: "deny"
|
|
20305
|
+
{ resource: "customer", actions: ["list", "read"], effect: "allow" },
|
|
20306
|
+
{ resource: "customer", actions: ["delete"], effect: "deny" },
|
|
20307
|
+
{ resource: "payment", actions: ["*"], effect: "deny" },
|
|
20302
20308
|
],
|
|
20303
20309
|
|
|
20304
20310
|
// Row-level security: only see assigned customers
|
|
@@ -20326,7 +20332,7 @@ Every tool call goes through permission checks:
|
|
|
20326
20332
|
2. **Scope filter**: Query results filtered to rows user can access
|
|
20327
20333
|
3. **Field mask**: Sensitive fields hidden/redacted in response
|
|
20328
20334
|
|
|
20329
|
-
Deny policies override allow.
|
|
20335
|
+
Deny policies always override allow.
|
|
20330
20336
|
|
|
20331
20337
|
## Defining Custom Tools
|
|
20332
20338
|
|
|
@@ -20396,6 +20402,103 @@ Custom tool handlers can only fetch from:
|
|
|
20396
20402
|
- api.stripe.com, api.sendgrid.com, api.twilio.com
|
|
20397
20403
|
- hooks.slack.com, discord.com, api.github.com
|
|
20398
20404
|
|
|
20405
|
+
## Defining Triggers
|
|
20406
|
+
|
|
20407
|
+
Triggers are automated actions that fire when entities are created, updated, or deleted. They run asynchronously after the mutation completes.
|
|
20408
|
+
|
|
20409
|
+
Create \\\`triggers/notify-on-session.ts\\\`:
|
|
20410
|
+
\\\`\\\`\\\`typescript
|
|
20411
|
+
import { defineTrigger } from 'struere'
|
|
20412
|
+
|
|
20413
|
+
export default defineTrigger({
|
|
20414
|
+
name: "Notify Teacher on New Session",
|
|
20415
|
+
slug: "notify-teacher-on-session",
|
|
20416
|
+
on: {
|
|
20417
|
+
entityType: "session",
|
|
20418
|
+
action: "created",
|
|
20419
|
+
condition: { "data.status": "scheduled" } // optional
|
|
20420
|
+
},
|
|
20421
|
+
actions: [
|
|
20422
|
+
{
|
|
20423
|
+
tool: "entity.get",
|
|
20424
|
+
args: { id: "{{trigger.data.teacherId}}" },
|
|
20425
|
+
as: "teacher" // store result for later steps
|
|
20426
|
+
},
|
|
20427
|
+
{
|
|
20428
|
+
tool: "event.emit",
|
|
20429
|
+
args: {
|
|
20430
|
+
eventType: "notification.sent",
|
|
20431
|
+
entityId: "{{trigger.entityId}}",
|
|
20432
|
+
payload: {
|
|
20433
|
+
teacherName: "{{steps.teacher.data.name}}",
|
|
20434
|
+
sessionTime: "{{trigger.data.startTime}}"
|
|
20435
|
+
}
|
|
20436
|
+
}
|
|
20437
|
+
}
|
|
20438
|
+
]
|
|
20439
|
+
})
|
|
20440
|
+
\\\`\\\`\\\`
|
|
20441
|
+
|
|
20442
|
+
### Trigger Config
|
|
20443
|
+
|
|
20444
|
+
| Field | Required | Description |
|
|
20445
|
+
|-------|----------|-------------|
|
|
20446
|
+
| \\\`name\\\` | Yes | Display name |
|
|
20447
|
+
| \\\`slug\\\` | Yes | Unique identifier (used for sync) |
|
|
20448
|
+
| \\\`on.entityType\\\` | Yes | Entity type slug to watch |
|
|
20449
|
+
| \\\`on.action\\\` | Yes | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
20450
|
+
| \\\`on.condition\\\` | No | Dot-notation equality conditions on entity data |
|
|
20451
|
+
| \\\`actions\\\` | Yes | Ordered list of tool calls to execute |
|
|
20452
|
+
|
|
20453
|
+
### Action Pipeline
|
|
20454
|
+
|
|
20455
|
+
Each action in the \\\`actions\\\` array runs sequentially:
|
|
20456
|
+
|
|
20457
|
+
| Field | Required | Description |
|
|
20458
|
+
|-------|----------|-------------|
|
|
20459
|
+
| \\\`tool\\\` | Yes | Built-in or custom tool name |
|
|
20460
|
+
| \\\`args\\\` | Yes | Arguments (supports \\\`{{template}}\\\` variables) |
|
|
20461
|
+
| \\\`as\\\` | No | Store result under this name for later steps |
|
|
20462
|
+
|
|
20463
|
+
### Template Variables
|
|
20464
|
+
|
|
20465
|
+
Use \\\`{{...}}\\\` in action args to reference trigger context and previous step results:
|
|
20466
|
+
|
|
20467
|
+
| Variable | Description |
|
|
20468
|
+
|----------|-------------|
|
|
20469
|
+
| \\\`{{trigger.entityId}}\\\` | ID of the entity that changed |
|
|
20470
|
+
| \\\`{{trigger.entityType}}\\\` | Entity type slug |
|
|
20471
|
+
| \\\`{{trigger.action}}\\\` | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
20472
|
+
| \\\`{{trigger.data.X}}\\\` | Entity data field (e.g. \\\`{{trigger.data.email}}\\\`) |
|
|
20473
|
+
| \\\`{{trigger.previousData.X}}\\\` | Previous value (updates/deletes only) |
|
|
20474
|
+
| \\\`{{steps.NAME.X}}\\\` | Result from a prior action with \\\`as: "NAME"\\\` |
|
|
20475
|
+
|
|
20476
|
+
### Conditions
|
|
20477
|
+
|
|
20478
|
+
Conditions use dot-notation path equality matching:
|
|
20479
|
+
\\\`\\\`\\\`typescript
|
|
20480
|
+
condition: {
|
|
20481
|
+
"data.status": "scheduled", // field must equal value
|
|
20482
|
+
"data.priority": "high" // all conditions must match (AND)
|
|
20483
|
+
}
|
|
20484
|
+
\\\`\\\`\\\`
|
|
20485
|
+
|
|
20486
|
+
### Execution Model
|
|
20487
|
+
|
|
20488
|
+
- **Async**: Triggers are scheduled after the mutation, keeping writes fast
|
|
20489
|
+
- **System actor**: Actions execute with full admin access (not the user's role)
|
|
20490
|
+
- **Fail-fast**: If any action fails, remaining actions are skipped
|
|
20491
|
+
- **Events**: Emits \\\`trigger.executed\\\` on success, \\\`trigger.failed\\\` on error
|
|
20492
|
+
- **Both paths**: Triggers fire from dashboard CRUD, agent tool calls, and API mutations
|
|
20493
|
+
|
|
20494
|
+
### Scaffold a new trigger
|
|
20495
|
+
|
|
20496
|
+
\\\`\\\`\\\`bash
|
|
20497
|
+
struere add trigger my-trigger
|
|
20498
|
+
\\\`\\\`\\\`
|
|
20499
|
+
|
|
20500
|
+
Creates \\\`triggers/my-trigger.ts\\\` with a starter template.
|
|
20501
|
+
|
|
20399
20502
|
## Built-in Tools Reference
|
|
20400
20503
|
|
|
20401
20504
|
### Entity Tools
|
|
@@ -20654,6 +20757,29 @@ Always confirm what was created/updated.\\\`,
|
|
|
20654
20757
|
\`\`\`
|
|
20655
20758
|
`;
|
|
20656
20759
|
}
|
|
20760
|
+
function getTriggerTs(name, slug) {
|
|
20761
|
+
return `import { defineTrigger } from 'struere'
|
|
20762
|
+
|
|
20763
|
+
export default defineTrigger({
|
|
20764
|
+
name: "${name}",
|
|
20765
|
+
slug: "${slug}",
|
|
20766
|
+
on: {
|
|
20767
|
+
entityType: "ENTITY_TYPE_HERE",
|
|
20768
|
+
action: "created",
|
|
20769
|
+
},
|
|
20770
|
+
actions: [
|
|
20771
|
+
{
|
|
20772
|
+
tool: "event.emit",
|
|
20773
|
+
args: {
|
|
20774
|
+
eventType: "trigger.${slug}.fired",
|
|
20775
|
+
entityId: "{{trigger.entityId}}",
|
|
20776
|
+
payload: { triggeredBy: "${slug}" },
|
|
20777
|
+
},
|
|
20778
|
+
},
|
|
20779
|
+
],
|
|
20780
|
+
})
|
|
20781
|
+
`;
|
|
20782
|
+
}
|
|
20657
20783
|
|
|
20658
20784
|
// src/cli/utils/scaffold.ts
|
|
20659
20785
|
function ensureDir(filePath) {
|
|
@@ -20677,7 +20803,8 @@ function scaffoldProjectV2(cwd, options) {
|
|
|
20677
20803
|
"entity-types",
|
|
20678
20804
|
"roles",
|
|
20679
20805
|
"tools",
|
|
20680
|
-
"evals"
|
|
20806
|
+
"evals",
|
|
20807
|
+
"triggers"
|
|
20681
20808
|
];
|
|
20682
20809
|
for (const dir of directories) {
|
|
20683
20810
|
const dirPath = join3(cwd, dir);
|
|
@@ -20697,6 +20824,7 @@ function scaffoldProjectV2(cwd, options) {
|
|
|
20697
20824
|
"entity-types/index.ts": getIndexTs("entity-types"),
|
|
20698
20825
|
"roles/index.ts": getIndexTs("roles"),
|
|
20699
20826
|
"tools/index.ts": getToolsIndexTs(),
|
|
20827
|
+
"triggers/index.ts": getIndexTs("triggers"),
|
|
20700
20828
|
"evals/basic-agent-tests.eval.yaml": getExampleEvalYaml("my-agent")
|
|
20701
20829
|
};
|
|
20702
20830
|
for (const [relativePath, content] of Object.entries(files)) {
|
|
@@ -20782,6 +20910,24 @@ function scaffoldEval(cwd, name, slug, agentSlug = "my-agent") {
|
|
|
20782
20910
|
result.createdFiles.push(`evals/${fileName}`);
|
|
20783
20911
|
return result;
|
|
20784
20912
|
}
|
|
20913
|
+
function scaffoldTrigger(cwd, name, slug) {
|
|
20914
|
+
const result = {
|
|
20915
|
+
createdFiles: [],
|
|
20916
|
+
updatedFiles: []
|
|
20917
|
+
};
|
|
20918
|
+
const triggersDir = join3(cwd, "triggers");
|
|
20919
|
+
if (!existsSync3(triggersDir)) {
|
|
20920
|
+
mkdirSync2(triggersDir, { recursive: true });
|
|
20921
|
+
}
|
|
20922
|
+
const fileName = `${slug}.ts`;
|
|
20923
|
+
const filePath = join3(triggersDir, fileName);
|
|
20924
|
+
if (existsSync3(filePath)) {
|
|
20925
|
+
return result;
|
|
20926
|
+
}
|
|
20927
|
+
writeFileSync3(filePath, getTriggerTs(name, slug));
|
|
20928
|
+
result.createdFiles.push(`triggers/${fileName}`);
|
|
20929
|
+
return result;
|
|
20930
|
+
}
|
|
20785
20931
|
|
|
20786
20932
|
// src/cli/commands/init.ts
|
|
20787
20933
|
async function runInit(cwd, selectedOrg) {
|
|
@@ -20985,7 +21131,8 @@ async function loadAllResources(cwd) {
|
|
|
20985
21131
|
}
|
|
20986
21132
|
const { suites: evalSuites, errors: evalErrors } = loadAllEvalSuites(join4(cwd, "evals"));
|
|
20987
21133
|
errors2.push(...evalErrors);
|
|
20988
|
-
|
|
21134
|
+
const triggers = await loadAllTriggers(join4(cwd, "triggers"));
|
|
21135
|
+
return { agents, entityTypes, roles, customTools, evalSuites, triggers, errors: errors2 };
|
|
20989
21136
|
}
|
|
20990
21137
|
async function loadAllAgents(dir) {
|
|
20991
21138
|
if (!existsSync4(dir)) {
|
|
@@ -21093,13 +21240,24 @@ function loadAllEvalSuites(dir) {
|
|
|
21093
21240
|
}
|
|
21094
21241
|
return { suites, errors: errors2 };
|
|
21095
21242
|
}
|
|
21243
|
+
async function loadAllTriggers(dir) {
|
|
21244
|
+
if (!existsSync4(dir)) {
|
|
21245
|
+
return [];
|
|
21246
|
+
}
|
|
21247
|
+
const indexPath = join4(dir, "index.ts");
|
|
21248
|
+
if (existsSync4(indexPath)) {
|
|
21249
|
+
return loadFromIndex(indexPath);
|
|
21250
|
+
}
|
|
21251
|
+
return loadFromDirectory(dir);
|
|
21252
|
+
}
|
|
21096
21253
|
function getResourceDirectories(cwd) {
|
|
21097
21254
|
return {
|
|
21098
21255
|
agents: join4(cwd, "agents"),
|
|
21099
21256
|
entityTypes: join4(cwd, "entity-types"),
|
|
21100
21257
|
roles: join4(cwd, "roles"),
|
|
21101
21258
|
tools: join4(cwd, "tools"),
|
|
21102
|
-
evals: join4(cwd, "evals")
|
|
21259
|
+
evals: join4(cwd, "evals"),
|
|
21260
|
+
triggers: join4(cwd, "triggers")
|
|
21103
21261
|
};
|
|
21104
21262
|
}
|
|
21105
21263
|
|
|
@@ -21122,7 +21280,12 @@ var BUILTIN_TOOLS = [
|
|
|
21122
21280
|
"event.emit",
|
|
21123
21281
|
"event.query",
|
|
21124
21282
|
"job.enqueue",
|
|
21125
|
-
"job.status"
|
|
21283
|
+
"job.status",
|
|
21284
|
+
"calendar.list",
|
|
21285
|
+
"calendar.create",
|
|
21286
|
+
"calendar.update",
|
|
21287
|
+
"calendar.delete",
|
|
21288
|
+
"calendar.freeBusy"
|
|
21126
21289
|
];
|
|
21127
21290
|
function extractSyncPayload(resources) {
|
|
21128
21291
|
const customToolsMap = new Map;
|
|
@@ -21143,8 +21306,7 @@ function extractSyncPayload(resources) {
|
|
|
21143
21306
|
policies: role.policies.map((p) => ({
|
|
21144
21307
|
resource: p.resource,
|
|
21145
21308
|
actions: p.actions,
|
|
21146
|
-
effect: p.effect
|
|
21147
|
-
priority: p.priority
|
|
21309
|
+
effect: p.effect
|
|
21148
21310
|
})),
|
|
21149
21311
|
scopeRules: role.scopeRules?.map((sr) => ({
|
|
21150
21312
|
entityType: sr.entityType,
|
|
@@ -21179,7 +21341,20 @@ function extractSyncPayload(resources) {
|
|
|
21179
21341
|
finalAssertions: c.finalAssertions
|
|
21180
21342
|
}))
|
|
21181
21343
|
})) : undefined;
|
|
21182
|
-
|
|
21344
|
+
const triggers = resources.triggers.length > 0 ? resources.triggers.map((t) => ({
|
|
21345
|
+
name: t.name,
|
|
21346
|
+
slug: t.slug,
|
|
21347
|
+
description: t.description,
|
|
21348
|
+
entityType: t.on.entityType,
|
|
21349
|
+
action: t.on.action,
|
|
21350
|
+
condition: t.on.condition,
|
|
21351
|
+
actions: t.actions.map((a) => ({
|
|
21352
|
+
tool: a.tool,
|
|
21353
|
+
args: a.args,
|
|
21354
|
+
as: a.as
|
|
21355
|
+
}))
|
|
21356
|
+
})) : undefined;
|
|
21357
|
+
return { agents, entityTypes, roles, evalSuites, triggers };
|
|
21183
21358
|
}
|
|
21184
21359
|
function extractAgentPayload(agent, customToolsMap) {
|
|
21185
21360
|
let systemPrompt;
|
|
@@ -21242,7 +21417,12 @@ function getBuiltinToolDescription(name) {
|
|
|
21242
21417
|
"event.emit": "Emit a custom event for audit logging",
|
|
21243
21418
|
"event.query": "Query historical events with optional filters",
|
|
21244
21419
|
"job.enqueue": "Schedule a background job to run later",
|
|
21245
|
-
"job.status": "Get the status of a scheduled job"
|
|
21420
|
+
"job.status": "Get the status of a scheduled job",
|
|
21421
|
+
"calendar.list": "List Google Calendar events for a user within a time range",
|
|
21422
|
+
"calendar.create": "Create a Google Calendar event on a user's calendar",
|
|
21423
|
+
"calendar.update": "Update an existing Google Calendar event",
|
|
21424
|
+
"calendar.delete": "Delete a Google Calendar event",
|
|
21425
|
+
"calendar.freeBusy": "Check free/busy availability on a user's Google Calendar"
|
|
21246
21426
|
};
|
|
21247
21427
|
return descriptions[name] || name;
|
|
21248
21428
|
}
|
|
@@ -21348,6 +21528,60 @@ function getBuiltinToolParameters(name) {
|
|
|
21348
21528
|
id: { type: "string", description: "The job ID to check" }
|
|
21349
21529
|
},
|
|
21350
21530
|
required: ["id"]
|
|
21531
|
+
},
|
|
21532
|
+
"calendar.list": {
|
|
21533
|
+
type: "object",
|
|
21534
|
+
properties: {
|
|
21535
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar to query" },
|
|
21536
|
+
timeMin: { type: "string", description: "Start of time range (ISO 8601 datetime)" },
|
|
21537
|
+
timeMax: { type: "string", description: "End of time range (ISO 8601 datetime)" },
|
|
21538
|
+
maxResults: { type: "number", description: "Maximum number of events to return" }
|
|
21539
|
+
},
|
|
21540
|
+
required: ["userId", "timeMin", "timeMax"]
|
|
21541
|
+
},
|
|
21542
|
+
"calendar.create": {
|
|
21543
|
+
type: "object",
|
|
21544
|
+
properties: {
|
|
21545
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar to create the event on" },
|
|
21546
|
+
summary: { type: "string", description: "Event title" },
|
|
21547
|
+
startTime: { type: "string", description: "Event start time (ISO 8601 datetime)" },
|
|
21548
|
+
endTime: { type: "string", description: "Event end time (ISO 8601 datetime)" },
|
|
21549
|
+
description: { type: "string", description: "Event description" },
|
|
21550
|
+
attendees: { type: "array", items: { type: "string" }, description: "List of attendee email addresses" },
|
|
21551
|
+
timeZone: { type: "string", description: 'Time zone (e.g., "America/Santiago")' }
|
|
21552
|
+
},
|
|
21553
|
+
required: ["userId", "summary", "startTime", "endTime"]
|
|
21554
|
+
},
|
|
21555
|
+
"calendar.update": {
|
|
21556
|
+
type: "object",
|
|
21557
|
+
properties: {
|
|
21558
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar contains the event" },
|
|
21559
|
+
eventId: { type: "string", description: "Google Calendar event ID to update" },
|
|
21560
|
+
summary: { type: "string", description: "New event title" },
|
|
21561
|
+
startTime: { type: "string", description: "New start time (ISO 8601 datetime)" },
|
|
21562
|
+
endTime: { type: "string", description: "New end time (ISO 8601 datetime)" },
|
|
21563
|
+
description: { type: "string", description: "New event description" },
|
|
21564
|
+
attendees: { type: "array", items: { type: "string" }, description: "Updated list of attendee emails" },
|
|
21565
|
+
status: { type: "string", description: "Event status (confirmed, tentative, cancelled)" }
|
|
21566
|
+
},
|
|
21567
|
+
required: ["userId", "eventId"]
|
|
21568
|
+
},
|
|
21569
|
+
"calendar.delete": {
|
|
21570
|
+
type: "object",
|
|
21571
|
+
properties: {
|
|
21572
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar contains the event" },
|
|
21573
|
+
eventId: { type: "string", description: "Google Calendar event ID to delete" }
|
|
21574
|
+
},
|
|
21575
|
+
required: ["userId", "eventId"]
|
|
21576
|
+
},
|
|
21577
|
+
"calendar.freeBusy": {
|
|
21578
|
+
type: "object",
|
|
21579
|
+
properties: {
|
|
21580
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose availability to check" },
|
|
21581
|
+
timeMin: { type: "string", description: "Start of time range (ISO 8601 datetime)" },
|
|
21582
|
+
timeMax: { type: "string", description: "End of time range (ISO 8601 datetime)" }
|
|
21583
|
+
},
|
|
21584
|
+
required: ["userId", "timeMin", "timeMax"]
|
|
21351
21585
|
}
|
|
21352
21586
|
};
|
|
21353
21587
|
return schemas[name] || { type: "object", properties: {} };
|
|
@@ -21486,7 +21720,7 @@ var devCommand = new Command("dev").description("Sync all resources to developme
|
|
|
21486
21720
|
spinner.start("Loading resources");
|
|
21487
21721
|
try {
|
|
21488
21722
|
const resources = await loadAllResources(cwd);
|
|
21489
|
-
spinner.succeed(`Loaded ${resources.agents.length} agents, ${resources.entityTypes.length} entity types, ${resources.roles.length} roles, ${resources.customTools.length} custom tools, ${resources.evalSuites.length} eval suites`);
|
|
21723
|
+
spinner.succeed(`Loaded ${resources.agents.length} agents, ${resources.entityTypes.length} entity types, ${resources.roles.length} roles, ${resources.customTools.length} custom tools, ${resources.evalSuites.length} eval suites, ${resources.triggers.length} triggers`);
|
|
21490
21724
|
for (const err of resources.errors) {
|
|
21491
21725
|
console.log(source_default.red(" \u2716"), err);
|
|
21492
21726
|
}
|
|
@@ -21545,6 +21779,7 @@ var devCommand = new Command("dev").description("Sync all resources to developme
|
|
|
21545
21779
|
dirs.roles,
|
|
21546
21780
|
dirs.tools,
|
|
21547
21781
|
dirs.evals,
|
|
21782
|
+
dirs.triggers,
|
|
21548
21783
|
join5(cwd, "struere.config.ts")
|
|
21549
21784
|
].filter((p) => existsSync5(p));
|
|
21550
21785
|
const watcher = import_chokidar.default.watch(watchPaths, {
|
|
@@ -22514,6 +22749,17 @@ var addCommand = new Command("add").description("Scaffold a new resource").argum
|
|
|
22514
22749
|
console.log(source_default.yellow("Eval suite already exists:"), `evals/${slug}.eval.yaml`);
|
|
22515
22750
|
}
|
|
22516
22751
|
break;
|
|
22752
|
+
case "trigger":
|
|
22753
|
+
result = scaffoldTrigger(cwd, displayName, slug);
|
|
22754
|
+
if (result.createdFiles.length > 0) {
|
|
22755
|
+
console.log(source_default.green("\u2713"), `Created trigger "${displayName}"`);
|
|
22756
|
+
for (const file of result.createdFiles) {
|
|
22757
|
+
console.log(source_default.gray(" \u2192"), file);
|
|
22758
|
+
}
|
|
22759
|
+
} else {
|
|
22760
|
+
console.log(source_default.yellow("Trigger already exists:"), `triggers/${slug}.ts`);
|
|
22761
|
+
}
|
|
22762
|
+
break;
|
|
22517
22763
|
default:
|
|
22518
22764
|
console.log(source_default.red("Unknown resource type:"), type);
|
|
22519
22765
|
console.log();
|
|
@@ -22522,6 +22768,7 @@ var addCommand = new Command("add").description("Scaffold a new resource").argum
|
|
|
22522
22768
|
console.log(source_default.gray(" -"), source_default.cyan("entity-type"), "- Create an entity type schema");
|
|
22523
22769
|
console.log(source_default.gray(" -"), source_default.cyan("role"), "- Create a role with permissions");
|
|
22524
22770
|
console.log(source_default.gray(" -"), source_default.cyan("eval"), "- Create an eval suite (YAML)");
|
|
22771
|
+
console.log(source_default.gray(" -"), source_default.cyan("trigger"), "- Create an entity trigger");
|
|
22525
22772
|
console.log();
|
|
22526
22773
|
process.exit(1);
|
|
22527
22774
|
}
|
|
@@ -22801,9 +23048,6 @@ function generateRoleFile(role) {
|
|
|
22801
23048
|
` actions: ${JSON.stringify(p.actions)}`,
|
|
22802
23049
|
` effect: "${p.effect}"`
|
|
22803
23050
|
];
|
|
22804
|
-
if (p.priority !== 50) {
|
|
22805
|
-
pParts.push(` priority: ${p.priority}`);
|
|
22806
|
-
}
|
|
22807
23051
|
return ` {
|
|
22808
23052
|
${pParts.join(`,
|
|
22809
23053
|
`)},
|
|
@@ -23080,7 +23324,7 @@ var pullCommand = new Command("pull").description("Pull remote resources to loca
|
|
|
23080
23324
|
// package.json
|
|
23081
23325
|
var package_default = {
|
|
23082
23326
|
name: "struere",
|
|
23083
|
-
version: "0.5.
|
|
23327
|
+
version: "0.5.16",
|
|
23084
23328
|
description: "Build, test, and deploy AI agents",
|
|
23085
23329
|
keywords: [
|
|
23086
23330
|
"ai",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,UAAU,SAqHnB,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;AAenC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAenC,eAAO,MAAM,UAAU,SAgSnB,CAAA"}
|
package/dist/cli/index.js
CHANGED
|
@@ -732,7 +732,7 @@ export default defineRole({
|
|
|
732
732
|
name: "${name}",
|
|
733
733
|
description: "${name.charAt(0).toUpperCase() + name.slice(1)} role",
|
|
734
734
|
policies: [
|
|
735
|
-
{ resource: "*", actions: ["list", "read"], effect: "allow"
|
|
735
|
+
{ resource: "*", actions: ["list", "read"], effect: "allow" },
|
|
736
736
|
],
|
|
737
737
|
scopeRules: [],
|
|
738
738
|
fieldMasks: [],
|
|
@@ -889,6 +889,7 @@ Struere is a framework for building production AI agents with Convex as the real
|
|
|
889
889
|
\u2502 \u251C\u2500\u2500 agents/*.ts \u2192 Agent configs synced to Convex \u2502
|
|
890
890
|
\u2502 \u251C\u2500\u2500 entity-types/*.ts \u2192 Schema definitions synced to Convex \u2502
|
|
891
891
|
\u2502 \u251C\u2500\u2500 roles/*.ts \u2192 RBAC policies synced to Convex \u2502
|
|
892
|
+
\u2502 \u251C\u2500\u2500 triggers/*.ts \u2192 Automation rules synced to Convex \u2502
|
|
892
893
|
\u2502 \u251C\u2500\u2500 tools/index.ts \u2192 Custom tools (run on CF Worker) \u2502
|
|
893
894
|
\u2502 \u2514\u2500\u2500 evals/*.eval.yaml \u2192 Test suites (synced + executed) \u2502
|
|
894
895
|
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\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\u2518
|
|
@@ -927,6 +928,10 @@ roles/ # RBAC: who can do what
|
|
|
927
928
|
\u251C\u2500\u2500 support.ts # Limited access
|
|
928
929
|
\u2514\u2500\u2500 index.ts
|
|
929
930
|
|
|
931
|
+
triggers/ # Automation rules (react to entity changes)
|
|
932
|
+
\u251C\u2500\u2500 notify-on-create.ts
|
|
933
|
+
\u2514\u2500\u2500 index.ts
|
|
934
|
+
|
|
930
935
|
tools/ # Custom tools shared by all agents
|
|
931
936
|
\u2514\u2500\u2500 index.ts # defineTools([...])
|
|
932
937
|
|
|
@@ -967,6 +972,7 @@ export default defineConfig({
|
|
|
967
972
|
| \`struere add agent <name>\` | Create agents/name.ts with template |
|
|
968
973
|
| \`struere add entity-type <name>\` | Create entity-types/name.ts |
|
|
969
974
|
| \`struere add role <name>\` | Create roles/name.ts |
|
|
975
|
+
| \`struere add trigger <name>\` | Create triggers/name.ts with template |
|
|
970
976
|
| \`struere add eval <name>\` | Create evals/name.eval.yaml with template |
|
|
971
977
|
| \`struere eval\` | Run all eval suites |
|
|
972
978
|
| \`struere eval --suite <name>\` | Run a specific eval suite |
|
|
@@ -1089,9 +1095,9 @@ export default defineRole({
|
|
|
1089
1095
|
|
|
1090
1096
|
// What actions are allowed/denied
|
|
1091
1097
|
policies: [
|
|
1092
|
-
{ resource: "customer", actions: ["list", "read"], effect: "allow"
|
|
1093
|
-
{ resource: "customer", actions: ["delete"], effect: "deny"
|
|
1094
|
-
{ resource: "payment", actions: ["*"], effect: "deny"
|
|
1098
|
+
{ resource: "customer", actions: ["list", "read"], effect: "allow" },
|
|
1099
|
+
{ resource: "customer", actions: ["delete"], effect: "deny" },
|
|
1100
|
+
{ resource: "payment", actions: ["*"], effect: "deny" },
|
|
1095
1101
|
],
|
|
1096
1102
|
|
|
1097
1103
|
// Row-level security: only see assigned customers
|
|
@@ -1119,7 +1125,7 @@ Every tool call goes through permission checks:
|
|
|
1119
1125
|
2. **Scope filter**: Query results filtered to rows user can access
|
|
1120
1126
|
3. **Field mask**: Sensitive fields hidden/redacted in response
|
|
1121
1127
|
|
|
1122
|
-
Deny policies override allow.
|
|
1128
|
+
Deny policies always override allow.
|
|
1123
1129
|
|
|
1124
1130
|
## Defining Custom Tools
|
|
1125
1131
|
|
|
@@ -1189,6 +1195,103 @@ Custom tool handlers can only fetch from:
|
|
|
1189
1195
|
- api.stripe.com, api.sendgrid.com, api.twilio.com
|
|
1190
1196
|
- hooks.slack.com, discord.com, api.github.com
|
|
1191
1197
|
|
|
1198
|
+
## Defining Triggers
|
|
1199
|
+
|
|
1200
|
+
Triggers are automated actions that fire when entities are created, updated, or deleted. They run asynchronously after the mutation completes.
|
|
1201
|
+
|
|
1202
|
+
Create \\\`triggers/notify-on-session.ts\\\`:
|
|
1203
|
+
\\\`\\\`\\\`typescript
|
|
1204
|
+
import { defineTrigger } from 'struere'
|
|
1205
|
+
|
|
1206
|
+
export default defineTrigger({
|
|
1207
|
+
name: "Notify Teacher on New Session",
|
|
1208
|
+
slug: "notify-teacher-on-session",
|
|
1209
|
+
on: {
|
|
1210
|
+
entityType: "session",
|
|
1211
|
+
action: "created",
|
|
1212
|
+
condition: { "data.status": "scheduled" } // optional
|
|
1213
|
+
},
|
|
1214
|
+
actions: [
|
|
1215
|
+
{
|
|
1216
|
+
tool: "entity.get",
|
|
1217
|
+
args: { id: "{{trigger.data.teacherId}}" },
|
|
1218
|
+
as: "teacher" // store result for later steps
|
|
1219
|
+
},
|
|
1220
|
+
{
|
|
1221
|
+
tool: "event.emit",
|
|
1222
|
+
args: {
|
|
1223
|
+
eventType: "notification.sent",
|
|
1224
|
+
entityId: "{{trigger.entityId}}",
|
|
1225
|
+
payload: {
|
|
1226
|
+
teacherName: "{{steps.teacher.data.name}}",
|
|
1227
|
+
sessionTime: "{{trigger.data.startTime}}"
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
]
|
|
1232
|
+
})
|
|
1233
|
+
\\\`\\\`\\\`
|
|
1234
|
+
|
|
1235
|
+
### Trigger Config
|
|
1236
|
+
|
|
1237
|
+
| Field | Required | Description |
|
|
1238
|
+
|-------|----------|-------------|
|
|
1239
|
+
| \\\`name\\\` | Yes | Display name |
|
|
1240
|
+
| \\\`slug\\\` | Yes | Unique identifier (used for sync) |
|
|
1241
|
+
| \\\`on.entityType\\\` | Yes | Entity type slug to watch |
|
|
1242
|
+
| \\\`on.action\\\` | Yes | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
1243
|
+
| \\\`on.condition\\\` | No | Dot-notation equality conditions on entity data |
|
|
1244
|
+
| \\\`actions\\\` | Yes | Ordered list of tool calls to execute |
|
|
1245
|
+
|
|
1246
|
+
### Action Pipeline
|
|
1247
|
+
|
|
1248
|
+
Each action in the \\\`actions\\\` array runs sequentially:
|
|
1249
|
+
|
|
1250
|
+
| Field | Required | Description |
|
|
1251
|
+
|-------|----------|-------------|
|
|
1252
|
+
| \\\`tool\\\` | Yes | Built-in or custom tool name |
|
|
1253
|
+
| \\\`args\\\` | Yes | Arguments (supports \\\`{{template}}\\\` variables) |
|
|
1254
|
+
| \\\`as\\\` | No | Store result under this name for later steps |
|
|
1255
|
+
|
|
1256
|
+
### Template Variables
|
|
1257
|
+
|
|
1258
|
+
Use \\\`{{...}}\\\` in action args to reference trigger context and previous step results:
|
|
1259
|
+
|
|
1260
|
+
| Variable | Description |
|
|
1261
|
+
|----------|-------------|
|
|
1262
|
+
| \\\`{{trigger.entityId}}\\\` | ID of the entity that changed |
|
|
1263
|
+
| \\\`{{trigger.entityType}}\\\` | Entity type slug |
|
|
1264
|
+
| \\\`{{trigger.action}}\\\` | \\\`"created"\\\`, \\\`"updated"\\\`, or \\\`"deleted"\\\` |
|
|
1265
|
+
| \\\`{{trigger.data.X}}\\\` | Entity data field (e.g. \\\`{{trigger.data.email}}\\\`) |
|
|
1266
|
+
| \\\`{{trigger.previousData.X}}\\\` | Previous value (updates/deletes only) |
|
|
1267
|
+
| \\\`{{steps.NAME.X}}\\\` | Result from a prior action with \\\`as: "NAME"\\\` |
|
|
1268
|
+
|
|
1269
|
+
### Conditions
|
|
1270
|
+
|
|
1271
|
+
Conditions use dot-notation path equality matching:
|
|
1272
|
+
\\\`\\\`\\\`typescript
|
|
1273
|
+
condition: {
|
|
1274
|
+
"data.status": "scheduled", // field must equal value
|
|
1275
|
+
"data.priority": "high" // all conditions must match (AND)
|
|
1276
|
+
}
|
|
1277
|
+
\\\`\\\`\\\`
|
|
1278
|
+
|
|
1279
|
+
### Execution Model
|
|
1280
|
+
|
|
1281
|
+
- **Async**: Triggers are scheduled after the mutation, keeping writes fast
|
|
1282
|
+
- **System actor**: Actions execute with full admin access (not the user's role)
|
|
1283
|
+
- **Fail-fast**: If any action fails, remaining actions are skipped
|
|
1284
|
+
- **Events**: Emits \\\`trigger.executed\\\` on success, \\\`trigger.failed\\\` on error
|
|
1285
|
+
- **Both paths**: Triggers fire from dashboard CRUD, agent tool calls, and API mutations
|
|
1286
|
+
|
|
1287
|
+
### Scaffold a new trigger
|
|
1288
|
+
|
|
1289
|
+
\\\`\\\`\\\`bash
|
|
1290
|
+
struere add trigger my-trigger
|
|
1291
|
+
\\\`\\\`\\\`
|
|
1292
|
+
|
|
1293
|
+
Creates \\\`triggers/my-trigger.ts\\\` with a starter template.
|
|
1294
|
+
|
|
1192
1295
|
## Built-in Tools Reference
|
|
1193
1296
|
|
|
1194
1297
|
### Entity Tools
|
|
@@ -1447,6 +1550,29 @@ Always confirm what was created/updated.\\\`,
|
|
|
1447
1550
|
\`\`\`
|
|
1448
1551
|
`;
|
|
1449
1552
|
}
|
|
1553
|
+
function getTriggerTs(name, slug) {
|
|
1554
|
+
return `import { defineTrigger } from 'struere'
|
|
1555
|
+
|
|
1556
|
+
export default defineTrigger({
|
|
1557
|
+
name: "${name}",
|
|
1558
|
+
slug: "${slug}",
|
|
1559
|
+
on: {
|
|
1560
|
+
entityType: "ENTITY_TYPE_HERE",
|
|
1561
|
+
action: "created",
|
|
1562
|
+
},
|
|
1563
|
+
actions: [
|
|
1564
|
+
{
|
|
1565
|
+
tool: "event.emit",
|
|
1566
|
+
args: {
|
|
1567
|
+
eventType: "trigger.${slug}.fired",
|
|
1568
|
+
entityId: "{{trigger.entityId}}",
|
|
1569
|
+
payload: { triggeredBy: "${slug}" },
|
|
1570
|
+
},
|
|
1571
|
+
},
|
|
1572
|
+
],
|
|
1573
|
+
})
|
|
1574
|
+
`;
|
|
1575
|
+
}
|
|
1450
1576
|
|
|
1451
1577
|
// src/cli/utils/scaffold.ts
|
|
1452
1578
|
function ensureDir(filePath) {
|
|
@@ -1470,7 +1596,8 @@ function scaffoldProjectV2(cwd, options) {
|
|
|
1470
1596
|
"entity-types",
|
|
1471
1597
|
"roles",
|
|
1472
1598
|
"tools",
|
|
1473
|
-
"evals"
|
|
1599
|
+
"evals",
|
|
1600
|
+
"triggers"
|
|
1474
1601
|
];
|
|
1475
1602
|
for (const dir of directories) {
|
|
1476
1603
|
const dirPath = join3(cwd, dir);
|
|
@@ -1490,6 +1617,7 @@ function scaffoldProjectV2(cwd, options) {
|
|
|
1490
1617
|
"entity-types/index.ts": getIndexTs("entity-types"),
|
|
1491
1618
|
"roles/index.ts": getIndexTs("roles"),
|
|
1492
1619
|
"tools/index.ts": getToolsIndexTs(),
|
|
1620
|
+
"triggers/index.ts": getIndexTs("triggers"),
|
|
1493
1621
|
"evals/basic-agent-tests.eval.yaml": getExampleEvalYaml("my-agent")
|
|
1494
1622
|
};
|
|
1495
1623
|
for (const [relativePath, content] of Object.entries(files)) {
|
|
@@ -1575,6 +1703,24 @@ function scaffoldEval(cwd, name, slug, agentSlug = "my-agent") {
|
|
|
1575
1703
|
result.createdFiles.push(`evals/${fileName}`);
|
|
1576
1704
|
return result;
|
|
1577
1705
|
}
|
|
1706
|
+
function scaffoldTrigger(cwd, name, slug) {
|
|
1707
|
+
const result = {
|
|
1708
|
+
createdFiles: [],
|
|
1709
|
+
updatedFiles: []
|
|
1710
|
+
};
|
|
1711
|
+
const triggersDir = join3(cwd, "triggers");
|
|
1712
|
+
if (!existsSync3(triggersDir)) {
|
|
1713
|
+
mkdirSync2(triggersDir, { recursive: true });
|
|
1714
|
+
}
|
|
1715
|
+
const fileName = `${slug}.ts`;
|
|
1716
|
+
const filePath = join3(triggersDir, fileName);
|
|
1717
|
+
if (existsSync3(filePath)) {
|
|
1718
|
+
return result;
|
|
1719
|
+
}
|
|
1720
|
+
writeFileSync3(filePath, getTriggerTs(name, slug));
|
|
1721
|
+
result.createdFiles.push(`triggers/${fileName}`);
|
|
1722
|
+
return result;
|
|
1723
|
+
}
|
|
1578
1724
|
|
|
1579
1725
|
// src/cli/commands/init.ts
|
|
1580
1726
|
async function runInit(cwd, selectedOrg) {
|
|
@@ -1781,7 +1927,8 @@ async function loadAllResources(cwd) {
|
|
|
1781
1927
|
}
|
|
1782
1928
|
const { suites: evalSuites, errors: evalErrors } = loadAllEvalSuites(join4(cwd, "evals"));
|
|
1783
1929
|
errors.push(...evalErrors);
|
|
1784
|
-
|
|
1930
|
+
const triggers = await loadAllTriggers(join4(cwd, "triggers"));
|
|
1931
|
+
return { agents, entityTypes, roles, customTools, evalSuites, triggers, errors };
|
|
1785
1932
|
}
|
|
1786
1933
|
async function loadAllAgents(dir) {
|
|
1787
1934
|
if (!existsSync4(dir)) {
|
|
@@ -1889,13 +2036,24 @@ function loadAllEvalSuites(dir) {
|
|
|
1889
2036
|
}
|
|
1890
2037
|
return { suites, errors };
|
|
1891
2038
|
}
|
|
2039
|
+
async function loadAllTriggers(dir) {
|
|
2040
|
+
if (!existsSync4(dir)) {
|
|
2041
|
+
return [];
|
|
2042
|
+
}
|
|
2043
|
+
const indexPath = join4(dir, "index.ts");
|
|
2044
|
+
if (existsSync4(indexPath)) {
|
|
2045
|
+
return loadFromIndex(indexPath);
|
|
2046
|
+
}
|
|
2047
|
+
return loadFromDirectory(dir);
|
|
2048
|
+
}
|
|
1892
2049
|
function getResourceDirectories(cwd) {
|
|
1893
2050
|
return {
|
|
1894
2051
|
agents: join4(cwd, "agents"),
|
|
1895
2052
|
entityTypes: join4(cwd, "entity-types"),
|
|
1896
2053
|
roles: join4(cwd, "roles"),
|
|
1897
2054
|
tools: join4(cwd, "tools"),
|
|
1898
|
-
evals: join4(cwd, "evals")
|
|
2055
|
+
evals: join4(cwd, "evals"),
|
|
2056
|
+
triggers: join4(cwd, "triggers")
|
|
1899
2057
|
};
|
|
1900
2058
|
}
|
|
1901
2059
|
|
|
@@ -1918,7 +2076,12 @@ var BUILTIN_TOOLS = [
|
|
|
1918
2076
|
"event.emit",
|
|
1919
2077
|
"event.query",
|
|
1920
2078
|
"job.enqueue",
|
|
1921
|
-
"job.status"
|
|
2079
|
+
"job.status",
|
|
2080
|
+
"calendar.list",
|
|
2081
|
+
"calendar.create",
|
|
2082
|
+
"calendar.update",
|
|
2083
|
+
"calendar.delete",
|
|
2084
|
+
"calendar.freeBusy"
|
|
1922
2085
|
];
|
|
1923
2086
|
function extractSyncPayload(resources) {
|
|
1924
2087
|
const customToolsMap = new Map;
|
|
@@ -1939,8 +2102,7 @@ function extractSyncPayload(resources) {
|
|
|
1939
2102
|
policies: role.policies.map((p) => ({
|
|
1940
2103
|
resource: p.resource,
|
|
1941
2104
|
actions: p.actions,
|
|
1942
|
-
effect: p.effect
|
|
1943
|
-
priority: p.priority
|
|
2105
|
+
effect: p.effect
|
|
1944
2106
|
})),
|
|
1945
2107
|
scopeRules: role.scopeRules?.map((sr) => ({
|
|
1946
2108
|
entityType: sr.entityType,
|
|
@@ -1975,7 +2137,20 @@ function extractSyncPayload(resources) {
|
|
|
1975
2137
|
finalAssertions: c.finalAssertions
|
|
1976
2138
|
}))
|
|
1977
2139
|
})) : undefined;
|
|
1978
|
-
|
|
2140
|
+
const triggers = resources.triggers.length > 0 ? resources.triggers.map((t) => ({
|
|
2141
|
+
name: t.name,
|
|
2142
|
+
slug: t.slug,
|
|
2143
|
+
description: t.description,
|
|
2144
|
+
entityType: t.on.entityType,
|
|
2145
|
+
action: t.on.action,
|
|
2146
|
+
condition: t.on.condition,
|
|
2147
|
+
actions: t.actions.map((a) => ({
|
|
2148
|
+
tool: a.tool,
|
|
2149
|
+
args: a.args,
|
|
2150
|
+
as: a.as
|
|
2151
|
+
}))
|
|
2152
|
+
})) : undefined;
|
|
2153
|
+
return { agents, entityTypes, roles, evalSuites, triggers };
|
|
1979
2154
|
}
|
|
1980
2155
|
function extractAgentPayload(agent, customToolsMap) {
|
|
1981
2156
|
let systemPrompt;
|
|
@@ -2038,7 +2213,12 @@ function getBuiltinToolDescription(name) {
|
|
|
2038
2213
|
"event.emit": "Emit a custom event for audit logging",
|
|
2039
2214
|
"event.query": "Query historical events with optional filters",
|
|
2040
2215
|
"job.enqueue": "Schedule a background job to run later",
|
|
2041
|
-
"job.status": "Get the status of a scheduled job"
|
|
2216
|
+
"job.status": "Get the status of a scheduled job",
|
|
2217
|
+
"calendar.list": "List Google Calendar events for a user within a time range",
|
|
2218
|
+
"calendar.create": "Create a Google Calendar event on a user's calendar",
|
|
2219
|
+
"calendar.update": "Update an existing Google Calendar event",
|
|
2220
|
+
"calendar.delete": "Delete a Google Calendar event",
|
|
2221
|
+
"calendar.freeBusy": "Check free/busy availability on a user's Google Calendar"
|
|
2042
2222
|
};
|
|
2043
2223
|
return descriptions[name] || name;
|
|
2044
2224
|
}
|
|
@@ -2144,6 +2324,60 @@ function getBuiltinToolParameters(name) {
|
|
|
2144
2324
|
id: { type: "string", description: "The job ID to check" }
|
|
2145
2325
|
},
|
|
2146
2326
|
required: ["id"]
|
|
2327
|
+
},
|
|
2328
|
+
"calendar.list": {
|
|
2329
|
+
type: "object",
|
|
2330
|
+
properties: {
|
|
2331
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar to query" },
|
|
2332
|
+
timeMin: { type: "string", description: "Start of time range (ISO 8601 datetime)" },
|
|
2333
|
+
timeMax: { type: "string", description: "End of time range (ISO 8601 datetime)" },
|
|
2334
|
+
maxResults: { type: "number", description: "Maximum number of events to return" }
|
|
2335
|
+
},
|
|
2336
|
+
required: ["userId", "timeMin", "timeMax"]
|
|
2337
|
+
},
|
|
2338
|
+
"calendar.create": {
|
|
2339
|
+
type: "object",
|
|
2340
|
+
properties: {
|
|
2341
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar to create the event on" },
|
|
2342
|
+
summary: { type: "string", description: "Event title" },
|
|
2343
|
+
startTime: { type: "string", description: "Event start time (ISO 8601 datetime)" },
|
|
2344
|
+
endTime: { type: "string", description: "Event end time (ISO 8601 datetime)" },
|
|
2345
|
+
description: { type: "string", description: "Event description" },
|
|
2346
|
+
attendees: { type: "array", items: { type: "string" }, description: "List of attendee email addresses" },
|
|
2347
|
+
timeZone: { type: "string", description: 'Time zone (e.g., "America/Santiago")' }
|
|
2348
|
+
},
|
|
2349
|
+
required: ["userId", "summary", "startTime", "endTime"]
|
|
2350
|
+
},
|
|
2351
|
+
"calendar.update": {
|
|
2352
|
+
type: "object",
|
|
2353
|
+
properties: {
|
|
2354
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar contains the event" },
|
|
2355
|
+
eventId: { type: "string", description: "Google Calendar event ID to update" },
|
|
2356
|
+
summary: { type: "string", description: "New event title" },
|
|
2357
|
+
startTime: { type: "string", description: "New start time (ISO 8601 datetime)" },
|
|
2358
|
+
endTime: { type: "string", description: "New end time (ISO 8601 datetime)" },
|
|
2359
|
+
description: { type: "string", description: "New event description" },
|
|
2360
|
+
attendees: { type: "array", items: { type: "string" }, description: "Updated list of attendee emails" },
|
|
2361
|
+
status: { type: "string", description: "Event status (confirmed, tentative, cancelled)" }
|
|
2362
|
+
},
|
|
2363
|
+
required: ["userId", "eventId"]
|
|
2364
|
+
},
|
|
2365
|
+
"calendar.delete": {
|
|
2366
|
+
type: "object",
|
|
2367
|
+
properties: {
|
|
2368
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose calendar contains the event" },
|
|
2369
|
+
eventId: { type: "string", description: "Google Calendar event ID to delete" }
|
|
2370
|
+
},
|
|
2371
|
+
required: ["userId", "eventId"]
|
|
2372
|
+
},
|
|
2373
|
+
"calendar.freeBusy": {
|
|
2374
|
+
type: "object",
|
|
2375
|
+
properties: {
|
|
2376
|
+
userId: { type: "string", description: "User ID (Convex or Clerk) whose availability to check" },
|
|
2377
|
+
timeMin: { type: "string", description: "Start of time range (ISO 8601 datetime)" },
|
|
2378
|
+
timeMax: { type: "string", description: "End of time range (ISO 8601 datetime)" }
|
|
2379
|
+
},
|
|
2380
|
+
required: ["userId", "timeMin", "timeMax"]
|
|
2147
2381
|
}
|
|
2148
2382
|
};
|
|
2149
2383
|
return schemas[name] || { type: "object", properties: {} };
|
|
@@ -2282,7 +2516,7 @@ var devCommand = new Command3("dev").description("Sync all resources to developm
|
|
|
2282
2516
|
spinner.start("Loading resources");
|
|
2283
2517
|
try {
|
|
2284
2518
|
const resources = await loadAllResources(cwd);
|
|
2285
|
-
spinner.succeed(`Loaded ${resources.agents.length} agents, ${resources.entityTypes.length} entity types, ${resources.roles.length} roles, ${resources.customTools.length} custom tools, ${resources.evalSuites.length} eval suites`);
|
|
2519
|
+
spinner.succeed(`Loaded ${resources.agents.length} agents, ${resources.entityTypes.length} entity types, ${resources.roles.length} roles, ${resources.customTools.length} custom tools, ${resources.evalSuites.length} eval suites, ${resources.triggers.length} triggers`);
|
|
2286
2520
|
for (const err of resources.errors) {
|
|
2287
2521
|
console.log(chalk3.red(" \u2716"), err);
|
|
2288
2522
|
}
|
|
@@ -2341,6 +2575,7 @@ var devCommand = new Command3("dev").description("Sync all resources to developm
|
|
|
2341
2575
|
dirs.roles,
|
|
2342
2576
|
dirs.tools,
|
|
2343
2577
|
dirs.evals,
|
|
2578
|
+
dirs.triggers,
|
|
2344
2579
|
join5(cwd, "struere.config.ts")
|
|
2345
2580
|
].filter((p) => existsSync5(p));
|
|
2346
2581
|
const watcher = chokidar.watch(watchPaths, {
|
|
@@ -3335,6 +3570,17 @@ var addCommand = new Command12("add").description("Scaffold a new resource").arg
|
|
|
3335
3570
|
console.log(chalk12.yellow("Eval suite already exists:"), `evals/${slug}.eval.yaml`);
|
|
3336
3571
|
}
|
|
3337
3572
|
break;
|
|
3573
|
+
case "trigger":
|
|
3574
|
+
result = scaffoldTrigger(cwd, displayName, slug);
|
|
3575
|
+
if (result.createdFiles.length > 0) {
|
|
3576
|
+
console.log(chalk12.green("\u2713"), `Created trigger "${displayName}"`);
|
|
3577
|
+
for (const file of result.createdFiles) {
|
|
3578
|
+
console.log(chalk12.gray(" \u2192"), file);
|
|
3579
|
+
}
|
|
3580
|
+
} else {
|
|
3581
|
+
console.log(chalk12.yellow("Trigger already exists:"), `triggers/${slug}.ts`);
|
|
3582
|
+
}
|
|
3583
|
+
break;
|
|
3338
3584
|
default:
|
|
3339
3585
|
console.log(chalk12.red("Unknown resource type:"), type);
|
|
3340
3586
|
console.log();
|
|
@@ -3343,6 +3589,7 @@ var addCommand = new Command12("add").description("Scaffold a new resource").arg
|
|
|
3343
3589
|
console.log(chalk12.gray(" -"), chalk12.cyan("entity-type"), "- Create an entity type schema");
|
|
3344
3590
|
console.log(chalk12.gray(" -"), chalk12.cyan("role"), "- Create a role with permissions");
|
|
3345
3591
|
console.log(chalk12.gray(" -"), chalk12.cyan("eval"), "- Create an eval suite (YAML)");
|
|
3592
|
+
console.log(chalk12.gray(" -"), chalk12.cyan("trigger"), "- Create an entity trigger");
|
|
3346
3593
|
console.log();
|
|
3347
3594
|
process.exit(1);
|
|
3348
3595
|
}
|
|
@@ -3628,9 +3875,6 @@ function generateRoleFile(role) {
|
|
|
3628
3875
|
` actions: ${JSON.stringify(p.actions)}`,
|
|
3629
3876
|
` effect: "${p.effect}"`
|
|
3630
3877
|
];
|
|
3631
|
-
if (p.priority !== 50) {
|
|
3632
|
-
pParts.push(` priority: ${p.priority}`);
|
|
3633
|
-
}
|
|
3634
3878
|
return ` {
|
|
3635
3879
|
${pParts.join(`,
|
|
3636
3880
|
`)},
|
|
@@ -3907,7 +4151,7 @@ var pullCommand = new Command14("pull").description("Pull remote resources to lo
|
|
|
3907
4151
|
// package.json
|
|
3908
4152
|
var package_default = {
|
|
3909
4153
|
name: "struere",
|
|
3910
|
-
version: "0.5.
|
|
4154
|
+
version: "0.5.16",
|
|
3911
4155
|
description: "Build, test, and deploy AI agents",
|
|
3912
4156
|
keywords: [
|
|
3913
4157
|
"ai",
|
|
@@ -13,10 +13,11 @@ export declare function getEnvLocal(deploymentUrl: string): string;
|
|
|
13
13
|
export declare function getEntityTypeTs(name: string, slug: string): string;
|
|
14
14
|
export declare function getRoleTs(name: string): string;
|
|
15
15
|
export declare function getAgentTsV2(name: string, slug: string): string;
|
|
16
|
-
export declare function getIndexTs(type: 'agents' | 'entity-types' | 'roles'): string;
|
|
16
|
+
export declare function getIndexTs(type: 'agents' | 'entity-types' | 'roles' | 'triggers'): string;
|
|
17
17
|
export declare function getToolsIndexTs(): string;
|
|
18
18
|
export declare function getStruereJsonV2(orgId: string, orgSlug: string, orgName: string): string;
|
|
19
19
|
export declare function getPackageJsonV2(name: string): string;
|
|
20
20
|
export declare function getClaudeMDV2(orgName: string): string;
|
|
21
|
+
export declare function getTriggerTs(name: string, slug: string): string;
|
|
21
22
|
export declare function getClaudeMD(name: string): string;
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBnD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAsBpC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC/C;AAED,wBAAgB,UAAU,IAAI,MAAM,CAoDnC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;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,CAgBrC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAahG;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGzD;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,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBnD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAsBpC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC/C;AAED,wBAAgB,UAAU,IAAI,MAAM,CAoDnC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;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,CAgBrC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAahG;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGzD;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,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAIzF;AAED,wBAAgB,eAAe,IAAI,MAAM,CAsExC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAaxF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBrD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmqBrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB/D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0UhD"}
|
|
@@ -160,7 +160,6 @@ export interface SyncPayload {
|
|
|
160
160
|
resource: string;
|
|
161
161
|
actions: string[];
|
|
162
162
|
effect: 'allow' | 'deny';
|
|
163
|
-
priority?: number;
|
|
164
163
|
}>;
|
|
165
164
|
scopeRules?: Array<{
|
|
166
165
|
entityType: string;
|
|
@@ -263,6 +262,12 @@ export interface SyncState {
|
|
|
263
262
|
name: string;
|
|
264
263
|
agentId: string;
|
|
265
264
|
}>;
|
|
265
|
+
triggers?: Array<{
|
|
266
|
+
slug: string;
|
|
267
|
+
name: string;
|
|
268
|
+
entityType: string;
|
|
269
|
+
action: string;
|
|
270
|
+
}>;
|
|
266
271
|
}
|
|
267
272
|
export declare function getSyncState(organizationId?: string, environment?: 'development' | 'production'): Promise<{
|
|
268
273
|
state?: SyncState;
|
|
@@ -302,7 +307,6 @@ export interface PullStateRole {
|
|
|
302
307
|
resource: string;
|
|
303
308
|
actions: string[];
|
|
304
309
|
effect: string;
|
|
305
|
-
priority: number;
|
|
306
310
|
}>;
|
|
307
311
|
scopeRules: Array<{
|
|
308
312
|
entityType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/convex.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,6 @@ export interface SyncPayload {
|
|
|
34
34
|
resource: string;
|
|
35
35
|
actions: string[];
|
|
36
36
|
effect: 'allow' | 'deny';
|
|
37
|
-
priority?: number;
|
|
38
37
|
}>;
|
|
39
38
|
scopeRules?: Array<{
|
|
40
39
|
entityType: string;
|
|
@@ -82,6 +81,19 @@ export interface SyncPayload {
|
|
|
82
81
|
}>;
|
|
83
82
|
}>;
|
|
84
83
|
}>;
|
|
84
|
+
triggers?: Array<{
|
|
85
|
+
name: string;
|
|
86
|
+
slug: string;
|
|
87
|
+
description?: string;
|
|
88
|
+
entityType: string;
|
|
89
|
+
action: string;
|
|
90
|
+
condition?: Record<string, unknown>;
|
|
91
|
+
actions: Array<{
|
|
92
|
+
tool: string;
|
|
93
|
+
args: Record<string, unknown>;
|
|
94
|
+
as?: string;
|
|
95
|
+
}>;
|
|
96
|
+
}>;
|
|
85
97
|
}
|
|
86
98
|
export declare function extractSyncPayload(resources: LoadedResources): SyncPayload;
|
|
87
99
|
//# sourceMappingURL=extractor.d.ts.map
|
|
@@ -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":"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;AA4ClF,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,
|
|
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;AA4ClF,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,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAWpG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAiBzE"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { AgentConfigV2, EntityTypeConfig, RoleConfig, ToolReference, EvalSuiteDefinition } from '../../types';
|
|
1
|
+
import type { AgentConfigV2, EntityTypeConfig, RoleConfig, ToolReference, EvalSuiteDefinition, TriggerConfig } from '../../types';
|
|
2
2
|
export interface LoadedResources {
|
|
3
3
|
agents: AgentConfigV2[];
|
|
4
4
|
entityTypes: EntityTypeConfig[];
|
|
5
5
|
roles: RoleConfig[];
|
|
6
6
|
customTools: ToolReference[];
|
|
7
7
|
evalSuites: EvalSuiteDefinition[];
|
|
8
|
+
triggers: TriggerConfig[];
|
|
8
9
|
errors: string[];
|
|
9
10
|
}
|
|
10
11
|
export declare function loadAllResources(cwd: string): Promise<LoadedResources>;
|
|
@@ -19,12 +20,14 @@ export declare function loadAllEvalSuites(dir: string): {
|
|
|
19
20
|
suites: EvalSuiteDefinition[];
|
|
20
21
|
errors: string[];
|
|
21
22
|
};
|
|
23
|
+
export declare function loadAllTriggers(dir: string): Promise<TriggerConfig[]>;
|
|
22
24
|
export declare function getResourceDirectories(cwd: string): {
|
|
23
25
|
agents: string;
|
|
24
26
|
entityTypes: string;
|
|
25
27
|
roles: string;
|
|
26
28
|
tools: string;
|
|
27
29
|
evals: string;
|
|
30
|
+
triggers: string;
|
|
28
31
|
};
|
|
29
32
|
export declare function hasResourceDirectories(cwd: string): boolean;
|
|
30
33
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjI,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,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;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAWzE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAWjF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAWrE;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBtG;AA+CD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBlG;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAW3E;AAED,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;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG3D"}
|
|
@@ -25,5 +25,6 @@ export declare function scaffoldAgent(cwd: string, name: string, slug: string):
|
|
|
25
25
|
export declare function scaffoldEntityType(cwd: string, name: string, slug: string): ScaffoldResult;
|
|
26
26
|
export declare function scaffoldRole(cwd: string, name: string): ScaffoldResult;
|
|
27
27
|
export declare function scaffoldEval(cwd: string, name: string, slug: string, agentSlug?: string): ScaffoldResult;
|
|
28
|
+
export declare function scaffoldTrigger(cwd: string, name: string, slug: string): ScaffoldResult;
|
|
28
29
|
export declare function hasV2Structure(cwd: string): boolean;
|
|
29
30
|
//# sourceMappingURL=scaffold.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/scaffold.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/scaffold.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAeD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CAexF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CA+BrF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CA8BnF;AAsBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAgDzF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAsBrF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAsB1F;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAsBtE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAmB,GAAG,cAAc,CA2BpH;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAsBvF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAInD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/define/role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/define/role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAyBzD"}
|
|
@@ -0,0 +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,CA8BlE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export { defineTools } from './define/tools';
|
|
|
3
3
|
export { defineConfig } from './define/config';
|
|
4
4
|
export { defineEntityType } from './define/entityType';
|
|
5
5
|
export { defineRole } from './define/role';
|
|
6
|
-
export
|
|
6
|
+
export { defineTrigger } from './define/trigger';
|
|
7
|
+
export type { AgentConfig, ModelConfig, ToolReference, ToolParameters, ParameterDefinition, ToolHandler, ToolContext, StateAccessor, WorkflowReference, StateConfig, FrameworkConfig, CorsConfig, LoggingConfig, AuthConfig, Message, Conversation, TestCase, TestMessage, TestToolCall, TestAssertion, DeployConfig, ScalingConfig, EntityTypeConfig, JSONSchema, JSONSchemaProperty, RoleConfig, PolicyConfig, ScopeRuleConfig, FieldMaskConfig, StruereProjectV2, AgentConfigV2, SyncPayload, SyncState, TriggerConfig, TriggerAction, } from './types';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -138,15 +138,43 @@ function defineRole(config) {
|
|
|
138
138
|
}
|
|
139
139
|
return {
|
|
140
140
|
...config,
|
|
141
|
-
policies: config.policies.map((policy, index) => ({
|
|
142
|
-
...policy,
|
|
143
|
-
priority: policy.priority ?? (index + 1) * 10
|
|
144
|
-
})),
|
|
145
141
|
scopeRules: config.scopeRules || [],
|
|
146
142
|
fieldMasks: config.fieldMasks || []
|
|
147
143
|
};
|
|
148
144
|
}
|
|
145
|
+
// src/define/trigger.ts
|
|
146
|
+
var VALID_ACTIONS = ["created", "updated", "deleted"];
|
|
147
|
+
function defineTrigger(config) {
|
|
148
|
+
if (!config.name) {
|
|
149
|
+
throw new Error("Trigger name is required");
|
|
150
|
+
}
|
|
151
|
+
if (!config.slug) {
|
|
152
|
+
throw new Error("Trigger slug is required");
|
|
153
|
+
}
|
|
154
|
+
if (!config.on) {
|
|
155
|
+
throw new Error('Trigger "on" configuration is required');
|
|
156
|
+
}
|
|
157
|
+
if (!config.on.entityType) {
|
|
158
|
+
throw new Error("Trigger entityType is required");
|
|
159
|
+
}
|
|
160
|
+
if (!config.on.action || !VALID_ACTIONS.includes(config.on.action)) {
|
|
161
|
+
throw new Error(`Trigger action must be one of: ${VALID_ACTIONS.join(", ")}`);
|
|
162
|
+
}
|
|
163
|
+
if (!config.actions || config.actions.length === 0) {
|
|
164
|
+
throw new Error("Trigger must have at least one action");
|
|
165
|
+
}
|
|
166
|
+
for (const action of config.actions) {
|
|
167
|
+
if (!action.tool) {
|
|
168
|
+
throw new Error("Trigger action tool is required");
|
|
169
|
+
}
|
|
170
|
+
if (!action.args || typeof action.args !== "object") {
|
|
171
|
+
throw new Error("Trigger action args must be an object");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return config;
|
|
175
|
+
}
|
|
149
176
|
export {
|
|
177
|
+
defineTrigger,
|
|
150
178
|
defineTools,
|
|
151
179
|
defineRole,
|
|
152
180
|
defineEntityType,
|
package/dist/types.d.ts
CHANGED
|
@@ -215,7 +215,6 @@ export interface PolicyConfig {
|
|
|
215
215
|
resource: string;
|
|
216
216
|
actions: string[];
|
|
217
217
|
effect: 'allow' | 'deny';
|
|
218
|
-
priority?: number;
|
|
219
218
|
}
|
|
220
219
|
export interface ScopeRuleConfig {
|
|
221
220
|
entityType: string;
|
|
@@ -246,11 +245,28 @@ export interface AgentConfigV2 {
|
|
|
246
245
|
model?: ModelConfig;
|
|
247
246
|
tools?: string[];
|
|
248
247
|
}
|
|
248
|
+
export interface TriggerAction {
|
|
249
|
+
tool: string;
|
|
250
|
+
args: Record<string, unknown>;
|
|
251
|
+
as?: string;
|
|
252
|
+
}
|
|
253
|
+
export interface TriggerConfig {
|
|
254
|
+
name: string;
|
|
255
|
+
slug: string;
|
|
256
|
+
description?: string;
|
|
257
|
+
on: {
|
|
258
|
+
entityType: string;
|
|
259
|
+
action: 'created' | 'updated' | 'deleted';
|
|
260
|
+
condition?: Record<string, unknown>;
|
|
261
|
+
};
|
|
262
|
+
actions: TriggerAction[];
|
|
263
|
+
}
|
|
249
264
|
export interface SyncPayload {
|
|
250
265
|
agents: AgentConfigV2[];
|
|
251
266
|
entityTypes: EntityTypeConfig[];
|
|
252
267
|
roles: RoleConfig[];
|
|
253
268
|
customTools?: ToolReference[];
|
|
269
|
+
triggers?: TriggerConfig[];
|
|
254
270
|
}
|
|
255
271
|
export interface SyncState {
|
|
256
272
|
agents: Array<{
|
|
@@ -268,5 +284,11 @@ export interface SyncState {
|
|
|
268
284
|
name: string;
|
|
269
285
|
policyCount: number;
|
|
270
286
|
}>;
|
|
287
|
+
triggers?: Array<{
|
|
288
|
+
slug: string;
|
|
289
|
+
name: string;
|
|
290
|
+
entityType: string;
|
|
291
|
+
action: string;
|
|
292
|
+
}>;
|
|
271
293
|
}
|
|
272
294
|
//# sourceMappingURL=types.d.ts.map
|
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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"}
|