pi-roundtable 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/README.md +6 -4
  3. package/docs/plugins.md +1448 -66
  4. package/examples/echo-runtime.test.ts +122 -0
  5. package/examples/echo-runtime.ts +107 -0
  6. package/examples/events.test.ts +1 -0
  7. package/examples/events.ts +2 -2
  8. package/examples/fake-surface.test.ts +180 -0
  9. package/examples/fake-surface.ts +109 -0
  10. package/examples/interactions.test.ts +12 -3
  11. package/examples/interactions.ts +19 -19
  12. package/examples/shared-services.test.ts +74 -0
  13. package/examples/shared-services.ts +60 -0
  14. package/examples/study-room.test.ts +69 -0
  15. package/examples/study-room.ts +52 -0
  16. package/examples/support-desk.test.ts +34 -0
  17. package/examples/support-desk.ts +40 -0
  18. package/package.json +9 -2
  19. package/src/cli/checks/database.ts +11 -30
  20. package/src/cli/checks/images.ts +19 -0
  21. package/src/cli/doctor.ts +6 -0
  22. package/src/cli/main.ts +2 -1
  23. package/src/core/agents/agent-claim.ts +42 -16
  24. package/src/core/agents/agent-messages.ts +4 -4
  25. package/src/core/agents/agent-ports.ts +8 -21
  26. package/src/core/agents/agent-prompt.ts +3 -1
  27. package/src/core/agents/agent-store.ts +6 -4
  28. package/src/core/agents/agent-team-fixture.ts +389 -0
  29. package/src/core/agents/agent-team.ts +26 -25
  30. package/src/core/agents/agent-tools.ts +34 -15
  31. package/src/core/agents/avatar-studio.ts +40 -6
  32. package/src/core/agents/fallback-avatar.ts +85 -0
  33. package/src/core/agents/team-editing.ts +49 -10
  34. package/src/core/agents/team-keys.ts +22 -9
  35. package/src/core/agents/team-layout.ts +4 -3
  36. package/src/core/agents/team-lifecycle.ts +28 -2
  37. package/src/core/agents/team-options.ts +9 -5
  38. package/src/core/agents/team-status.ts +4 -4
  39. package/src/core/agents/team-text.ts +8 -6
  40. package/src/core/agents/team-turn-types.ts +4 -4
  41. package/src/core/agents/team-turns.ts +6 -5
  42. package/src/core/builtin/agent-server.ts +187 -121
  43. package/src/core/builtin/discord-admin.ts +41 -0
  44. package/src/core/builtin/discord.ts +65 -40
  45. package/src/core/builtin/modules.ts +67 -58
  46. package/src/core/builtin/session-tool.ts +24 -0
  47. package/src/core/builtin/skills.ts +72 -0
  48. package/src/core/builtin/stores.ts +55 -31
  49. package/src/core/config/config.ts +45 -4
  50. package/src/core/config/schema.ts +6 -0
  51. package/src/core/contract/channels.ts +54 -14
  52. package/src/core/contract/providers.ts +17 -0
  53. package/src/core/contract/runtime.ts +138 -0
  54. package/src/core/contract/services.ts +45 -0
  55. package/src/core/contract/surface.ts +88 -0
  56. package/src/core/db/migrations.ts +118 -3
  57. package/src/core/define-roundtable.ts +70 -46
  58. package/src/core/define.ts +2 -1
  59. package/src/core/discord/agent-commands.ts +39 -14
  60. package/src/core/discord/agent-panel.ts +66 -0
  61. package/src/core/discord/channel-executor.ts +6 -3
  62. package/src/core/discord/channel-operations.ts +14 -11
  63. package/src/core/discord/command-collection.ts +46 -0
  64. package/src/core/{registry/interactions.ts → discord/compose-commands.ts} +5 -5
  65. package/src/core/discord/connection.ts +35 -0
  66. package/src/core/discord/discord-surface.ts +32 -94
  67. package/src/core/discord/dispatch-threads.ts +2 -2
  68. package/src/core/discord/inbound-message.ts +99 -0
  69. package/src/core/discord/interaction-module.ts +57 -1
  70. package/src/core/discord/owner-cards.ts +4 -4
  71. package/src/core/discord/owner-command.ts +44 -11
  72. package/src/core/discord/owner-discord.ts +2 -2
  73. package/src/core/discord/schedule-commands.ts +21 -18
  74. package/src/core/discord/stop-button.ts +44 -1
  75. package/src/core/domain/attachment.ts +12 -8
  76. package/src/core/domain/conversation.ts +3 -4
  77. package/src/core/domain/owner-prompts.ts +5 -5
  78. package/src/core/domain/ports.ts +9 -53
  79. package/src/core/freeze.ts +9 -0
  80. package/src/core/host.ts +255 -82
  81. package/src/core/http/listeners.ts +55 -20
  82. package/src/core/i18n/agent-panel.ts +4 -0
  83. package/src/core/i18n/index.ts +12 -2
  84. package/src/core/i18n/owner.ts +7 -1
  85. package/src/core/i18n/schedules.ts +12 -6
  86. package/src/core/identity.ts +1 -1
  87. package/src/core/judging/effort-judge.ts +25 -3
  88. package/src/core/log.ts +21 -3
  89. package/src/core/models.ts +2 -2
  90. package/src/core/modules/background/background-turns.ts +6 -4
  91. package/src/core/modules/delegation/delegate.ts +3 -2
  92. package/src/core/modules/delegation/delegator.ts +15 -13
  93. package/src/core/modules/delegation/{sol-worker.ts → web-research-worker.ts} +6 -6
  94. package/src/core/modules/discord-admin/discord-admin.ts +6 -6
  95. package/src/core/modules/host-shell/shell-policy.ts +8 -3
  96. package/src/core/modules/memory/owner-memory-store.ts +27 -25
  97. package/src/core/modules/memory/owner-memory.ts +9 -13
  98. package/src/core/modules/schedules/recurrence.ts +5 -3
  99. package/src/core/modules/schedules/schedule-store.ts +11 -11
  100. package/src/core/modules/schedules/schedule-tools.ts +22 -20
  101. package/src/core/modules/schedules/scheduler.ts +7 -2
  102. package/src/core/modules/schedules/schedules.ts +9 -3
  103. package/src/core/modules/skills/skill-registry.ts +3 -2
  104. package/src/core/modules/skills/skill-store.ts +2 -15
  105. package/src/core/modules/skills/skill-tools.ts +10 -4
  106. package/src/core/ops/error-reporter.ts +1 -1
  107. package/src/core/plugin.ts +232 -28
  108. package/src/core/registry/contributions.ts +173 -14
  109. package/src/core/registry/providers.ts +35 -5
  110. package/src/core/registry/services.ts +229 -0
  111. package/src/core/routing/channel-queue.ts +5 -0
  112. package/src/core/routing/channel-router.ts +21 -7
  113. package/src/core/routing/conversation-turns.ts +139 -0
  114. package/src/core/routing/message-text.ts +9 -2
  115. package/src/core/routing/surface-port.ts +39 -0
  116. package/src/core/runtime/conversation-sessions.ts +4 -3
  117. package/src/core/runtime/extensions/confirmation-fixture.ts +11 -0
  118. package/src/core/runtime/extensions/confirmation-gate.ts +11 -9
  119. package/src/core/runtime/mcp.ts +1 -1
  120. package/src/core/runtime/pending-confirmation-store.ts +10 -12
  121. package/src/core/runtime/pi-agent-runtime.ts +9 -6
  122. package/src/core/runtime/prompt-slot.ts +8 -3
  123. package/src/core/runtime/runtime-types.ts +9 -35
  124. package/src/core/runtime/session-factory.ts +21 -5
  125. package/src/core/runtime/text-tools.ts +1 -3
  126. package/src/core/services.ts +238 -90
  127. package/src/core/sessions.ts +3 -2
  128. package/src/core/shared/{profile-tools.ts → active-tools.ts} +2 -2
  129. package/src/core/shared/delegate-tool.ts +4 -3
  130. package/src/core/shared/schedule-tools.ts +22 -13
  131. package/src/core/shared/session-messages.ts +1 -1
  132. package/src/core/speakers.ts +6 -38
  133. package/src/core/testing/database.ts +1 -7
  134. package/src/core/testing/eager-catalog.ts +30 -0
  135. package/src/core/testing/locale.ts +23 -5
  136. package/src/core/testing/modules.ts +105 -41
  137. package/src/core/testing/test-host.ts +279 -0
  138. package/src/core/testing/tool-set.ts +64 -0
  139. package/src/core/time.ts +6 -1
  140. package/src/core/tool-set.snapshot.json +288 -0
  141. package/src/core/tool-tiers.ts +17 -57
  142. package/src/discord/index.ts +64 -0
  143. package/src/index.ts +181 -10
  144. package/src/kit/channels.ts +14 -0
  145. package/src/kit/domain.ts +18 -0
  146. package/src/kit/holds.ts +4 -0
  147. package/src/kit/index.ts +129 -0
  148. package/src/kit/judging.ts +10 -0
  149. package/src/kit/memory.ts +3 -0
  150. package/src/kit/mirror.ts +19 -0
  151. package/src/kit/presentation.ts +7 -0
  152. package/src/kit/shell.ts +7 -0
  153. package/src/kit/skills.ts +8 -0
  154. package/src/kit/support.ts +21 -0
  155. package/src/kit/threads.ts +7 -0
  156. package/src/kit/tools.ts +14 -0
  157. package/src/kit/worker.ts +16 -0
  158. package/src/testing.ts +394 -34
  159. package/examples/guide.test.ts +0 -52
  160. package/src/cli/add-plugin.test.ts +0 -107
  161. package/src/cli/checks/basic.test.ts +0 -276
  162. package/src/cli/checks/database.test.ts +0 -117
  163. package/src/cli/checks/discord.test.ts +0 -200
  164. package/src/cli/cli.test.ts +0 -122
  165. package/src/cli/config-edit.test.ts +0 -130
  166. package/src/cli/doctor.test.ts +0 -184
  167. package/src/cli/init.test.ts +0 -127
  168. package/src/cli/size.test.ts +0 -9
  169. package/src/cli/templates.test.ts +0 -129
  170. package/src/cli/testing/fixtures.ts +0 -106
  171. package/src/core/agents/agent-claim.test.ts +0 -142
  172. package/src/core/agents/agent-dashboard.test.ts +0 -120
  173. package/src/core/agents/agent-guild.test.ts +0 -124
  174. package/src/core/agents/agent-store.test.ts +0 -205
  175. package/src/core/agents/avatar-studio.test.ts +0 -88
  176. package/src/core/agents/group-round.test.ts +0 -143
  177. package/src/core/agents/owner-identity.test.ts +0 -172
  178. package/src/core/agents/team-turns.test.ts +0 -278
  179. package/src/core/attachments/attachments.test.ts +0 -85
  180. package/src/core/boundary.test.ts +0 -45
  181. package/src/core/builtin/modules.test.ts +0 -127
  182. package/src/core/config/config.test.ts +0 -135
  183. package/src/core/contract/discord.ts +0 -33
  184. package/src/core/db/migrations.test.ts +0 -237
  185. package/src/core/define-roundtable.test.ts +0 -134
  186. package/src/core/define.test.ts +0 -144
  187. package/src/core/discord/agent-commands.test.ts +0 -58
  188. package/src/core/discord/agent-discord.test.ts +0 -70
  189. package/src/core/discord/dispatch-thread-host.test.ts +0 -114
  190. package/src/core/discord/dispatch-threads.test.ts +0 -94
  191. package/src/core/discord/owner-cards.test.ts +0 -435
  192. package/src/core/discord/owner-discord.test.ts +0 -325
  193. package/src/core/domain/expression.ts +0 -21
  194. package/src/core/domain/profile.ts +0 -32
  195. package/src/core/drain.test.ts +0 -46
  196. package/src/core/events.test.ts +0 -81
  197. package/src/core/holds.test.ts +0 -54
  198. package/src/core/host.test.ts +0 -536
  199. package/src/core/http/listeners.test.ts +0 -164
  200. package/src/core/i18n/i18n.test.ts +0 -139
  201. package/src/core/identity.test.ts +0 -18
  202. package/src/core/judging/effort-judge.test.ts +0 -112
  203. package/src/core/judging/model-judge.test.ts +0 -126
  204. package/src/core/modules/delegation/delegator.test.ts +0 -170
  205. package/src/core/modules/memory/owner-memory-store.test.ts +0 -244
  206. package/src/core/modules/schedules/schedule.test.ts +0 -358
  207. package/src/core/modules/skills/skill-kind.test.ts +0 -55
  208. package/src/core/modules/skills/skill-registry.test.ts +0 -376
  209. package/src/core/ops/error-reporter.test.ts +0 -283
  210. package/src/core/presentation/card-cadence.ts +0 -41
  211. package/src/core/presentation/presentation.test.ts +0 -166
  212. package/src/core/public-entry.test.ts +0 -59
  213. package/src/core/registry/contributions.test.ts +0 -215
  214. package/src/core/registry/interactions.test.ts +0 -87
  215. package/src/core/registry/providers.test.ts +0 -103
  216. package/src/core/routing/channel-queue.test.ts +0 -31
  217. package/src/core/routing/channel-router.test.ts +0 -326
  218. package/src/core/routing/conversation-kind.ts +0 -14
  219. package/src/core/routing/settle-turn.test.ts +0 -21
  220. package/src/core/runtime/compaction-tiers.test.ts +0 -227
  221. package/src/core/runtime/extensions/ask-user.test.ts +0 -114
  222. package/src/core/runtime/extensions/self-compact-guard.test.ts +0 -50
  223. package/src/core/runtime/pending-confirmation-store.test.ts +0 -52
  224. package/src/core/runtime/session-archive.test.ts +0 -20
  225. package/src/core/runtime/steerable-run.test.ts +0 -264
  226. package/src/core/runtime/text-tools.test.ts +0 -110
  227. package/src/core/runtime/turn-answer.test.ts +0 -72
  228. package/src/core/runtime/worker-task.test.ts +0 -82
  229. package/src/core/services.test.ts +0 -28
  230. package/src/core/sessions.test.ts +0 -85
  231. package/src/core/shared/unix-server.ts +0 -18
  232. package/src/core/size.test.ts +0 -9
  233. package/src/core/speakers.test.ts +0 -78
  234. package/src/core/testing/file-size.ts +0 -34
  235. package/src/core/time.test.ts +0 -166
  236. package/src/core/tool-tiers.test.ts +0 -117
  237. package/src/entries.test.ts +0 -112
  238. 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";