agentix-cli 0.18.0 → 0.20.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 (171) hide show
  1. package/README.md +75 -27
  2. package/dist/{agent-RDVGL2TW.js → agent-57MG4LBM.js} +2 -2
  3. package/dist/{audit-Z47AQFFD.js → audit-JU3HWISB.js} +2 -2
  4. package/dist/{board-dashboard-KX2CNOSY.js → board-dashboard-HXDOYGIG.js} +2237 -69
  5. package/dist/board-dashboard-HXDOYGIG.js.map +1 -0
  6. package/dist/chunk-23AUU4S2.js +102 -0
  7. package/dist/chunk-23AUU4S2.js.map +1 -0
  8. package/dist/chunk-4MREHZP5.js +111 -0
  9. package/dist/chunk-4MREHZP5.js.map +1 -0
  10. package/dist/chunk-4YCH6IZV.js +2 -0
  11. package/dist/chunk-6B74TO2J.js +743 -0
  12. package/dist/chunk-6B74TO2J.js.map +1 -0
  13. package/dist/chunk-7GVXCOLO.js +440 -0
  14. package/dist/chunk-7GVXCOLO.js.map +1 -0
  15. package/dist/chunk-7P5QRX5W.js +108 -0
  16. package/dist/chunk-7P5QRX5W.js.map +1 -0
  17. package/dist/chunk-A6BKSZQA.js +3 -0
  18. package/dist/chunk-A6BKSZQA.js.map +1 -0
  19. package/dist/{chunk-6PPIFDOQ.js → chunk-CNNLREHD.js} +67 -22
  20. package/dist/{chunk-6PPIFDOQ.js.map → chunk-CNNLREHD.js.map} +1 -1
  21. package/dist/{chunk-J4WKMKTP.js → chunk-DLVOHCTA.js} +2 -2
  22. package/dist/chunk-E4ZZILAK.js +15 -0
  23. package/dist/chunk-E4ZZILAK.js.map +1 -0
  24. package/dist/{chunk-TRQSP67X.js → chunk-IKBHHTIT.js} +2 -2
  25. package/dist/chunk-JTJIPNXY.js +2 -0
  26. package/dist/chunk-JTJIPNXY.js.map +1 -0
  27. package/dist/chunk-MBOLXKA2.js +6 -0
  28. package/dist/chunk-MBOLXKA2.js.map +1 -0
  29. package/dist/{inbox-O5UB3YQN.js → chunk-MTRWXRFF.js} +69 -4
  30. package/dist/chunk-MTRWXRFF.js.map +1 -0
  31. package/dist/{processes-7W27G3J3.js → chunk-NOF4HSGK.js} +3 -3
  32. package/dist/{processes-7W27G3J3.js.map → chunk-NOF4HSGK.js.map} +1 -1
  33. package/dist/chunk-QW2OYR3N.js +7 -0
  34. package/dist/chunk-QW2OYR3N.js.map +1 -0
  35. package/dist/{chunk-JXEPJ3YD.js → chunk-TC3BSUP7.js} +5 -5
  36. package/dist/chunk-VWTBHLMX.js +1 -0
  37. package/dist/chunk-WFHIIVLL.js +719 -0
  38. package/dist/chunk-WFHIIVLL.js.map +1 -0
  39. package/dist/chunk-WPPUOTY6.js +6 -0
  40. package/dist/chunk-WPPUOTY6.js.map +1 -0
  41. package/dist/cli.js +1 -1
  42. package/dist/cli.js.map +1 -1
  43. package/dist/{compaction-S5H6DTOR.js → compaction-BTUJJ3LJ.js} +4 -4
  44. package/dist/config-QXWKEQON.js +2 -0
  45. package/dist/config-mutator-53XGR2NT.js +2 -0
  46. package/dist/conflict-detector-D7VIYPDI.js +2 -0
  47. package/dist/conflict-detector-D7VIYPDI.js.map +1 -0
  48. package/dist/{context-planner-2RGHJHSO.js → context-planner-I7ID7XF3.js} +3 -3
  49. package/dist/debug-N3B5NVJU.js +2 -0
  50. package/dist/{discover-OATU7SHI.js → discover-XJXQXXIO.js} +2 -2
  51. package/dist/doctor-SEOUFHSL.js +2 -0
  52. package/dist/{editor-chat-FUBQLMAQ.js → editor-chat-RVLCKKB7.js} +2 -2
  53. package/dist/{heal-YP7QI7D3.js → heal-YEQYWX2L.js} +2 -2
  54. package/dist/inbox-BIN2S5XN.js +2 -0
  55. package/dist/index.d.ts +830 -100
  56. package/dist/index.js +2 -2
  57. package/dist/index.js.map +1 -1
  58. package/dist/{ingest-whatsapp-C3O5UPBX.js → ingest-whatsapp-LZE62INA.js} +2 -2
  59. package/dist/loader-5CA3O5GM.js +2 -0
  60. package/dist/loader-6IHUCPVO.js +2 -0
  61. package/dist/memory-extract-KRCHD3OP.js +2 -0
  62. package/dist/migrate-v2-QO7SLKIM.js +4 -0
  63. package/dist/migrate-v2-QO7SLKIM.js.map +1 -0
  64. package/dist/processes-RJ6RDP32.js +2 -0
  65. package/dist/program-WWCXMRU2.js +2 -0
  66. package/dist/{providers-WCQSKTNP.js → providers-WVCMIW67.js} +2 -2
  67. package/dist/query-HZYYRCLU.js +2 -0
  68. package/dist/recipes-EPLE2SNT.js +2 -0
  69. package/dist/registry-HM4ELSXS.js +2 -0
  70. package/dist/rotation-memo-GMTZPMNE.js +13 -0
  71. package/dist/rotation-memo-GMTZPMNE.js.map +1 -0
  72. package/dist/scheduler-XVFIK4XH.js +2 -0
  73. package/dist/{slack-D27BE37Q.js → slack-6P7ZJ32Y.js} +2 -2
  74. package/dist/store-BAPDZHXE.js +2 -0
  75. package/dist/{subagent-EPOT3QDM.js → subagent-WV7QKQ3L.js} +2 -2
  76. package/dist/{task-store-3NUWLYRY.js → task-store-RHISEU6V.js} +2 -2
  77. package/dist/{telegram-UWV67KWG.js → telegram-PIYDRM46.js} +2 -2
  78. package/dist/timers-5LPZN55J.js +2 -0
  79. package/dist/types-VECTMYTO.js +2 -0
  80. package/dist/types-VECTMYTO.js.map +1 -0
  81. package/dist/types-ZRLHHCGB.js +2 -0
  82. package/dist/types-ZRLHHCGB.js.map +1 -0
  83. package/dist/web/activity-graph.global.js +654 -0
  84. package/dist/web/activity-graph.global.js.map +1 -0
  85. package/dist/web/workflow-editor.global.js +1 -1
  86. package/dist/web/workflow-editor.global.js.map +1 -1
  87. package/dist/{whatsapp-KJ2NRKKQ.js → whatsapp-PFRDMUMT.js} +2 -2
  88. package/dist/{whatsapp-state-3ZVQ6MQD.js → whatsapp-state-XMTCSRXU.js} +2 -2
  89. package/dist/wiki-53W5NLZV.js +2 -0
  90. package/dist/wiki-53W5NLZV.js.map +1 -0
  91. package/dist/workspace-setup-FPGN5VNY.js +2 -0
  92. package/dist/workspace-setup-FPGN5VNY.js.map +1 -0
  93. package/package.json +3 -2
  94. package/dist/board-dashboard-KX2CNOSY.js.map +0 -1
  95. package/dist/chunk-34NG7UDX.js +0 -11
  96. package/dist/chunk-34NG7UDX.js.map +0 -1
  97. package/dist/chunk-ASSJ4Z6Z.js +0 -164
  98. package/dist/chunk-ASSJ4Z6Z.js.map +0 -1
  99. package/dist/chunk-BLUXL6HR.js +0 -854
  100. package/dist/chunk-BLUXL6HR.js.map +0 -1
  101. package/dist/chunk-BTAEYL3P.js +0 -72
  102. package/dist/chunk-BTAEYL3P.js.map +0 -1
  103. package/dist/chunk-DSCMCVTV.js +0 -7
  104. package/dist/chunk-DSCMCVTV.js.map +0 -1
  105. package/dist/chunk-HPDHNIA3.js +0 -2
  106. package/dist/chunk-IM376SD6.js +0 -13
  107. package/dist/chunk-IM376SD6.js.map +0 -1
  108. package/dist/chunk-LEIYC3BF.js +0 -104
  109. package/dist/chunk-LEIYC3BF.js.map +0 -1
  110. package/dist/chunk-LY7JGDV7.js +0 -6
  111. package/dist/chunk-LY7JGDV7.js.map +0 -1
  112. package/dist/chunk-U364GNQX.js +0 -719
  113. package/dist/chunk-U364GNQX.js.map +0 -1
  114. package/dist/chunk-WZEYII2S.js +0 -6
  115. package/dist/chunk-WZEYII2S.js.map +0 -1
  116. package/dist/config-UOHEG4BW.js +0 -2
  117. package/dist/config-mutator-KSEBWKJH.js +0 -2
  118. package/dist/debug-TGAP7E7W.js +0 -2
  119. package/dist/inbox-O5UB3YQN.js.map +0 -1
  120. package/dist/loader-BGWA7IRY.js +0 -2
  121. package/dist/loader-LBHKSXBK.js +0 -2
  122. package/dist/memory-extract-KKPKAOPH.js +0 -2
  123. package/dist/program-2MDELQLX.js +0 -2
  124. package/dist/query-FZAL7AQD.js +0 -2
  125. package/dist/recipes-LZ56TA3X.js +0 -2
  126. package/dist/registry-ONJSILH4.js +0 -2
  127. package/dist/scheduler-XRM2RJIV.js +0 -2
  128. package/dist/store-4UCO56K2.js +0 -2
  129. package/dist/timers-QB4KYNAE.js +0 -2
  130. package/dist/types-ECMEC5BZ.js +0 -2
  131. package/dist/types-TTB6DJUE.js +0 -2
  132. package/dist/usage-dashboard-FQGPPABD.js +0 -803
  133. package/dist/usage-dashboard-FQGPPABD.js.map +0 -1
  134. package/dist/wiki-OUYKM7MB.js +0 -2
  135. package/dist/workspace-setup-6GDBEORT.js +0 -2
  136. /package/dist/{agent-RDVGL2TW.js.map → agent-57MG4LBM.js.map} +0 -0
  137. /package/dist/{audit-Z47AQFFD.js.map → audit-JU3HWISB.js.map} +0 -0
  138. /package/dist/{chunk-HPDHNIA3.js.map → chunk-4YCH6IZV.js.map} +0 -0
  139. /package/dist/{chunk-J4WKMKTP.js.map → chunk-DLVOHCTA.js.map} +0 -0
  140. /package/dist/{chunk-TRQSP67X.js.map → chunk-IKBHHTIT.js.map} +0 -0
  141. /package/dist/{chunk-JXEPJ3YD.js.map → chunk-TC3BSUP7.js.map} +0 -0
  142. /package/dist/{config-UOHEG4BW.js.map → chunk-VWTBHLMX.js.map} +0 -0
  143. /package/dist/{compaction-S5H6DTOR.js.map → compaction-BTUJJ3LJ.js.map} +0 -0
  144. /package/dist/{config-mutator-KSEBWKJH.js.map → config-QXWKEQON.js.map} +0 -0
  145. /package/dist/{debug-TGAP7E7W.js.map → config-mutator-53XGR2NT.js.map} +0 -0
  146. /package/dist/{context-planner-2RGHJHSO.js.map → context-planner-I7ID7XF3.js.map} +0 -0
  147. /package/dist/{heal-YP7QI7D3.js.map → debug-N3B5NVJU.js.map} +0 -0
  148. /package/dist/{discover-OATU7SHI.js.map → discover-XJXQXXIO.js.map} +0 -0
  149. /package/dist/{loader-BGWA7IRY.js.map → doctor-SEOUFHSL.js.map} +0 -0
  150. /package/dist/{editor-chat-FUBQLMAQ.js.map → editor-chat-RVLCKKB7.js.map} +0 -0
  151. /package/dist/{loader-LBHKSXBK.js.map → heal-YEQYWX2L.js.map} +0 -0
  152. /package/dist/{memory-extract-KKPKAOPH.js.map → inbox-BIN2S5XN.js.map} +0 -0
  153. /package/dist/{ingest-whatsapp-C3O5UPBX.js.map → ingest-whatsapp-LZE62INA.js.map} +0 -0
  154. /package/dist/{program-2MDELQLX.js.map → loader-5CA3O5GM.js.map} +0 -0
  155. /package/dist/{providers-WCQSKTNP.js.map → loader-6IHUCPVO.js.map} +0 -0
  156. /package/dist/{query-FZAL7AQD.js.map → memory-extract-KRCHD3OP.js.map} +0 -0
  157. /package/dist/{recipes-LZ56TA3X.js.map → processes-RJ6RDP32.js.map} +0 -0
  158. /package/dist/{registry-ONJSILH4.js.map → program-WWCXMRU2.js.map} +0 -0
  159. /package/dist/{scheduler-XRM2RJIV.js.map → providers-WVCMIW67.js.map} +0 -0
  160. /package/dist/{store-4UCO56K2.js.map → query-HZYYRCLU.js.map} +0 -0
  161. /package/dist/{task-store-3NUWLYRY.js.map → recipes-EPLE2SNT.js.map} +0 -0
  162. /package/dist/{timers-QB4KYNAE.js.map → registry-HM4ELSXS.js.map} +0 -0
  163. /package/dist/{types-ECMEC5BZ.js.map → scheduler-XVFIK4XH.js.map} +0 -0
  164. /package/dist/{slack-D27BE37Q.js.map → slack-6P7ZJ32Y.js.map} +0 -0
  165. /package/dist/{types-TTB6DJUE.js.map → store-BAPDZHXE.js.map} +0 -0
  166. /package/dist/{subagent-EPOT3QDM.js.map → subagent-WV7QKQ3L.js.map} +0 -0
  167. /package/dist/{wiki-OUYKM7MB.js.map → task-store-RHISEU6V.js.map} +0 -0
  168. /package/dist/{telegram-UWV67KWG.js.map → telegram-PIYDRM46.js.map} +0 -0
  169. /package/dist/{workspace-setup-6GDBEORT.js.map → timers-5LPZN55J.js.map} +0 -0
  170. /package/dist/{whatsapp-KJ2NRKKQ.js.map → whatsapp-PFRDMUMT.js.map} +0 -0
  171. /package/dist/{whatsapp-state-3ZVQ6MQD.js.map → whatsapp-state-XMTCSRXU.js.map} +0 -0
