@agi-fans/oh-my-dsh 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,6 +45,7 @@ The full documentation is also published on the [official site](https://omdsh.ag
45
45
  - [User plugins](https://omdsh.agi.fans/docs/plugins/) — install DSH bundles into the omdsh Profile with `omdsh plugin`.
46
46
  - [Architecture](https://omdsh.agi.fans/docs/architecture/) — understand the plugin boundaries and runtime data flow.
47
47
  - [Performance](https://omdsh.agi.fans/docs/performance/) — inspect the benchmarks, methodology, and rendering optimizations.
48
+ - [Report a bug or request a feature](https://github.com/agi-fans/oh-my-dsh/issues/new/choose) — use a guided form to include the version, environment, reproduction steps, and sanitized context.
48
49
 
49
50
  ## Why oh-my-dsh
50
51
 
@@ -1,7 +1,7 @@
1
1
  - id: persona
2
2
  name: '@deepseek-ai/dsh-persona'
3
3
  config:
4
- text: You are a helpful software engineer assistant.
4
+ text: You are a helpful software engineer assistant.{{omdsh_agent_behavior}}
5
5
  complete: true
6
6
  includeRuntimeContext: false
7
7
 
package/config/cordis.yml CHANGED
@@ -15,6 +15,10 @@
15
15
 
16
16
  - id: llm-deepseek
17
17
  name: '@deepseek-ai/dsh-llm-deepseek'
18
+ config:
19
+ # Current built-ins share this fallback. Exact catalog values still win,
20
+ # and omitting models keeps future adapter additions visible.
21
+ maxTokens: 384000
18
22
 
19
23
  - id: session
20
24
  name: '@deepseek-ai/dsh-session'
@@ -102,6 +106,7 @@
102
106
  name: '@deepseek-ai/dsh-agent-presets'
103
107
  config:
104
108
  default: standard
109
+ includeShippedRoot: false
105
110
  roots:
106
111
  - path: !!js "process.getBuiltinModule('node:url').fileURLToPath(new URL('./agent-presets/', baseUrl))"
107
112
  trust: system
@@ -160,19 +165,78 @@
160
165
  name: Full access
161
166
  description: Full filesystem access without approval prompts.
162
167
 
163
- - id: spine
164
- name: '@deepseek-ai/dsh-agent-spine-demo'
168
+ # — spine 展开块(替代已删除的 @deepseek-ai/dsh-agent-spine-demo)—
169
+ # 顺序遵循上游 spine apply() 的挂载顺序;agent-instructions 必须先于
170
+ # tool-skill 注册(两者都以 session 前缀消息注入,注册顺序即渲染顺序)。
171
+ - id: system-prompt
172
+ name: '@deepseek-ai/dsh-system-prompt'
173
+
174
+ - id: tools
175
+ name: '@deepseek-ai/dsh-tools'
176
+ config:
177
+ mode: native
178
+
179
+ - id: skill
180
+ name: '@deepseek-ai/dsh-skill'
181
+
182
+ - id: skill-filesystem
183
+ name: '@deepseek-ai/dsh-skill-filesystem'
184
+ config:
185
+ dshHome: !!js process.env.OMDSH_HOME || undefined
186
+
187
+ - id: llm-retry
188
+ name: '@deepseek-ai/dsh-llm-retry'
189
+
190
+ - id: goal
191
+ name: '@deepseek-ai/dsh-goal'
192
+
193
+ - id: tool-goal
194
+ name: '@deepseek-ai/dsh-tool-goal'
195
+
196
+ - id: goal-round-driver
197
+ name: '@deepseek-ai/dsh-goal-round-driver'
198
+
199
+ - id: jobs
200
+ name: '@deepseek-ai/dsh-jobs-local'
201
+
202
+ - id: invariants
203
+ name: '@deepseek-ai/dsh-invariants'
204
+
205
+ - id: session-invariant
206
+ name: '@deepseek-ai/dsh-session/invariant'
207
+
208
+ - id: agent-invariant
209
+ name: '@deepseek-ai/dsh-agent/invariant'
210
+
211
+ - id: scope-invariant
212
+ name: '@deepseek-ai/dsh-scope/invariant'
213
+
214
+ - id: agent-loop-invariant
215
+ name: '@deepseek-ai/dsh-agent-loop/invariant'
216
+
217
+ - id: shell-env
218
+ name: '@deepseek-ai/dsh-shell-env'
165
219
  config:
166
- workspaceContext:
167
- maxBytes: 65536
168
220
  dshHome: !!js process.env.OMDSH_HOME || undefined
169
- skills:
170
- enabled: true
171
- goals:
172
- domain: {}
173
- tool: {}
174
- tools:
175
- mode: native
221
+
222
+ - id: tool-bash
223
+ name: '@deepseek-ai/dsh-tool-bash'
224
+
225
+ - id: agent-instructions
226
+ name: '@deepseek-ai/dsh-agent-instructions'
227
+ config:
228
+ maxBytes: 65536
229
+
230
+ - id: tool-skill
231
+ name: '@deepseek-ai/dsh-tool-skill'
232
+
233
+ - id: tool-jobs
234
+ name: '@deepseek-ai/dsh-tool-jobs'
235
+
236
+ - id: agent-loop
237
+ name: '@deepseek-ai/dsh-agent-loop'
238
+ config:
239
+ agents: []
176
240
 
177
241
  - id: code-runtime
178
242
  name: '@deepseek-ai/dsh-code-runtime-worker-thread'
@@ -257,6 +321,9 @@
257
321
  config:
258
322
  model: !!js process.env.OMDSH_MODEL || 'deepseek-v4-flash'
259
323
 
324
+ - id: agent-behavior
325
+ name: '@agi-fans/oh-my-dsh/agent-behavior'
326
+
260
327
  - id: tui-tool-presentation
261
328
  name: '@agi-fans/dsh-tui/tool-presentation'
262
329
 
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Product-owned Agent behavior settings projected into the Harness system prompt.
3
+ * @module @agi-fans/oh-my-dsh/agent-behavior
4
+ */
5
+ import type { Context } from '@deepseek-ai/cordis';
6
+ import type { Agent } from '@deepseek-ai/dsh-agent';
7
+ import type { AssembleContext } from '@deepseek-ai/dsh-system-prompt';
8
+ import z from '@deepseek-ai/schemastery';
9
+ import type { TuiAgentBehaviorSettings } from '@agi-fans/dsh-tui';
10
+ export declare const name = "omdsh-agent-behavior";
11
+ export declare const inject: string[];
12
+ export declare const AGENT_BEHAVIOR_SETTINGS_NAMESPACE = "omdsh-agent";
13
+ export declare const AGENT_BEHAVIOR_SECTION = "omdsh:agent-behavior";
14
+ export declare const AGENT_BEHAVIOR_ORDER = 30;
15
+ export declare const AGENT_BEHAVIOR_VARIABLE = "omdsh_agent_behavior";
16
+ export declare const AGENT_LANGUAGES: readonly ["auto", "zh-CN", "en"];
17
+ export type AgentLanguage = typeof AGENT_LANGUAGES[number];
18
+ export interface AgentBehaviorSettings extends TuiAgentBehaviorSettings {
19
+ language: AgentLanguage;
20
+ }
21
+ export declare const AgentBehaviorSettingsSchema: z<AgentBehaviorSettings>;
22
+ /** Stable model instruction for one accepted language setting. */
23
+ export declare function agentLanguageFragment(language: AgentLanguage): string;
24
+ /** Freeze live user settings at a turn boundary while keeping direct assemblies useful. */
25
+ export declare class AgentBehaviorPrompt {
26
+ #private;
27
+ snapshot(agent: Agent, turn: number, language: AgentLanguage): void;
28
+ clear(agent: Agent): void;
29
+ fragment(context: AssembleContext, current: AgentLanguage): string;
30
+ variable(context: AssembleContext, current: AgentLanguage): string;
31
+ }
32
+ export declare function apply(ctx: Context): void;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Product-owned Agent behavior settings projected into the Harness system prompt.
3
+ * @module @agi-fans/oh-my-dsh/agent-behavior
4
+ */
5
+ import z from '@deepseek-ai/schemastery';
6
+ export const name = 'omdsh-agent-behavior';
7
+ export const inject = ['settings', 'systemPrompt'];
8
+ export const AGENT_BEHAVIOR_SETTINGS_NAMESPACE = 'omdsh-agent';
9
+ export const AGENT_BEHAVIOR_SECTION = 'omdsh:agent-behavior';
10
+ export const AGENT_BEHAVIOR_ORDER = 30;
11
+ export const AGENT_BEHAVIOR_VARIABLE = 'omdsh_agent_behavior';
12
+ export const AGENT_LANGUAGES = ['auto', 'zh-CN', 'en'];
13
+ export const AgentBehaviorSettingsSchema = z.object({
14
+ language: z.union([...AGENT_LANGUAGES]).default('auto'),
15
+ });
16
+ const LANGUAGE_FRAGMENTS = {
17
+ 'zh-CN': '主要使用简体中文进行推理和面向用户的沟通,包括回复、提问、计划、待办文字和子 Agent 简报。代码、标识符、命令、Tool 参数、日志、引用、文件内容和惯用技术术语在准确性需要时保留原文或标准写法。项目指令中明确规定语言时,遵循项目指令;若用户明确要求当前任务使用其他语言,以该要求为准。',
18
+ en: 'Use English as the primary language for reasoning and user-facing communication, including replies, questions, plans, todo text, and subagent summaries. Preserve code, identifiers, commands, tool arguments, logs, quotations, file contents, and conventional technical terms in their original or standard form when accuracy requires. Follow explicit language requirements in project instructions; if the user explicitly requests another language for the current task, follow that request.',
19
+ };
20
+ /** Stable model instruction for one accepted language setting. */
21
+ export function agentLanguageFragment(language) {
22
+ return language === 'auto' ? '' : LANGUAGE_FRAGMENTS[language];
23
+ }
24
+ /** Freeze live user settings at a turn boundary while keeping direct assemblies useful. */
25
+ export class AgentBehaviorPrompt {
26
+ #snapshots = new WeakMap();
27
+ snapshot(agent, turn, language) {
28
+ const current = this.#snapshots.get(agent);
29
+ if (current?.turn === turn)
30
+ return;
31
+ this.#snapshots.set(agent, { turn, language });
32
+ }
33
+ clear(agent) {
34
+ this.#snapshots.delete(agent);
35
+ }
36
+ fragment(context, current) {
37
+ const language = context.agent === undefined
38
+ ? current
39
+ : this.#snapshots.get(context.agent)?.language ?? current;
40
+ return agentLanguageFragment(language);
41
+ }
42
+ variable(context, current) {
43
+ const fragment = this.fragment(context, current);
44
+ return fragment === '' ? '' : `\n\n${fragment}`;
45
+ }
46
+ }
47
+ export function apply(ctx) {
48
+ const scope = ctx.settings.register(AGENT_BEHAVIOR_SETTINGS_NAMESPACE, AgentBehaviorSettingsSchema, { applies: 'live' });
49
+ const prompt = new AgentBehaviorPrompt();
50
+ ctx.on('agent/pre-step', async (payload, next) => {
51
+ prompt.snapshot(payload.agent, payload.turn, scope.get().language);
52
+ return next();
53
+ });
54
+ ctx.on('agent/status', ({ agent, status }) => {
55
+ if (status === 'idle')
56
+ prompt.clear(agent);
57
+ });
58
+ ctx.on('agent/disposed', ({ agent }) => { prompt.clear(agent); });
59
+ ctx.effect(() => ctx.systemPrompt.section({
60
+ name: AGENT_BEHAVIOR_SECTION,
61
+ order: AGENT_BEHAVIOR_ORDER,
62
+ text: context => prompt.fragment(context, scope.get().language),
63
+ }), 'omdsh Agent behavior prompt section');
64
+ ctx.effect(() => ctx.systemPrompt.variable(AGENT_BEHAVIOR_VARIABLE, context => prompt.variable(context, scope.get().language)), 'omdsh Agent behavior prompt variable');
65
+ ctx.inject(['tui'], (tuiCtx) => {
66
+ const binding = {
67
+ get: () => scope.get(),
68
+ update: next => scope.update({ language: next.language }),
69
+ watch: listener => scope.watch(next => { listener(next); }),
70
+ };
71
+ tuiCtx.effect(() => tuiCtx.tui.bindAgentBehaviorSettings?.(binding) ?? (() => { }), 'bind Agent behavior settings to TUI');
72
+ });
73
+ }
74
+ //# sourceMappingURL=agent-behavior.js.map
package/lib/boot.js CHANGED
@@ -4,11 +4,12 @@
4
4
  * before any entry mounts.
5
5
  * @module @agi-fans/oh-my-dsh
6
6
  */
7
- import { boot, installFailLoud } from '@deepseek-ai/dsh-app-boot';
7
+ import { boot, healProfilesModuleFallback, installFailLoud } from '@deepseek-ai/dsh-app-boot';
8
8
  import { provideCmdline } from '@deepseek-ai/dsh-cmdline';
9
9
  import { DSH_LAUNCH_ENVIRONMENT_KEY } from '@deepseek-ai/dsh-launch-environment';
10
10
  import { NAME, prepareLaunchEnvironment } from "./composition.js";
11
- import { composeLaunch } from "./profile.js";
11
+ import { composeLaunch, INSTALL_ANCHOR } from "./profile.js";
12
+ import { omdshHome } from "./mcp-config.js";
12
13
  import { createProcessShutdown } from "./process-shutdown.js";
13
14
  export { NAME } from "./composition.js";
14
15
  /**
@@ -32,6 +33,11 @@ export async function runOmdsh(prompt, resume) {
32
33
  installFailLoud(NAME, process, async () => { await app.current?.fiber.dispose(); });
33
34
  const environment = prepareLaunchEnvironment();
34
35
  const composed = composeLaunch();
36
+ await healProfilesModuleFallback({
37
+ installAnchor: INSTALL_ANCHOR,
38
+ profile: composed.profile,
39
+ home: omdshHome(),
40
+ });
35
41
  const ctx = await boot(NAME, composed.rootConfig, structuredClone(composed.patches), (hostCtx) => {
36
42
  app.current = hostCtx;
37
43
  hostCtx.provide(DSH_LAUNCH_ENVIRONMENT_KEY, environment);
package/lib/profile.d.ts CHANGED
@@ -27,8 +27,9 @@ export declare function ensureProductBundleFirst(dir: string): void;
27
27
  */
28
28
  export declare function ensureOmdshProfile(home: string): string;
29
29
  /**
30
- * Heal the shared module fallback, ensure the Profile exists, load its
31
- * bundles, and rewrite the empty root include.
30
+ * Ensure the Profile exists, load its bundles, and rewrite the empty root
31
+ * include. Module fallback healing happens asynchronously in runOmdsh after
32
+ * this function returns the resolved Profile.
32
33
  */
33
34
  export declare function prepareProfile(home: string, userLayer?: boolean): Profile;
34
35
  /** One launch's labeled layers and the flattened patch list `boot()` mounts. */
package/lib/profile.js CHANGED
@@ -9,7 +9,7 @@
9
9
  import { existsSync, writeFileSync } from 'node:fs';
10
10
  import { join } from 'node:path';
11
11
  import { fileURLToPath } from 'node:url';
12
- import { composeEntries, healProfilesModuleFallback, initProfile, loadOptionalPatches, loadProfile, PROFILE_PATCH_FILENAME, readProfileManifest, resolveProfileDir, writeProfileManifest, } from '@deepseek-ai/dsh-app-boot';
12
+ import { composeEntries, initProfile, loadOptionalPatches, loadProfile, PROFILE_PATCH_FILENAME, readProfileManifest, resolveProfileDir, writeProfileManifest, } from '@deepseek-ai/dsh-app-boot';
13
13
  import { loadMcpPatches, omdshHome } from "./mcp-config.js";
14
14
  export const NAME = 'omdsh';
15
15
  export const PROFILE_NAME = 'omdsh';
@@ -55,11 +55,11 @@ export function ensureOmdshProfile(home) {
55
55
  return dir;
56
56
  }
57
57
  /**
58
- * Heal the shared module fallback, ensure the Profile exists, load its
59
- * bundles, and rewrite the empty root include.
58
+ * Ensure the Profile exists, load its bundles, and rewrite the empty root
59
+ * include. Module fallback healing happens asynchronously in runOmdsh after
60
+ * this function returns the resolved Profile.
60
61
  */
61
62
  export function prepareProfile(home, userLayer = true) {
62
- healProfilesModuleFallback(INSTALL_ANCHOR, home);
63
63
  ensureOmdshProfile(home);
64
64
  const profile = loadProfile(NAME, PROFILE_NAME, INSTALL_ANCHOR, home, { userLayer });
65
65
  writeFileSync(join(profile.dir, PROFILE_ROOT_FILENAME), PROFILE_ROOT_CONFIG);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agi-fans/oh-my-dsh",
3
3
  "description": "omdsh: a keyboard-first DeepSeek TUI coding agent on the DeepSeek Harness runtime",
4
- "version": "0.12.0",
4
+ "version": "0.14.0",
5
5
  "homepage": "https://omdsh.agi.fans/",
6
6
  "keywords": [
7
7
  "omdsh",
@@ -27,6 +27,13 @@
27
27
  "bin": {
28
28
  "omdsh": "lib/bin.js"
29
29
  },
30
+ "exports": {
31
+ "./agent-behavior": {
32
+ "types": "./lib/agent-behavior.d.ts",
33
+ "default": "./lib/agent-behavior.js"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
30
37
  "files": [
31
38
  "lib/*.js",
32
39
  "lib/*.d.ts",
@@ -42,77 +49,95 @@
42
49
  "access": "public"
43
50
  },
44
51
  "dependencies": {
45
- "@deepseek-ai/cordis-plugin-loader": "1.0.2",
52
+ "@deepseek-ai/cordis-plugin-loader": "1.0.3",
53
+ "@deepseek-ai/cordis-plugin-timer": "1.1.4",
54
+ "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
55
+ "@deepseek-ai/dsh-agent-default-model": "0.1.2-rc.1",
56
+ "@deepseek-ai/dsh-agent-instructions": "0.1.2-rc.1",
57
+ "@deepseek-ai/dsh-agent-loop": "0.1.2-rc.1",
58
+ "@deepseek-ai/dsh-agent-presets": "0.1.2-rc.1",
59
+ "@deepseek-ai/dsh-app-boot": "0.1.2-rc.1",
60
+ "@deepseek-ai/dsh-attachment-local": "0.1.2-rc.1",
61
+ "@deepseek-ai/dsh-authorization": "0.1.2-rc.1",
62
+ "@deepseek-ai/dsh-bash-sandbox": "0.1.2-rc.1",
63
+ "@deepseek-ai/dsh-cmdline": "0.1.2-rc.1",
64
+ "@deepseek-ai/dsh-code-runtime-worker-thread": "0.1.2-rc.1",
65
+ "@deepseek-ai/dsh-command-compact": "0.1.2-rc.1",
66
+ "@deepseek-ai/dsh-command-goal": "0.1.2-rc.1",
67
+ "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
68
+ "@deepseek-ai/dsh-compaction-basic": "0.1.2-rc.1",
69
+ "@deepseek-ai/dsh-cordis-host-runner": "0.1.2-rc.1",
70
+ "@deepseek-ai/dsh-credentials-local": "0.1.2-rc.1",
71
+ "@deepseek-ai/dsh-file-reference": "0.1.2-rc.1",
72
+ "@deepseek-ai/dsh-file-reference-local": "0.1.2-rc.1",
73
+ "@deepseek-ai/dsh-fs-local": "0.1.2-rc.1",
74
+ "@deepseek-ai/dsh-fs-observation-policy": "0.1.2-rc.1",
75
+ "@deepseek-ai/dsh-goal": "0.1.2-rc.1",
76
+ "@deepseek-ai/dsh-goal-round-driver": "0.1.2-rc.1",
77
+ "@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
78
+ "@deepseek-ai/dsh-jobs-local": "0.1.2-rc.1",
79
+ "@deepseek-ai/dsh-launch-environment": "0.1.2-rc.1",
80
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
81
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.2-rc.1",
82
+ "@deepseek-ai/dsh-llm-pi-ai": "0.1.2-rc.1",
83
+ "@deepseek-ai/dsh-llm-retry": "0.1.2-rc.1",
84
+ "@deepseek-ai/dsh-mcp-client": "0.1.2-rc.1",
85
+ "@deepseek-ai/dsh-permission-presets": "0.1.2-rc.1",
86
+ "@deepseek-ai/dsh-persona": "0.1.2-rc.1",
87
+ "@deepseek-ai/dsh-plan-mode": "0.1.2-rc.1",
88
+ "@deepseek-ai/dsh-sandbox-local": "0.1.2-rc.1",
89
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.2-rc.1",
90
+ "@deepseek-ai/dsh-scope": "0.1.2-rc.1",
91
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1",
92
+ "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.2-rc.1",
93
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.2-rc.1",
94
+ "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
95
+ "@deepseek-ai/dsh-session-query": "0.1.2-rc.1",
96
+ "@deepseek-ai/dsh-session-query-sqlite": "0.1.2-rc.1",
97
+ "@deepseek-ai/dsh-session-reference": "0.1.2-rc.1",
98
+ "@deepseek-ai/dsh-session-stats": "0.1.2-rc.1",
99
+ "@deepseek-ai/dsh-session-title": "0.1.2-rc.1",
100
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
101
+ "@deepseek-ai/dsh-settings-file": "0.1.2-rc.1",
102
+ "@deepseek-ai/dsh-shell-env": "0.1.2-rc.1",
103
+ "@deepseek-ai/dsh-skill": "0.1.2-rc.1",
104
+ "@deepseek-ai/dsh-skill-filesystem": "0.1.2-rc.1",
105
+ "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
106
+ "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.2-rc.1",
107
+ "@deepseek-ai/dsh-subprocess-local": "0.1.2-rc.1",
108
+ "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
109
+ "@deepseek-ai/dsh-terminal": "0.1.2-rc.1",
110
+ "@deepseek-ai/dsh-terminal-bash": "0.1.2-rc.1",
111
+ "@deepseek-ai/dsh-token-meter": "0.1.2-rc.1",
112
+ "@deepseek-ai/dsh-tool-ask-user": "0.1.2-rc.1",
113
+ "@deepseek-ai/dsh-tool-bash": "0.1.2-rc.1",
114
+ "@deepseek-ai/dsh-tool-bash-persistent": "0.1.2-rc.1",
115
+ "@deepseek-ai/dsh-tool-cordis": "0.1.2-rc.1",
116
+ "@deepseek-ai/dsh-tool-fs": "0.1.2-rc.1",
117
+ "@deepseek-ai/dsh-tool-fs-search": "0.1.2-rc.1",
118
+ "@deepseek-ai/dsh-tool-goal": "0.1.2-rc.1",
119
+ "@deepseek-ai/dsh-tool-jobs": "0.1.2-rc.1",
120
+ "@deepseek-ai/dsh-tool-skill": "0.1.2-rc.1",
121
+ "@deepseek-ai/dsh-tool-str-replace-editor": "0.1.2-rc.1",
122
+ "@deepseek-ai/dsh-tool-subagent": "0.1.2-rc.1",
123
+ "@deepseek-ai/dsh-tool-subagent-control": "0.1.2-rc.1",
124
+ "@deepseek-ai/dsh-tool-todo": "0.1.2-rc.1",
125
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
126
+ "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
127
+ "@deepseek-ai/dsh-user-questions": "0.1.2-rc.1",
128
+ "@deepseek-ai/schemastery": "3.18.2",
46
129
  "node-addon-require-builtin": "0.1.4",
47
- "@deepseek-ai/cordis-plugin-timer": "1.1.3",
48
- "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
49
- "@deepseek-ai/dsh-agent-default-model": "0.1.1-rc.2",
50
- "@deepseek-ai/dsh-agent-presets": "0.1.1-rc.2",
51
- "@deepseek-ai/dsh-agent-spine-demo": "0.1.1-rc.2",
52
- "@deepseek-ai/dsh-attachment-local": "0.1.1-rc.2",
53
- "@deepseek-ai/dsh-command-compact": "0.1.1-rc.2",
54
- "@deepseek-ai/dsh-command-goal": "0.1.1-rc.2",
55
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
56
- "@deepseek-ai/dsh-compaction-basic": "0.1.1-rc.2",
57
- "@deepseek-ai/dsh-code-runtime-worker-thread": "0.1.1-rc.2",
58
- "@deepseek-ai/dsh-cordis-host-runner": "0.1.1-rc.2",
59
- "@deepseek-ai/dsh-app-boot": "0.1.1-rc.2",
60
- "@deepseek-ai/dsh-bash-sandbox": "0.1.1-rc.2",
61
- "@deepseek-ai/dsh-cmdline": "0.1.1-rc.2",
62
- "@deepseek-ai/dsh-file-reference": "0.1.1-rc.2",
63
- "@deepseek-ai/dsh-file-reference-local": "0.1.1-rc.2",
64
- "@deepseek-ai/dsh-fs-local": "0.1.1-rc.2",
65
- "@deepseek-ai/dsh-fs-observation-policy": "0.1.1-rc.2",
66
- "@deepseek-ai/dsh-launch-environment": "0.1.1-rc.2",
67
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
68
- "@deepseek-ai/dsh-llm-deepseek": "0.1.1-rc.2",
69
- "@deepseek-ai/dsh-llm-pi-ai": "0.1.1-rc.2",
70
- "@deepseek-ai/dsh-mcp-client": "0.1.1-rc.2",
71
- "@deepseek-ai/dsh-permission-presets": "0.1.1-rc.2",
72
- "@deepseek-ai/dsh-persona": "0.1.1-rc.2",
73
- "@deepseek-ai/dsh-plan-mode": "0.1.1-rc.2",
74
- "@deepseek-ai/dsh-sandbox-local": "0.1.1-rc.2",
75
- "@deepseek-ai/dsh-sandbox-policy": "0.1.1-rc.2",
76
- "@deepseek-ai/dsh-session": "0.1.1-rc.2",
77
- "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.1-rc.2",
78
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.1-rc.2",
79
- "@deepseek-ai/dsh-session-projection": "0.1.1-rc.2",
80
- "@deepseek-ai/dsh-session-query": "0.1.1-rc.2",
81
- "@deepseek-ai/dsh-session-query-sqlite": "0.1.1-rc.2",
82
- "@deepseek-ai/dsh-session-reference": "0.1.1-rc.2",
83
- "@deepseek-ai/dsh-session-stats": "0.1.1-rc.2",
84
- "@deepseek-ai/dsh-session-title": "0.1.1-rc.2",
85
- "@deepseek-ai/dsh-subagent": "0.1.1-rc.2",
86
- "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.1-rc.2",
87
- "@deepseek-ai/dsh-terminal": "0.1.1-rc.2",
88
- "@deepseek-ai/dsh-terminal-bash": "0.1.1-rc.2",
89
- "@deepseek-ai/dsh-token-meter": "0.1.1-rc.2",
90
- "@deepseek-ai/dsh-tool-ask-user": "0.1.1-rc.2",
91
- "@deepseek-ai/dsh-tool-bash-persistent": "0.1.1-rc.2",
92
- "@deepseek-ai/dsh-tool-cordis": "0.1.1-rc.2",
93
- "@deepseek-ai/dsh-tool-fs": "0.1.1-rc.2",
94
- "@deepseek-ai/dsh-tool-fs-search": "0.1.1-rc.2",
95
- "@deepseek-ai/dsh-tool-str-replace-editor": "0.1.1-rc.2",
96
- "@deepseek-ai/dsh-tool-subagent": "0.1.1-rc.2",
97
- "@deepseek-ai/dsh-tool-subagent-control": "0.1.1-rc.2",
98
- "@deepseek-ai/dsh-tool-todo": "0.1.1-rc.2",
99
- "@deepseek-ai/dsh-user-approval": "0.1.1-rc.2",
100
- "@deepseek-ai/dsh-user-questions": "0.1.1-rc.2",
101
- "@deepseek-ai/dsh-subprocess-local": "0.1.1-rc.2",
102
- "@deepseek-ai/dsh-settings-file": "0.1.1-rc.2",
103
- "@deepseek-ai/dsh-credentials-local": "0.1.1-rc.2",
104
- "@deepseek-ai/dsh-authorization": "0.1.1-rc.2",
105
- "@agi-fans/dsh-tui": "^0.12.0"
130
+ "@agi-fans/dsh-tui": "^0.14.0"
106
131
  },
107
132
  "peerDependencies": {
108
- "@deepseek-ai/cordis": "^4.0.1"
133
+ "@deepseek-ai/cordis": "^4.0.2"
109
134
  },
110
135
  "devDependencies": {
111
- "@deepseek-ai/cordis": "4.0.1",
112
- "typescript": "^5.6.0",
136
+ "@deepseek-ai/cordis": "4.0.2",
137
+ "@types/node": "^22.10.0",
113
138
  "tsx": "^4.19.0",
114
- "vitest": "^2.1.0",
115
- "@types/node": "^22.10.0"
139
+ "typescript": "^5.6.0",
140
+ "vitest": "^2.1.0"
116
141
  },
117
142
  "scripts": {
118
143
  "clean": "node -e \"const fs=require('node:fs');fs.rmSync('lib',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\"",