opc-agent 1.3.2 → 2.0.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.
Files changed (226) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  4. package/.github/workflows/ci.yml +24 -0
  5. package/CHANGELOG.md +48 -63
  6. package/CONTRIBUTING.md +21 -60
  7. package/README.md +284 -348
  8. package/README.zh-CN.md +415 -415
  9. package/dist/channels/slack.js +93 -10
  10. package/dist/channels/telegram.d.ts +30 -9
  11. package/dist/channels/telegram.js +125 -33
  12. package/dist/channels/web.d.ts +10 -0
  13. package/dist/channels/web.js +33 -2
  14. package/dist/cli.js +667 -65
  15. package/dist/core/agent.d.ts +23 -0
  16. package/dist/core/agent.js +120 -3
  17. package/dist/core/runtime.d.ts +5 -0
  18. package/dist/core/runtime.js +71 -0
  19. package/dist/core/scheduler.d.ts +52 -0
  20. package/dist/core/scheduler.js +168 -0
  21. package/dist/core/subagent.d.ts +28 -0
  22. package/dist/core/subagent.js +65 -0
  23. package/dist/daemon.d.ts +3 -0
  24. package/dist/daemon.js +134 -0
  25. package/dist/deploy/hermes.js +22 -22
  26. package/dist/deploy/openclaw.js +31 -40
  27. package/dist/index.d.ts +10 -10
  28. package/dist/index.js +22 -15
  29. package/dist/providers/index.d.ts +6 -2
  30. package/dist/providers/index.js +22 -9
  31. package/dist/schema/oad.d.ts +180 -6
  32. package/dist/schema/oad.js +12 -1
  33. package/dist/skills/auto-learn.d.ts +28 -0
  34. package/dist/skills/auto-learn.js +257 -0
  35. package/dist/templates/code-reviewer.d.ts +0 -8
  36. package/dist/templates/code-reviewer.js +5 -9
  37. package/dist/templates/customer-service.d.ts +0 -8
  38. package/dist/templates/customer-service.js +2 -6
  39. package/dist/templates/data-analyst.d.ts +0 -8
  40. package/dist/templates/data-analyst.js +5 -9
  41. package/dist/templates/knowledge-base.d.ts +0 -8
  42. package/dist/templates/knowledge-base.js +2 -6
  43. package/dist/templates/sales-assistant.d.ts +0 -8
  44. package/dist/templates/sales-assistant.js +4 -8
  45. package/dist/templates/teacher.d.ts +0 -8
  46. package/dist/templates/teacher.js +6 -10
  47. package/dist/tools/builtin/datetime.d.ts +3 -0
  48. package/dist/tools/builtin/datetime.js +44 -0
  49. package/dist/tools/builtin/file.d.ts +3 -0
  50. package/dist/tools/builtin/file.js +151 -0
  51. package/dist/tools/builtin/index.d.ts +15 -0
  52. package/dist/tools/builtin/index.js +30 -0
  53. package/dist/tools/builtin/shell.d.ts +3 -0
  54. package/dist/tools/builtin/shell.js +43 -0
  55. package/dist/tools/builtin/web.d.ts +3 -0
  56. package/dist/tools/builtin/web.js +37 -0
  57. package/dist/tools/mcp-client.d.ts +24 -0
  58. package/dist/tools/mcp-client.js +119 -0
  59. package/dist/traces/index.d.ts +49 -0
  60. package/dist/traces/index.js +102 -0
  61. package/docs/.vitepress/config.ts +103 -103
  62. package/docs/api/cli.md +48 -48
  63. package/docs/api/oad-schema.md +64 -64
  64. package/docs/api/sdk.md +80 -80
  65. package/docs/guide/concepts.md +51 -51
  66. package/docs/guide/configuration.md +79 -79
  67. package/docs/guide/deployment.md +42 -42
  68. package/docs/guide/getting-started.md +44 -44
  69. package/docs/guide/templates.md +28 -28
  70. package/docs/guide/testing.md +84 -84
  71. package/docs/index.md +27 -27
  72. package/docs/zh/api/cli.md +54 -54
  73. package/docs/zh/api/oad-schema.md +87 -87
  74. package/docs/zh/api/sdk.md +102 -102
  75. package/docs/zh/guide/concepts.md +104 -104
  76. package/docs/zh/guide/configuration.md +135 -135
  77. package/docs/zh/guide/deployment.md +81 -81
  78. package/docs/zh/guide/getting-started.md +82 -82
  79. package/docs/zh/guide/templates.md +84 -84
  80. package/docs/zh/guide/testing.md +88 -88
  81. package/docs/zh/index.md +27 -27
  82. package/examples/README.md +22 -0
  83. package/examples/basic-agent.ts +90 -0
  84. package/examples/brain-integration.ts +71 -0
  85. package/examples/customer-service-demo/README.md +90 -90
  86. package/examples/customer-service-demo/oad.yaml +107 -107
  87. package/examples/multi-channel.ts +74 -0
  88. package/package.json +1 -1
  89. package/src/analytics/index.ts +66 -66
  90. package/src/channels/discord.ts +192 -192
  91. package/src/channels/email.ts +177 -177
  92. package/src/channels/feishu.ts +236 -236
  93. package/src/channels/index.ts +15 -15
  94. package/src/channels/slack.ts +217 -160
  95. package/src/channels/telegram.ts +155 -33
  96. package/src/channels/voice.ts +106 -106
  97. package/src/channels/web.ts +38 -2
  98. package/src/channels/webhook.ts +199 -199
  99. package/src/channels/websocket.ts +87 -87
  100. package/src/channels/wechat.ts +149 -149
  101. package/src/cli.ts +697 -63
  102. package/src/core/a2a.ts +143 -143
  103. package/src/core/agent.ts +146 -3
  104. package/src/core/analytics-engine.ts +186 -186
  105. package/src/core/auth.ts +57 -57
  106. package/src/core/cache.ts +141 -141
  107. package/src/core/compose.ts +77 -77
  108. package/src/core/config.ts +14 -14
  109. package/src/core/errors.ts +148 -148
  110. package/src/core/hitl.ts +138 -138
  111. package/src/core/logger.ts +57 -57
  112. package/src/core/orchestrator.ts +215 -215
  113. package/src/core/performance.ts +187 -187
  114. package/src/core/rate-limiter.ts +128 -128
  115. package/src/core/room.ts +109 -109
  116. package/src/core/runtime.ts +230 -152
  117. package/src/core/sandbox.ts +101 -101
  118. package/src/core/scheduler.ts +187 -0
  119. package/src/core/security.ts +171 -171
  120. package/src/core/subagent.ts +98 -0
  121. package/src/core/types.ts +68 -68
  122. package/src/core/versioning.ts +106 -106
  123. package/src/core/watch.ts +178 -178
  124. package/src/core/workflow.ts +235 -235
  125. package/src/daemon.ts +96 -0
  126. package/src/deploy/hermes.ts +156 -156
  127. package/src/deploy/openclaw.ts +190 -200
  128. package/src/i18n/index.ts +216 -216
  129. package/src/index.ts +14 -10
  130. package/src/memory/deepbrain.ts +108 -108
  131. package/src/memory/index.ts +34 -34
  132. package/src/plugins/index.ts +208 -208
  133. package/src/providers/index.ts +354 -331
  134. package/src/schema/oad.ts +14 -2
  135. package/src/skills/auto-learn.ts +262 -0
  136. package/src/skills/base.ts +16 -16
  137. package/src/skills/document.ts +100 -100
  138. package/src/skills/http.ts +35 -35
  139. package/src/skills/index.ts +27 -27
  140. package/src/skills/scheduler.ts +80 -80
  141. package/src/skills/webhook-trigger.ts +59 -59
  142. package/src/templates/code-reviewer.ts +30 -34
  143. package/src/templates/customer-service.ts +76 -80
  144. package/src/templates/data-analyst.ts +66 -70
  145. package/src/templates/executive-assistant.ts +71 -71
  146. package/src/templates/financial-advisor.ts +60 -60
  147. package/src/templates/knowledge-base.ts +27 -31
  148. package/src/templates/legal-assistant.ts +71 -71
  149. package/src/templates/sales-assistant.ts +75 -79
  150. package/src/templates/teacher.ts +75 -79
  151. package/src/testing/index.ts +181 -181
  152. package/src/tools/builtin/datetime.ts +41 -0
  153. package/src/tools/builtin/file.ts +107 -0
  154. package/src/tools/builtin/index.ts +28 -0
  155. package/src/tools/builtin/shell.ts +43 -0
  156. package/src/tools/builtin/web.ts +35 -0
  157. package/src/tools/calculator.ts +73 -73
  158. package/src/tools/datetime.ts +149 -149
  159. package/src/tools/json-transform.ts +187 -187
  160. package/src/tools/mcp-client.ts +131 -0
  161. package/src/tools/mcp.ts +76 -76
  162. package/src/tools/text-analysis.ts +116 -116
  163. package/src/traces/index.ts +132 -0
  164. package/templates/Dockerfile +15 -15
  165. package/templates/code-reviewer/README.md +27 -27
  166. package/templates/code-reviewer/oad.yaml +41 -41
  167. package/templates/customer-service/README.md +22 -22
  168. package/templates/customer-service/oad.yaml +36 -36
  169. package/templates/docker-compose.yml +21 -21
  170. package/templates/ecommerce-assistant/README.md +45 -45
  171. package/templates/ecommerce-assistant/oad.yaml +47 -47
  172. package/templates/knowledge-base/README.md +28 -28
  173. package/templates/knowledge-base/oad.yaml +38 -38
  174. package/templates/sales-assistant/README.md +26 -26
  175. package/templates/sales-assistant/oad.yaml +43 -43
  176. package/templates/tech-support/README.md +43 -43
  177. package/templates/tech-support/oad.yaml +45 -45
  178. package/test-agent/Dockerfile +9 -0
  179. package/test-agent/README.md +50 -0
  180. package/test-agent/agent.yaml +23 -0
  181. package/test-agent/docker-compose.yml +11 -0
  182. package/test-agent/oad.yaml +31 -0
  183. package/test-agent/package-lock.json +1492 -0
  184. package/test-agent/package.json +18 -0
  185. package/test-agent/src/index.ts +24 -0
  186. package/test-agent/src/skills/echo.ts +15 -0
  187. package/test-agent/tsconfig.json +25 -0
  188. package/tests/a2a.test.ts +66 -66
  189. package/tests/agent.test.ts +72 -72
  190. package/tests/analytics.test.ts +50 -50
  191. package/tests/auto-learn.test.ts +105 -0
  192. package/tests/builtin-tools.test.ts +83 -0
  193. package/tests/channel.test.ts +39 -39
  194. package/tests/cli.test.ts +46 -0
  195. package/tests/e2e.test.ts +134 -134
  196. package/tests/errors.test.ts +83 -83
  197. package/tests/hitl.test.ts +71 -71
  198. package/tests/i18n.test.ts +41 -41
  199. package/tests/mcp.test.ts +54 -54
  200. package/tests/oad.test.ts +68 -68
  201. package/tests/performance.test.ts +115 -115
  202. package/tests/plugin.test.ts +74 -74
  203. package/tests/room.test.ts +106 -106
  204. package/tests/runtime.test.ts +42 -42
  205. package/tests/sandbox.test.ts +46 -46
  206. package/tests/security.test.ts +60 -60
  207. package/tests/subagent.test.ts +130 -0
  208. package/tests/telegram-discord.test.ts +60 -0
  209. package/tests/templates.test.ts +77 -77
  210. package/tests/v070.test.ts +76 -76
  211. package/tests/versioning.test.ts +75 -75
  212. package/tests/voice.test.ts +61 -61
  213. package/tests/webhook.test.ts +29 -29
  214. package/tests/workflow.test.ts +143 -143
  215. package/tsconfig.json +19 -19
  216. package/vitest.config.ts +9 -9
  217. package/dist/core/dashboard.d.ts +0 -35
  218. package/dist/core/dashboard.js +0 -157
  219. package/dist/core/priority.d.ts +0 -52
  220. package/dist/core/priority.js +0 -102
  221. package/src/core/dashboard.ts +0 -219
  222. package/src/core/priority.ts +0 -140
  223. package/src/dtv/data.ts +0 -29
  224. package/src/dtv/trust.ts +0 -43
  225. package/src/dtv/value.ts +0 -47
  226. package/src/marketplace/index.ts +0 -223
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a bug
4
+ labels: bug
5
+ ---
6
+
7
+ **Describe the bug**
8
+ A clear description of the bug.
9
+
10
+ **To Reproduce**
11
+ Steps to reproduce:
12
+ 1. ...
13
+
14
+ **Expected behavior**
15
+ What you expected to happen.
16
+
17
+ **Environment**
18
+ - OS:
19
+ - Node.js:
20
+ - Package version:
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new feature
4
+ labels: enhancement
5
+ ---
6
+
7
+ **Problem**
8
+ What problem does this solve?
9
+
10
+ **Proposed Solution**
11
+ How should it work?
12
+
13
+ **Alternatives Considered**
14
+ Any other approaches?
@@ -0,0 +1,13 @@
1
+ ## What
2
+ Brief description of changes.
3
+
4
+ ## Why
5
+ Why is this change needed?
6
+
7
+ ## How
8
+ How was this implemented?
9
+
10
+ ## Checklist
11
+ - [ ] Tests pass
12
+ - [ ] Documentation updated (if needed)
13
+ - [ ] No breaking changes (or documented)
@@ -0,0 +1,24 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ node-version: [18, 20, 22]
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-node@v4
18
+ with:
19
+ node-version: ${{ matrix.node-version }}
20
+ - run: npm ci
21
+ - run: npm run build --if-present
22
+ - run: npx vitest run --reporter=verbose
23
+ env:
24
+ CI: true
package/CHANGELOG.md CHANGED
@@ -1,63 +1,48 @@
1
- # Changelog
2
-
3
- All notable changes to OPC Agent will be documented in this file.
4
-
5
- ## [1.3.0] - 2026-04-18
6
-
7
- ### Added
8
- - **Local Web Dashboard**: Lightweight Express-based web dashboard (`Dashboard`) for monitoring agent state locally. Provides REST API endpoints (`/api/health`, `/api/state`, `/api/sessions`, `/api/tools`, `/api/channels`) and a built-in HTML UI with real-time polling. Track sessions, tool invocations, and channel stats. Binds to `127.0.0.1:4100` by default for security. (`src/core/dashboard.ts`)
9
- - **Priority/Fast Mode**: Provider-aware priority routing (`PriorityRouter`) for OpenAI, Anthropic, and Google. Toggle between `standard`, `fast`, and `batch` tiers at runtime. Automatically injects provider-specific priority headers (e.g., `X-OpenAI-Processing-Priority`) for eligible models. Supports per-provider endpoint overrides and model pattern matching. (`src/core/priority.ts`)
10
-
11
- ## [1.2.0] - 2026-04-17
12
-
13
- ### Added
14
- - **Tool Gateway**: Managed tool gateway (`ToolGateway`) that wraps multiple tool providers (web-search, image-gen, tts, browser) behind a single authenticated endpoint no separate API keys needed. Auto-discovers available tools from gateway, falls back to defaults. Gateway tools implement `MCPTool` interface for seamless registry integration. (`src/tools/gateway.ts`)
15
- - **Streaming Support**: SSE-based streaming for real-time agent responses. `StreamingManager` with `createStream()` / `writeChunk()` / `endStream()`. `StreamableResponse` with backpressure handling, event emission, and SSE pipe utility for Express-style HTTP responses. Channels can opt in via `supportsStreaming: true`. (`src/core/streaming.ts`)
16
-
17
- ## [1.1.0] - 2026-04-16
18
-
19
- ### Added
20
- - **Feishu/Lark Channel**: Full Feishu bot integration with event subscription webhook, tenant access token caching, text & interactive card messaging, group + P2P support. Also works with Lark international via `apiBase` config. (`src/channels/feishu.ts`)
21
- - **Discord Channel**: Discord bot via Gateway WebSocket with auto-reconnect, heartbeat, message content intent, and 2000-char message splitting. (`src/channels/discord.ts`)
22
- - **ProcessWatcher**: Background process output monitoring with regex pattern matching — watch stdout/stderr for specific patterns (errors, "server ready", build completion) and get instant callbacks without polling. Supports `once` patterns, match history, and dynamic pattern add/remove. Inspired by Hermes Agent's `watch_patterns`. (`src/core/watch.ts`)
23
-
24
- ## [0.2.0] - 2026-04-15
25
-
26
- ### Added
27
- - **DeepBrain Integration**: Optional long-term memory backend with semantic search. Config via `memory.longTerm.provider: deepbrain`. Falls back to in-memory if not installed.
28
- - **Telegram Channel**: Basic webhook handler for Telegram Bot API (`src/channels/telegram.ts`).
29
- - **WebSocket Channel**: Real-time bidirectional communication with broadcast (`src/channels/websocket.ts`).
30
- - **Sales Assistant Template**: Product Q&A, lead capture, appointment booking.
31
- - **Knowledge Base Template**: RAG with DeepBrain for answering from company docs.
32
- - **Code Reviewer Template**: Bug detection, style checking, severity ratings.
33
- - **Skill Marketplace Stub**: `opc publish` validates OAD and generates manifest. `opc search` placeholder.
34
- - **OAD Marketplace Fields**: `pricing` (free/freemium/paid/enterprise) and `tags` in marketplace config.
35
- - **Context Size Guard**: Auto-truncate tool outputs exceeding 5000 characters.
36
- - **Conversation History Limit**: Configurable limit (default 50 messages).
37
- - **Graceful Shutdown**: Handles SIGINT/SIGTERM with cleanup.
38
- - **Structured Logging**: Logger with debug/info/warn/error levels.
39
- - **Interactive CLI Init**: `opc init` with prompts and template selection.
40
- - **Dev Mode**: `opc dev` watches files and hot-reloads agent on changes.
41
- - **Agent Info Command**: `opc info` displays agent details from OAD.
42
- - **Colorful CLI Output**: Status indicators and colored text throughout CLI.
43
- - **CONTRIBUTING.md**: Contribution guidelines.
44
- - **CHANGELOG.md**: This file.
45
-
46
- ### Changed
47
- - OAD `memory.longTerm` now accepts boolean or object with provider config.
48
- - OAD `channels.type` now includes `telegram`.
49
- - CLI version bumped to 0.2.0.
50
-
51
- ## [0.1.0] - 2026-04-14
52
-
53
- ### Added
54
- - Initial release
55
- - BaseAgent with lifecycle management
56
- - AgentRuntime for config-driven setup
57
- - OAD Schema v1 with Zod validation
58
- - Web channel (Express)
59
- - InMemoryStore
60
- - Skill system (BaseSkill, SkillRegistry)
61
- - DTV framework (Trust, Value, Data)
62
- - Customer Service template
63
- - CLI: init, create, build, test, run, publish
1
+ # Changelog
2
+
3
+ ## [2.0.0] - 2026-04-18
4
+
5
+ ### Major Features
6
+ - **Interactive CLI** (`opc chat`) — Full TUI with streaming, slash commands, history
7
+ - **Daemon Mode** (`opc start/stop/status`) — Run agents as background processes
8
+ - **Cron Scheduler** Built-in job scheduling with cron expressions
9
+ - **Autonomous Skill Learning** Agents create and improve skills from experience
10
+ - **Sub-Agent System** — Spawn parallel sub-agents for task delegation
11
+ - **Built-in Tools** — File operations, web fetch, shell exec, datetime
12
+ - **MCP Client** — Connect to external MCP servers via JSON-RPC
13
+ - **Telegram Channel** — Dual-mode (polling + webhook) with Markdown support
14
+ - **Discord Channel**Gateway WebSocket with auto-reconnect
15
+ - **Slack Channel** Real Events API + chat.postMessage
16
+ - **SOUL.md + CONTEXT.md** — Agent personality and project context files
17
+ - **Analytics** Wired into runtime for message tracking, skill usage, errors
18
+
19
+ ### Enhanced
20
+ - `/health` endpoint returns comprehensive agent info
21
+ - `opc init` generates SOUL.md, CONTEXT.md, and richer project templates
22
+ - OAD config supports scheduler, learning, and tools sections
23
+ - 204 tests passing
24
+
25
+ ### CLI Commands
26
+ init, chat, run, dev, start, stop, status, jobs, skills, info, build, test, analytics, brain, logs, score, search, deploy, publish, install, plugin, tool, workflow, migrate
27
+
28
+ ## 1.4.0 (2026-04-18)
29
+ - feat: wire Analytics into AgentRuntime (message timing, skill usage, error tracking)
30
+ - feat: expose analytics snapshot on /health and /api/dashboard endpoints
31
+ - feat: enhanced /health endpoint with agent name, version, uptime, memory type, skills, channels
32
+ - feat: Slack channel real Events API webhook server + chat.postMessage via fetch
33
+ - feat: WebChannel metadata setters (version, memory type, skills, channels, analytics provider)
34
+ - feat: AgentRuntime.getAnalytics() and getConfig() accessors
35
+
36
+ ## 1.3.1 (2026-04-17)
37
+ - fix: remove residual DTV/marketplace references
38
+ - fix: duplicate WatchPattern export
39
+
40
+ ## 1.3.0 (2026-04-17)
41
+ - feat: Traces collection (OpenTelemetry-style)
42
+ - feat: DeepBrain exporter
43
+ - feat: brain/logs/score CLI commands
44
+
45
+ ## 1.2.0
46
+ - Initial public release
47
+ - 11 channels, plugins, analytics
48
+ - Declarative OAD configuration
package/CONTRIBUTING.md CHANGED
@@ -1,74 +1,35 @@
1
- # Contributing to OPC Agent
1
+ # Contributing
2
2
 
