pi-roundtable 0.1.0 → 0.2.1

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 (239) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +10 -6
  3. package/README.zh-TW.md +144 -0
  4. package/docs/plugins.md +1448 -66
  5. package/examples/echo-runtime.test.ts +122 -0
  6. package/examples/echo-runtime.ts +107 -0
  7. package/examples/events.test.ts +1 -0
  8. package/examples/events.ts +2 -2
  9. package/examples/fake-surface.test.ts +180 -0
  10. package/examples/fake-surface.ts +109 -0
  11. package/examples/interactions.test.ts +12 -3
  12. package/examples/interactions.ts +19 -19
  13. package/examples/shared-services.test.ts +74 -0
  14. package/examples/shared-services.ts +60 -0
  15. package/examples/study-room.test.ts +69 -0
  16. package/examples/study-room.ts +52 -0
  17. package/examples/support-desk.test.ts +34 -0
  18. package/examples/support-desk.ts +40 -0
  19. package/package.json +11 -3
  20. package/src/cli/checks/database.ts +11 -30
  21. package/src/cli/checks/images.ts +19 -0
  22. package/src/cli/doctor.ts +6 -0
  23. package/src/cli/main.ts +2 -1
  24. package/src/core/agents/agent-claim.ts +42 -16
  25. package/src/core/agents/agent-messages.ts +4 -4
  26. package/src/core/agents/agent-ports.ts +8 -21
  27. package/src/core/agents/agent-prompt.ts +3 -1
  28. package/src/core/agents/agent-store.ts +6 -4
  29. package/src/core/agents/agent-team-fixture.ts +389 -0
  30. package/src/core/agents/agent-team.ts +26 -25
  31. package/src/core/agents/agent-tools.ts +34 -15
  32. package/src/core/agents/avatar-studio.ts +40 -6
  33. package/src/core/agents/fallback-avatar.ts +85 -0
  34. package/src/core/agents/team-editing.ts +49 -10
  35. package/src/core/agents/team-keys.ts +22 -9
  36. package/src/core/agents/team-layout.ts +4 -3
  37. package/src/core/agents/team-lifecycle.ts +28 -2
  38. package/src/core/agents/team-options.ts +9 -5
  39. package/src/core/agents/team-status.ts +4 -4
  40. package/src/core/agents/team-text.ts +8 -6
  41. package/src/core/agents/team-turn-types.ts +4 -4
  42. package/src/core/agents/team-turns.ts +6 -5
  43. package/src/core/builtin/agent-server.ts +187 -121
  44. package/src/core/builtin/discord-admin.ts +41 -0
  45. package/src/core/builtin/discord.ts +65 -40
  46. package/src/core/builtin/modules.ts +67 -58
  47. package/src/core/builtin/session-tool.ts +24 -0
  48. package/src/core/builtin/skills.ts +72 -0
  49. package/src/core/builtin/stores.ts +55 -31
  50. package/src/core/config/config.ts +45 -4
  51. package/src/core/config/schema.ts +6 -0
  52. package/src/core/contract/channels.ts +54 -14
  53. package/src/core/contract/providers.ts +17 -0
  54. package/src/core/contract/runtime.ts +138 -0
  55. package/src/core/contract/services.ts +45 -0
  56. package/src/core/contract/surface.ts +88 -0
  57. package/src/core/db/migrations.ts +118 -3
  58. package/src/core/define-roundtable.ts +70 -46
  59. package/src/core/define.ts +2 -1
  60. package/src/core/discord/agent-commands.ts +39 -14
  61. package/src/core/discord/agent-panel.ts +66 -0
  62. package/src/core/discord/channel-executor.ts +6 -3
  63. package/src/core/discord/channel-operations.ts +14 -11
  64. package/src/core/discord/command-collection.ts +46 -0
  65. package/src/core/{registry/interactions.ts → discord/compose-commands.ts} +5 -5
  66. package/src/core/discord/connection.ts +35 -0
  67. package/src/core/discord/discord-surface.ts +32 -94
  68. package/src/core/discord/dispatch-threads.ts +2 -2
  69. package/src/core/discord/inbound-message.ts +99 -0
  70. package/src/core/discord/interaction-module.ts +57 -1
  71. package/src/core/discord/owner-cards.ts +4 -4
  72. package/src/core/discord/owner-command.ts +44 -11
  73. package/src/core/discord/owner-discord.ts +2 -2
  74. package/src/core/discord/schedule-commands.ts +21 -18
  75. package/src/core/discord/stop-button.ts +44 -1
  76. package/src/core/domain/attachment.ts +12 -8
  77. package/src/core/domain/conversation.ts +3 -4
  78. package/src/core/domain/owner-prompts.ts +5 -5
  79. package/src/core/domain/ports.ts +9 -53
  80. package/src/core/freeze.ts +9 -0
  81. package/src/core/host.ts +255 -82
  82. package/src/core/http/listeners.ts +55 -20
  83. package/src/core/i18n/agent-panel.ts +4 -0
  84. package/src/core/i18n/index.ts +12 -2
  85. package/src/core/i18n/owner.ts +7 -1
  86. package/src/core/i18n/schedules.ts +12 -6
  87. package/src/core/identity.ts +1 -1
  88. package/src/core/judging/effort-judge.ts +25 -3
  89. package/src/core/log.ts +21 -3
  90. package/src/core/models.ts +2 -2
  91. package/src/core/modules/background/background-turns.ts +6 -4
  92. package/src/core/modules/delegation/delegate.ts +3 -2
  93. package/src/core/modules/delegation/delegator.ts +15 -13
  94. package/src/core/modules/delegation/{sol-worker.ts → web-research-worker.ts} +6 -6
  95. package/src/core/modules/discord-admin/discord-admin.ts +6 -6
  96. package/src/core/modules/host-shell/shell-policy.ts +8 -3
  97. package/src/core/modules/memory/owner-memory-store.ts +27 -25
  98. package/src/core/modules/memory/owner-memory.ts +9 -13
  99. package/src/core/modules/schedules/recurrence.ts +5 -3
  100. package/src/core/modules/schedules/schedule-store.ts +11 -11
  101. package/src/core/modules/schedules/schedule-tools.ts +22 -20
  102. package/src/core/modules/schedules/scheduler.ts +7 -2
  103. package/src/core/modules/schedules/schedules.ts +9 -3
  104. package/src/core/modules/skills/skill-registry.ts +3 -2
  105. package/src/core/modules/skills/skill-store.ts +2 -15
  106. package/src/core/modules/skills/skill-tools.ts +10 -4
  107. package/src/core/ops/error-reporter.ts +1 -1
  108. package/src/core/plugin.ts +232 -28
  109. package/src/core/registry/contributions.ts +173 -14
  110. package/src/core/registry/providers.ts +35 -5
  111. package/src/core/registry/services.ts +229 -0
  112. package/src/core/routing/channel-queue.ts +5 -0
  113. package/src/core/routing/channel-router.ts +21 -7
  114. package/src/core/routing/conversation-turns.ts +139 -0
  115. package/src/core/routing/message-text.ts +9 -2
  116. package/src/core/routing/surface-port.ts +39 -0
  117. package/src/core/runtime/conversation-sessions.ts +4 -3
  118. package/src/core/runtime/extensions/confirmation-fixture.ts +11 -0
  119. package/src/core/runtime/extensions/confirmation-gate.ts +11 -9
  120. package/src/core/runtime/mcp.ts +1 -1
  121. package/src/core/runtime/pending-confirmation-store.ts +10 -12
  122. package/src/core/runtime/pi-agent-runtime.ts +9 -6
  123. package/src/core/runtime/prompt-slot.ts +8 -3
  124. package/src/core/runtime/runtime-types.ts +9 -35
  125. package/src/core/runtime/session-factory.ts +21 -5
  126. package/src/core/runtime/text-tools.ts +1 -3
  127. package/src/core/services.ts +238 -90
  128. package/src/core/sessions.ts +3 -2
  129. package/src/core/shared/{profile-tools.ts → active-tools.ts} +2 -2
  130. package/src/core/shared/delegate-tool.ts +4 -3
  131. package/src/core/shared/schedule-tools.ts +22 -13
  132. package/src/core/shared/session-messages.ts +1 -1
  133. package/src/core/speakers.ts +6 -38
  134. package/src/core/testing/database.ts +1 -7
  135. package/src/core/testing/eager-catalog.ts +30 -0
  136. package/src/core/testing/locale.ts +23 -5
  137. package/src/core/testing/modules.ts +105 -41
  138. package/src/core/testing/test-host.ts +279 -0
  139. package/src/core/testing/tool-set.ts +64 -0
  140. package/src/core/time.ts +6 -1
  141. package/src/core/tool-set.snapshot.json +288 -0
  142. package/src/core/tool-tiers.ts +17 -57
  143. package/src/discord/index.ts +64 -0
  144. package/src/index.ts +181 -10
  145. package/src/kit/channels.ts +14 -0
  146. package/src/kit/domain.ts +18 -0
  147. package/src/kit/holds.ts +4 -0
  148. package/src/kit/index.ts +129 -0
  149. package/src/kit/judging.ts +10 -0
  150. package/src/kit/memory.ts +3 -0
  151. package/src/kit/mirror.ts +19 -0
  152. package/src/kit/presentation.ts +7 -0
  153. package/src/kit/shell.ts +7 -0
  154. package/src/kit/skills.ts +8 -0
  155. package/src/kit/support.ts +21 -0
  156. package/src/kit/threads.ts +7 -0
  157. package/src/kit/tools.ts +14 -0
  158. package/src/kit/worker.ts +16 -0
  159. package/src/testing.ts +394 -34
  160. package/examples/guide.test.ts +0 -52
  161. package/src/cli/add-plugin.test.ts +0 -107
  162. package/src/cli/checks/basic.test.ts +0 -276
  163. package/src/cli/checks/database.test.ts +0 -117
  164. package/src/cli/checks/discord.test.ts +0 -200
  165. package/src/cli/cli.test.ts +0 -122
  166. package/src/cli/config-edit.test.ts +0 -130
  167. package/src/cli/doctor.test.ts +0 -184
  168. package/src/cli/init.test.ts +0 -127
  169. package/src/cli/size.test.ts +0 -9
  170. package/src/cli/templates.test.ts +0 -129
  171. package/src/cli/testing/fixtures.ts +0 -106
  172. package/src/core/agents/agent-claim.test.ts +0 -142
  173. package/src/core/agents/agent-dashboard.test.ts +0 -120
  174. package/src/core/agents/agent-guild.test.ts +0 -124
  175. package/src/core/agents/agent-store.test.ts +0 -205
  176. package/src/core/agents/avatar-studio.test.ts +0 -88
  177. package/src/core/agents/group-round.test.ts +0 -143
  178. package/src/core/agents/owner-identity.test.ts +0 -172
  179. package/src/core/agents/team-turns.test.ts +0 -278
  180. package/src/core/attachments/attachments.test.ts +0 -85
  181. package/src/core/boundary.test.ts +0 -45
  182. package/src/core/builtin/modules.test.ts +0 -127
  183. package/src/core/config/config.test.ts +0 -135
  184. package/src/core/contract/discord.ts +0 -33
  185. package/src/core/db/migrations.test.ts +0 -237
  186. package/src/core/define-roundtable.test.ts +0 -134
  187. package/src/core/define.test.ts +0 -144
  188. package/src/core/discord/agent-commands.test.ts +0 -58
  189. package/src/core/discord/agent-discord.test.ts +0 -70
  190. package/src/core/discord/dispatch-thread-host.test.ts +0 -114
  191. package/src/core/discord/dispatch-threads.test.ts +0 -94
  192. package/src/core/discord/owner-cards.test.ts +0 -435
  193. package/src/core/discord/owner-discord.test.ts +0 -325
  194. package/src/core/domain/expression.ts +0 -21
  195. package/src/core/domain/profile.ts +0 -32
  196. package/src/core/drain.test.ts +0 -46
  197. package/src/core/events.test.ts +0 -81
  198. package/src/core/holds.test.ts +0 -54
  199. package/src/core/host.test.ts +0 -536
  200. package/src/core/http/listeners.test.ts +0 -164
  201. package/src/core/i18n/i18n.test.ts +0 -139
  202. package/src/core/identity.test.ts +0 -18
  203. package/src/core/judging/effort-judge.test.ts +0 -112
  204. package/src/core/judging/model-judge.test.ts +0 -126
  205. package/src/core/modules/delegation/delegator.test.ts +0 -170
  206. package/src/core/modules/memory/owner-memory-store.test.ts +0 -244
  207. package/src/core/modules/schedules/schedule.test.ts +0 -358
  208. package/src/core/modules/skills/skill-kind.test.ts +0 -55
  209. package/src/core/modules/skills/skill-registry.test.ts +0 -376
  210. package/src/core/ops/error-reporter.test.ts +0 -283
  211. package/src/core/presentation/card-cadence.ts +0 -41
  212. package/src/core/presentation/presentation.test.ts +0 -166
  213. package/src/core/public-entry.test.ts +0 -59
  214. package/src/core/registry/contributions.test.ts +0 -215
  215. package/src/core/registry/interactions.test.ts +0 -87
  216. package/src/core/registry/providers.test.ts +0 -103
  217. package/src/core/routing/channel-queue.test.ts +0 -31
  218. package/src/core/routing/channel-router.test.ts +0 -326
  219. package/src/core/routing/conversation-kind.ts +0 -14
  220. package/src/core/routing/settle-turn.test.ts +0 -21
  221. package/src/core/runtime/compaction-tiers.test.ts +0 -227
  222. package/src/core/runtime/extensions/ask-user.test.ts +0 -114
  223. package/src/core/runtime/extensions/self-compact-guard.test.ts +0 -50
  224. package/src/core/runtime/pending-confirmation-store.test.ts +0 -52
  225. package/src/core/runtime/session-archive.test.ts +0 -20
  226. package/src/core/runtime/steerable-run.test.ts +0 -264
  227. package/src/core/runtime/text-tools.test.ts +0 -110
  228. package/src/core/runtime/turn-answer.test.ts +0 -72
  229. package/src/core/runtime/worker-task.test.ts +0 -82
  230. package/src/core/services.test.ts +0 -28
  231. package/src/core/sessions.test.ts +0 -85
  232. package/src/core/shared/unix-server.ts +0 -18
  233. package/src/core/size.test.ts +0 -9
  234. package/src/core/speakers.test.ts +0 -78
  235. package/src/core/testing/file-size.ts +0 -34
  236. package/src/core/time.test.ts +0 -166
  237. package/src/core/tool-tiers.test.ts +0 -117
  238. package/src/entries.test.ts +0 -112
  239. package/src/testing.test.ts +0 -156
