Triggers
This page lists the trigger declaration API and the client methods that read the Trigger resource. A Trigger is one activation of a declared trigger: each promotion starts a new one. For how triggers fire and follow Deployments, see Triggers.
triggers.cron()
triggers.cron<I extends InputContent>(
id: string,
expression: string,
options: {
readonly timezone: string
readonly input: I
readonly slack?: Readonly<{ channelId: string }>
},
): CronTrigger<I>
interface CronTrigger<I extends InputContent = InputContent> {
readonly id: string
readonly cron: string
readonly timezone: string
readonly input: I
readonly slack?: Readonly<{ channelId: string }>
}
| Argument | Required | Description |
|---|---|---|
id |
yes | Trigger ID, unique within the Agent. |
expression |
yes | Five-field cron expression. |
options.timezone |
yes | IANA timezone, for example "America/New_York". |
options.input |
yes | Input for each fired Turn: an array of text parts. |
options.slack.channelId |
no | Raw Slack channel ID (for example C0123456789) to open each fired Session in. The object must contain only channelId. See Slack. |
Throws when id, expression or timezone is blank, when input is not a
text-part array, or when slack is malformed.
Add triggers to an Agent with its triggers field:
import { agent, triggers } from "@helmr/sdk"
export const dailyReport = agent({
id: "daily-report",
template: reporting, // an existing template() definition
triggers: [
triggers.cron("morning", "0 9 * * *", {
timezone: "America/New_York",
input: [{ type: "text", text: "Prepare the daily report" }],
}),
],
async turn(turn) {
return { requested: turn.input }
},
})
Each fire starts an independent Session on a new Computer. The handler receives
the declared input; there is no separate schedule payload.
Client: Triggers
client.triggers.get(triggerId: string, options?): Promise<Trigger>
client.triggers.list(query?: { agent?: string; cursor?: string; limit?: number }, options?): Promise<CursorPage<Trigger>>
agent is the identifier declared in code.
List returns current activations. An unknown agent, or one absent from the
current Deployment, returns an empty page. get can read a retained historical
activation by its ID. The TypeScript client currently exposes only agent,
cursor and limit for listing; use the CLI or
REST API for
historical listing, logical-key filtering and occurrence outcomes. See Agents.
limit is 1–100.
Trigger field |
Type | Description |
|---|---|---|
id |
string |
ID of this activation. A new promotion creates a new ID. |
agent |
string |
Agent identifier declared in code. |
deploymentId |
string |
Deployment that declared the trigger. |
triggerKey |
string |
The trigger id. |
input |
InputContent |
Declared input. |
cron |
{ pattern, timezone } |
Declared expression and timezone. |
activeFrom |
string |
When this Trigger became active. |
activeUntil |
string, optional |
When it stopped being active. |
nextFireAt |
string, optional |
Next planned fire time. |
Triggers are read-only. Change triggers by editing the Agent definition and deploying.