@codyswann/lisa 2.147.4 → 2.147.5
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/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
package/package.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"lodash": ">=4.18.1"
|
|
85
85
|
},
|
|
86
86
|
"name": "@codyswann/lisa",
|
|
87
|
-
"version": "2.147.
|
|
87
|
+
"version": "2.147.5",
|
|
88
88
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
89
89
|
"main": "dist/index.js",
|
|
90
90
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.147.
|
|
3
|
+
"version": "2.147.5",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.147.
|
|
3
|
+
"version": "2.147.5",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md
CHANGED
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.147.
|
|
3
|
+
"version": "2.147.5",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md
CHANGED
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.147.
|
|
3
|
+
"version": "2.147.5",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.147.
|
|
3
|
+
"version": "2.147.5",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md
CHANGED
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
package/plugins/src/openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md
CHANGED
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|