Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Chat and workspace agents: channels, DMs and named agents you talk to | 1 | import { test } from "node:test"; |
| 2 | import assert from "node:assert/strict"; | |
| 3 | ||
| 4 | import { MAX_NAME, channelName, dmKey, dmMembers } from "./names.ts"; | |
| 5 | ||
| 6 | test("a channel name is kept lowercase, without #, spaces as dashes", () => { | |
| 7 | assert.deepEqual(channelName("General"), { ok: true, name: "general" }); | |
| 8 | assert.deepEqual(channelName(" #g1t-core "), { ok: true, name: "g1t-core" }); | |
| 9 | assert.deepEqual(channelName("release train"), { ok: true, name: "release-train" }); | |
| 10 | assert.deepEqual(channelName("ops_2026"), { ok: true, name: "ops_2026" }); | |
| 11 | }); | |
| 12 | ||
| 13 | test("a channel name uses letters, digits, dashes and underscores, and is not too long", () => { | |
| 14 | assert.equal(channelName("").ok, false); | |
| 15 | assert.equal(channelName("#").ok, false); | |
| 16 | assert.equal(channelName("café").ok, false); | |
| 17 | assert.equal(channelName("a.b").ok, false); | |
| 18 | assert.equal(channelName("@here").ok, false); | |
| 19 | assert.equal(channelName("x".repeat(MAX_NAME)).ok, true); | |
| 20 | assert.equal(channelName("x".repeat(MAX_NAME + 1)).ok, false); | |
| 21 | }); | |
| 22 | ||
| 23 | test("the site's chat routes are not channel names", () => { | |
| 24 | for (const name of ["dm", "browse", "live", "api", "new", "#New", " API "]) { | |
| 25 | assert.equal(channelName(name).ok, false, name); | |
| 26 | } | |
| 27 | assert.equal(channelName("news").ok, true); | |
| 28 | assert.equal(channelName("api-team").ok, true); | |
| 29 | }); | |
| 30 | ||
| 31 | test("the same members always make the same direct-message key", () => { | |
| 32 | const a = dmKey(dmMembers("user:b", ["agent:z", "user:a"])); | |
| 33 | const b = dmKey(dmMembers("user:a", ["user:b", "agent:z", "user:b"])); | |
| 34 | assert.equal(a, b); | |
| 35 | assert.equal(a, "agent:z,user:a,user:b"); | |
| 36 | }); | |
| 37 | ||
| 38 | test("a direct message with nobody else, or only yourself, is notes to yourself", () => { | |
| 39 | assert.deepEqual(dmMembers("user:a", []), ["user:a"]); | |
| 40 | assert.deepEqual(dmMembers("user:a", ["user:a"]), ["user:a"]); | |
| 41 | assert.equal(dmKey(dmMembers("user:a", [])), "user:a"); | |
| 42 | // Notes are not the same conversation as a direct message with someone. | |
| 43 | assert.notEqual(dmKey(dmMembers("user:a", [])), dmKey(dmMembers("user:a", ["user:b"]))); | |
| 44 | }); |