opc-agent 1.2.1 → 1.3.0
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/CONTRIBUTING.md +75 -75
- package/README.md +235 -358
- package/README.zh-CN.md +415 -415
- package/dist/channels/web.js +256 -256
- package/dist/core/knowledge.d.ts +5 -0
- package/dist/core/knowledge.js +39 -2
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -31
- package/dist/index.d.ts +0 -4
- package/dist/index.js +1 -7
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +158 -14
- package/dist/schema/oad.d.ts +3 -3
- package/dist/templates/code-reviewer.js +5 -5
- package/dist/templates/customer-service.js +2 -2
- package/dist/templates/data-analyst.js +5 -5
- package/dist/templates/knowledge-base.js +2 -2
- package/dist/templates/sales-assistant.js +4 -4
- package/dist/templates/teacher.js +6 -6
- package/docs/.vitepress/config.ts +103 -103
- package/docs/api/cli.md +48 -48
- package/docs/api/oad-schema.md +64 -64
- package/docs/api/sdk.md +80 -80
- package/docs/guide/concepts.md +51 -51
- package/docs/guide/configuration.md +79 -79
- package/docs/guide/deployment.md +42 -42
- package/docs/guide/getting-started.md +44 -44
- package/docs/guide/templates.md +28 -28
- package/docs/guide/testing.md +84 -84
- package/docs/index.md +27 -27
- package/docs/zh/api/cli.md +54 -54
- package/docs/zh/api/oad-schema.md +87 -87
- package/docs/zh/api/sdk.md +102 -102
- package/docs/zh/guide/concepts.md +104 -104
- package/docs/zh/guide/configuration.md +135 -135
- package/docs/zh/guide/deployment.md +81 -81
- package/docs/zh/guide/getting-started.md +82 -82
- package/docs/zh/guide/templates.md +84 -84
- package/docs/zh/guide/testing.md +88 -88
- package/docs/zh/index.md +27 -27
- package/examples/customer-service-demo/README.md +90 -90
- package/examples/customer-service-demo/oad.yaml +107 -107
- package/package.json +50 -50
- package/src/analytics/index.ts +66 -66
- package/src/channels/discord.ts +192 -192
- package/src/channels/email.ts +177 -177
- package/src/channels/feishu.ts +236 -236
- package/src/channels/index.ts +15 -15
- package/src/channels/slack.ts +160 -160
- package/src/channels/telegram.ts +90 -90
- package/src/channels/voice.ts +106 -106
- package/src/channels/webhook.ts +199 -199
- package/src/channels/websocket.ts +87 -87
- package/src/channels/wechat.ts +149 -149
- package/src/cli.ts +119 -1
- package/src/core/a2a.ts +143 -143
- package/src/core/agent.ts +152 -152
- package/src/core/analytics-engine.ts +186 -186
- package/src/core/auth.ts +57 -57
- package/src/core/cache.ts +141 -141
- package/src/core/compose.ts +77 -77
- package/src/core/config.ts +14 -14
- package/src/core/errors.ts +148 -148
- package/src/core/hitl.ts +138 -138
- package/src/core/logger.ts +57 -57
- package/src/core/orchestrator.ts +215 -215
- package/src/core/performance.ts +187 -187
- package/src/core/rate-limiter.ts +128 -128
- package/src/core/room.ts +109 -109
- package/src/core/runtime.ts +152 -152
- package/src/core/sandbox.ts +101 -101
- package/src/core/security.ts +171 -171
- package/src/core/types.ts +68 -68
- package/src/core/versioning.ts +106 -106
- package/src/core/watch.ts +178 -178
- package/src/core/workflow.ts +235 -235
- package/src/deploy/hermes.ts +156 -156
- package/src/deploy/openclaw.ts +200 -200
- package/src/i18n/index.ts +216 -216
- package/src/index.ts +6 -2
- package/src/memory/deepbrain.ts +108 -108
- package/src/memory/index.ts +34 -34
- package/src/plugins/index.ts +208 -208
- package/src/schema/oad.ts +154 -155
- package/src/skills/base.ts +16 -16
- package/src/skills/document.ts +100 -100
- package/src/skills/http.ts +35 -35
- package/src/skills/index.ts +27 -27
- package/src/skills/scheduler.ts +80 -80
- package/src/skills/webhook-trigger.ts +59 -59
- package/src/templates/code-reviewer.ts +30 -34
- package/src/templates/customer-service.ts +76 -80
- package/src/templates/data-analyst.ts +66 -70
- package/src/templates/executive-assistant.ts +71 -71
- package/src/templates/financial-advisor.ts +60 -60
- package/src/templates/knowledge-base.ts +27 -31
- package/src/templates/legal-assistant.ts +71 -71
- package/src/templates/sales-assistant.ts +75 -79
- package/src/templates/teacher.ts +75 -79
- package/src/testing/index.ts +181 -181
- package/src/tools/calculator.ts +73 -73
- package/src/tools/datetime.ts +149 -149
- package/src/tools/json-transform.ts +187 -187
- package/src/tools/mcp.ts +76 -76
- package/src/tools/text-analysis.ts +116 -116
- package/src/traces/index.ts +132 -0
- package/templates/Dockerfile +15 -15
- package/templates/code-reviewer/README.md +27 -27
- package/templates/code-reviewer/oad.yaml +41 -41
- package/templates/customer-service/README.md +22 -22
- package/templates/customer-service/oad.yaml +36 -36
- package/templates/docker-compose.yml +21 -21
- package/templates/ecommerce-assistant/README.md +45 -45
- package/templates/ecommerce-assistant/oad.yaml +47 -47
- package/templates/knowledge-base/README.md +28 -28
- package/templates/knowledge-base/oad.yaml +38 -38
- package/templates/sales-assistant/README.md +26 -26
- package/templates/sales-assistant/oad.yaml +43 -43
- package/templates/tech-support/README.md +43 -43
- package/templates/tech-support/oad.yaml +45 -45
- package/tests/a2a.test.ts +66 -66
- package/tests/agent.test.ts +72 -72
- package/tests/analytics.test.ts +50 -50
- package/tests/channel.test.ts +39 -39
- package/tests/e2e.test.ts +134 -134
- package/tests/errors.test.ts +83 -83
- package/tests/hitl.test.ts +71 -71
- package/tests/i18n.test.ts +41 -41
- package/tests/mcp.test.ts +54 -54
- package/tests/oad.test.ts +68 -68
- package/tests/performance.test.ts +115 -115
- package/tests/plugin.test.ts +74 -74
- package/tests/room.test.ts +106 -106
- package/tests/runtime.test.ts +42 -42
- package/tests/sandbox.test.ts +46 -46
- package/tests/security.test.ts +60 -60
- package/tests/templates.test.ts +77 -77
- package/tests/v070.test.ts +76 -76
- package/tests/versioning.test.ts +75 -75
- package/tests/voice.test.ts +61 -61
- package/tests/webhook.test.ts +29 -29
- package/tests/workflow.test.ts +143 -143
- package/tsconfig.json +19 -19
- package/vitest.config.ts +9 -9
- package/dist/core/streaming.d.ts +0 -56
- package/dist/core/streaming.js +0 -160
- package/dist/tools/gateway.d.ts +0 -28
- package/dist/tools/gateway.js +0 -177
- package/src/dtv/data.ts +0 -29
- package/src/dtv/trust.ts +0 -43
- package/src/dtv/value.ts +0 -47
- package/src/marketplace/index.ts +0 -223
package/docs/guide/concepts.md
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
# Core Concepts
|
|
2
|
-
|
|
3
|
-
## Agent
|
|
4
|
-
|
|
5
|
-
An Agent is an autonomous AI entity with a defined lifecycle:
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
init → ready → running → stopped
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Each agent has a name, system prompt, skills, channels, and memory.
|
|
12
|
-
|
|
13
|
-
## Skill
|
|
14
|
-
|
|
15
|
-
Skills are modular capabilities an agent can use. Each skill:
|
|
16
|
-
- Has a `name` and `description`
|
|
17
|
-
- Receives the conversation context and current message
|
|
18
|
-
- Returns whether it handled the message and with what confidence
|
|
19
|
-
|
|
20
|
-
Built-in skills include FAQ lookup and human handoff.
|
|
21
|
-
|
|
22
|
-
## Channel
|
|
23
|
-
|
|
24
|
-
Channels are the interfaces through which users interact with agents:
|
|
25
|
-
- **Web** — HTTP API with `/chat` endpoint and SSE streaming
|
|
26
|
-
- More channels (WebSocket, CLI, Slack) coming soon
|
|
27
|
-
|
|
28
|
-
## Memory
|
|
29
|
-
|
|
30
|
-
Agents have two types of memory:
|
|
31
|
-
- **Short-term** — Conversation history within a session
|
|
32
|
-
- **Long-term** — Persistent knowledge across sessions (coming soon)
|
|
33
|
-
|
|
34
|
-
## DTV (Data / Trust / Value)
|
|
35
|
-
|
|
36
|
-
The DTV framework governs agent operations:
|
|
37
|
-
|
|
38
|
-
### Data
|
|
39
|
-
Read-only access to business data. Agents can read configurations but cannot modify source systems.
|
|
40
|
-
|
|
41
|
-
### Trust
|
|
42
|
-
Progressive trust levels control agent capabilities:
|
|
43
|
-
- **sandbox** — No network, limited capabilities
|
|
44
|
-
- **verified** — Identity confirmed, basic capabilities
|
|
45
|
-
- **certified** — Security audited, full capabilities
|
|
46
|
-
- **listed** — Published in OPC marketplace
|
|
47
|
-
|
|
48
|
-
### Value
|
|
49
|
-
Metrics tracking for agent performance and ROI:
|
|
50
|
-
- Response time, satisfaction scores, resolution rates
|
|
51
|
-
- Automated reporting and dashboards
|
|
1
|
+
# Core Concepts
|
|
2
|
+
|
|
3
|
+
## Agent
|
|
4
|
+
|
|
5
|
+
An Agent is an autonomous AI entity with a defined lifecycle:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
init → ready → running → stopped
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Each agent has a name, system prompt, skills, channels, and memory.
|
|
12
|
+
|
|
13
|
+
## Skill
|
|
14
|
+
|
|
15
|
+
Skills are modular capabilities an agent can use. Each skill:
|
|
16
|
+
- Has a `name` and `description`
|
|
17
|
+
- Receives the conversation context and current message
|
|
18
|
+
- Returns whether it handled the message and with what confidence
|
|
19
|
+
|
|
20
|
+
Built-in skills include FAQ lookup and human handoff.
|
|
21
|
+
|
|
22
|
+
## Channel
|
|
23
|
+
|
|
24
|
+
Channels are the interfaces through which users interact with agents:
|
|
25
|
+
- **Web** — HTTP API with `/chat` endpoint and SSE streaming
|
|
26
|
+
- More channels (WebSocket, CLI, Slack) coming soon
|
|
27
|
+
|
|
28
|
+
## Memory
|
|
29
|
+
|
|
30
|
+
Agents have two types of memory:
|
|
31
|
+
- **Short-term** — Conversation history within a session
|
|
32
|
+
- **Long-term** — Persistent knowledge across sessions (coming soon)
|
|
33
|
+
|
|
34
|
+
## DTV (Data / Trust / Value)
|
|
35
|
+
|
|
36
|
+
The DTV framework governs agent operations:
|
|
37
|
+
|
|
38
|
+
### Data
|
|
39
|
+
Read-only access to business data. Agents can read configurations but cannot modify source systems.
|
|
40
|
+
|
|
41
|
+
### Trust
|
|
42
|
+
Progressive trust levels control agent capabilities:
|
|
43
|
+
- **sandbox** — No network, limited capabilities
|
|
44
|
+
- **verified** — Identity confirmed, basic capabilities
|
|
45
|
+
- **certified** — Security audited, full capabilities
|
|
46
|
+
- **listed** — Published in OPC marketplace
|
|
47
|
+
|
|
48
|
+
### Value
|
|
49
|
+
Metrics tracking for agent performance and ROI:
|
|
50
|
+
- Response time, satisfaction scores, resolution rates
|
|
51
|
+
- Automated reporting and dashboards
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# Configuration
|
|
2
|
-
|
|
3
|
-
## OAD File Structure
|
|
4
|
-
|
|
5
|
-
The `oad.yaml` file is the heart of your agent configuration:
|
|
6
|
-
|
|
7
|
-
```yaml
|
|
8
|
-
apiVersion: opc/v1
|
|
9
|
-
kind: Agent
|
|
10
|
-
metadata:
|
|
11
|
-
name: my-agent
|
|
12
|
-
version: 1.0.0
|
|
13
|
-
description: My AI agent
|
|
14
|
-
spec:
|
|
15
|
-
provider:
|
|
16
|
-
default: openai
|
|
17
|
-
allowed: [openai, deepseek, qwen]
|
|
18
|
-
model: gpt-4o-mini
|
|
19
|
-
systemPrompt: "You are a helpful assistant."
|
|
20
|
-
skills: []
|
|
21
|
-
channels:
|
|
22
|
-
- type: web
|
|
23
|
-
port: 3000
|
|
24
|
-
memory:
|
|
25
|
-
shortTerm: true
|
|
26
|
-
longTerm: false
|
|
27
|
-
testing:
|
|
28
|
-
cases:
|
|
29
|
-
- name: greeting-test
|
|
30
|
-
input: "Hello"
|
|
31
|
-
expect:
|
|
32
|
-
contains: ["hello", "help"]
|
|
33
|
-
maxLatencyMs: 5000
|
|
34
|
-
rateLimits:
|
|
35
|
-
perUser:
|
|
36
|
-
maxRequests: 60
|
|
37
|
-
windowMs: 60000
|
|
38
|
-
perProvider:
|
|
39
|
-
maxRequests: 100
|
|
40
|
-
windowMs: 60000
|
|
41
|
-
cache:
|
|
42
|
-
enabled: true
|
|
43
|
-
ttlMs: 3600000
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Environment Variables
|
|
47
|
-
|
|
48
|
-
| Variable | Description | Default |
|
|
49
|
-
|----------|-------------|---------|
|
|
50
|
-
| `OPC_LLM_API_KEY` | LLM API key | — |
|
|
51
|
-
| `OPC_LLM_BASE_URL` | LLM API base URL | `https://api.openai.com/v1` |
|
|
52
|
-
| `OPC_LLM_MODEL` | Model name | `gpt-4o-mini` |
|
|
53
|
-
|
|
54
|
-
## Rate Limiting
|
|
55
|
-
|
|
56
|
-
Configure per-user and per-provider rate limits in `oad.yaml`:
|
|
57
|
-
|
|
58
|
-
```yaml
|
|
59
|
-
spec:
|
|
60
|
-
rateLimits:
|
|
61
|
-
perUser:
|
|
62
|
-
maxRequests: 60
|
|
63
|
-
windowMs: 60000
|
|
64
|
-
perProvider:
|
|
65
|
-
maxRequests: 100
|
|
66
|
-
windowMs: 60000
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Caching
|
|
70
|
-
|
|
71
|
-
Enable LLM response caching to reduce API costs:
|
|
72
|
-
|
|
73
|
-
```yaml
|
|
74
|
-
spec:
|
|
75
|
-
cache:
|
|
76
|
-
enabled: true
|
|
77
|
-
ttlMs: 3600000 # 1 hour
|
|
78
|
-
maxEntries: 1000
|
|
79
|
-
```
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## OAD File Structure
|
|
4
|
+
|
|
5
|
+
The `oad.yaml` file is the heart of your agent configuration:
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
apiVersion: opc/v1
|
|
9
|
+
kind: Agent
|
|
10
|
+
metadata:
|
|
11
|
+
name: my-agent
|
|
12
|
+
version: 1.0.0
|
|
13
|
+
description: My AI agent
|
|
14
|
+
spec:
|
|
15
|
+
provider:
|
|
16
|
+
default: openai
|
|
17
|
+
allowed: [openai, deepseek, qwen]
|
|
18
|
+
model: gpt-4o-mini
|
|
19
|
+
systemPrompt: "You are a helpful assistant."
|
|
20
|
+
skills: []
|
|
21
|
+
channels:
|
|
22
|
+
- type: web
|
|
23
|
+
port: 3000
|
|
24
|
+
memory:
|
|
25
|
+
shortTerm: true
|
|
26
|
+
longTerm: false
|
|
27
|
+
testing:
|
|
28
|
+
cases:
|
|
29
|
+
- name: greeting-test
|
|
30
|
+
input: "Hello"
|
|
31
|
+
expect:
|
|
32
|
+
contains: ["hello", "help"]
|
|
33
|
+
maxLatencyMs: 5000
|
|
34
|
+
rateLimits:
|
|
35
|
+
perUser:
|
|
36
|
+
maxRequests: 60
|
|
37
|
+
windowMs: 60000
|
|
38
|
+
perProvider:
|
|
39
|
+
maxRequests: 100
|
|
40
|
+
windowMs: 60000
|
|
41
|
+
cache:
|
|
42
|
+
enabled: true
|
|
43
|
+
ttlMs: 3600000
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Environment Variables
|
|
47
|
+
|
|
48
|
+
| Variable | Description | Default |
|
|
49
|
+
|----------|-------------|---------|
|
|
50
|
+
| `OPC_LLM_API_KEY` | LLM API key | — |
|
|
51
|
+
| `OPC_LLM_BASE_URL` | LLM API base URL | `https://api.openai.com/v1` |
|
|
52
|
+
| `OPC_LLM_MODEL` | Model name | `gpt-4o-mini` |
|
|
53
|
+
|
|
54
|
+
## Rate Limiting
|
|
55
|
+
|
|
56
|
+
Configure per-user and per-provider rate limits in `oad.yaml`:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
spec:
|
|
60
|
+
rateLimits:
|
|
61
|
+
perUser:
|
|
62
|
+
maxRequests: 60
|
|
63
|
+
windowMs: 60000
|
|
64
|
+
perProvider:
|
|
65
|
+
maxRequests: 100
|
|
66
|
+
windowMs: 60000
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Caching
|
|
70
|
+
|
|
71
|
+
Enable LLM response caching to reduce API costs:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
spec:
|
|
75
|
+
cache:
|
|
76
|
+
enabled: true
|
|
77
|
+
ttlMs: 3600000 # 1 hour
|
|
78
|
+
maxEntries: 1000
|
|
79
|
+
```
|
package/docs/guide/deployment.md
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
# Deployment
|
|
2
|
-
|
|
3
|
-
## Docker
|
|
4
|
-
|
|
5
|
-
Every `opc init` project includes a `Dockerfile` and `docker-compose.yml`:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
docker compose up -d
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Deploy to OpenClaw
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
opc deploy --target openclaw
|
|
15
|
-
opc deploy --target openclaw --install # Also register in config
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Deploy to Hermes
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
opc deploy --target hermes
|
|
22
|
-
opc deploy --target hermes --output ./my-hermes-deploy
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Environment Variables
|
|
26
|
-
|
|
27
|
-
Set your API keys in `.env`:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
OPC_LLM_API_KEY=sk-xxx
|
|
31
|
-
OPC_LLM_BASE_URL=https://api.openai.com/v1
|
|
32
|
-
OPC_LLM_MODEL=gpt-4o-mini
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Production Checklist
|
|
36
|
-
|
|
37
|
-
- [ ] Set proper API keys in `.env`
|
|
38
|
-
- [ ] Configure rate limits in `oad.yaml`
|
|
39
|
-
- [ ] Enable caching for cost reduction
|
|
40
|
-
- [ ] Set up analytics monitoring
|
|
41
|
-
- [ ] Run `opc test` before deployment
|
|
42
|
-
- [ ] Review trust/DTV settings
|
|
1
|
+
# Deployment
|
|
2
|
+
|
|
3
|
+
## Docker
|
|
4
|
+
|
|
5
|
+
Every `opc init` project includes a `Dockerfile` and `docker-compose.yml`:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
docker compose up -d
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Deploy to OpenClaw
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
opc deploy --target openclaw
|
|
15
|
+
opc deploy --target openclaw --install # Also register in config
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Deploy to Hermes
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
opc deploy --target hermes
|
|
22
|
+
opc deploy --target hermes --output ./my-hermes-deploy
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Environment Variables
|
|
26
|
+
|
|
27
|
+
Set your API keys in `.env`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
OPC_LLM_API_KEY=sk-xxx
|
|
31
|
+
OPC_LLM_BASE_URL=https://api.openai.com/v1
|
|
32
|
+
OPC_LLM_MODEL=gpt-4o-mini
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Production Checklist
|
|
36
|
+
|
|
37
|
+
- [ ] Set proper API keys in `.env`
|
|
38
|
+
- [ ] Configure rate limits in `oad.yaml`
|
|
39
|
+
- [ ] Enable caching for cost reduction
|
|
40
|
+
- [ ] Set up analytics monitoring
|
|
41
|
+
- [ ] Run `opc test` before deployment
|
|
42
|
+
- [ ] Review trust/DTV settings
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
# Getting Started
|
|
2
|
-
|
|
3
|
-
## Installation
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
npm install -g opc-agent
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
## Create Your First Agent
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Initialize a new project
|
|
13
|
-
opc init my-agent --template customer-service
|
|
14
|
-
|
|
15
|
-
# Enter the project
|
|
16
|
-
cd my-agent
|
|
17
|
-
|
|
18
|
-
# Validate the OAD definition
|
|
19
|
-
opc build
|
|
20
|
-
|
|
21
|
-
# Run in sandbox mode
|
|
22
|
-
opc test
|
|
23
|
-
|
|
24
|
-
# Start the agent
|
|
25
|
-
opc run
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Test the Agent
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
curl -X POST http://localhost:3000/chat \
|
|
32
|
-
-H "Content-Type: application/json" \
|
|
33
|
-
-d '{"message": "What are your business hours?"}'
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Project Structure
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
my-agent/
|
|
40
|
-
├── oad.yaml # Agent definition (OAD Schema v1)
|
|
41
|
-
└── README.md
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
The `oad.yaml` file defines everything about your agent: its identity, skills, channels, and configuration.
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install -g opc-agent
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Create Your First Agent
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Initialize a new project
|
|
13
|
+
opc init my-agent --template customer-service
|
|
14
|
+
|
|
15
|
+
# Enter the project
|
|
16
|
+
cd my-agent
|
|
17
|
+
|
|
18
|
+
# Validate the OAD definition
|
|
19
|
+
opc build
|
|
20
|
+
|
|
21
|
+
# Run in sandbox mode
|
|
22
|
+
opc test
|
|
23
|
+
|
|
24
|
+
# Start the agent
|
|
25
|
+
opc run
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Test the Agent
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
curl -X POST http://localhost:3000/chat \
|
|
32
|
+
-H "Content-Type: application/json" \
|
|
33
|
+
-d '{"message": "What are your business hours?"}'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Project Structure
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
my-agent/
|
|
40
|
+
├── oad.yaml # Agent definition (OAD Schema v1)
|
|
41
|
+
└── README.md
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The `oad.yaml` file defines everything about your agent: its identity, skills, channels, and configuration.
|
package/docs/guide/templates.md
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Templates
|
|
2
|
-
|
|
3
|
-
Templates are pre-built agent configurations for common use cases.
|
|
4
|
-
|
|
5
|
-
## Customer Service
|
|
6
|
-
|
|
7
|
-
A complete customer service agent with:
|
|
8
|
-
- FAQ lookup skill
|
|
9
|
-
- Human handoff when confidence is low
|
|
10
|
-
- Web channel for HTTP integration
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
opc init my-service --template customer-service
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Creating Custom Templates
|
|
17
|
-
|
|
18
|
-
Templates are OAD YAML files with optional skill implementations. To create your own:
|
|
19
|
-
|
|
20
|
-
1. Define `oad.yaml` with your agent specification
|
|
21
|
-
2. Implement custom skills extending `BaseSkill`
|
|
22
|
-
3. Package as a directory with `oad.yaml` + `README.md`
|
|
23
|
-
|
|
24
|
-
More templates coming soon:
|
|
25
|
-
- Sales Assistant
|
|
26
|
-
- Internal IT Help Desk
|
|
27
|
-
- Data Analysis Agent
|
|
28
|
-
- Content Moderation Agent
|
|
1
|
+
# Templates
|
|
2
|
+
|
|
3
|
+
Templates are pre-built agent configurations for common use cases.
|
|
4
|
+
|
|
5
|
+
## Customer Service
|
|
6
|
+
|
|
7
|
+
A complete customer service agent with:
|
|
8
|
+
- FAQ lookup skill
|
|
9
|
+
- Human handoff when confidence is low
|
|
10
|
+
- Web channel for HTTP integration
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
opc init my-service --template customer-service
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Creating Custom Templates
|
|
17
|
+
|
|
18
|
+
Templates are OAD YAML files with optional skill implementations. To create your own:
|
|
19
|
+
|
|
20
|
+
1. Define `oad.yaml` with your agent specification
|
|
21
|
+
2. Implement custom skills extending `BaseSkill`
|
|
22
|
+
3. Package as a directory with `oad.yaml` + `README.md`
|
|
23
|
+
|
|
24
|
+
More templates coming soon:
|
|
25
|
+
- Sales Assistant
|
|
26
|
+
- Internal IT Help Desk
|
|
27
|
+
- Data Analysis Agent
|
|
28
|
+
- Content Moderation Agent
|
package/docs/guide/testing.md
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
# Testing
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
OPC Agent includes a built-in testing framework. Define test cases in your `oad.yaml` or a separate `tests.yaml` file, then run them with `opc test`.
|
|
6
|
-
|
|
7
|
-
## Defining Tests in OAD
|
|
8
|
-
|
|
9
|
-
```yaml
|
|
10
|
-
spec:
|
|
11
|
-
testing:
|
|
12
|
-
cases:
|
|
13
|
-
- name: greeting
|
|
14
|
-
input: "Hello!"
|
|
15
|
-
expect:
|
|
16
|
-
contains: ["hello", "help"]
|
|
17
|
-
maxLatencyMs: 5000
|
|
18
|
-
|
|
19
|
-
- name: product-question
|
|
20
|
-
input: "What are your pricing plans?"
|
|
21
|
-
expect:
|
|
22
|
-
contains: ["pricing", "plan"]
|
|
23
|
-
notContains: ["error"]
|
|
24
|
-
|
|
25
|
-
- name: edge-case-empty
|
|
26
|
-
input: ""
|
|
27
|
-
expect:
|
|
28
|
-
maxLatencyMs: 2000
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Separate Test File
|
|
32
|
-
|
|
33
|
-
Create `tests.yaml` alongside your `oad.yaml`:
|
|
34
|
-
|
|
35
|
-
```yaml
|
|
36
|
-
cases:
|
|
37
|
-
- name: smoke-test
|
|
38
|
-
input: "Hi there"
|
|
39
|
-
expect:
|
|
40
|
-
maxLatencyMs: 10000
|
|
41
|
-
- name: faq-check
|
|
42
|
-
input: "What is your return policy?"
|
|
43
|
-
expect:
|
|
44
|
-
contains: ["return", "refund"]
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Running Tests
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Run tests
|
|
51
|
-
opc test
|
|
52
|
-
|
|
53
|
-
# JSON output
|
|
54
|
-
opc test --json
|
|
55
|
-
|
|
56
|
-
# Custom OAD file
|
|
57
|
-
opc test -f my-agent.yaml
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Test Report
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
═══════════════════════════════════════════
|
|
64
|
-
OPC Agent Test Report
|
|
65
|
-
═══════════════════════════════════════════
|
|
66
|
-
|
|
67
|
-
✔ [PASS] greeting (245ms)
|
|
68
|
-
✔ [PASS] product-question (312ms)
|
|
69
|
-
✘ [FAIL] edge-case (5120ms)
|
|
70
|
-
→ Latency 5120ms exceeded max 2000ms
|
|
71
|
-
|
|
72
|
-
───────────────────────────────────────────
|
|
73
|
-
Total: 3 Passed: 2 Failed: 1 Duration: 5677ms
|
|
74
|
-
───────────────────────────────────────────
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Assertions
|
|
78
|
-
|
|
79
|
-
| Assertion | Description |
|
|
80
|
-
|-----------|-------------|
|
|
81
|
-
| `contains` | Response must include these strings (case-insensitive) |
|
|
82
|
-
| `notContains` | Response must NOT include these strings |
|
|
83
|
-
| `toolCalled` | Specified tools must have been invoked |
|
|
84
|
-
| `maxLatencyMs` | Response must complete within this time |
|
|
1
|
+
# Testing
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
OPC Agent includes a built-in testing framework. Define test cases in your `oad.yaml` or a separate `tests.yaml` file, then run them with `opc test`.
|
|
6
|
+
|
|
7
|
+
## Defining Tests in OAD
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
spec:
|
|
11
|
+
testing:
|
|
12
|
+
cases:
|
|
13
|
+
- name: greeting
|
|
14
|
+
input: "Hello!"
|
|
15
|
+
expect:
|
|
16
|
+
contains: ["hello", "help"]
|
|
17
|
+
maxLatencyMs: 5000
|
|
18
|
+
|
|
19
|
+
- name: product-question
|
|
20
|
+
input: "What are your pricing plans?"
|
|
21
|
+
expect:
|
|
22
|
+
contains: ["pricing", "plan"]
|
|
23
|
+
notContains: ["error"]
|
|
24
|
+
|
|
25
|
+
- name: edge-case-empty
|
|
26
|
+
input: ""
|
|
27
|
+
expect:
|
|
28
|
+
maxLatencyMs: 2000
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Separate Test File
|
|
32
|
+
|
|
33
|
+
Create `tests.yaml` alongside your `oad.yaml`:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
cases:
|
|
37
|
+
- name: smoke-test
|
|
38
|
+
input: "Hi there"
|
|
39
|
+
expect:
|
|
40
|
+
maxLatencyMs: 10000
|
|
41
|
+
- name: faq-check
|
|
42
|
+
input: "What is your return policy?"
|
|
43
|
+
expect:
|
|
44
|
+
contains: ["return", "refund"]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Running Tests
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Run tests
|
|
51
|
+
opc test
|
|
52
|
+
|
|
53
|
+
# JSON output
|
|
54
|
+
opc test --json
|
|
55
|
+
|
|
56
|
+
# Custom OAD file
|
|
57
|
+
opc test -f my-agent.yaml
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Test Report
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
═══════════════════════════════════════════
|
|
64
|
+
OPC Agent Test Report
|
|
65
|
+
═══════════════════════════════════════════
|
|
66
|
+
|
|
67
|
+
✔ [PASS] greeting (245ms)
|
|
68
|
+
✔ [PASS] product-question (312ms)
|
|
69
|
+
✘ [FAIL] edge-case (5120ms)
|
|
70
|
+
→ Latency 5120ms exceeded max 2000ms
|
|
71
|
+
|
|
72
|
+
───────────────────────────────────────────
|
|
73
|
+
Total: 3 Passed: 2 Failed: 1 Duration: 5677ms
|
|
74
|
+
───────────────────────────────────────────
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Assertions
|
|
78
|
+
|
|
79
|
+
| Assertion | Description |
|
|
80
|
+
|-----------|-------------|
|
|
81
|
+
| `contains` | Response must include these strings (case-insensitive) |
|
|
82
|
+
| `notContains` | Response must NOT include these strings |
|
|
83
|
+
| `toolCalled` | Specified tools must have been invoked |
|
|
84
|
+
| `maxLatencyMs` | Response must complete within this time |
|