add documentation for ai agents (#3115)

* add documentation for ai agents

* docs: consolidate CLAUDE.md and CONTRIBUTING.md, add style guidelines

- Refactor CLAUDE.md to reference CONTRIBUTING.md for build/test/format info
- Expand CONTRIBUTING.md with comprehensive build targets, env vars, and testing
- Add code style guidelines section with conventional commits
- Standardize SDK prettier config to use single quotes (matching web)
- Add project-level Claude Code settings to disable co-author attribution

* style(sdk): apply prettier with single quotes

Run prettier across sdk/base and sdk/package to apply the
standardized quote style (single quotes matching web).

* docs: add USER.md for per-developer TODO filtering

- Add agents/USER.md to .gitignore (contains user identifier)
- Document session startup flow in CLAUDE.md:
  - Create USER.md if missing, prompting for identifier
  - Filter TODOs by @username tags
  - Offer relevant TODOs on session start

* docs: add i18n documentation task to agent TODOs

* docs: document i18n ID patterns in core/

Add agents/i18n-patterns.md covering rust-i18n setup, translation file
format, t!() macro usage, key naming conventions, and locale selection.
Remove completed TODO item and add reference in CLAUDE.md.

* chore: clarify that all builds work on any OS with Docker
This commit is contained in:
Aiden McClelland
2026-02-06 00:10:16 +01:00
committed by GitHub
parent 86ca23c093
commit f2142f0bb3
280 changed files with 6793 additions and 5515 deletions

View File

@@ -1,110 +1,110 @@
import { Graph } from "../util"
import { Graph } from '../util'
describe("graph", () => {
describe('graph', () => {
{
{
test("findVertex", () => {
test('findVertex', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
[{ from: baz, metadata: "baz-qux" }],
'qux',
[{ from: baz, metadata: 'baz-qux' }],
[],
)
const match = Array.from(graph.findVertex((v) => v.metadata === "qux"))
const match = Array.from(graph.findVertex((v) => v.metadata === 'qux'))
expect(match).toHaveLength(1)
expect(match[0]).toBe(qux)
})
test("shortestPathA", () => {
test('shortestPathA', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
[{ from: baz, metadata: "baz-qux" }],
'qux',
[{ from: baz, metadata: 'baz-qux' }],
[],
)
graph.addEdge("foo-qux", foo, qux)
graph.addEdge('foo-qux', foo, qux)
expect(graph.shortestPath(foo, qux) || []).toHaveLength(1)
})
test("shortestPathB", () => {
test('shortestPathB', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
[{ from: baz, metadata: "baz-qux" }],
'qux',
[{ from: baz, metadata: 'baz-qux' }],
[],
)
graph.addEdge("bar-qux", bar, qux)
graph.addEdge('bar-qux', bar, qux)
expect(graph.shortestPath(foo, qux) || []).toHaveLength(2)
})
test("shortestPathC", () => {
test('shortestPathC', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
[{ from: baz, metadata: "baz-qux" }],
[{ to: foo, metadata: "qux-foo" }],
'qux',
[{ from: baz, metadata: 'baz-qux' }],
[{ to: foo, metadata: 'qux-foo' }],
)
expect(graph.shortestPath(foo, qux) || []).toHaveLength(3)
})
test("bfs", () => {
test('bfs', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
'qux',
[
{ from: foo, metadata: "foo-qux" },
{ from: baz, metadata: "baz-qux" },
{ from: foo, metadata: 'foo-qux' },
{ from: baz, metadata: 'baz-qux' },
],
[],
)
@@ -115,24 +115,24 @@ describe("graph", () => {
expect(bfs[2]).toBe(qux)
expect(bfs[3]).toBe(baz)
})
test("reverseBfs", () => {
test('reverseBfs', () => {
const graph = new Graph<string, string>()
const foo = graph.addVertex("foo", [], [])
const foo = graph.addVertex('foo', [], [])
const bar = graph.addVertex(
"bar",
[{ from: foo, metadata: "foo-bar" }],
'bar',
[{ from: foo, metadata: 'foo-bar' }],
[],
)
const baz = graph.addVertex(
"baz",
[{ from: bar, metadata: "bar-baz" }],
'baz',
[{ from: bar, metadata: 'bar-baz' }],
[],
)
const qux = graph.addVertex(
"qux",
'qux',
[
{ from: foo, metadata: "foo-qux" },
{ from: baz, metadata: "baz-qux" },
{ from: foo, metadata: 'foo-qux' },
{ from: baz, metadata: 'baz-qux' },
],
[],
)