package/README.md CHANGED
@@ -1,28 +1,58 @@
1
1
  # AgentX
2
2
 
3
- **The AI operations layer for small & medium businesses.** Plug in the channels your team already uses — Telegram, WhatsApp, Slack, Discord, GitLab — set schedules, and watch your agents work. Web wizard for non-technical operators, CLI for engineers. Self-hosted.
3
+ **The AI operations layer for small & medium businesses.** Plug in the channels your team already uses — Telegram, WhatsApp, Slack, Discord, GitLab, GitHub — set schedules, and watch your agents work. Web wizard for non-technical operators, CLI for engineers. Self-hosted.
4
4
 
5
5
  ## Who it's for
6
6
 
7
7
  **Small & medium businesses running AI agents on real channels.** Support queues, devops squads, ops teams, internal automation. You want multiple agents handling different jobs, coordinating across machines, answering on the tools your people already use — without standing up a ML platform or hiring dedicated infra.
8
8
 
9
9
  - **Non-technical operators** add agents, connect channels, and schedule jobs from a browser wizard and `/admin` panel — no JSON editing.
10
- - **Engineers** get a full CLI, `agentx.json`, scoped API tokens, mesh federation, and a mutateConfig-safe write path.
10
+ - **Engineers** get a full CLI, `agentx.json`, scoped API tokens, mesh federation, plugins, an append-only intent ledger, and a mutateConfig-safe write path.
11
11
 
