Merge remote-tracking branch 'origin/master' into xtr/durable-inbox-recovery

# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/api/session-controller/src/control.ts
#	packages/context/agent-instructions/tests/agent-instructions.spec.ts
#	packages/test-support/agent-loop-testkit/package.json
This commit is contained in:
_Kerman
2026-08-31 13:37:55 +08:00
1292 changed files with 21476 additions and 11274 deletions
@@ -20,7 +20,6 @@ async function harness(): Promise<{
await ctx.plugin(SessionStore)
await ctx.plugin(SessionProjectionRegistry)
await ctx.plugin(AgentRegistry)
await ctx.plugin(SessionProjectionRegistry)
const session = ctx.sessions.create(SessionId('queue-session'))
const agent: Agent = {
id: session.id, options: {}, session, inbox: unsupportedInbox(), status: 'running', ctx,
@@ -92,9 +91,9 @@ describe('Session control queue projection', () => {
it('derives queue replacements from the completed projection regardless of registration order', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
await ctx.plugin(SessionProjectionRegistry)
await ctx.plugin(AgentRegistry)
const control = new SessionControlController(ctx)
await ctx.plugin(SessionProjectionRegistry)
const session = ctx.sessions.create(SessionId('late-projection-queue'))
const agent: Agent = {
id: session.id, options: {}, session, inbox: unsupportedInbox(), status: 'running', ctx,