Changeset 0.28.6 (#192)
This commit is contained in:
@@ -65,8 +65,17 @@ POST /tasks
|
||||
```
|
||||
|
||||
`task_type`: `prompt` (direct LLM execution), `workflow` (deferred —
|
||||
not yet implemented; creation is rejected at the API), or `action`
|
||||
(no LLM — relay/webhook only; requires `task.action` permission).
|
||||
not yet implemented; creation is rejected at the API), `action`
|
||||
(no LLM — relay/webhook only; requires `task.action` permission),
|
||||
or `system` (v0.28.6 — built-in Go function, admin-only).
|
||||
|
||||
System tasks require `system_function` — a registered function name
|
||||
from the platform's Go function registry. No LLM, no provider
|
||||
resolution, no channel needed. The function receives the store set
|
||||
and returns a result string. Designed for core platform ops
|
||||
(`session_cleanup`, `staleness_check`, `retention_sweep`, `health_prune`)
|
||||
that must not break from bad user code. Permanent track — not replaced
|
||||
by Starlark in v0.29.0.
|
||||
|
||||
`schedule`: cron expression, `once`, or `webhook`. Supported cron
|
||||
patterns: `@hourly`, `@daily`, `@weekly`, `*/N * * * *` (every N
|
||||
@@ -173,6 +182,26 @@ Returns `410 Gone` if the task is inactive.
|
||||
**Rate limiting:** Governed by global request rate limits. No per-task
|
||||
rate limiting in v0.28 — defer to a future version if needed.
|
||||
|
||||
### Task-to-Task Chaining (v0.28.6)
|
||||
|
||||
Tasks can trigger other tasks by setting the `webhook_url` of Task A
|
||||
to the trigger URL of Task B:
|
||||
|
||||
1. Create **Task B** with `schedule: "webhook"`. Note the trigger URL
|
||||
from the response (`/api/v1/hooks/t/{trigger_token}`).
|
||||
2. Create **Task A** with `output_mode: "webhook"` and set `webhook_url`
|
||||
to Task B's trigger URL.
|
||||
3. When Task A completes, its output is POSTed to Task B's trigger URL.
|
||||
Task B starts with Task A's output as its `trigger_payload`.
|
||||
|
||||
This enables multi-step pipelines without external orchestration:
|
||||
- Task A: "Summarize today's news" (prompt, cron: 6am)
|
||||
- Task B: "Format and post to Slack" (action, webhook-triggered)
|
||||
|
||||
The `webhook_secret` on Task A signs outbound payloads with HMAC-SHA256.
|
||||
Task B's trigger endpoint does not currently verify signatures (the
|
||||
trigger token itself is the auth mechanism).
|
||||
|
||||
## Team Tasks
|
||||
|
||||
Team-scoped tasks visible to all team members, manageable by team admins.
|
||||
@@ -240,6 +269,30 @@ DELETE /admin/tasks/:id
|
||||
|
||||
**Auth:** Platform admin.
|
||||
|
||||
### System Functions (v0.28.6)
|
||||
|
||||
```
|
||||
GET /admin/system-functions → { "data": [SystemFuncInfo, ...] }
|
||||
```
|
||||
|
||||
Returns all registered built-in system function names and descriptions.
|
||||
Used by the admin UI to populate the function dropdown when creating
|
||||
system tasks.
|
||||
|
||||
**SystemFuncInfo:**
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "session_cleanup",
|
||||
"description": "Remove expired anonymous visitor sessions"
|
||||
}
|
||||
```
|
||||
|
||||
Built-in functions (v0.28.6): `session_cleanup`, `staleness_check`,
|
||||
`retention_sweep`, `health_prune`.
|
||||
|
||||
**Auth:** Platform admin.
|
||||
|
||||
## Task Object
|
||||
|
||||
```json
|
||||
@@ -250,7 +303,8 @@ DELETE /admin/tasks/:id
|
||||
"name": "Morning News Digest",
|
||||
"description": "...",
|
||||
"scope": "personal|team|global",
|
||||
"task_type": "prompt|workflow|action",
|
||||
"task_type": "prompt|workflow|action|system",
|
||||
"system_function": "session_cleanup",
|
||||
"persona_id": "uuid|null",
|
||||
"model_id": "claude-sonnet-4-20250514",
|
||||
"system_prompt": "...",
|
||||
|
||||
Reference in New Issue
Block a user