@@ -0,0 +1,288 @@
1
+ {
2
+ "sessions": {
3
+ "owner": {
4
+ "tools": [
5
+ "delegate_task",
6
+ "discord_add_member_role",
7
+ "discord_ban_member",
8
+ "discord_create_channel",
9
+ "discord_create_role",
10
+ "discord_create_thread",
11
+ "discord_delete_channel",
12
+ "discord_delete_channel_permissions",
13
+ "discord_delete_message",
14
+ "discord_delete_role",
15
+ "discord_edit_channel",
16
+ "discord_edit_message",
17
+ "discord_edit_role",
18
+ "discord_edit_thread",
19
+ "discord_find_members",
20
+ "discord_get_channel_info",
21
+ "discord_get_messages",
22
+ "discord_get_pinned_messages",
23
+ "discord_kick_member",
24
+ "discord_list_channels",
25
+ "discord_list_roles",
26
+ "discord_list_servers",
27
+ "discord_list_threads",
28
+ "discord_pin_message",
29
+ "discord_remove_member_role",
30
+ "discord_search_messages",
31
+ "discord_send_message",
32
+ "discord_set_channel_permissions",
33
+ "discord_set_nickname",
34
+ "discord_timeout_member",
35
+ "discord_unban_member",
36
+ "discord_unpin_message",
37
+ "memory_add",
38
+ "memory_remove",
39
+ "memory_search",
40
+ "notify_owner",
41
+ "schedule_cancel",
42
+ "schedule_create",
43
+ "schedule_list",
44
+ "schedule_update"
45
+ ]
46
+ },
47
+ "agent": {
48
+ "tools": [
49
+ "agent_create",
50
+ "agent_get",
51
+ "agent_list",
52
+ "agent_skills",
53
+ "agent_update",
54
+ "archive",
55
+ "channel_arrange",
56
+ "channel_read",
57
+ "delegate_task",
58
+ "discord_add_member_role",
59
+ "discord_ban_member",
60
+ "discord_create_channel",
61
+ "discord_create_role",
62
+ "discord_create_thread",
63
+ "discord_delete_channel",
64
+ "discord_delete_channel_permissions",
65
+ "discord_delete_message",
66
+ "discord_delete_role",
67
+ "discord_edit_channel",
68
+ "discord_edit_message",
69
+ "discord_edit_role",
70
+ "discord_edit_thread",
71
+ "discord_find_members",
72
+ "discord_get_channel_info",
73
+ "discord_get_messages",
74
+ "discord_get_pinned_messages",
75
+ "discord_kick_member",
76
+ "discord_list_channels",
77
+ "discord_list_roles",
78
+ "discord_list_servers",
79
+ "discord_list_threads",
80
+ "discord_pin_message",
81
+ "discord_remove_member_role",
82
+ "discord_search_messages",
83
+ "discord_send_message",
84
+ "discord_set_channel_permissions",
85
+ "discord_set_nickname",
86
+ "discord_timeout_member",
87
+ "discord_unban_member",
88
+ "discord_unpin_message",
89
+ "group_create",
90
+ "group_update",
91
+ "memory_add",
92
+ "memory_remove",
93
+ "memory_search",
94
+ "message_agent",
95
+ "notify_owner",
96
+ "schedule_cancel",
97
+ "schedule_create",
98
+ "schedule_list",
99
+ "schedule_update",
100
+ "skill_create",
101
+ "skill_delete",
102
+ "skill_group_delete",
103
+ "skill_group_set",
104
+ "skill_link",
105
+ "skill_unlink",
106
+ "skill_update"
107
+ ],
108
+ "selection": [
109
+ "agent_create",
110
+ "agent_get",
111
+ "agent_list",
112
+ "agent_skills",
113
+ "agent_update",
114
+ "archive",
115
+ "bash",
116
+ "channel_arrange",
117
+ "channel_read",
118
+ "edit",
119
+ "group_create",
120
+ "group_update",
121
+ "message_agent",
122
+ "read",
123
+ "skill_create",
124
+ "skill_delete",
125
+ "skill_group_delete",
126
+ "skill_group_set",
127
+ "skill_link",
128
+ "skill_unlink",
129
+ "skill_update",
130
+ "write"
131
+ ]
132
+ },
133
+ "group seat": {
134
+ "tools": [
135
+ "agent_create",
136
+ "agent_get",
137
+ "agent_list",
138
+ "agent_skills",
139
+ "agent_update",
140
+ "archive",
141
+ "channel_arrange",
142
+ "channel_read",
143
+ "delegate_task",
144
+ "discord_add_member_role",
145
+ "discord_ban_member",
146
+ "discord_create_channel",
147
+ "discord_create_role",
148
+ "discord_create_thread",
149
+ "discord_delete_channel",
150
+ "discord_delete_channel_permissions",
151
+ "discord_delete_message",
152
+ "discord_delete_role",
153
+ "discord_edit_channel",
154
+ "discord_edit_message",
155
+ "discord_edit_role",
156
+ "discord_edit_thread",
157
+ "discord_find_members",
158
+ "discord_get_channel_info",
159
+ "discord_get_messages",
160
+ "discord_get_pinned_messages",
161
+ "discord_kick_member",
162
+ "discord_list_channels",
163
+ "discord_list_roles",
164
+ "discord_list_servers",
165
+ "discord_list_threads",
166
+ "discord_pin_message",
167
+ "discord_remove_member_role",
168
+ "discord_search_messages",
169
+ "discord_send_message",
170
+ "discord_set_channel_permissions",
171
+ "discord_set_nickname",
172
+ "discord_timeout_member",
173
+ "discord_unban_member",
174
+ "discord_unpin_message",
175
+ "group_create",
176
+ "group_update",
177
+ "memory_add",
178
+ "memory_remove",
179
+ "memory_search",
180
+ "notify_owner",
181
+ "schedule_cancel",
182
+ "schedule_create",
183
+ "schedule_list",
184
+ "schedule_update",
185
+ "skill_create",
186
+ "skill_delete",
187
+ "skill_group_delete",
188
+ "skill_group_set",
189
+ "skill_link",
190
+ "skill_unlink",
191
+ "skill_update"
192
+ ],
193
+ "selection": [
194
+ "agent_create",
195
+ "agent_get",
196
+ "agent_list",
197
+ "agent_skills",
198
+ "agent_update",
199
+ "archive",
200
+ "bash",
201
+ "channel_arrange",
202
+ "channel_read",
203
+ "edit",
204
+ "group_create",
205
+ "group_update",
206
+ "read",
207
+ "skill_create",
208
+ "skill_delete",
209
+ "skill_group_delete",
210
+ "skill_group_set",
211
+ "skill_link",
212
+ "skill_unlink",
213
+ "skill_update",
214
+ "write"
215
+ ]
216
+ }
217
+ },
218
+ "tiers": {
219
+ "agent_create": "admin",
220
+ "agent_get": "member",
221
+ "agent_list": "member",
222
+ "agent_skills": "admin",
223
+ "agent_update": "admin",
224
+ "archive": "admin",
225
+ "ask_user": "member",
226
+ "bash": "owner",
227
+ "channel_arrange": "admin",
228
+ "channel_read": "member",
229
+ "compact_session": "member",
230
+ "delegate_task": "admin",
231
+ "discord_add_member_role": "owner",
232
+ "discord_ban_member": "owner",
233
+ "discord_create_channel": "owner",
234
+ "discord_create_role": "owner",
235
+ "discord_create_thread": "owner",
236
+ "discord_delete_channel": "owner",
237
+ "discord_delete_channel_permissions": "owner",
238
+ "discord_delete_message": "owner",
239
+ "discord_delete_role": "owner",
240
+ "discord_edit_channel": "owner",
241
+ "discord_edit_message": "owner",
242
+ "discord_edit_role": "owner",
243
+ "discord_edit_thread": "owner",
244
+ "discord_find_members": "owner",
245
+ "discord_get_channel_info": "owner",
246
+ "discord_get_messages": "owner",
247
+ "discord_get_pinned_messages": "owner",
248
+ "discord_kick_member": "owner",
249
+ "discord_list_channels": "owner",
250
+ "discord_list_roles": "owner",
251
+ "discord_list_servers": "owner",
252
+ "discord_list_threads": "owner",
253
+ "discord_pin_message": "owner",
254
+ "discord_remove_member_role": "owner",
255
+ "discord_search_messages": "owner",
256
+ "discord_send_message": "owner",
257
+ "discord_set_channel_permissions": "owner",
258
+ "discord_set_nickname": "owner",
259
+ "discord_timeout_member": "owner",
260
+ "discord_unban_member": "owner",
261
+ "discord_unpin_message": "owner",
262
+ "edit": "owner",
263
+ "fetch_content": "member",
264
+ "get_search_content": "member",
265
+ "group_create": "admin",
266
+ "group_update": "admin",
267
+ "memory_add": "member",
268
+ "memory_remove": "member",
269
+ "memory_search": "member",
270
+ "message_agent": "member",
271
+ "notify_owner": "owner",
272
+ "read": "owner",
273
+ "read_attachment": "member",
274
+ "schedule_cancel": "admin",
275
+ "schedule_create": "admin",
276
+ "schedule_list": "member",
277
+ "schedule_update": "admin",
278
+ "skill_create": "admin",
279
+ "skill_delete": "admin",
280
+ "skill_group_delete": "admin",
281
+ "skill_group_set": "admin",
282
+ "skill_link": "admin",
283
+ "skill_unlink": "admin",
284
+ "skill_update": "admin",
285
+ "web_search": "member",
286
+ "write": "owner"
287
+ }
288
+ }
@@ -1,12 +1,7 @@
1
- import { AGENT_TOOLS } from "./agents/agent-tools.ts";
2
- import { ConfigError } from "./domain/errors.ts";
3
1
  import { PluginError } from "./errors.ts";
