Merge updated feedback base into telemetry stack

# Conflicts:
#	.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md
#	.agents/notes/implemented/feature/2026-07-28-feedback-command.i18n.yaml
#	docs/config-catalog.md
#	docs/event-producer-consumer.md
#	docs/module-graph.md
#	examples/package.json
#	packages/feedback/command-feedback/README.i18n.yaml
#	packages/telemetry/README.i18n.yaml
#	packages/telemetry/README.md
#	packages/telemetry/README.zh.md
#	packages/telemetry/session-telemetry-otel/README.i18n.yaml
#	packages/telemetry/session-telemetry-otel/README.md
#	packages/telemetry/session-telemetry-otel/README.zh.md
#	packages/telemetry/session-telemetry-otel/package.json
#	packages/telemetry/session-telemetry-otel/src/index.ts
#	packages/telemetry/session-telemetry-otel/tests/otel.spec.ts
#	packages/telemetry/session-telemetry/README.i18n.yaml
#	packages/telemetry/session-telemetry/README.zh.md
#	pnpm-lock.yaml
This commit is contained in:
Turtle
2026-08-06 18:08:45 +08:00
4133 changed files with 255372 additions and 59535 deletions

View File

@@ -1,6 +1,9 @@
- id: cli-mock-llm
name: './cli-mock-llm.ts'
- id: repository-plugin-fixture
name: './repository-plugin/load.mjs'
- id: base
name: '@cordisjs/plugin-include'
config:
@@ -16,4 +19,8 @@
model: cli-mock
persistenceRoot: './.sessions'
workspaceContext: false
dshHome: './.dsh-home'
skills:
local:
agentsHome: './.agents-home'
persona: 'Keyless headless-agent smoke.'

View File

@@ -0,0 +1,17 @@
- id: base
name: '@cordisjs/plugin-include'
config:
path: ../../cordis.yml
patches:
- id: llm-deepseek
config:
apiKey: snapshot-key
baseURL: !!js process.env.DSH_SNAPSHOT_BASE_URL
thinking: disabled
- id: cli-agent
config:
provider: deepseek-official
model: deepseek-v4-flash
persistenceRoot: './.sessions'
workspaceContext: false
persona: 'Keyless DeepSeek adapter defaults snapshot.'

View File

@@ -7,11 +7,13 @@ export const name = 'seed-goal'
export const inject = ['goals']
export function apply(ctx: Context): void {
ctx.on('agent/step', (agent) => {
if (ctx.goals.get(agent) !== undefined) return
ctx.goals.create(agent, {
objective: 'Prove the composed goal survives in the session log',
maxGoalRounds: 7,
})
ctx.on('agent/pre-step', (agent, _messages, _context, next) => {
if (ctx.goals.get(agent) === undefined) {
ctx.goals.create(agent, {
objective: 'Prove the composed goal survives in the session log',
maxGoalRounds: 7,
})
}
return next()
})
}

View File

@@ -0,0 +1,6 @@
---
name: repository-fixture
description: Repository fixture skill.
---
Static instructions from a prepared repository plugin.

View File

@@ -0,0 +1,9 @@
// Generated by dsh-plugin-prepare. Do not edit.
const manifest = {"name":"headless-repository-fixture","skills":["dsh-plugin-assets/skills/0"]}
export const name = "headless-repository-fixture"
export const inject = ["loader","skills"]
export async function apply(ctx) {
const runtime = ctx.loader.builtins["dsh-repository-plugin"]
if (runtime === undefined) throw new Error("missing Cordis builtin dsh-repository-plugin")
await ctx.plugin(runtime, { baseUrl: import.meta.url, manifest })
}

View File

@@ -0,0 +1,13 @@
/**
* Keyless fixture owner that mounts the runtime before its prepared wrapper.
* Cordis starts sibling Loader entries concurrently, so row order is not a dependency edge.
*/
import * as RepositoryPlugin from '@deepseek-ai/dsh-repository-plugin'
import * as PreparedPlugin from './dsh-plugin.mjs'
export const name = 'headless-repository-fixture-loader'
export async function apply(ctx) {
await ctx.plugin(RepositoryPlugin)
await ctx.plugin(PreparedPlugin)
}

View File

@@ -49,5 +49,5 @@ export const inject = ['llm']
* @param {import('cordis').Context} ctx - plugin context carrying the LLM service.
*/
export function apply(ctx) {
ctx.llm.registerAdapter(['deepseek'], new RetrySnapshotAdapter())
ctx.llm.registerAdapter(['deepseek-official'], new RetrySnapshotAdapter())
}

View File

@@ -19,7 +19,7 @@ export const inject = ['agents', 'agentLoop', 'sessionPersistence']
export async function apply(ctx: Context): Promise<void> {
const handle = await ctx.agents.resume({
resumeSessionId: 'semantic-checkpoint-unknown-outcome' as SessionId,
agentOptions: { provider: 'deepseek', model: 'deepseek-v4-flash' },
agentOptions: { provider: 'deepseek-official', model: 'deepseek-v4-flash' },
})
ctx.effect(() => () => handle.dispose(), 'semantic-checkpoint-agent.handle')
}

View File

@@ -0,0 +1,6 @@
/** Fail activation with a deterministic stack so the user-visible startup diagnostic is snapshot-stable. */
export function apply() {
const failure = new Error('startup activation snapshot failure')
failure.stack = 'Error: startup activation snapshot failure\n at activation-error-fixture'
throw failure
}

View File

@@ -0,0 +1,2 @@
- id: activation-error
name: ./activation-error.mjs

View File

@@ -19,7 +19,7 @@ export const inject = ['agents', 'agentLoop', 'sessionPersistence']
export async function apply(ctx: Context): Promise<void> {
const handle = await ctx.agents.resume({
resumeSessionId: 'subagent-inheritance-parent' as SessionId,
agentOptions: { provider: 'deepseek', model: 'deepseek-v4-flash' },
agentOptions: { provider: 'deepseek-official', model: 'deepseek-v4-flash' },
})
ctx.effect(() => () => handle.dispose(), 'subagent-inheritance-agent.handle')
}

View File

@@ -16,6 +16,10 @@
- id: telemetry-redact-rule
name: './telemetry-redact-rule.ts'
# Managed child-process groups required by the bash executor.
- id: subprocess
name: '@deepseek-ai/dsh-subprocess-local'
- id: bash
name: '@deepseek-ai/dsh-bash-local'