3
- Thank you for your interest in contributing to OPC Agent! 🎉
3
+ Thanks for your interest in contributing!
4
4
 
5
5
  ## Getting Started
6
6
 
7
- 1. Fork the repository
8
- 2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/opc-agent.git`
7
+ 1. Fork the repo
8
+ 2. Clone your fork
9
9
  3. Install dependencies: `npm install`
10
- 4. Create a branch: `git checkout -b feature/my-feature`
10
+ 4. Create a branch: `git checkout -b feat/my-feature`
11
+ 5. Make your changes
12
+ 6. Run tests: `npm test`
13
+ 7. Commit: `git commit -m "feat: description"`
14
+ 8. Push and open a PR
11
15
 
12
- ## Development
16
+ ## Commit Convention
13
17
 
14
- ```bash
15
- # Build
16
- npm run build
18
+ - `feat:` New feature
19
+ - `fix:` Bug fix
20
+ - `docs:` Documentation
21
+ - `test:` Tests
22
+ - `refactor:` Refactoring
23
+ - `chore:` Build/tooling
17
24
 
18
- # Run tests
19
- npm test
25
+ ## Code Style
20
26
 
21
- # Type check
22
- npm run lint
27
+ - TypeScript
28
+ - Run `npm run lint` before committing (if available)
23
29
 