4
- import { SKILL_LIST_TOOL, SKILL_TOOLS } from "./modules/skills/skill-tools.ts";
5
2
  import { ASK_USER_TOOL } from "./runtime/extensions/ask-user.ts";
6
3
  import { COMPACT_TOOL } from "./runtime/extensions/self-compact-guard.ts";
7
- import { DELEGATE_TOOL } from "./shared/delegate-tool.ts";
8
- import { SCHEDULE_TOOLS } from "./shared/schedule-tools.ts";
9
- import { TIERS, type Tier, tierAtLeast } from "./speakers.ts";
4
+ import { type Tier, tierAtLeast } from "./speakers.ts";
10
5
 
11
6
  /** The lowest tier that may use each tool; a tool that is not named needs the owner. */
12
7
  export interface ToolTiers {
@@ -19,37 +14,18 @@ const set = (tier: Tier, tools: readonly string[]) =>
19
14
  Object.fromEntries(tools.map((tool) => [tool, tier]));
20
15
 
21
16
  /**
22
- * The core's default tiers. Members talk, read, look things up, and message agents; admins
23
- * also create and edit agents, groups, skills, schedules, and delegated work; everything else,
24
- * such as the shell, the owner's notes, Discord administration, and every plugin's tools,
25
- * stays with the owner until an operator lowers it.
17
+ * The core's own tools, which serve any turn that can ask, compact, or read an attachment.
18
+ * Every other feature declares the tiers of its tools with its plugin (`Contribution.toolTiers`):
19
+ * members talk, read, look things up, and message agents; admins also create and edit agents,
20
+ * groups, skills, schedules, and delegated work; everything else, such as the shell, the owner's
21
+ * notes, Discord administration, and any plugin's tools, stays with the owner until an operator
22
+ * lowers it.
26
23
  */
27
- export const CORE_TOOL_TIERS: Readonly<Record<string, Tier>> = {
28
- ...set("admin", [
29
- ...AGENT_TOOLS,
30
- ...SKILL_TOOLS,
31
- ...SCHEDULE_TOOLS,
32
- DELEGATE_TOOL,
33
- ]),
34
- ...set("member", [
35
- "agent_list",
36
- "agent_get",
37
- "message_agent",
38
- "channel_read",
39
- "schedule_list",
40
- SKILL_LIST_TOOL,
41
- "read_attachment",
42
- // Each speaker keeps their own; the owner's reaches only the owner's turns.
43
- "memory_add",
44
- "memory_search",
45
- "memory_remove",
46
- "web_search",
47
- "fetch_content",
48
- "get_search_content",
49
- ]),
50
- // The core's own tools serve any turn that can ask or compact.
51
- ...set("member", [ASK_USER_TOOL, COMPACT_TOOL]),
52
- };
24
+ export const CORE_TOOL_TIERS: Readonly<Record<string, Tier>> = set("member", [
25
+ ASK_USER_TOOL,
26
+ COMPACT_TOOL,
27
+ "read_attachment",
28
+ ]);
53
29
 
54
30
  /**
55
31
  * What each tool needs: the operator's setting first, then the tier its plugin declared, then
@@ -65,11 +41,14 @@ export class ToolTierTable implements ToolTiers {
65
41
  this.#operator = new Map(Object.entries(operator));
66
42
  }
67
43
 
68
- /** Records the tiers a plugin's tools need; a tool two plugins declare is a PluginError. */
44
+ /**
45
+ * Records the tiers a plugin's tools need; a tool two plugins declare is a PluginError. A
46
+ * plugin declaring its own tool again, as when the host retries its start, replaces it.
47
+ */
69
48
  declare(plugin: string, tiers: Readonly<Record<string, Tier>>): void {
70
49
  for (const [tool, tier] of Object.entries(tiers)) {
71
50
  const other = this.#declared.get(tool);
72
- if (other)
51
+ if (other && other.plugin !== plugin)
73
52
  throw new PluginError(
74
53
  `plugin ${plugin}: tool ${tool} is already defined by plugin ${other.plugin}. Rename one of the two tools.`,
75
54
  );
@@ -106,22 +85,3 @@ export function toolsForTier(
106
85
  ): string[] {
107
86
  return tools.filter((tool) => tiers.allows(tier, tool));
108
87
  }
109
-
110
- /** Reads `tool=tier` pairs, comma-separated; unset means no changes. */
111
- export function parseToolTiers(
112
- text: string | undefined,
113
- name: string,
114
- ): Record<string, Tier> {
115
- const result: Record<string, Tier> = {};
116
- for (const item of (text ?? "").split(",")) {
117
- const pair = item.trim();
118
- if (pair === "") continue;
119
- const [tool, tier] = pair.split("=").map((part) => part.trim());
120
- if (!tool || !tier || !(TIERS as readonly string[]).includes(tier))
121
- throw new ConfigError(
122
- `${name} must list tool=owner|admin|member pairs, got ${pair}`,
123
- );
124
- result[tool] = tier as Tier;
125
- }
126
- return result;
127
- }
@@ -0,0 +1,64 @@
1
+ // The Discord entry: everything that names a discord.js type, apart from the main and kit entries.
2
+ // Unstable before 1.0; not covered by semver.
3
+
4
+ export type { DiscordServices } from "../core/builtin/discord.ts";
5
+ export { DISCORD } from "../core/builtin/discord.ts";
6
+ export type { AgentPanelMessage } from "../core/discord/agent-commands.ts";
7
+ export type {
8
+ AgentPanel,
9
+ AgentPanelOptions,
10
+ } from "../core/discord/agent-panel.ts";
11
+ export { agentPanel } from "../core/discord/agent-panel.ts";
12
+ export type { ManagedChannel } from "../core/discord/channel-executor.ts";
13
+ export {
14
+ fetchManagedChannel,
15
+ OPERATION_PERMISSIONS,
16
+ } from "../core/discord/channel-executor.ts";
17
+ export type {
18
+ ChannelExecutor,
19
+ ChannelOperation,
20
+ ChannelTool,
21
+ } from "../core/discord/channel-operations.ts";
22
+ export {
23
+ CHANNEL_OPERATIONS,
24
+ CHANNEL_TOOLS,
25
+ ChannelToolError,
26
+ isChannelOperation,
27
+ operationLabel,
28
+ parseChannelTool,
29
+ } from "../core/discord/channel-operations.ts";
30
+ export type { ComposedCommands } from "../core/discord/compose-commands.ts";
31
+ export { composeCommands } from "../core/discord/compose-commands.ts";
32
+ export type {
33
+ ChannelInfo,
34
+ DiscordConnection,
35
+ } from "../core/discord/connection.ts";
36
+ export type {
37
+ CommandGuard,
38
+ CommandRegistrar,
39
+ CommandRoot,
40
+ InteractionContribution,
41
+ InteractionModule,
42
+ RootOption,
43
+ } from "../core/discord/interaction-module.ts";
44
+ export type {
45
+ CommandGuardOptions,
46
+ OwnerCommandHandlers,
47
+ } from "../core/discord/owner-command.ts";
48
+ export {
49
+ commandGuard,
50
+ groupOption,
51
+ ownerCommandModule,
52
+ ownerRootCommand,
53
+ } from "../core/discord/owner-command.ts";
54
+ export type { PanelContent } from "../core/discord/owner-panel.ts";
55
+ export {
56
+ ephemeralPanel,
57
+ OwnerFacingError,
58
+ ownerPanel,
59
+ ownerPanels,
60
+ plain,
61
+ replyWithPanels,
62
+ } from "../core/discord/owner-panel.ts";
63
+ export type { OwnerOperations } from "../core/modules/discord-admin/discord-admin.ts";
64
+ export { DISCORD_ADMIN_TOOLS } from "../core/modules/discord-admin/discord-admin.ts";
package/src/index.ts CHANGED
@@ -1,28 +1,199 @@
1
1
  // The plugin author's stable entry; internals remain behind package exports.
2
2
 
3
- export type { AgentSeed } from "./core/agents/agent-store.ts";
4
- export type { RoundtableConfig } from "./core/config/config.ts";
5
- export type { ChannelClaim } from "./core/contract/channels.ts";
6
- export type { InteractionContribution } from "./core/contract/discord.ts";
7
- export type { Migration } from "./core/db/migrations.ts";
3
+ export {
4
+ AGENT_SERVER_PRIORITY,
5
+ OWNER_TARGET,
6
+ } from "./core/agents/agent-claim.ts";
7
+ export type {
8
+ Agent,
9
+ AgentGroup,
10
+ AgentSeed,
11
+ AgentStatus,
12
+ } from "./core/agents/agent-store.ts";
13
+ export type { AvatarMode } from "./core/agents/agent-tools.ts";
14
+ export type {
15
+ AgentStatus as TeamAgentStatus,
16
+ GroupStatus,
17
+ TeamStatus,
18
+ } from "./core/agents/team-status.ts";
19
+ export {
20
+ AGENT_SERVER_PLUGIN,
21
+ AGENT_TEAM_SERVICE,
22
+ } from "./core/builtin/agent-server.ts";
23
+ export type {
24
+ Pronouns,
25
+ RoundtableConfig,
26
+ TierConfig,
27
+ } from "./core/config/config.ts";
28
+ export type {
29
+ Admission,
30
+ AttachmentRef,
31
+ BackgroundTarget,
32
+ BackgroundTurn,
33
+ ChannelClaim,
34
+ ConversationKind,
35
+ ConversationPort,
36
+ InboundMessage,
37
+ QueuePort,
38
+ ScheduledOutcome,
39
+ } from "./core/contract/channels.ts";
40
+ export type {
41
+ ImageDrawer,
42
+ Judge,
43
+ Providers,
44
+ ReferenceImage,
45
+ ResolvedProviders,
46
+ } from "./core/contract/providers.ts";
47
+ export type {
48
+ AgentRuntime,
49
+ AgentSessions,
50
+ ContextUse,
51
+ HeldActionStore,
52
+ LoadedSkill,
53
+ RuntimeDeps,
54
+ RuntimeFactory,
55
+ } from "./core/contract/runtime.ts";
56
+ export type { ServiceKey, Services } from "./core/contract/services.ts";
57
+ export { serviceKey } from "./core/contract/services.ts";
58
+ export type { ChatSurface, SurfacePort } from "./core/contract/surface.ts";
59
+ export { channelKey, parseChannelKey } from "./core/contract/surface.ts";
60
+ export type { Migration, MigrationReport } from "./core/db/migrations.ts";
61
+ export { migrateDatabase } from "./core/db/migrations.ts";
8
62
  export type { ToolContribution, ToolSpec, ToolTurn } from "./core/define.ts";
9
63
  export { definePlugin, defineTool, ToolRefusal } from "./core/define.ts";
10
- export type { DefinedRoundtable } from "./core/define-roundtable.ts";
64
+ export type {
65
+ DefinedRoundtable,
66
+ DefineOverrides,
67
+ } from "./core/define-roundtable.ts";
11
68
  export { defineRoundtable } from "./core/define-roundtable.ts";
12
- export { NotLinkedError, PluginError } from "./core/errors.ts";
13
- export type { HoldRule } from "./core/holds.ts";
14
- export type { RoundtableOptions } from "./core/host.ts";
69
+ export type {
70
+ AttachmentFailure,
71
+ ModelImage,
72
+ StoredAttachment,
73
+ TurnAttachments,
74
+ } from "./core/domain/attachment.ts";
75
+ export { NO_ATTACHMENTS } from "./core/domain/attachment.ts";
76
+ export type {
77
+ HeldCall,
78
+ OutboundReply,
79
+ PendingConfirmation,
80
+ TranscriptEntry,
81
+ TurnResult,
82
+ } from "./core/domain/conversation.ts";
83
+ export {
84
+ AgentRunError,
85
+ ConfigError,
86
+ DelegationError,
87
+ MemoryError,
88
+ ScheduleError,
89
+ } from "./core/domain/errors.ts";
90
+ export type {
91
+ Approval,
92
+ AskOption,
93
+ OwnerAnswer,
94
+ OwnerPrompts,
95
+ OwnerQuestion,
96
+ } from "./core/domain/owner-prompts.ts";
97
+ export type { TurnRequest } from "./core/domain/ports.ts";
98
+ export type { DrainOptions } from "./core/drain.ts";
99
+ export {
100
+ JudgeError,
101
+ MigrationError,
102
+ NotLinkedError,
103
+ PluginError,
104
+ ProviderError,
105
+ } from "./core/errors.ts";
106
+ export type { HoldCheck, HoldContext, HoldRule } from "./core/holds.ts";
107
+ export type { HostEnvironment, RoundtableOptions } from "./core/host.ts";
15
108
  export { Roundtable } from "./core/host.ts";
109
+ export type {
110
+ HttpRoute,
111
+ ListenerAddress,
112
+ ListenerConfig,
113
+ } from "./core/http/listeners.ts";
114
+ export type { Locale } from "./core/i18n/index.ts";
115
+ export type { JudgeModel } from "./core/judging/model-judge.ts";
116
+ export type { LogEntry, LogFn, Logger } from "./core/log.ts";
117
+ export type { ThinkingLevel, ThinkingSetting } from "./core/models.ts";
118
+ export type {
119
+ DelegationJob,
120
+ DelegationOutcome,
121
+ } from "./core/modules/delegation/delegator.ts";
122
+ export type {
123
+ Memory,
124
+ MemoryKind,
125
+ PromptMemory,
126
+ } from "./core/modules/memory/owner-memory-store.ts";
127
+ export { MEMORY_KINDS } from "./core/modules/memory/owner-memory-store.ts";
128
+ export type {
129
+ Recurrence,
130
+ Weekday,
131
+ } from "./core/modules/schedules/recurrence.ts";
132
+ export type {
133
+ NewSchedule,
134
+ Schedule,
135
+ ScheduleChange,
136
+ } from "./core/modules/schedules/schedule-store.ts";
137
+ export type {
138
+ ResolvedSkill,
139
+ SkillCatalogEntry,
140
+ SkillSet,
141
+ SkillSource,
142
+ } from "./core/modules/skills/skill-rules.ts";
16
143
  export type {
17
144
  Contribution,
18
145
  EventHandlers,
146
+ EventSink,
147
+ HostEnv,
148
+ LinkedSessions,
149
+ Persona,
19
150
  PluginContext,
20
151
  PromptSection,
21
152
  PromptTurn,
22
153
  RoundtablePlugin,
23
154
  Service,
155
+ ServiceStartedEvent,
156
+ ServiceStartOutcome,
24
157
  TurnEndEvent,
25
158
  TurnEvent,
26
159
  } from "./core/plugin.ts";
27
- export type { SessionTool } from "./core/sessions.ts";
160
+ export type {
161
+ ConversationTurnInput,
162
+ ConversationTurns,
163
+ } from "./core/routing/conversation-turns.ts";
164
+ export type {
165
+ AgentChange,
166
+ AgentDirectory,
167
+ AgentServer,
168
+ AgentTeam,
169
+ AvatarStudio,
170
+ BackgroundTurns,
171
+ DelegationRequest,
172
+ Delegator,
173
+ MemoryStore,
174
+ ScheduleStore,
175
+ SkillRegistry,
176
+ SpeakerMemory,
177
+ } from "./core/services.ts";
178
+ export {
179
+ AGENTS,
180
+ BACKGROUND_TURNS,
181
+ DELEGATION,
182
+ MEMORY,
183
+ SCHEDULES,
184
+ SKILLS,
185
+ } from "./core/services.ts";
186
+ export type {
187
+ AgentTurnScope,
188
+ ChannelKey,
189
+ SessionContext,
190
+ SessionPlan,
191
+ SessionTool,
192
+ SessionToolSnapshot,
193
+ ToolSelection,
194
+ TransientTask,
195
+ TurnSelection,
196
+ } from "./core/sessions.ts";
28
197
  export type { Speaker, Tier } from "./core/speakers.ts";
198
+ export { THE_SPEAKER, TIERS } from "./core/speakers.ts";
199
+ export type { ToolTiers, ToolTierTable } from "./core/tool-tiers.ts";
@@ -0,0 +1,14 @@
1
+ // Unstable plugin helpers; see the plugin guide.
2
+
3
+ export { discordKey } from "../core/agents/team-keys.ts";
4
+
5
+ export {
6
+ channelSegment,
7
+ ownerAttachmentDir,
8
+ } from "../core/attachments/attachment-dir.ts";
9
+ export { withAttachmentsBlock } from "../core/attachments/prompt-block.ts";
10
+ export { attachmentsOf } from "../core/attachments/turn-attachments.ts";
11
+ export type { ChannelQueue } from "../core/routing/channel-queue.ts";
12
+ export { channelQueue } from "../core/routing/channel-queue.ts";
13
+ export { withReference } from "../core/routing/message-text.ts";
14
+ export { outcome, settleTurn } from "../core/routing/settle-turn.ts";
@@ -0,0 +1,18 @@
1
+ // Unstable plugin helpers; see the plugin guide.
2
+
3
+ export { AgentError } from "../core/domain/errors.ts";
4
+ export type {
5
+ ChoiceAnswer,
6
+ ChoiceQuestion,
7
+ ScoreQuestion,
8
+ YesNoQuestion,
9
+ } from "../core/domain/ports.ts";
10
+ export type { OwnerIdentity } from "../core/identity.ts";
11
+ export type { ModelRef } from "../core/models.ts";
12
+ export {
13
+ AUTO_THINKING,
14
+ formatModelRef,
15
+ parseModelRef,
16
+ THINKING_LEVELS,
17
+ thinkingLabel,
18
+ } from "../core/models.ts";