@newsails/veil-cli 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.veil/agents/analyst/AGENT.md +21 -0
- package/.veil/agents/analyst/agent.json +23 -0
- package/.veil/agents/assistant/AGENT.md +15 -0
- package/.veil/agents/assistant/agent.json +19 -0
- package/.veil/agents/coder/AGENT.md +18 -0
- package/.veil/agents/coder/agent.json +19 -0
- package/.veil/agents/hello/AGENT.md +5 -0
- package/.veil/agents/hello/agent.json +13 -0
- package/.veil/agents/writer/AGENT.md +12 -0
- package/.veil/agents/writer/agent.json +17 -0
- package/.veil/memory/MEMORY.md +343 -0
- package/.veil/memory/agents/analyst/MEMORY.md +55 -0
- package/.veil/memory/agents/hello/MEMORY.md +12 -0
- package/.veil/runtime.pid +1 -0
- package/.veil/settings.json +10 -0
- package/.veil-studio/studio.db +0 -0
- package/.veil-studio/studio.db-shm +0 -0
- package/.veil-studio/studio.db-wal +0 -0
- package/PLAN/01-vision.md +26 -0
- package/PLAN/02-tech-stack.md +94 -0
- package/PLAN/03-agents.md +232 -0
- package/PLAN/04-runtime.md +171 -0
- package/PLAN/05-tools.md +211 -0
- package/PLAN/06-communication.md +243 -0
- package/PLAN/07-storage.md +218 -0
- package/PLAN/08-api-cli.md +153 -0
- package/PLAN/09-permissions.md +108 -0
- package/PLAN/10-ably.md +105 -0
- package/PLAN/11-file-formats.md +442 -0
- package/PLAN/12-folder-structure.md +205 -0
- package/PLAN/13-operations.md +212 -0
- package/PLAN/README.md +23 -0
- package/README.md +128 -0
- package/REPORT.md +174 -0
- package/TODO.md +45 -0
- package/ai-tests/FRONTEND_PROMPT.md +220 -0
- package/ai-tests/Research & Planning.md +814 -0
- package/ai-tests/prompt-001-basic-api.md +230 -0
- package/ai-tests/prompt-002-basic-flows.md +230 -0
- package/ai-tests/prompt-003-agent-behaviors.md +220 -0
- package/api/middleware.js +60 -0
- package/api/routes/agents.js +193 -0
- package/api/routes/chat.js +93 -0
- package/api/routes/completions.js +122 -0
- package/api/routes/daemons.js +80 -0
- package/api/routes/memory.js +169 -0
- package/api/routes/models.js +40 -0
- package/api/routes/remote-methods.js +74 -0
- package/api/routes/sessions.js +208 -0
- package/api/routes/settings.js +108 -0
- package/api/routes/system.js +50 -0
- package/api/routes/tasks.js +270 -0
- package/api/server.js +120 -0
- package/cli/formatter.js +70 -0
- package/cli/index.js +443 -0
- package/cli/parser.js +113 -0
- package/config/config.json +10 -0
- package/config/models.json +6826 -0
- package/core/agent.js +329 -0
- package/core/cancel.js +38 -0
- package/core/compaction.js +176 -0
- package/core/events.js +13 -0
- package/core/loop.js +564 -0
- package/core/memory.js +51 -0
- package/core/prompt.js +185 -0
- package/core/queue.js +96 -0
- package/core/registry.js +291 -0
- package/core/remote-methods.js +124 -0
- package/core/router.js +386 -0
- package/core/running-sessions.js +18 -0
- package/docs/api/01-system.md +84 -0
- package/docs/api/02-agents.md +374 -0
- package/docs/api/03-chat.md +269 -0
- package/docs/api/04-tasks.md +470 -0
- package/docs/api/05-sessions.md +444 -0
- package/docs/api/06-daemons.md +142 -0
- package/docs/api/07-memory.md +186 -0
- package/docs/api/08-settings.md +133 -0
- package/docs/api/09-models.md +119 -0
- package/docs/api/09-websocket.md +350 -0
- package/docs/api/10-completions.md +134 -0
- package/docs/api/README.md +116 -0
- package/docs/guide/01-quickstart.md +220 -0
- package/docs/guide/02-folder-structure.md +185 -0
- package/docs/guide/03-configuration.md +252 -0
- package/docs/guide/04-agents.md +267 -0
- package/docs/guide/05-cli.md +290 -0
- package/docs/guide/06-tools.md +643 -0
- package/docs/guide/07-permissions.md +236 -0
- package/docs/guide/08-memory.md +139 -0
- package/docs/guide/09-multi-agent.md +271 -0
- package/docs/guide/10-daemons.md +226 -0
- package/docs/guide/README.md +53 -0
- package/docs/index.html +623 -0
- package/examples/README.md +151 -0
- package/examples/agents/assistant/AGENT.md +31 -0
- package/examples/agents/assistant/SOUL.md +9 -0
- package/examples/agents/assistant/agent.json +74 -0
- package/examples/agents/hello/AGENT.md +15 -0
- package/examples/agents/hello/agent.json +14 -0
- package/examples/agents/monitor/AGENT.md +51 -0
- package/examples/agents/monitor/agent.json +33 -0
- package/examples/agents/monitor/heartbeats/monitor.md +24 -0
- package/examples/agents/orchestrator/AGENT.md +70 -0
- package/examples/agents/orchestrator/agent.json +30 -0
- package/examples/agents/researcher/AGENT.md +52 -0
- package/examples/agents/researcher/agent.json +49 -0
- package/examples/agents/researcher/skills/web-research.md +28 -0
- package/examples/skills/code-review.md +72 -0
- package/examples/skills/summarise.md +59 -0
- package/examples/skills/web-research.md +42 -0
- package/examples/tools/word-count/index.js +27 -0
- package/examples/tools/word-count/tool.json +18 -0
- package/infrastructure/database.js +563 -0
- package/infrastructure/scheduler.js +122 -0
- package/llm/client.js +206 -0
- package/migrations/001-initial.sql +121 -0
- package/migrations/002-debuggability.sql +13 -0
- package/migrations/003-drop-orphaned-columns.sql +72 -0
- package/migrations/004-session-message-token-fields.sql +78 -0
- package/migrations/005-session-thinking.sql +5 -0
- package/package.json +30 -0
- package/schemas/agent.json +143 -0
- package/schemas/settings.json +111 -0
- package/scripts/fetch-models.js +93 -0
- package/session-debug-scenario.md +248 -0
- package/settings/fields.js +52 -0
- package/system-prompts/base-core.md +7 -0
- package/system-prompts/environment.md +13 -0
- package/system-prompts/reminders/anti-drift.md +6 -0
- package/system-prompts/reminders/stall-recovery.md +10 -0
- package/system-prompts/safety-rules.md +25 -0
- package/system-prompts/task-heuristics.md +27 -0
- package/test/client.js +71 -0
- package/test/integration/01-health.test.js +25 -0
- package/test/integration/02-agents.test.js +80 -0
- package/test/integration/03-chat-hello.test.js +48 -0
- package/test/integration/04-chat-multiturn.test.js +61 -0
- package/test/integration/05-chat-writer.test.js +48 -0
- package/test/integration/06-task-basic.test.js +68 -0
- package/test/integration/07-task-tools.test.js +74 -0
- package/test/integration/08-task-code-analysis.test.js +69 -0
- package/test/integration/09-memory-analyst.test.js +63 -0
- package/test/integration/10-task-advanced.test.js +85 -0
- package/test/integration/11-sessions-advanced.test.js +84 -0
- package/test/integration/12-assistant-chat-tools.test.js +75 -0
- package/test/integration/13-edge-cases.test.js +99 -0
- package/test/integration/14-cancel.test.js +62 -0
- package/test/integration/15-debug.test.js +106 -0
- package/test/integration/16-memory-api.test.js +83 -0
- package/test/integration/17-settings-api.test.js +41 -0
- package/test/integration/18-tool-search-activation.test.js +119 -0
- package/test/results/.gitkeep +0 -0
- package/test/runner.js +206 -0
- package/test/smoke.js +216 -0
- package/tools/agent_message.js +85 -0
- package/tools/agent_send.js +80 -0
- package/tools/agent_spawn.js +44 -0
- package/tools/bash.js +49 -0
- package/tools/edit_file.js +41 -0
- package/tools/glob.js +64 -0
- package/tools/grep.js +82 -0
- package/tools/list_dir.js +63 -0
- package/tools/log_write.js +31 -0
- package/tools/memory_read.js +38 -0
- package/tools/memory_search.js +65 -0
- package/tools/memory_write.js +42 -0
- package/tools/read_file.js +48 -0
- package/tools/sleep.js +22 -0
- package/tools/task_create.js +41 -0
- package/tools/task_respond.js +37 -0
- package/tools/task_spawn.js +64 -0
- package/tools/task_status.js +39 -0
- package/tools/task_subscribe.js +37 -0
- package/tools/todo_read.js +26 -0
- package/tools/todo_write.js +38 -0
- package/tools/tool_activate.js +24 -0
- package/tools/tool_search.js +24 -0
- package/tools/web_fetch.js +50 -0
- package/tools/web_search.js +52 -0
- package/tools/write_file.js +28 -0
- package/ui/api.js +190 -0
- package/ui/app.js +281 -0
- package/ui/index.html +382 -0
- package/ui/views/agents.js +377 -0
- package/ui/views/chat.js +610 -0
- package/ui/views/connection.js +96 -0
- package/ui/views/daemons.js +129 -0
- package/ui/views/feed.js +194 -0
- package/ui/views/memory.js +263 -0
- package/ui/views/models.js +146 -0
- package/ui/views/sessions.js +314 -0
- package/ui/views/settings.js +142 -0
- package/ui/views/tasks.js +415 -0
- package/utils/context.js +49 -0
- package/utils/id.js +16 -0
- package/utils/models.js +88 -0
- package/utils/paths.js +213 -0
- package/utils/settings.js +172 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Daemon Agents
|
|
2
|
+
|
|
3
|
+
Daemon agents run automatically on a cron schedule. Each scheduled "tick" creates an isolated session, the agent reads its heartbeat file for instructions, runs its task (including tool calls), and the session closes.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Use Cases
|
|
8
|
+
|
|
9
|
+
- **Monitoring** — check system metrics, alert on anomalies
|
|
10
|
+
- **Maintenance** — clean up temp files, rotate logs, prune old data
|
|
11
|
+
- **Reporting** — generate daily/weekly summaries and write them to memory
|
|
12
|
+
- **Data sync** — fetch external data and store it for other agents
|
|
13
|
+
- **Watchdogs** — check if other tasks are stuck and take action
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Configuration
|
|
18
|
+
|
|
19
|
+
Add a `daemon` mode to the agent's `agent.json`:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"name": "monitor",
|
|
24
|
+
"description": "System monitor daemon",
|
|
25
|
+
"model": "moonshotai/kimi-k2.5",
|
|
26
|
+
"modes": {
|
|
27
|
+
"daemon": {
|
|
28
|
+
"enabled": true,
|
|
29
|
+
"cron": "*/5 * * * *",
|
|
30
|
+
"maxIterations": 10,
|
|
31
|
+
"maxDurationSeconds": 60,
|
|
32
|
+
"conflictPolicy": "skip",
|
|
33
|
+
"heartbeatFile": ".veil/heartbeats/monitor.md",
|
|
34
|
+
"alertRouting": "ops-team",
|
|
35
|
+
"permissions": {
|
|
36
|
+
"allow": ["bash", "read_file", "write_file", "memory_write", "web_fetch"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Daemon mode fields
|
|
44
|
+
|
|
45
|
+
| Field | Type | Default | Description |
|
|
46
|
+
|-------|------|---------|-------------|
|
|
47
|
+
| `enabled` | boolean | — | Required. Must be `true`. |
|
|
48
|
+
| `cron` | string | — | Cron expression. Required for auto-start on server boot. |
|
|
49
|
+
| `maxIterations` | integer | settings default | Max LLM loop iterations per tick |
|
|
50
|
+
| `maxDurationSeconds` | integer | settings default | Wall-clock time limit per tick |
|
|
51
|
+
| `conflictPolicy` | string | `"skip"` | What to do if a tick fires while the previous one is still running |
|
|
52
|
+
| `heartbeatFile` | string | `.veil/heartbeats/<name>.md` | Path to the instructions file read each tick |
|
|
53
|
+
| `alertRouting` | string \| string[] | — | Agent(s) to notify on tick error |
|
|
54
|
+
|
|
55
|
+
### Conflict policies
|
|
56
|
+
|
|
57
|
+
| Policy | Behaviour |
|
|
58
|
+
|--------|-----------|
|
|
59
|
+
| `skip` | Ignore the new tick if one is already running (default) |
|
|
60
|
+
| `queue` | Queue the tick; run it once the current one finishes |
|
|
61
|
+
| `restart` | Cancel the running tick and start a fresh one |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Cron Schedule Syntax
|
|
66
|
+
|
|
67
|
+
VeilCLI uses standard 5-field cron expressions:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
* * * * *
|
|
71
|
+
│ │ │ │ └── day of week (0-7, 0=Sunday)
|
|
72
|
+
│ │ │ └──── month (1-12)
|
|
73
|
+
│ │ └────── day of month (1-31)
|
|
74
|
+
│ └──────── hour (0-23)
|
|
75
|
+
└────────── minute (0-59)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Common examples:
|
|
79
|
+
|
|
80
|
+
| Expression | Meaning |
|
|
81
|
+
|------------|---------|
|
|
82
|
+
| `*/5 * * * *` | Every 5 minutes |
|
|
83
|
+
| `0 * * * *` | Every hour (on the hour) |
|
|
84
|
+
| `0 9 * * 1-5` | 9 AM, Monday–Friday |
|
|
85
|
+
| `0 0 * * *` | Midnight every day |
|
|
86
|
+
| `*/30 9-17 * * 1-5` | Every 30 min, 9 AM–5 PM, weekdays |
|
|
87
|
+
| `0 0 1 * *` | First of every month, midnight |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Heartbeat File
|
|
92
|
+
|
|
93
|
+
The heartbeat file contains the instructions the daemon reads at the start of each tick. It is plain Markdown.
|
|
94
|
+
|
|
95
|
+
Default location: `.veil/heartbeats/<agent-name>.md`
|
|
96
|
+
|
|
97
|
+
If the file does not exist, the daemon uses the default instruction:
|
|
98
|
+
```
|
|
99
|
+
You are running a scheduled daemon tick. Check your heartbeat file and perform your scheduled duties.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Example heartbeat file (`.veil/heartbeats/monitor.md`):
|
|
103
|
+
```markdown
|
|
104
|
+
# System Monitor — Tick Instructions
|
|
105
|
+
|
|
106
|
+
Each tick, perform these checks in order:
|
|
107
|
+
|
|
108
|
+
1. Run `df -h /` to check disk usage
|
|
109
|
+
2. Run `free -m` to check memory usage
|
|
110
|
+
3. Run `uptime` to get load averages
|
|
111
|
+
4. If disk usage > 90%, write a warning to global memory
|
|
112
|
+
5. If load average > 4.0, write a warning to global memory
|
|
113
|
+
6. Write a brief summary of all findings to global memory with today's date
|
|
114
|
+
|
|
115
|
+
Keep your response concise. Only escalate to the ops-team agent if a threshold is exceeded.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Update the heartbeat file at any time to change what the daemon does — no server restart required.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Auto-start on Server Boot
|
|
123
|
+
|
|
124
|
+
Daemons with a `cron` field are **auto-started** when `veil start` runs. No manual intervention needed.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
veil start
|
|
128
|
+
# VeilCLI v0.1.0 started on port 5050
|
|
129
|
+
# Auto-started daemon: monitor
|
|
130
|
+
# Auto-started daemon: cleanup
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Manual Control via API
|
|
136
|
+
|
|
137
|
+
Start, stop, and trigger daemons without restarting the server:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Start scheduling
|
|
141
|
+
curl -X POST http://localhost:5050/agents/monitor/daemon/start
|
|
142
|
+
|
|
143
|
+
# Stop scheduling
|
|
144
|
+
curl -X POST http://localhost:5050/agents/monitor/daemon/stop
|
|
145
|
+
|
|
146
|
+
# Trigger an immediate tick (async — returns right away)
|
|
147
|
+
curl -X POST http://localhost:5050/agents/monitor/daemon/trigger
|
|
148
|
+
|
|
149
|
+
# Check active daemons
|
|
150
|
+
curl http://localhost:5050/daemons
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
See [Daemons API reference](../api/06-daemons.md).
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Daemon Session Lifecycle
|
|
158
|
+
|
|
159
|
+
Each tick:
|
|
160
|
+
1. A new session is created (`mode: "daemon"`)
|
|
161
|
+
2. The heartbeat file is read
|
|
162
|
+
3. The agent runs its loop (LLM + tool calls)
|
|
163
|
+
4. The session is closed
|
|
164
|
+
5. The result is available in the sessions list
|
|
165
|
+
|
|
166
|
+
Daemon sessions are short-lived and auto-closed. Do not try to continue a daemon session via the chat endpoint.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Complete Example: Daily Summary Daemon
|
|
171
|
+
|
|
172
|
+
**`.veil/agents/summariser/agent.json`**:
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"name": "summariser",
|
|
176
|
+
"description": "Daily project activity summariser",
|
|
177
|
+
"model": "moonshotai/kimi-k2.5",
|
|
178
|
+
"modes": {
|
|
179
|
+
"daemon": {
|
|
180
|
+
"enabled": true,
|
|
181
|
+
"cron": "0 18 * * 1-5",
|
|
182
|
+
"maxIterations": 8,
|
|
183
|
+
"maxDurationSeconds": 90,
|
|
184
|
+
"conflictPolicy": "skip",
|
|
185
|
+
"permissions": {
|
|
186
|
+
"allow": ["read_file", "list_dir", "bash", "memory_read", "memory_write"]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**`.veil/agents/summariser/AGENT.md`**:
|
|
194
|
+
```markdown
|
|
195
|
+
You are Summariser, an agent that runs at 6 PM on weekdays.
|
|
196
|
+
|
|
197
|
+
Your job is to:
|
|
198
|
+
1. Read today's task history from memory
|
|
199
|
+
2. List any recently modified files in $PROJECT_ROOT
|
|
200
|
+
3. Write a brief daily summary to global memory
|
|
201
|
+
|
|
202
|
+
Keep summaries factual and concise (3-5 bullet points max).
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**`.veil/heartbeats/summariser.md`**:
|
|
206
|
+
```markdown
|
|
207
|
+
# Daily Summary — 6 PM Run
|
|
208
|
+
|
|
209
|
+
1. Run `git log --oneline --since="24 hours ago"` to see today's commits
|
|
210
|
+
2. Check global memory for any notes added today
|
|
211
|
+
3. Write a daily summary entry to global memory including:
|
|
212
|
+
- Number of commits
|
|
213
|
+
- Key changes (from commit messages)
|
|
214
|
+
- Any flagged issues from memory
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Start the server** — daemon auto-starts:
|
|
218
|
+
```bash
|
|
219
|
+
veil start
|
|
220
|
+
# Auto-started daemon: summariser
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Or trigger manually**:
|
|
224
|
+
```bash
|
|
225
|
+
curl -X POST http://localhost:5050/agents/summariser/daemon/trigger
|
|
226
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# VeilCLI — Project Guide
|
|
2
|
+
|
|
3
|
+
This guide covers everything you need to set up, configure, and operate VeilCLI.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
| Doc | Topic |
|
|
10
|
+
|-----|-------|
|
|
11
|
+
| [01-quickstart.md](01-quickstart.md) | Install, create your first agent, run your first request |
|
|
12
|
+
| [02-folder-structure.md](02-folder-structure.md) | The `.veil/` workspace layout explained |
|
|
13
|
+
| [03-configuration.md](03-configuration.md) | `settings.json` + `auth.json` — every field |
|
|
14
|
+
| [04-agents.md](04-agents.md) | `agent.json`, `AGENT.md`, and all 4 agent modes |
|
|
15
|
+
| [05-cli.md](05-cli.md) | `veil` CLI commands reference |
|
|
16
|
+
| [06-tools.md](06-tools.md) | All 24 built-in tools |
|
|
17
|
+
| [07-permissions.md](07-permissions.md) | Tool permission system — allow/deny/ask |
|
|
18
|
+
| [08-memory.md](08-memory.md) | Persistent memory and context compaction |
|
|
19
|
+
| [09-multi-agent.md](09-multi-agent.md) | Multi-agent orchestration patterns |
|
|
20
|
+
| [10-daemons.md](10-daemons.md) | Daemon / cron agents |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Architecture Overview
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────────────────────────────┐
|
|
28
|
+
│ REST API (Express) │
|
|
29
|
+
│ /agents /tasks /sessions /daemons │
|
|
30
|
+
└──────────────────┬──────────────────────┘
|
|
31
|
+
│
|
|
32
|
+
┌──────────────────▼──────────────────────┐
|
|
33
|
+
│ Core Runtime │
|
|
34
|
+
│ router.js → loop.js → tool registry │
|
|
35
|
+
│ prompt assembly → LLM client │
|
|
36
|
+
└──────────┬────────────────┬────────────┘
|
|
37
|
+
│ │
|
|
38
|
+
┌──────────▼──────┐ ┌──────▼──────────┐
|
|
39
|
+
│ SQLite (db) │ │ File system │
|
|
40
|
+
│ sessions │ │ .veil/agents/ │
|
|
41
|
+
│ tasks │ │ .veil/memory/ │
|
|
42
|
+
│ messages │ │ .veil/auth.json│
|
|
43
|
+
│ events │ │ settings.json │
|
|
44
|
+
│ todos │ └─────────────────┘
|
|
45
|
+
└─────────────────┘
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Key concepts:**
|
|
49
|
+
- **Workspace** — any directory with a `.veil/` folder. One server instance per workspace.
|
|
50
|
+
- **Agent** — a folder in `.veil/agents/<name>/` with `agent.json` + `AGENT.md`.
|
|
51
|
+
- **Session** — a conversation thread. Created automatically per chat turn or task run.
|
|
52
|
+
- **Task** — an async agent run. Returns a `taskId` immediately; poll for completion.
|
|
53
|
+
- **Daemon** — an agent that runs on a cron schedule.
|