Commit c936c2b
Match a coworker's connector by name, not as a substring of another word (#293)
When the intent router falls back and exactly one coworker can reach a system
the message names, the message is routed to that coworker. onlyCoworkerReaching
matched the system id with `haystack.includes(...)`, a bare substring test.
So "how do I deal with a slacker" matched the `slack` connector, and "escribe
un cuento sobre una jirafa" — a giraffe — matched `jira`. A message that named
neither system was read as naming one, and because a fallback pins the channel
to one coworker for the life of the thread, it misrouted the whole conversation
to a specialist that could not answer it. Every untagged message takes this
path when the router endpoint is down, which is the case that surfaced it.
The id is now matched on word boundaries: bounded by a non-alphanumeric
character or an edge of the message, with the id's own characters taken
literally. A system named on its own still routes to its holder, and one buried
inside a longer word does not. Separator loosening is unchanged, so google-drive
still answers to "google drive".
Word boundaries do not settle a name that genuinely appears as its own word for
another reason (a `linear` connector and "linear regression"); that is a limit
of a lexical reach hint, not this substring defect, and is left as is.
Co-authored-by: kevin9327 <kevin9327@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: David McKay <davidmckayv@users.noreply.github.com>1 parent 91d8ae8 commit c936c2b
3 files changed
Lines changed: 84 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
11 | 19 | | |
12 | 20 | | |
13 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
126 | 151 | | |
127 | 152 | | |
128 | 153 | | |
129 | 154 | | |
130 | 155 | | |
131 | 156 | | |
132 | 157 | | |
133 | | - | |
134 | | - | |
135 | | - | |
| 158 | + | |
| 159 | + | |
136 | 160 | | |
137 | 161 | | |
138 | 162 | | |
| |||
142 | 166 | | |
143 | 167 | | |
144 | 168 | | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
| 169 | + | |
150 | 170 | | |
151 | 171 | | |
152 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
231 | 279 | | |
232 | 280 | | |
233 | 281 | | |
| |||
0 commit comments