24
- # Watch mode
25
- npm run dev
26
- ```
30
+ ## Questions?
27
31
 
28
- ## Project Structure
29
-
30
- ```
31
- src/
32
- ├── core/ # Agent, Runtime, Config, Logger, Types
33
- ├── channels/ # Web, WebSocket, Telegram channels
34
- ├── memory/ # InMemoryStore, DeepBrainMemoryStore
35
- ├── providers/ # LLM provider abstraction
36
- ├── schema/ # OAD schema (Zod)
37
- ├── skills/ # BaseSkill, SkillRegistry
38
- ├── templates/ # Agent templates
39
- ├── dtv/ # Data, Trust, Value framework
40
- ├── cli.ts # CLI entry point
41
- └── index.ts # Public API exports
42
- ```
43
-
44
- ## Guidelines
45
-
46
- - **TypeScript**: All code must be TypeScript with strict mode
47
- - **Tests**: Add tests for new features in `tests/`
48
- - **Commits**: Use conventional commits (`feat:`, `fix:`, `docs:`, etc.)
49
- - **OAD Compatibility**: Changes to OAD schema must be backward-compatible
50
- - **No Breaking Changes** without major version bump
51
-
52
- ## Adding a Template
53
-
54
- 1. Create `src/templates/my-template.ts` with config factory function
55
- 2. Create `templates/my-template/oad.yaml` and `README.md`
56
- 3. Register in `src/cli.ts` TEMPLATES map
57
- 4. Add tests
58
-
59
- ## Adding a Channel
60
-
61
- 1. Create `src/channels/my-channel.ts` extending `BaseChannel`
62
- 2. Add channel type to OAD schema in `src/schema/oad.ts`
63
- 3. Wire up in `src/core/runtime.ts`
64
- 4. Export from `src/index.ts`
65
-
66
- ## Pull Requests
67
-
68
- 1. Ensure all tests pass: `npm test`
69
- 2. Ensure types check: `npm run lint`
70
- 3. Write a clear PR description
71
- 4. Reference any related issues
32
+ Open a Discussion or Issue.
72
33
 
73
34
  ## License
74
35