12
12
  > **Running AgentX solo for yourself?** [OpenClaw](https://github.com/openclaw/openclaw) is built for single-user assistants and has a lighter install path. If you outgrow it, we import your config — see [Migrate from OpenClaw](docs/migration/from-openclaw.md).
13
13
 
14
14
  ## What you get out of the box
15
15
 
16
- - **Answer on Telegram, WhatsApp, Slack, Discord, GitLab** — one config, all channels. Pair WhatsApp with a QR code in the browser.
17
- - **Browser-based setup wizard + `/admin` panel** — add agents, wire channels, mint scoped API tokens, schedule crons, all without editing JSON
18
- - **Agents = folders, not code** — each agent has its own persona, knowledge, and tools in plain Markdown
19
- - **Multiple machines, one team** — mesh federation across laptops + servers; manage any peer's config from a single dashboard via the mesh selector
20
- - **Scheduled jobs in plain English** — `agentx schedule "every Monday at 9am" --agent sales`
21
- - **Live dashboard** — a browser view of what every agent is doing right now, with full task history, streaming output, and replay
22
- - **Scoped API tokens** — let external apps message an agent with a time-bound, scope-limited token (see [Tokens](docs/reference/tokens.md) and [Public agents](docs/reference/public-agents.md))
23
- - **`agentx doctor`** — pre-flight health check that catches missing keys, unreachable daemons, and misconfigured channels
24
- - **Bring your own AI** — Claude Code (deep reasoning + tools), OpenAI / Anthropic API, Ollama, or anything in between
25
- - **Wiki memory** — conversations compound into a shared knowledge base each agent draws from
16
+ **Channels & routing**
17
+ - **Telegram, WhatsApp, Slack, Discord, GitLab, GitHub, generic webhooks** — one config, all channels. Pair WhatsApp with a QR code in the browser.
18
+ - **Cross-channel `/send`** — agents reply on the channel they received on, or push to any other channel programmatically.
19
+ - **Mesh federation** — agents on different machines collaborate over Tailscale/VPN. Manage any peer's config from one dashboard.
20
+
21
+ **Operator surface**
22
+ - **Browser-based setup wizard + 11-page admin dashboard** — add agents, wire channels, mint scoped tokens, drag-drop Kanban, intent-graph triage, workflow editor — all without editing JSON.
23
+ - **`agentx setup`** — opens the wizard from the terminal; safe to re-run, only writes deltas.
24
+ - **`agentx doctor`** — pre-flight health check that catches missing keys, unreachable daemons, expired tokens, misconfigured channels.
25
+
26
+ **Work pool & backlog**
27
+ - **Backlog import + two-way sync** — `agentx backlog import` pulls open issues from GitLab/GitHub with autocomplete-multiselect; mutations on imported items push assignee/labels/title/description/milestone/state back upstream.
28
+ - **Boards (Kanban)** — column-based view over GitLab projects with drag-drop, scoped-label transitions, stale-Doing reconciler.
29
+
30
+ **Agents are folders, not code**
31
+ - Each agent has its own persona, knowledge, and tools in plain Markdown — `CLAUDE.md`, `.claude/skills/`, optional `references/`.
32
+ - **Bring your own AI** — Claude Code (subscription, full features), Anthropic / OpenAI API, Ollama, or anything in between.
33
+
34
+ **Workflows & procedures**
35
+ - **Declarative state machines in YAML or JSON** under `.agentx/workflows/`, with a visual editor in the dashboard. Triggers from any channel; user-task forms render to Telegram/WhatsApp/Slack/web.
36
+ - **Procedures** — versioned SOPs (`.agentx/procedures/<id>.md`) agents reference at runtime.
37
+ - **Deterministic services** — fixed-prompt handlers for known patterns (no LLM call when the answer is canonical).
38
+
39
+ **Scheduled work**
40
+ - **Plain-English cron** — `agentx schedule "every Monday at 9am" --agent sales`.
41
+ - `onError` pipeline that can both notify you AND auto-disable after N failures.
42
+
43
+ **Governance & observability**
44
+ - **Append-only intent ledger** — every dispatch decision recorded in SQLite; `agentx ledger replay` reproduces them deterministically (Phase 1–8 of the [architectural rescue](docs/journey/11-production-hardening.md)).
45
+ - **PM gating + typed capabilities + delegation-depth caps** — admission control auditable through the ledger.
46
+ - **Live dashboard + token-cost dashboard** — `/live`, `/processes`, `/inbox` for activity; `agentx usage serve` for tier-2 hotspots and per-agent cost.
47
+ - **Scoped API tokens** — time-bound, revocable bearer tokens with named scopes for external integrations.
48
+
49
+ **Extensibility**
50
+ - **Plugins** — drop-in npm packages register custom channel adapters and bus subscribers. `agentx plugin init <name>` scaffolds one.
51
+ - **MCP server** — `agentx serve --stdio` exposes the daemon to Claude Code, Cursor, Windsurf as a tool surface.
52
+
53
+ **Knowledge**
54
+ - **Wiki memory** — conversations compound into a shared, citable knowledge base each agent draws from. Agentic query at read time, daily absorb at write time.
55
+ - **Intent knowledge graph** — fixed-axis taxonomy fed by an LLM classifier with operator triage queue.
26
56
 
27
57
  ## Install
28
58
 
@@ -49,9 +79,9 @@ npm install -g agentix-cli
49
79
  agentx setup # opens the web wizard
50
80
  ```
51
81
 
52
- Open the dashboard at **http://127.0.0.1:4202** — live agents, task history, Kanban boards, and the `/admin` panel for managing agents, channels, and tokens. A `?`-Glossary link is in the topbar if anything looks unfamiliar.
82
+ Open the dashboard at **http://127.0.0.1:4202** — live agents, task history, Kanban boards, intent graph, workflow editor, and the `/admin` panel for managing agents, channels, tokens, and webhooks. A `?`-Glossary link is in the topbar if anything looks unfamiliar.
53
83
 
54
- See the [full install guide](docs/install.md) for advanced setups.
84
+ See the [full install guide](docs/install.md) for advanced setups, Tailscale binding, systemd, and TLS reverse proxy.
55
85
 
56
86
  ## Docs
57
87
 
@@ -61,19 +91,33 @@ Full documentation: **[https://agentx-docs.pages.dev](https://agentx-docs.pages.
61
91
  - [Install](docs/install.md) — from zero to a running daemon in 5 minutes
62
92
  - [Concepts](docs/concepts.md) — what an agent, channel, schedule, and team network are (glossary also lives at `/glossary` in the dashboard)
63
93
 
64
- **Worked examples, simple → advanced:**
94
+ **Worked examples, simple → advanced (12 chapters):**
65
95
  - [1. Telegram Q&A bot](docs/journey/01-telegram-qa-bot.md) — one agent, one channel, one conversation
66
96
  - [2. Scheduled reports with failure alerts](docs/journey/02-scheduled-reports.md)
67
97
  - [3. Multi-agent group chat](docs/journey/03-multi-agent-group.md)
98
+ - [4. Cross-channel — GitLab MR → WhatsApp ping](docs/journey/04-cross-channel.md)
99
+ - [5. Hooks and webhooks](docs/journey/05-hooks-webhooks.md) — generic webhook receiver, hook events, signing
100
+ - [6. Shared wiki](docs/journey/06-shared-wiki.md) — knowledge that compounds
68
101
  - [7. Run a team with AI agents](docs/journey/07-business-layer.md) — roles, KPIs, org chart
69
102
  - [8. Two machines, one team](docs/journey/08-mesh-federation.md) — mesh federation
70
-
71
- **For configuration:**
72
- - [CLI reference](docs/reference/cli.md) · [Config schema](docs/reference/config-schema.md) · [Communication matrix](docs/reference/communication-matrix.md)
73
- - [Scoped API tokens](docs/reference/tokens.md) — mint / scope / revoke
74
- - [Public agents](docs/reference/public-agents.md) — expose an agent over HTTP
75
- - [`agentx doctor`](docs/reference/doctor.md) — pre-flight health check
76
- - [Slack channel](docs/reference/slack.md) — Socket Mode setup
103
+ - [9. Deterministic services](docs/journey/09-deterministic-services.md) — workflows without LLM tokens
104
+ - [10. MCP server](docs/journey/10-mcp-server.md) — drive AgentX from Cursor / Claude Code
105
+ - [11. Production hardening](docs/journey/11-production-hardening.md) — permissions, debug, observability, incident playbook
106
+ - [12. BPM — grant application](docs/journey/12-bpm-grant-application.md)
107
+
108
+ **Operator playbooks:**
109
+ - [Backlog import + upstream sync](docs/playbooks/backlog-import-sync.md)
110
+ - [Plugin authoring](docs/playbooks/plugin-authoring.md)
111
+ - [PM gating — org-chart governance](docs/playbooks/pm-gating.md)
112
+ - [Capability audit — typed intents and delegation depth](docs/playbooks/capability-audit.md)
113
+ - [Tier-2 billing lifecycle](docs/playbooks/tier2-billing.md)
114
+
115
+ **Reference:**
116
+ - [CLI](docs/reference/cli.md) · [Config schema](docs/reference/config-schema.md) · [Communication matrix](docs/reference/communication-matrix.md)
117
+ - [Dashboard pillar](docs/reference/dashboard/) — every admin page documented (setup, live, boards, workflows, inbox, processes, intent graph, agent, admin, usage)
118
+ - [Workflows](docs/reference/workflows.md) · [Boards](docs/reference/boards.md) · [Intent graph](docs/reference/graph.md)
119
+ - [Scoped API tokens](docs/reference/tokens.md) · [Public agents](docs/reference/public-agents.md) · [`agentx doctor`](docs/reference/doctor.md)
120
+ - [Slack channel](docs/reference/slack.md) · [Tailscale mesh VPN](docs/reference/tailscale-setup.md) · [Rollback runbook](docs/reference/rollback-runbook.md)
77
121
 
78
122
  **Moving from another tool:**
79
123
  - [Migrate from OpenClaw](docs/migration/from-openclaw.md) — we import the bulk of your config in one shot
@@ -89,19 +133,23 @@ graph LR
89
133
  S[Slack] --> R
90
134
  D[Discord] --> R
91
135
  G[GitLab] --> R
136
+ GH[GitHub] --> R
92
137
  C[Cron] --> R
93
138
  H[Webhook] --> R
94
139
  M[Mesh peer] --> R
95
- R --> CTX[Context Engine<br/>10 layers, token-budgeted]
140
+ PL[Plugin channels] --> R
141
+ R --> LDG[(Intent Ledger<br/>append-only)]
142
+ LDG --> CTX[Context Engine<br/>layered or planner]
96
143
  CTX --> AG[Agent workspace]
97
- AG --> P1[claude -p]
98
- AG --> P2[OpenAI]
144
+ AG --> P1[Claude Code]
145
+ AG --> P2[OpenAI / Anthropic API]
99
146
  AG --> P3[Ollama]
100
- AG -.-> MEM[(Wiki + Memory)]
147
+ AG -.-> MEM[(Wiki + Graph + Memory)]
148
+ AG -.-> WF[Workflows + Procedures]
101
149
  AG -.-> R
102
150
  ```
103
151
 
104
- Each agent = a workspace directory with Claude Code configuration (`.claude/`, `CLAUDE.md`, skills, hooks, MCP servers). AgentX orchestrates when and where agents run.
152
+ Each agent = a workspace directory with Claude Code configuration (`.claude/`, `CLAUDE.md`, skills, hooks, MCP servers). AgentX orchestrates when and where agents run, ledger-records every dispatch decision, and lets plugins extend the channel + bus surface.
105
153
 
106
154
  ## License
107
155
 
@@ -1,2 +1,2 @@
1
- import{A as a,B as b,C as c}from"./chunk-JXEPJ3YD.js";import"./chunk-SFQUP3BP.js";import"./chunk-JGXE2YNV.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-HPDHNIA3.js";export{a as createAgentContext,b as generate,c as generateStream};
2
- //# sourceMappingURL=agent-RDVGL2TW.js.map
1
+ import{A as a,B as b,C as c}from"./chunk-TC3BSUP7.js";import"./chunk-SFQUP3BP.js";import"./chunk-JGXE2YNV.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{a as createAgentContext,b as generate,c as generateStream};
2
+ //# sourceMappingURL=agent-57MG4LBM.js.map
@@ -1,3 +1,3 @@
1
- import"./chunk-HPDHNIA3.js";function h(e,t,o,n){let r=[],s=e.frontmatter,f=e.instructions??"",l="PASS";if(s.references?.length)for(let i of s.references)m(i,t)||(l="FAILING",r.push(`references: "${i}" does not resolve in the registry`));if(s.delegatesTo?.length)for(let i of s.delegatesTo)n.has(i)||(l="FAILING",r.push(`delegatesTo: "${i}" has no installed SKILL.md`));k(f)&&(l!=="FAILING"&&(l="REVIEW"),r.push("body contains raw `python3 ~/scripts/...` inside a code block \u2014 delegate to the relevant skill instead"));let d=["deploy","ssh","email","gitlab","ops"],p=(s.category||"").toLowerCase(),I=(s.tags||[]).map(i=>i.toLowerCase());(d.includes(p)||I.some(i=>d.includes(i))||/\b(deploy|ssh|gitlab|hotmail|server|host)\b/i.test(s.description||""))&&(!s.references||s.references.length===0)&&(l==="PASS"&&(l="REVIEW"),r.push("infrastructure-flavored skill has no `references:` frontmatter \u2014 facts should be cited from the registry"));let c=f.match(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g);if(c&&c.length>0){let i=new Set([...t.byId.values()].flatMap(a=>Object.values(a.fields).filter(g=>typeof g=="string"))),u=c.filter(a=>!i.has(a));u.length>0&&(l==="PASS"&&(l="REVIEW"),r.push(`body contains raw IP(s) not in the registry: ${[...new Set(u)].slice(0,3).join(", ")}`))}return{skill:e,name:s.name,verdict:l,reasons:r}}function S(e,t){let o=new Set;for(let r of e.recipes)for(let s of r.skills)o.add(s);let n=[];for(let r of o)t.has(r)||n.push({skill:null,name:r,verdict:"FAILING",reasons:["required by a recipe, but no SKILL.md is installed"]});return n}function A(e){let t=new Set(e.skills.map(n=>n.frontmatter.name));return[...e.skills.map(n=>h(n,e.references,e.recipes,t)),...S(e.recipes,t)]}function k(e){let t=!1;for(let o of e.split(`
1
+ import"./chunk-4YCH6IZV.js";function h(e,t,o,n){let r=[],s=e.frontmatter,f=e.instructions??"",l="PASS";if(s.references?.length)for(let i of s.references)m(i,t)||(l="FAILING",r.push(`references: "${i}" does not resolve in the registry`));if(s.delegatesTo?.length)for(let i of s.delegatesTo)n.has(i)||(l="FAILING",r.push(`delegatesTo: "${i}" has no installed SKILL.md`));k(f)&&(l!=="FAILING"&&(l="REVIEW"),r.push("body contains raw `python3 ~/scripts/...` inside a code block \u2014 delegate to the relevant skill instead"));let d=["deploy","ssh","email","gitlab","ops"],p=(s.category||"").toLowerCase(),I=(s.tags||[]).map(i=>i.toLowerCase());(d.includes(p)||I.some(i=>d.includes(i))||/\b(deploy|ssh|gitlab|hotmail|server|host)\b/i.test(s.description||""))&&(!s.references||s.references.length===0)&&(l==="PASS"&&(l="REVIEW"),r.push("infrastructure-flavored skill has no `references:` frontmatter \u2014 facts should be cited from the registry"));let c=f.match(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g);if(c&&c.length>0){let i=new Set([...t.byId.values()].flatMap(a=>Object.values(a.fields).filter(g=>typeof g=="string"))),u=c.filter(a=>!i.has(a));u.length>0&&(l==="PASS"&&(l="REVIEW"),r.push(`body contains raw IP(s) not in the registry: ${[...new Set(u)].slice(0,3).join(", ")}`))}return{skill:e,name:s.name,verdict:l,reasons:r}}function S(e,t){let o=new Set;for(let r of e.recipes)for(let s of r.skills)o.add(s);let n=[];for(let r of o)t.has(r)||n.push({skill:null,name:r,verdict:"FAILING",reasons:["required by a recipe, but no SKILL.md is installed"]});return n}function A(e){let t=new Set(e.skills.map(n=>n.frontmatter.name));return[...e.skills.map(n=>h(n,e.references,e.recipes,t)),...S(e.recipes,t)]}function k(e){let t=!1;for(let o of e.split(`
2
2
  `)){if(/^\s*```/.test(o)){t=!t;continue}if(t&&/python3\s+~\/scripts\//.test(o))return!0}return!1}function m(e,t){if(e.endsWith(".*")){let o=e.slice(0,-2);for(let n of t.byId.keys())if(n===o||n.startsWith(`${o}.`))return!0;return!1}return t.byId.has(e)}export{A as auditAll,S as auditMissingSkills,h as auditSkill};
3
- //# sourceMappingURL=audit-Z47AQFFD.js.map
3
+ //# sourceMappingURL=audit-JU3HWISB.js.map