Merge remote-tracking branch 'origin/master' into fix/subagent-empty-terminal-message-output

This commit is contained in:
Hypatia May
2026-08-10 22:19:44 +08:00
1411 changed files with 4451 additions and 3320 deletions
+2 -2
View File
@@ -28,13 +28,13 @@
"@deepseek-ai/dsh-llm": "^0.0.1",
"@deepseek-ai/dsh-sdk-protocol": "^0.0.1",
"@deepseek-ai/dsh-session": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-sdk-protocol": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-sdk-client'
+2 -2
View File
@@ -33,10 +33,10 @@
},
"peerDependencies": {
"@deepseek-ai/dsh-invariants": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/create-sdk'
@@ -73,7 +73,7 @@ describe.skipIf(!existsSync(builtScripts))('live-linked generated projects', ()
})
await writeFile(join(root, 'plugins/probe/src/index.ts'), `
import { writeFileSync } from 'node:fs'
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
export const name = 'probe'
export function apply(_ctx: Context): void {
writeFileSync(new URL('../../../plugin-loaded', import.meta.url), 'loaded\\n')
@@ -119,7 +119,7 @@ describe.skipIf(!existsSync(builtScripts))('live-linked generated projects', ()
const manifest = JSON.parse(await readFile(join(root, 'package.json'), 'utf8')) as {
dependencies: Record<string, string>
}
expect(manifest.dependencies.cordis).toMatch(name === 'npm' ? /^file:/ : name === 'pnpm' ? /^link:/ : /^portal:/)
expect(manifest.dependencies['@deepseek-ai/cordis']).toMatch(name === 'npm' ? /^file:/ : name === 'pnpm' ? /^link:/ : /^portal:/)
expect(manifest.dependencies).not.toHaveProperty('node-addon-require-builtin')
}, 180_000)
}
+2 -2
View File
@@ -34,7 +34,7 @@
"@deepseek-ai/dsh-brand": "^0.0.1",
"@deepseek-ai/dsh-invariants": "^0.0.1",
"@deepseek-ai/dsh-subprocess": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
@@ -47,6 +47,6 @@
"@deepseek-ai/dsh-tool-subagent": "workspace:^",
"@deepseek-ai/dsh-tool-todo": "workspace:^",
"@deepseek-ai/dsh-tool-web": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
@@ -101,7 +101,7 @@ config:
id: 'default',
label: 'Cordis HMR',
default: true,
resources: [{ kind: 'npm-cordis-config-entry', id: 'hmr', package: '@cordisjs/plugin-hmr' }],
resources: [{ kind: 'npm-cordis-config-entry', id: 'hmr', package: '@deepseek-ai/cordis-plugin-hmr' }],
}],
},
{
@@ -26,7 +26,7 @@ class SpineOption extends FeatureOption {
override contribution(_profile: ProjectProfile): ProjectContribution {
return new ProjectContribution([
...npmCordisConfigEntry(ID, { id: 'timer', name: '@cordisjs/plugin-timer' }),
...npmCordisConfigEntry(ID, { id: 'timer', name: '@deepseek-ai/cordis-plugin-timer' }),
...npmCordisConfigEntry(ID, { id: 'llm', name: '@deepseek-ai/dsh-llm' }),
...npmCordisConfigEntry(ID, { id: 'session', name: '@deepseek-ai/dsh-session' }),
...npmCordisConfigEntry(ID, {
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-helper'
@@ -73,7 +73,7 @@ export class LinkWorkspace {
if (packages.has(manifest.name)) throw new Error(`duplicate linked package name: ${manifest.name}`)
packages.set(manifest.name, { directory, manifest })
}
if (!packages.has('cordis') || !packages.has('@deepseek-ai/dsh-scripts')) {
if (!packages.has('@deepseek-ai/cordis') || !packages.has('@deepseek-ai/dsh-scripts')) {
throw new Error(`not a DeepSeek Harness repository root: ${absolute}`)
}
return new LinkWorkspace(absolute, packages)
@@ -134,4 +134,37 @@ export class LinkWorkspace {
? resolve(dirname(directory), directory.split(sep).at(-1) as string)
: undefined
}
/**
* Rewrite one nested generated manifest's local dependencies to live-link specs.
*
* A generated workspace member resolves its own dependencies, so every local
* name it declares must point into this repository as well: none of them —
* the harness packages or the rescoped framework — exists on a public
* registry, so a semver spec there fails the install outright.
* `peerDependencies` keeps its range because a peer states what the consumer
* must supply, and package managers reject a link spec in that section.
* @param projectRoot - Absolute root of the generated project.
* @param manifestPath - The nested manifest's project-relative POSIX path.
* @param text - The nested manifest's complete current text.
* @param manager - Package manager whose link-spec form applies.
* @returns The manifest text with every resolved local dependency relinked.
*/
relinkNestedManifest(projectRoot: string, manifestPath: string, text: string, manager: PackageManager): string {
const manifest = JSON.parse(text) as Record<string, unknown>
const manifestDirectory = resolve(canonicalPath(projectRoot), dirname(manifestPath))
let changed = false
for (const section of ['dependencies', 'devDependencies', 'optionalDependencies']) {
const dependencies = manifest[section]
if (typeof dependencies !== 'object' || dependencies === null) continue
for (const [name] of Object.entries(dependencies as Record<string, string>)) {
const pkg = this.packages.get(name)
if (!pkg) continue
const relativePath = posixPath(relative(manifestDirectory, realpathSync(pkg.directory)))
;(dependencies as Record<string, string>)[name] = manager.linkSpec(relativePath)
changed = true
}
}
return changed ? `${JSON.stringify(manifest, null, 2)}\n` : text
}
}
@@ -83,7 +83,7 @@ export class LocalPluginBlueprint {
documents(projectName: string, releaseVersion: string): TextProjectFile[] {
const name = this.packageName(projectName)
const toolName = this.name.replaceAll('-', '_')
const cordisSpec = resolveNpmDependency('cordis', 'devDependencies', releaseVersion).spec
const cordisSpec = resolveNpmDependency('@deepseek-ai/cordis', 'devDependencies', releaseVersion).spec
const manifest = {
name,
version: '0.0.0',
@@ -94,10 +94,10 @@ export class LocalPluginBlueprint {
exports: { '.': { types: './lib/index.d.ts', default: './lib/index.js' } },
peerDependencies: {
...this.kind === 'tool' ? { '@deepseek-ai/dsh-tools': `^${releaseVersion}` } : {},
cordis: cordisSpec,
'@deepseek-ai/cordis': cordisSpec,
},
devDependencies: {
cordis: cordisSpec,
'@deepseek-ai/cordis': cordisSpec,
},
}
const tsconfig = {
@@ -19,17 +19,17 @@ export interface BaselineNpmDependencies {
}
const EXTERNAL_NPM_DEPENDENCY_SPECS: Readonly<Record<string, string>> = {
'@cordisjs/plugin-hmr': '^1.0.15',
'@cordisjs/plugin-timer': '^1.1.2',
'@deepseek-ai/cordis-plugin-hmr': '^1.0.15',
'@deepseek-ai/cordis-plugin-timer': '^1.1.2',
'@types/node': '^22.20.0',
cordis: '^4.0.0-rc.7',
'@deepseek-ai/cordis': '^4.0.0-rc.7',
tsdown: '0.22.2',
tsx: '^4.22.4',
typescript: '^6.0.3',
}
const BASELINE_NPM_DEPENDENCY_NAMES: Readonly<Record<NpmDependencySection, readonly string[]>> = {
dependencies: ['@deepseek-ai/dsh-scripts', 'cordis'],
dependencies: ['@deepseek-ai/dsh-scripts', '@deepseek-ai/cordis'],
devDependencies: ['@types/node', 'tsdown', 'tsx', 'typescript'],
}
@@ -17,7 +17,7 @@ import type { ProjectResource } from '../features/resources.ts'
import { CordisYamlFile, type CordisConfigEntry } from '../documents/cordis-yaml-file.ts'
import { EnvFile } from '../documents/env-file.ts'
import { PackageJsonFile, type PackageManifest } from '../documents/package-json-file.ts'
import { ProjectFile } from '../documents/project-file.ts'
import { ProjectFile, TextProjectFile } from '../documents/project-file.ts'
import { TsConfigFile } from '../documents/tsconfig-file.ts'
import { featureId, type FeatureId, type ResourceKey } from '../ids.ts'
import { LinkWorkspace } from '../package-managers/link-workspace.ts'
@@ -288,6 +288,18 @@ export class ProjectEditSession implements FeatureProjectView {
this.profile.packageManager,
[...this.documents.values()],
)
// Generated workspace members resolve their own dependencies, so the root
// manifest's links are not enough: relink every nested manifest as well.
for (const [path, document] of this.documents) {
if (path === 'package.json' || !path.endsWith('/package.json')) continue
const relinked = workspace.relinkNestedManifest(
this.source.root,
path,
document.serialize(),
this.profile.packageManager,
)
this.documents.set(path, new TextProjectFile(path, relinked, document.originalText))
}
}
this.validateFinalState()
const changes = this.changes()
@@ -1,5 +1,5 @@
/** Local Cordis plugin. */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
export const name = '{{pluginName}}'
@@ -1,5 +1,5 @@
/** Project-local model-facing tool. */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = '{{pluginName}}'
@@ -279,10 +279,10 @@ describe('package manager strategies', () => {
expect(inferPackageManagerName(undefined, 'unknown/1')).toBeUndefined()
expect(inferPackageManagerName('yarn', undefined)).toBe('yarn')
expect(() => createPackageManager('npm', 'invalid')).toThrow('invalid package manager version')
expect(resolveNpmDependency('cordis', 'devDependencies', '0.0.1')).toEqual({
expect(resolveNpmDependency('@deepseek-ai/cordis', 'devDependencies', '0.0.1')).toEqual({
section: 'devDependencies', spec: '^4.0.0-rc.7',
})
expect(resolveNpmDependency('@cordisjs/plugin-hmr', 'dependencies', '0.0.1').spec).toBe('^1.0.15')
expect(resolveNpmDependency('@deepseek-ai/cordis-plugin-hmr', 'dependencies', '0.0.1').spec).toBe('^1.0.15')
expect(resolveNpmDependency('tsdown', 'devDependencies', '0.0.1').spec).toBe('0.22.2')
expect(resolveNpmDependency('@deepseek-ai/dsh-tools', 'dependencies', '1.2.3').spec).toBe('^1.2.3')
expect(() => resolveNpmDependency('unknown', 'dependencies', '0.0.1')).toThrow('no generated-project')
@@ -353,24 +353,45 @@ describe('package manager strategies', () => {
await mkdir(join(root, 'vendor', 'cordis'), { recursive: true })
await mkdir(join(root, 'packages', 'sdk', 'scripts'), { recursive: true })
await mkdir(join(root, 'packages', 'sdk', 'helper'), { recursive: true })
await writeFile(join(root, 'vendor', 'cordis', 'package.json'), JSON.stringify({ name: 'cordis' }))
await writeFile(join(root, 'vendor', 'cordis', 'package.json'), JSON.stringify({ name: '@deepseek-ai/cordis' }))
await writeFile(join(root, 'packages', 'sdk', 'helper', 'package.json'), JSON.stringify({ name: '@deepseek-ai/dsh-helper' }))
await writeFile(join(root, 'packages', 'sdk', 'scripts', 'package.json'), JSON.stringify({
name: '@deepseek-ai/dsh-scripts', dependencies: { '@deepseek-ai/dsh-helper': '^0.0.1' }, peerDependencies: { cordis: '^4' },
name: '@deepseek-ai/dsh-scripts', dependencies: { '@deepseek-ai/dsh-helper': '^0.0.1' }, peerDependencies: { '@deepseek-ai/cordis': '^4' },
}))
const workspace = await LinkWorkspace.open(root)
expect(workspace.closure(['@deepseek-ai/dsh-scripts'])).toEqual([
'@deepseek-ai/dsh-helper', '@deepseek-ai/dsh-scripts', 'cordis',
'@deepseek-ai/cordis', '@deepseek-ai/dsh-helper', '@deepseek-ai/dsh-scripts',
])
const manifest = PackageJsonFile.create('{"name":"consumer","description":"test"}')
manifest.setNpmDependency('dependencies', '@deepseek-ai/dsh-scripts', '^0.0.1')
const pnpmWorkspace = PnpmWorkspaceFile.create()
workspace.apply(join(root, 'consumer'), manifest, new PnpmPackageManager('10.0.0'), [pnpmWorkspace])
expect(manifest.npmDependency('cordis')?.spec).toMatch(/^link:/)
expect(manifest.npmDependency('@deepseek-ai/cordis')?.spec).toMatch(/^link:/)
expect(pnpmWorkspace.serialize()).toContain('autoInstallPeers: false')
expect(workspace.packageDirectory('cordis')).toBe(join(root, 'vendor', 'cordis'))
expect(await readFile(join(root, 'vendor', 'cordis', 'package.json'), 'utf8')).toContain('cordis')
expect(workspace.packageDirectory('@deepseek-ai/cordis')).toBe(join(root, 'vendor', 'cordis'))
expect(await readFile(join(root, 'vendor', 'cordis', 'package.json'), 'utf8')).toContain('@deepseek-ai/cordis')
expect(workspace.packageDirectory('missing')).toBeUndefined()
// A generated workspace member resolves its own dependencies: every local name it
// declares relinks, while a peer keeps the range package managers require there.
const nested = workspace.relinkNestedManifest(join(root, 'consumer'), 'plugins/probe/package.json', `${JSON.stringify({
name: 'probe',
dependencies: { '@deepseek-ai/dsh-helper': '^0.0.1', 'left-pad': '^1' },
peerDependencies: { '@deepseek-ai/dsh-scripts': '^0.0.1' },
devDependencies: { '@deepseek-ai/dsh-scripts': '^0.0.1' },
}, null, 2)}\n`, new PnpmPackageManager('10.0.0'))
const nestedManifest = JSON.parse(nested) as {
dependencies: Record<string, string>
peerDependencies: Record<string, string>
devDependencies: Record<string, string>
}
expect(nestedManifest.dependencies['@deepseek-ai/dsh-helper']).toMatch(/^link:\.\.\/\.\.\//)
expect(nestedManifest.dependencies['left-pad']).toBe('^1')
expect(nestedManifest.devDependencies['@deepseek-ai/dsh-scripts']).toMatch(/^link:\.\.\/\.\.\//)
expect(nestedManifest.peerDependencies['@deepseek-ai/dsh-scripts']).toBe('^0.0.1')
// Nothing local to relink, and a non-object section, leave the text byte-identical.
const untouched = `${JSON.stringify({ name: 'probe', dependencies: { 'left-pad': '^1' }, devDependencies: null }, null, 2)}\n`
expect(workspace.relinkNestedManifest(join(root, 'consumer'), 'plugins/probe/package.json', untouched, new PnpmPackageManager('10.0.0')))
.toBe(untouched)
const yarnManifest = PackageJsonFile.create('{"name":"consumer"}')
yarnManifest.setNpmDependency('dependencies', '@deepseek-ai/dsh-scripts', '^0.0.1')
workspace.apply(join(root, 'consumer-yarn'), yarnManifest, new YarnPackageManager('4.0.0'), [])
+15 -5
View File
@@ -187,12 +187,12 @@ describe('SdkProject and ProjectEditSession', () => {
expect(project.cordis.entry('scope-invariant')?.name).toBe('@deepseek-ai/dsh-scope/invariant')
expect(project.cordis.entry('agent-loop-invariant')?.name).toBe('@deepseek-ai/dsh-agent-loop/invariant')
expect(project.cordis.entry('system-prompt')?.config?.persona).toContain('{{cwd}}')
expect(project.packageManifest().dependencies?.['@cordisjs/plugin-timer']).toBe('^1.1.2')
expect(project.packageManifest().dependencies?.['@cordisjs/plugin-hmr']).toBe('^1.0.15')
expect(project.packageManifest().dependencies?.['@deepseek-ai/cordis-plugin-timer']).toBe('^1.1.2')
expect(project.packageManifest().dependencies?.['@deepseek-ai/cordis-plugin-hmr']).toBe('^1.0.15')
expect(project.packageManifest().dependencies?.['@deepseek-ai/dsh-scope']).toBe('^0.0.1')
expect(project.packageManifest().dependencies).not.toHaveProperty('@deepseek-ai/dsh-scope/invariant')
expect(project.packageManifest().dependencies).not.toHaveProperty('node-addon-require-builtin')
expect(project.cordis.entry('hmr')).toMatchObject({ name: '@cordisjs/plugin-hmr' })
expect(project.cordis.entry('hmr')).toMatchObject({ name: '@deepseek-ai/cordis-plugin-hmr' })
expect(project.cordis.entry('llm-deepseek')).not.toHaveProperty('config.apiKey')
expect(project.cordis.entry('llm-deepseek')?.config).not.toHaveProperty('baseURL')
expect(project.cordis.entry('llm-deepseek')?.config).not.toHaveProperty('models')
@@ -502,7 +502,7 @@ describe('SdkProject and ProjectEditSession', () => {
internals.applyResource(transient, undefined)
internals.removeResource(transient)
internals.replaceContribution(
new ProjectContribution([{ kind: 'npm-dependency', key: resourceKey('shared'), name: 'cordis', section: 'dependencies' }]),
new ProjectContribution([{ kind: 'npm-dependency', key: resourceKey('shared'), name: '@deepseek-ai/cordis', section: 'dependencies' }]),
new ProjectContribution([{
kind: 'cordis-config-entry', key: resourceKey('shared'), entry: { id: 'new', name: 'new' }, ownedConfigKeys: [],
}]),
@@ -698,14 +698,24 @@ describe('SdkProject and ProjectEditSession', () => {
it('does not mistake a linked NPM dependency closure for an installed feature', async () => {
const root = await mkdtemp(join(tmpdir(), 'dsh-link-closure-inspection-'))
temporary.push(root)
const base = request([selection('hooks', ['claude'])])
const base = request([selection('hooks', ['claude'])], [new LocalPluginBlueprint('probe', 'plugin')])
const creation: ProjectCreationRequest = { ...base, linkWorkspaceRoot: repoRoot }
const project = SdkProject.create(root, creation)
const registry = createBuiltinRegistry(project.profile)
const edit = project.edit(registry)
for (const item of creation.features) edit.installFeature(registry.get(item.id), item)
for (const blueprint of creation.localPlugins) edit.addPlugin(blueprint)
const committed = (await edit.commit()).project
expect(committed.packageManifest().dependencies?.['@deepseek-ai/dsh-subagent']).toMatch(/^file:/)
// A generated workspace member resolves its own dependencies, so its manifest links too.
const plugin = JSON.parse(await readFile(join(root, 'plugins/probe/package.json'), 'utf8')) as {
devDependencies?: Record<string, string>
peerDependencies?: Record<string, string>
}
// Asserted by shape, not by the framework's name: what matters is that the
// resolved section links into this repository while the peer keeps its range.
expect(Object.values(plugin.devDependencies ?? {}).every(spec => spec.startsWith('file:'))).toBe(true)
expect(Object.values(plugin.peerDependencies ?? {}).some(spec => spec.startsWith('^'))).toBe(true)
expect(createBuiltinRegistry(committed.profile).get(featureId('subagent')).inspect(committed).state).toBe('absent')
})
+2 -2
View File
@@ -28,13 +28,13 @@
"@deepseek-ai/dsh-llm": "^0.0.1",
"@deepseek-ai/dsh-session": "^0.0.1",
"@deepseek-ai/dsh-subagent": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-llm": "workspace:^",
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-sdk-protocol'
+2 -2
View File
@@ -42,7 +42,7 @@
"peerDependencies": {
"@deepseek-ai/dsh-app-boot": "workspace:^",
"@deepseek-ai/dsh-invariants": "^0.0.1",
"cordis": "^4.0.0-rc.7",
"@deepseek-ai/cordis": "^4.0.0-rc.7",
"tsdown": "^0.22.2",
"tsx": "^4.22.4"
},
@@ -57,7 +57,7 @@
"devDependencies": {
"@deepseek-ai/dsh-app-boot": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"cordis": "^4.0.0-rc.7",
"@deepseek-ai/cordis": "^4.0.0-rc.7",
"tsdown": "^0.22.2",
"tsx": "^4.22.4"
}
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-scripts'
+1 -1
View File
@@ -8,7 +8,7 @@ import { register as registerHook } from 'node:module'
import { access, readFile, readdir } from 'node:fs/promises'
import { dirname, resolve } from 'node:path'
import { fileURLToPath, pathToFileURL } from 'node:url'
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import { boot, installFailLoud, loadEnv, resolveConfigPath } from '@deepseek-ai/dsh-app-boot'
import { parseSdkBootArgs } from './args.ts'
@@ -323,7 +323,7 @@ describe('build profiles and invocation', () => {
await writeFile(join(root, 'cordis.yml'), '[]\n')
const byUrl = await startSDK(pathToFileURL(join(root, 'cordis.yml')))
await byUrl.fiber.dispose()
const byRun = await runSDK(undefined, { cwd: root }) as import('cordis').Context
const byRun = await runSDK(undefined, { cwd: root }) as import('@deepseek-ai/cordis').Context
await byRun.fiber.dispose()
const dev = await startSDK('./cordis.yml', { cwd: root, dev: true })
await dev.fiber.dispose()
+4 -4
View File
@@ -25,7 +25,7 @@
],
"license": "BSD-3-Clause",
"dependencies": {
"schemastery": "^3.17.0"
"@deepseek-ai/schemastery": "^3.17.0"
},
"peerDependencies": {
"@deepseek-ai/dsh-agent": "^0.0.1",
@@ -36,10 +36,10 @@
"@deepseek-ai/dsh-sdk-protocol": "^0.0.1",
"@deepseek-ai/dsh-session": "^0.0.1",
"@deepseek-ai/dsh-subagent": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@cordisjs/plugin-loader": "workspace:^",
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
"@deepseek-ai/dsh-agent": "workspace:^",
"@deepseek-ai/dsh-agent-spine-demo": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
@@ -50,6 +50,6 @@
"@deepseek-ai/dsh-session": "workspace:^",
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
"@deepseek-ai/dsh-subagent": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
+2 -2
View File
@@ -13,9 +13,9 @@
* @module @deepseek-ai/dsh-jsonrpc
*/
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { Readable, Writable } from 'node:stream'
import Schema from 'schemastery'
import Schema from '@deepseek-ai/schemastery'
import { JsonRpcLineTransport } from '@deepseek-ai/dsh-sdk-protocol'
import { HarnessSdkServer } from './server.ts'
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-jsonrpc'
+1 -1
View File
@@ -5,7 +5,7 @@
* @module @deepseek-ai/dsh-jsonrpc/server
*/
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import { resolve } from 'node:path'
import type { Agent, AgentHandle } from '@deepseek-ai/dsh-agent'
import { createUserMessage } from '@deepseek-ai/dsh-llm'
@@ -5,7 +5,7 @@ import { join } from 'node:path'
import { tmpdir } from 'node:os'
import { PassThrough, Writable } from 'node:stream'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { Context } from 'cordis'
import { Context } from '@deepseek-ai/cordis'
import * as agentCore from '@deepseek-ai/dsh-agent-spine-demo'
import SessionPersistenceJsonl from '@deepseek-ai/dsh-session-persistence-jsonl'
import * as jsonrpc from '../src/index.ts'
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import Loader from '@cordisjs/plugin-loader'
import Loader from '@deepseek-ai/cordis-plugin-loader'
import * as jsonrpc from '../src/index.ts'
/**
@@ -5,7 +5,7 @@ import { mkdtemp, rm } from 'node:fs/promises'
import { join } from 'node:path'
import { tmpdir } from 'node:os'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { Context } from 'cordis'
import { Context } from '@deepseek-ai/cordis'
import AgentRegistry, { type Agent, type AgentHandle } from '@deepseek-ai/dsh-agent'
import SessionStore, { SessionId } from '@deepseek-ai/dsh-session'
+2 -2
View File
@@ -31,12 +31,12 @@
"@deepseek-ai/dsh-brand": "^0.0.1",
"@deepseek-ai/dsh-invariants": "^0.0.1",
"@deepseek-ai/dsh-paths": "^0.0.1",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
},
"devDependencies": {
"@deepseek-ai/dsh-brand": "workspace:^",
"@deepseek-ai/dsh-invariants": "workspace:^",
"@deepseek-ai/dsh-paths": "workspace:^",
"cordis": "^4.0.0-rc.7"
"@deepseek-ai/cordis": "^4.0.0-rc.7"
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
*/
/* jscpd:ignore-start */
import type { Context } from 'cordis'
import type { Context } from '@deepseek-ai/cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-telemetry'