Ettore Di Giacinto
1f481b0747
feat(connectors): add-on roles and permissions, and sender pairing
...
A connector kind can now declare the roles it gives to a sender and the
capabilities it can grant to a role. The owner of a binding enables a
ceiling of capabilities and maps roles to them. The host stores these
values and returns them with the binding and the kind list, so an add-on
settings page can show them.
Capability names are a closed list owned by the host. Sensitive names
may be listed by a kind but are never granted to a role; only a paired
sender can use them.
Pairing proves that the owner controls a platform account. The owner
asks for a one-use code (valid ten minutes) and sends it as a direct
message to the bot from an allowlisted account. The host checks the code
before any model turn and never logs it. A binding holds three paired
senders, a pairing ends after 90 days, and five wrong codes in an hour
lock the sender out for an hour.
Contract: connector kinds gain optional roles and permissions, and a
message gains optional roles. They need manifest api 2, which the host
already accepts; protocol is unchanged and manifests that declare
nothing new behave as before. The host drops roles a kind does not
declare.
Enforcement of the capabilities by feature is not part of this change.
Assisted-by: Claude:claude-sonnet-5-5 go swag
2026-11-03 13:52:56 +00:00
..
2026-10-22 17:57:19 +02:00
2026-10-22 17:57:19 +02:00
2026-10-24 14:29:39 +02:00
2026-10-24 14:29:39 +02:00
2026-11-01 12:08:23 +01:00
2026-11-01 12:08:23 +01:00
2026-06-20 22:38:42 +02:00
2026-06-20 22:38:42 +02:00
2026-11-01 12:08:23 +01:00
2026-11-03 13:52:56 +00:00
2026-10-29 22:06:41 +01:00
2026-10-29 22:06:41 +01:00
2026-10-23 11:54:42 +02:00
2026-07-02 19:16:29 +02:00
2026-07-20 01:09:37 +02:00
2026-10-23 01:00:07 +02:00
2026-10-24 14:29:39 +02:00
2026-07-03 18:00:37 +02:00
2026-07-03 18:00:37 +02:00
2026-04-04 15:14:35 +02:00
2026-04-04 15:14:35 +02:00
2026-07-20 01:09:22 +02:00
2026-09-11 22:06:26 +00:00
2026-10-22 17:58:53 +02:00
2026-05-26 22:06:10 +02:00
2026-05-08 16:25:45 +02:00
2026-05-08 16:25:45 +02:00
2026-11-01 12:08:23 +01:00
2026-10-04 09:34:21 +02:00
2026-10-04 09:34:21 +02:00
2026-05-08 16:25:45 +02:00
2026-05-30 12:04:10 +02:00
2026-10-10 08:29:31 +02:00
2026-10-10 08:29:31 +02:00
2026-06-16 16:28:28 +02:00
2026-05-08 01:44:47 +02:00
2026-07-30 16:01:47 +02:00
2026-07-20 01:09:37 +02:00
2026-07-20 01:09:37 +02:00
2026-10-13 08:14:30 +00:00
2026-08-22 22:44:03 +02:00
2026-11-01 12:08:23 +01:00
2026-10-17 18:23:02 +02:00
2026-05-08 01:44:47 +02:00
2026-05-08 01:44:47 +02:00
2026-04-22 21:55:41 +02:00
2026-05-08 01:44:47 +02:00
2026-09-07 17:40:27 +02:00
2026-09-07 17:40:27 +02:00
2026-05-08 01:44:47 +02:00
2026-09-27 07:42:21 +00:00
2026-09-27 07:42:20 +00:00
2026-09-27 07:42:20 +00:00
2026-11-01 12:08:23 +01:00
2026-10-24 22:47:04 +02:00
2026-10-24 22:47:04 +02:00
2026-10-22 17:58:53 +02:00
2026-05-08 01:44:47 +02:00
2026-04-22 21:55:41 +02:00
2026-10-13 08:14:30 +00:00
2026-10-13 08:14:30 +00:00
2026-10-24 14:29:39 +02:00
2026-11-01 12:08:23 +01:00
2026-10-24 14:29:39 +02:00
2026-08-19 16:39:39 +02:00
2026-10-22 17:57:19 +02:00
2026-10-19 23:42:40 +02:00
2026-10-19 23:42:40 +02:00
2026-08-13 22:25:58 +02:00
2026-10-19 23:42:40 +02:00
2026-10-19 23:42:40 +02:00
2026-10-22 17:57:19 +02:00
2026-04-04 15:14:35 +02:00
2026-09-20 19:39:06 +01:00
2026-09-20 19:39:06 +01:00
2026-07-29 16:15:04 +02:00
2026-07-29 16:15:04 +02:00
2026-07-29 16:15:04 +02:00
2026-07-29 16:15:04 +02:00
2026-10-07 16:59:56 +02:00
2026-10-07 16:59:56 +02:00
2026-10-07 16:59:56 +02:00
2026-10-07 16:59:56 +02:00
2026-10-07 22:03:48 +02:00
2026-10-13 08:27:24 +00:00
2026-10-13 08:27:24 +00:00
2026-10-13 08:27:24 +00:00
2026-10-13 08:27:24 +00:00
2026-11-01 12:08:23 +01:00
2026-10-27 10:27:45 +01:00
2026-07-15 09:16:55 +02:00
2026-08-29 09:16:50 +02:00
2026-06-13 18:31:06 +02:00
2026-05-30 23:24:22 +02:00
2026-10-07 16:59:56 +02:00
2026-07-15 09:58:45 +02:00
2026-11-01 12:08:23 +01:00
2026-04-04 15:14:35 +02:00
2026-06-18 11:45:22 +01:00
2026-06-18 11:45:22 +01:00
2026-04-28 19:29:27 +02:00
2026-10-07 14:10:45 +02:00
2026-10-02 08:14:00 +02:00
2026-11-01 12:08:23 +01:00
2026-08-18 09:37:43 +02:00
2026-08-18 09:37:43 +02:00
2026-10-04 09:34:21 +02:00
2026-08-18 09:37:43 +02:00
2026-05-25 09:28:27 +02:00
2026-11-02 18:48:39 +01:00
2026-11-02 18:48:39 +01:00
2026-11-02 18:48:39 +01:00
2026-10-17 18:23:02 +02:00
2026-10-17 18:23:02 +02:00
2026-07-29 20:12:29 +02:00
2026-09-27 21:18:34 +02:00
2026-09-27 21:18:34 +02:00
2026-10-04 09:34:21 +02:00
2026-10-04 09:34:21 +02:00
2026-10-04 09:34:21 +02:00
2026-10-04 09:34:21 +02:00
2026-10-04 09:34:21 +02:00
2026-10-10 08:29:31 +02:00
2026-08-22 22:44:03 +02:00
2026-09-19 23:39:44 +02:00
2026-04-04 15:14:35 +02:00
2026-07-27 22:38:23 +02:00
2026-08-03 00:16:08 +02:00
2026-07-27 19:03:32 +02:00
2026-07-27 19:03:32 +02:00
2026-09-11 21:55:21 +00:00
2026-09-11 21:55:21 +00:00
2026-09-11 21:56:08 +00:00
2026-08-22 22:44:03 +02:00
2026-11-01 12:08:23 +01:00
2026-11-01 12:08:23 +01:00
2026-04-04 15:14:35 +02:00
2026-10-13 17:58:21 +02:00
2026-10-23 11:54:42 +02:00
2026-05-08 01:44:47 +02:00
2026-05-08 01:44:47 +02:00
2026-04-23 12:07:14 +02:00
2026-10-08 19:26:11 +02:00
2026-09-11 21:56:08 +00:00
2026-09-11 21:56:08 +00:00
2026-10-08 19:26:11 +02:00
2026-10-08 19:26:11 +02:00
2026-05-08 01:44:47 +02:00
2026-05-06 14:51:38 +02:00
2026-05-06 14:51:38 +02:00
2026-03-30 00:47:27 +02:00