mirror of
https://github.com/qwibitai/nanoclaw.git
synced 2026-07-06 18:52:03 +08:00
ab596d31d3
Ran a multi-agent workflow over the remaining chat-SDK channels
(discord/teams/imessage/telegram), each converting its SKILL.md to the Option A
resolve pattern with an adversarial verify that the captured platform_id is
byte-identical to what the old bespoke .ts passed init-first-agent.
Outcome:
- discord: CONVERTED + verified. Resolve prompts owner_handle (Discord user id,
validate ^\d{17,20}$), captures connected_as (/users/@me) and platform_id
(POST /users/@me/channels → "discord:@me:" + .id — byte-identical to the old
discord:@me:<dmChannelId>). auto.ts now calls runChannelSkill('discord');
setup/channels/discord.ts deleted. (Minor deviation: application_id/public_key
are prompted-with-validate rather than auto-derived from /oauth2/applications/@me
as the old flow did — values identical, one extra paste standalone.)
- imessage: resolve added (owner_handle = phone/Apple-ID handle; platform_id =
the raw handle, byte-identical — native adapter, no prefix). NOT yet wired: its
credentials branch on local vs remote mode, which a directive can't express
deterministically (needs a shell-conditional run). Bespoke imessage.ts stays.
- teams: does NOT fit — the DM platform_id (teams:<b64 conv>:<b64 url>) only
exists after the first inbound activity; no synchronous API resolves it.
- telegram: does NOT fit — resolve is an interactive pairing handshake
(pair-telegram.ts), not a directive.
613 tests pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>