You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8a98541
Browse filesBrowse the repository at this point in the historyBrowse files
Nabeel M
authored and
Nabeel M
committed
fix(threads): /goal can never reach a provider turn
A persisted or edited mobile outbox entry carrying /goal text could drain
into a thread.turn.start through both the existing-thread and thread-
creation branches, sending a T3-local metadata command to the provider as
a prompt. The parser also accepted U+FEFF as a command separator because
JS \s includes it (and String.trim strips it at the edges), so invisible
formatting characters could forge or mangle a recognized command.
- Centralize the /goal delimiter policy on Unicode White_Space via
\p{White_Space} with the u flag: space/tab/LF/CRLF/NBSP separate,
U+200B/U+FEFF/U+2060 never do, and outer trimming uses the same class
so acceptance and trimming cannot drift.
- Guard the decider thread.turn.start (the single pre-event seam every
provider-bound message funnels through) and the WS bootstrap handler
(before thread/worktree side effects) with the same shared parser.
- Classify blocked goal text at the mobile outbox delivery boundary: it
stays queued with its text preserved, is reported once, shows a
Blocked label on pending rows, and never retries or silently discards.
- Existing /goal metadata paths (set/show/clear, capability gating,
attachments feedback, drafts, web/mobile headers) are unchanged.
Model: GPT-5.6 Sol (max), pi harness.
0 commit comments