grix-connector 3.1.13 → 3.1.15

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 (75) hide show
  1. package/README.md +241 -241
  2. package/dist/adapter/claude/claude-adapter.js +19 -19
  3. package/dist/adapter/claude/usage-parser.js +9 -7
  4. package/dist/default-skills/grix-access-control/SKILL.md +31 -31
  5. package/dist/default-skills/grix-admin/SKILL.md +35 -35
  6. package/dist/default-skills/grix-agent-dispatch/SKILL.md +89 -89
  7. package/dist/default-skills/grix-chat-state/SKILL.md +56 -56
  8. package/dist/default-skills/grix-egg/SKILL.md +90 -90
  9. package/dist/default-skills/grix-group/SKILL.md +35 -35
  10. package/dist/default-skills/grix-owner-relay/SKILL.md +66 -66
  11. package/dist/default-skills/grix-query/SKILL.md +38 -38
  12. package/dist/default-skills/message-send/SKILL.md +36 -36
  13. package/dist/default-skills/message-unsend/SKILL.md +27 -27
  14. package/dist/default-skills/tailnet-file-share/SKILL.md +65 -65
  15. package/dist/grix.js +0 -0
  16. package/dist/service/platform-adapter.js +59 -16
  17. package/openclaw-plugin/skills/grix-admin/SKILL.md +202 -202
  18. package/openclaw-plugin/skills/grix-admin/references/api-contract.md +210 -210
  19. package/openclaw-plugin/skills/grix-egg/SKILL.md +81 -81
  20. package/openclaw-plugin/skills/grix-egg/references/api-contract.md +40 -40
  21. package/openclaw-plugin/skills/grix-group/SKILL.md +164 -164
  22. package/openclaw-plugin/skills/grix-group/references/api-contract.md +97 -97
  23. package/openclaw-plugin/skills/grix-query/SKILL.md +247 -247
  24. package/openclaw-plugin/skills/grix-register/SKILL.md +86 -86
  25. package/openclaw-plugin/skills/grix-register/references/api-contract.md +76 -76
  26. package/openclaw-plugin/skills/grix-register/references/grix-concepts.md +26 -26
  27. package/openclaw-plugin/skills/grix-register/references/handoff-contract.md +24 -24
  28. package/openclaw-plugin/skills/grix-register/references/openclaw-setup.md +6 -6
  29. package/openclaw-plugin/skills/grix-register/references/user-replies.md +25 -25
  30. package/openclaw-plugin/skills/grix-update/SKILL.md +310 -310
  31. package/openclaw-plugin/skills/grix-update/references/cron-setup.md +56 -56
  32. package/openclaw-plugin/skills/grix-update/references/update-contract.md +149 -149
  33. package/openclaw-plugin/skills/message-send/SKILL.md +197 -197
  34. package/openclaw-plugin/skills/message-unsend/SKILL.md +186 -186
  35. package/openclaw-plugin/skills/message-unsend/flowchart.mermaid +27 -27
  36. package/openclaw-plugin/skills/openclaw-memory-setup/SKILL.md +282 -282
  37. package/openclaw-plugin/skills/openclaw-memory-setup/references/case-study-macpro.md +52 -52
  38. package/openclaw-plugin/skills/openclaw-memory-setup/references/host-readiness.md +147 -147
  39. package/openclaw.plugin.json +24 -24
  40. package/package.json +121 -121
  41. package/scripts/install-guardian.mjs +27 -27
  42. package/scripts/install-guardian.sh +25 -25
  43. package/scripts/upgrade-guardian.sh +104 -104
  44. package/dist/adapter/claude/claude-bridge-server.js +0 -1
  45. package/dist/adapter/claude/claude-tools.js +0 -1
  46. package/dist/adapter/claude/claude-worker-client.js +0 -1
  47. package/dist/adapter/claude/mcp-http-launcher.js +0 -2
  48. package/dist/adapter/claude/result-timeout.js +0 -1
  49. package/dist/adapter/deepseek/deepseek-adapter.js +0 -6
  50. package/dist/adapter/deepseek/index.js +0 -1
  51. package/dist/adapter/qwen/index.js +0 -1
  52. package/dist/adapter/qwen/qwen-adapter.js +0 -4
  53. package/dist/aibot/client.js +0 -1
  54. package/dist/aibot/index.js +0 -1
  55. package/dist/aibot/types.js +0 -0
  56. package/dist/core/file-ops/handler.js +0 -1
  57. package/dist/core/file-ops/list-files.js +0 -1
  58. package/dist/core/file-ops/types.js +0 -0
  59. package/dist/default-skills/grix-task-status/SKILL.md +0 -36
  60. package/dist/log.js +0 -3
  61. package/dist/main.js +0 -31
  62. package/dist/mcp/stream-http/config.js +0 -1
  63. package/dist/mcp/stream-http/connection-binding.js +0 -1
  64. package/dist/mcp/stream-http/event-tool-executor.js +0 -1
  65. package/dist/mcp/stream-http/gateway.js +0 -1
  66. package/dist/mcp/stream-http/index.js +0 -1
  67. package/dist/mcp/stream-http/security.js +0 -1
  68. package/dist/mcp/stream-http/session-manager.js +0 -1
  69. package/dist/mcp/stream-http/tool-executor.js +0 -1
  70. package/dist/mcp/stream-http/tool-registry.js +0 -1
  71. package/dist/mcp/stream-http/tool-schemas.js +0 -1
  72. package/dist/session/index.js +0 -1
  73. package/dist/session/manager.js +0 -1
  74. package/dist/transport/index.js +0 -1
  75. package/dist/transport/json-rpc.js +0 -3
@@ -1,197 +1,197 @@
1
- ---
2
- name: message-send
3
- description: Send messages. Supports current session replies and cross-session sending. For cross-session, use an exact `session_id` or an existing `route.sessionKey` as the `to` target; do not use the legacy `target=agent:...` format. Trigger words: send DM, DM, send message, notify.
4
- ---
5
-
6
- # Message Send Skill
7
-
8
- This skill is used to send messages through OpenClaw's `message` tool.
9
-
10
- ## Two Sending Modes
11
-
12
- ### 1. Current Session Reply
13
-
14
- If replying to the current Grix session, send directly without providing an additional target session.
15
-
16
- **Parameters**:
17
- - `action`: "send"
18
- - `channel`: "grix"
19
- - `accountId`: current account ID
20
- - `message`: message content
21
-
22
- **Example**:
23
-
24
- ```json
25
- {
26
- "action": "send",
27
- "channel": "grix",
28
- "accountId": "{accountId}",
29
- "message": "Got it, processing now..."
30
- }
31
- ```
32
-
33
- ### 2. Cross-Session Sending
34
-
35
- If sending to another private chat or group chat, use `to` to point to the target session.
36
-
37
- **Parameters**:
38
- - `action`: "send"
39
- - `channel`: "grix"
40
- - `accountId`: current account ID
41
- - `to`: target session identifier
42
- - `message`: message content
43
-
44
- **Example**:
45
-
46
- ```json
47
- {
48
- "action": "send",
49
- "channel": "grix",
50
- "accountId": "{accountId}",
51
- "to": "{targetSessionId}",
52
- "message": "Need your confirmation on a development decision: ..."
53
- }
54
- ```
55
-
56
- ## Real Format of `to`
57
-
58
- The current plugin recognizes these two types of targets:
59
-
60
- 1. Exact Grix `session_id` (recommended, usually a UUID)
61
- 2. An existing `route.sessionKey` in the current runtime
62
-
63
- Recommended to pass the bare `session_id` directly:
64
-
65
- ```text
66
- to=e72ce987-2d2e-40ed-bcc9-b336b4974512
67
- ```
68
-
69
- In compatible formats, `grix:<session_id>` or `session:<session_id>` can also be parsed, but should not be used as the default format.
70
-
71
- Do not use these legacy formats:
72
-
73
- 1. `target=agent:{agentId}:grix:direct:{sessionId}`
74
- 2. Pure numeric user ID / agent ID
75
- 3. Non-existent session aliases
76
-
77
- ## How to Obtain the Target Session
78
-
79
- 1. If replying to the current session, simply omit `to`
80
- 2. If MEMORY.md already records the target `session_id`, reuse it directly
81
- 3. If the target session is unknown, first use `grix_query`'s `session_search` to find the exact `session_id`
82
-
83
- Example:
84
-
85
- ```json
86
- {
87
- "action": "send",
88
- "channel": "grix",
89
- "accountId": "{accountId}",
90
- "to": "{groupSessionId}",
91
- "message": "Task completed, please check the results"
92
- }
93
- ```
94
-
95
- ## Key Parameter Reference
96
-
97
- | Parameter | Required | Description |
98
- |------|------|------|
99
- | `action` | ✅ | Fixed value `"send"` |
100
- | `channel` | ✅ | Fixed value `"grix"` |
101
- | `accountId` | ✅ | Current Grix account ID |
102
- | `message` | ✅ | Message content |
103
- | `to` | Required for cross-session | Exact `session_id` or resolvable `route.sessionKey` |
104
-
105
- ## Important Notes
106
-
107
- 1. Use `to`, not `target`
108
- 2. `to` should preferably be an exact `session_id`; do not confuse user ID, agent ID, and session ID
109
- 3. Pure numeric targets will fail directly; they will not auto-convert to private chats
110
- 4. Before sending cross-session messages, confirm the current account has send permission for the target session
111
- 5. Message content supports plain text and markdown
112
-
113
- ## Conversation Card Message Protocol
114
-
115
- When the message content is **reminding the user to open a group chat**, **open a private chat conversation**, or **referencing a specific conversation entry point**, and you already have the exact `session_id`, do not send natural language links or frontend internal JSON; you must send a standalone `grix://card/conversation` Markdown link, which the frontend will uniformly parse and render as a clickable conversation card.
116
-
117
- ### Standard Format
118
-
119
- Group chat:
120
-
121
- ```text
122
- [Open Group](grix://card/conversation?session_id=<SESSION_ID>&session_type=group&title=<URI_ENCODED_GROUP_TITLE>)
123
- ```
124
-
125
- Private chat:
126
-
127
- ```text
128
- [Open Conversation](grix://card/conversation?session_id=<SESSION_ID>&session_type=private&title=<URI_ENCODED_CHAT_TITLE>&peer_id=<URI_ENCODED_PEER_ID>)
129
- ```
130
-
131
- ### Field Rules
132
-
133
- - `session_id`: Required. Must be the exact target session ID.
134
- - `session_type`: Required. Can only be `group` or `private`.
135
- - `title`: Required. The group title or private chat title displayed to the user.
136
- - `peer_id`: Optional for private chat only. Used to supplement private chat peer information, but frontend open behavior is still based on `session_id`.
137
-
138
- ### Encoding Rules
139
-
140
- To prevent spaces, newlines, or reserved characters in titles, nicknames, URLs, and other fields from breaking the link, query parameter values should be URI component encoded before being written into the `grix://card` link.
141
-
142
- - Recommended: uniformly apply URI component encoding to `title`, `peer_id`, and any future text fields
143
- - `session_id` and `session_type` can be output as-is if they only contain safe characters
144
- - Link text is plain copy for the user to see and does not need URI encoding
145
-
146
- Example:
147
-
148
- ```text
149
- [Open Group](grix://card/conversation?session_id=session-9&session_type=group&title=%E4%BA%A7%E5%93%81%E8%AE%A8%E8%AE%BA%E7%BE%A4%20A)
150
- ```
151
-
152
- ### Usage Requirements
153
-
154
- 1. Only output a conversation card when the **exact `session_id` is known**
155
- 2. If there is no `session_id`, can only send plain text explanation; cannot fabricate a conversation card
156
- 3. Do not output `chat://...`, web links, or "click here to open session" style natural language link alternatives
157
- 4. Do not construct frontend internal `biz_card` JSON or attempt to send Flutter/frontend private protocol structures
158
- 5. The `grix://card/conversation` link must be on a single line and must be sent as a standalone message
159
- 6. If additional explanation is needed, send the explanation text and the card as two separate messages; do not mix explanation and card in the same message
160
- 7. Do not put multiple cards in the same message; when multiple jump entries are needed, send multiple messages
161
- 8. If field values contain special characters, apply URI component encoding first, then assemble into the link
162
-
163
- ### Examples
164
-
165
- Example 1: Remind user to enter a group chat
166
-
167
- ```text
168
- [Open Product Group](grix://card/conversation?session_id=9d6a4b1d-5d37-4e38-ae6a-0c12a2c4c901&session_type=group&title=%E4%BA%A7%E5%93%81%E7%BE%A4)
169
- ```
170
-
171
- Example 2: Remind user to enter a private chat
172
-
173
- ```text
174
- [Open Alice Conversation](grix://card/conversation?session_id=e72ce987-2d2e-40ed-bcc9-b336b4974512&session_type=private&title=Alice&peer_id=1001)
175
- ```
176
-
177
- Example 3: Send explanation and card as two separate messages
178
-
179
- ```text
180
- Message 1: The test group has been created. Check the next card to enter directly.
181
- Message 2: [Open Test Group](grix://card/conversation?session_id=0fa947bd-bb4e-46ad-8308-5526bc98e002&session_type=group&title=%E6%B5%8B%E8%AF%95%E7%BE%A4)
182
- ```
183
-
184
- ## Error Handling
185
-
186
- - `to` cannot be resolved: confirm whether the `session_id` or `route.sessionKey` is correct
187
- - Insufficient permissions: check whether the current `accountId` has send permission for the target session
188
- - Missing parameters: ensure all required parameters are provided
189
- - Target format error: check whether `to` is an exact `session_id` or valid `route.sessionKey`
190
-
191
- ## Best Practices
192
-
193
- 1. For cross-session sending, prefer recording and reusing exact `session_id`
194
- 2. When you need to find a session, use `grix_query.session_search` first
195
- 3. Keep message content concise and highlight key points
196
- 4. Do not abuse proactive messages to avoid disturbing the owner
197
- 5. Prefer conversation cards over plain text explanations when navigation is needed
1
+ ---
2
+ name: message-send
3
+ description: Send messages. Supports current session replies and cross-session sending. For cross-session, use an exact `session_id` or an existing `route.sessionKey` as the `to` target; do not use the legacy `target=agent:...` format. Trigger words: send DM, DM, send message, notify.
4
+ ---
5
+
6
+ # Message Send Skill
7
+
8
+ This skill is used to send messages through OpenClaw's `message` tool.
9
+
10
+ ## Two Sending Modes
11
+
12
+ ### 1. Current Session Reply
13
+
14
+ If replying to the current Grix session, send directly without providing an additional target session.
15
+
16
+ **Parameters**:
17
+ - `action`: "send"
18
+ - `channel`: "grix"
19
+ - `accountId`: current account ID
20
+ - `message`: message content
21
+
22
+ **Example**:
23
+
24
+ ```json
25
+ {
26
+ "action": "send",
27
+ "channel": "grix",
28
+ "accountId": "{accountId}",
29
+ "message": "Got it, processing now..."
30
+ }
31
+ ```
32
+
33
+ ### 2. Cross-Session Sending
34
+
35
+ If sending to another private chat or group chat, use `to` to point to the target session.
36
+
37
+ **Parameters**:
38
+ - `action`: "send"
39
+ - `channel`: "grix"
40
+ - `accountId`: current account ID
41
+ - `to`: target session identifier
42
+ - `message`: message content
43
+
44
+ **Example**:
45
+
46
+ ```json
47
+ {
48
+ "action": "send",
49
+ "channel": "grix",
50
+ "accountId": "{accountId}",
51
+ "to": "{targetSessionId}",
52
+ "message": "Need your confirmation on a development decision: ..."
53
+ }
54
+ ```
55
+
56
+ ## Real Format of `to`
57
+
58
+ The current plugin recognizes these two types of targets:
59
+
60
+ 1. Exact Grix `session_id` (recommended, usually a UUID)
61
+ 2. An existing `route.sessionKey` in the current runtime
62
+
63
+ Recommended to pass the bare `session_id` directly:
64
+
65
+ ```text
66
+ to=e72ce987-2d2e-40ed-bcc9-b336b4974512
67
+ ```
68
+
69
+ In compatible formats, `grix:<session_id>` or `session:<session_id>` can also be parsed, but should not be used as the default format.
70
+
71
+ Do not use these legacy formats:
72
+
73
+ 1. `target=agent:{agentId}:grix:direct:{sessionId}`
74
+ 2. Pure numeric user ID / agent ID
75
+ 3. Non-existent session aliases
76
+
77
+ ## How to Obtain the Target Session
78
+
79
+ 1. If replying to the current session, simply omit `to`
80
+ 2. If MEMORY.md already records the target `session_id`, reuse it directly
81
+ 3. If the target session is unknown, first use `grix_query`'s `session_search` to find the exact `session_id`
82
+
83
+ Example:
84
+
85
+ ```json
86
+ {
87
+ "action": "send",
88
+ "channel": "grix",
89
+ "accountId": "{accountId}",
90
+ "to": "{groupSessionId}",
91
+ "message": "Task completed, please check the results"
92
+ }
93
+ ```
94
+
95
+ ## Key Parameter Reference
96
+
97
+ | Parameter | Required | Description |
98
+ |------|------|------|
99
+ | `action` | ✅ | Fixed value `"send"` |
100
+ | `channel` | ✅ | Fixed value `"grix"` |
101
+ | `accountId` | ✅ | Current Grix account ID |
102
+ | `message` | ✅ | Message content |
103
+ | `to` | Required for cross-session | Exact `session_id` or resolvable `route.sessionKey` |
104
+
105
+ ## Important Notes
106
+
107
+ 1. Use `to`, not `target`
108
+ 2. `to` should preferably be an exact `session_id`; do not confuse user ID, agent ID, and session ID
109
+ 3. Pure numeric targets will fail directly; they will not auto-convert to private chats
110
+ 4. Before sending cross-session messages, confirm the current account has send permission for the target session
111
+ 5. Message content supports plain text and markdown
112
+
113
+ ## Conversation Card Message Protocol
114
+
115
+ When the message content is **reminding the user to open a group chat**, **open a private chat conversation**, or **referencing a specific conversation entry point**, and you already have the exact `session_id`, do not send natural language links or frontend internal JSON; you must send a standalone `grix://card/conversation` Markdown link, which the frontend will uniformly parse and render as a clickable conversation card.
116
+
117
+ ### Standard Format
118
+
119
+ Group chat:
120
+
121
+ ```text
122
+ [Open Group](grix://card/conversation?session_id=<SESSION_ID>&session_type=group&title=<URI_ENCODED_GROUP_TITLE>)
123
+ ```
124
+
125
+ Private chat:
126
+
127
+ ```text
128
+ [Open Conversation](grix://card/conversation?session_id=<SESSION_ID>&session_type=private&title=<URI_ENCODED_CHAT_TITLE>&peer_id=<URI_ENCODED_PEER_ID>)
129
+ ```
130
+
131
+ ### Field Rules
132
+
133
+ - `session_id`: Required. Must be the exact target session ID.
134
+ - `session_type`: Required. Can only be `group` or `private`.
135
+ - `title`: Required. The group title or private chat title displayed to the user.
136
+ - `peer_id`: Optional for private chat only. Used to supplement private chat peer information, but frontend open behavior is still based on `session_id`.
137
+
138
+ ### Encoding Rules
139
+
140
+ To prevent spaces, newlines, or reserved characters in titles, nicknames, URLs, and other fields from breaking the link, query parameter values should be URI component encoded before being written into the `grix://card` link.
141
+
142
+ - Recommended: uniformly apply URI component encoding to `title`, `peer_id`, and any future text fields
143
+ - `session_id` and `session_type` can be output as-is if they only contain safe characters
144
+ - Link text is plain copy for the user to see and does not need URI encoding
145
+
146
+ Example:
147
+
148
+ ```text
149
+ [Open Group](grix://card/conversation?session_id=session-9&session_type=group&title=%E4%BA%A7%E5%93%81%E8%AE%A8%E8%AE%BA%E7%BE%A4%20A)
150
+ ```
151
+
152
+ ### Usage Requirements
153
+
154
+ 1. Only output a conversation card when the **exact `session_id` is known**
155
+ 2. If there is no `session_id`, can only send plain text explanation; cannot fabricate a conversation card
156
+ 3. Do not output `chat://...`, web links, or "click here to open session" style natural language link alternatives
157
+ 4. Do not construct frontend internal `biz_card` JSON or attempt to send Flutter/frontend private protocol structures
158
+ 5. The `grix://card/conversation` link must be on a single line and must be sent as a standalone message
159
+ 6. If additional explanation is needed, send the explanation text and the card as two separate messages; do not mix explanation and card in the same message
160
+ 7. Do not put multiple cards in the same message; when multiple jump entries are needed, send multiple messages
161
+ 8. If field values contain special characters, apply URI component encoding first, then assemble into the link
162
+
163
+ ### Examples
164
+
165
+ Example 1: Remind user to enter a group chat
166
+
167
+ ```text
168
+ [Open Product Group](grix://card/conversation?session_id=9d6a4b1d-5d37-4e38-ae6a-0c12a2c4c901&session_type=group&title=%E4%BA%A7%E5%93%81%E7%BE%A4)
169
+ ```
170
+
171
+ Example 2: Remind user to enter a private chat
172
+
173
+ ```text
174
+ [Open Alice Conversation](grix://card/conversation?session_id=e72ce987-2d2e-40ed-bcc9-b336b4974512&session_type=private&title=Alice&peer_id=1001)
175
+ ```
176
+
177
+ Example 3: Send explanation and card as two separate messages
178
+
179
+ ```text
180
+ Message 1: The test group has been created. Check the next card to enter directly.
181
+ Message 2: [Open Test Group](grix://card/conversation?session_id=0fa947bd-bb4e-46ad-8308-5526bc98e002&session_type=group&title=%E6%B5%8B%E8%AF%95%E7%BE%A4)
182
+ ```
183
+
184
+ ## Error Handling
185
+
186
+ - `to` cannot be resolved: confirm whether the `session_id` or `route.sessionKey` is correct
187
+ - Insufficient permissions: check whether the current `accountId` has send permission for the target session
188
+ - Missing parameters: ensure all required parameters are provided
189
+ - Target format error: check whether `to` is an exact `session_id` or valid `route.sessionKey`
190
+
191
+ ## Best Practices
192
+
193
+ 1. For cross-session sending, prefer recording and reusing exact `session_id`
194
+ 2. When you need to find a session, use `grix_query.session_search` first
195
+ 3. Keep message content concise and highlight key points
196
+ 4. Do not abuse proactive messages to avoid disturbing the owner
197
+ 5. Prefer conversation cards over plain text explanations when navigation is needed