@deepseek-ai/dsh-agent-presets 0.1.5-alpha.1 → 0.1.5-alpha.2

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.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/preset/agent-presets/README.md
5
- README.md: bb9f59d11adc40ee7b428beb3d929829d88ff282
6
- README.zh.md: 13d30f9b7544f5d42523c1a8560cabf64165cabf
5
+ README.md: 6ef3374a5f1ae6b83005073f80d63d156ee92f9c
6
+ README.zh.md: a1be6d634e592126711befad4ffcb06ca0bdc26c
package/README.md CHANGED
@@ -27,6 +27,8 @@ Use `dsh-agent-presets` to give each session the tools, prompt sections, and ski
27
27
 
28
28
  Mount this package in a composition that should give each agent session its own tools, prompt sections, and skills from a preset file. Every session names a preset — explicitly or through the configured default — and is composed from it; without the package, sessions fall back to whatever the host composition mounts.
29
29
 
30
+ The shipped Web `standard`, `ptc`, and `cordis` presets include [explicit file delivery](../../client/ui-deliverables/README.md#explicit-deliveries). The `minimal` preset keeps its fixed two-tool training configuration.
31
+
30
32
  ### What a preset gives a session
31
33
 
32
34
  A session composed from a preset runs the plugins that preset's `agent.cordis.yml` names: its tools, prompt sections, and skills. Sessions joined to the same preset share one installed composition, and each session's state stays separate. A child agent (subagent) joins its parent's composition, so it sees the same tools and prompt sections as the agent that spawned it.
package/README.zh.md CHANGED
@@ -27,6 +27,8 @@ kind: "package-reference"
27
27
 
28
28
  在需要让每个 agent 会话从 preset 文件获得自己的工具、提示词段落与 skill 的组装中挂载本包。每个会话都会命名一个 preset——显式指定或通过配置的默认值——并据此组装;没有本包时,会话只能回退到宿主组装挂载的内容。
29
29
 
30
+ 随附 Web 的 `standard`、`ptc` 与 `cordis` preset 包含[显式文件交付](../../client/ui-deliverables/README.zh.md#explicit-deliveries)。`minimal` preset 保留固定的双工具训练配置。
31
+
30
32
  ### preset 给会话带来什么
31
33
 
32
34
  从 preset 组装的会话会运行该 preset `agent.cordis.yml` 所列插件:它的工具、提示词段落与 skill。加入同一 preset 的会话共享一份已安装的组装,且各会话的状态彼此隔离。子 agent(subagent)会加入其父方的组装,因此它看到的工具与提示词段落和创建它的 agent 相同。
@@ -476,6 +476,14 @@ export const TYPERT = {
476
476
  "name": "EpochHeader",
477
477
  "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n}"
478
478
  },
479
+ {
480
+ "name": "FeedbackCategory",
481
+ "declaration": "export type FeedbackCategory = 'task-result' | 'instruction-following' | 'product-interaction' | 'service-stability' | 'resource-cost' | 'security-privacy-permission' | 'other';"
482
+ },
483
+ {
484
+ "name": "FeedbackRecord",
485
+ "declaration": "export interface FeedbackRecord {\n readonly text?: string;\n readonly category?: FeedbackCategory;\n}"
486
+ },
479
487
  {
480
488
  "name": "FileAttachmentRef",
481
489
  "declaration": "export interface FileAttachmentRef {\n attachmentId: AttachmentId;\n name: string;\n bytes: number;\n}"
@@ -578,7 +586,7 @@ export const TYPERT = {
578
586
  },
579
587
  {
580
588
  "name": "MessageFeedbackItem",
581
- "declaration": "export interface MessageFeedbackItem {\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly version: MessageFeedbackVersion;\n readonly createdAt: number;\n readonly updatedAt: number;\n}"
589
+ "declaration": "export interface MessageFeedbackItem {\n readonly messageId: MessageId;\n readonly rating: MessageFeedbackRating;\n readonly note?: string;\n readonly category?: FeedbackCategory;\n readonly version: MessageFeedbackVersion;\n readonly createdAt: number;\n readonly updatedAt: number;\n}"
582
590
  },
583
591
  {
584
592
  "name": "MessageFeedbackPut",
@@ -678,7 +686,7 @@ export const TYPERT = {
678
686
  },
679
687
  {
680
688
  "name": "SessionEventMap",
681
- "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
689
+ "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
682
690
  },
683
691
  {
684
692
  "name": "SessionEventType",
@@ -736,6 +744,10 @@ export const TYPERT = {
736
744
  "name": "StreamChunk",
737
745
  "declaration": "export type StreamChunk = { type: 'block-start'; index: number; blockType: ContentBlockType; } | { type: 'text-delta'; index: number; text: string; } | { type: 'reasoning-delta'; index: number; text: string; } | { type: 'tool-call-delta'; index: number; id: ToolCallId; name?: string; argumentsDelta: string; } | { type: 'block-end'; index: number; block: ContentBlock; } | { type: 'usage'; usage: TokenUsage; } | { type: 'finish'; reason: FinishReason; replayState?: ReplayEnvelope; };"
738
746
  },
747
+ {
748
+ "name": "SubagentCatalogEvent",
749
+ "declaration": "export type SubagentCatalogEvent = { readonly version: 0; readonly childId: SessionId; readonly childCreatedAt: number; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; });"
750
+ },
739
751
  {
740
752
  "name": "SubagentDescriptorBase",
741
753
  "declaration": "export interface SubagentDescriptorBase {\n readonly version: number;\n readonly mode: 'one-shot' | 'continuable';\n readonly provider: string;\n}"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-agent-presets",
3
3
  "description": "Per-session agent composition from preset cordis.yml files for the DeepSeek Harness",
4
- "version": "0.1.5-alpha.1",
4
+ "version": "0.1.5-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -56,18 +56,18 @@
56
56
  "peerDependencies": {
57
57
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
58
58
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
59
- "@deepseek-ai/dsh-agent": "^0.1.5-alpha.1",
60
- "@deepseek-ai/dsh-atomic-write": "^0.1.5-alpha.1",
61
- "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.1",
62
- "@deepseek-ai/dsh-home-paths": "^0.1.5-alpha.1",
63
- "@deepseek-ai/dsh-scope": "^0.1.5-alpha.1",
64
- "@deepseek-ai/dsh-session": "^0.1.5-alpha.1",
65
- "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.1",
66
- "@deepseek-ai/dsh-settings": "^0.1.5-alpha.1",
67
- "@deepseek-ai/dsh-tools": "^0.1.5-alpha.1",
68
- "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1",
69
- "@deepseek-ai/cordis": "^4.0.2",
70
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.1"
59
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.2",
60
+ "@deepseek-ai/dsh-atomic-write": "^0.1.5-alpha.2",
61
+ "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.2",
62
+ "@deepseek-ai/dsh-home-paths": "^0.1.5-alpha.2",
63
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.2",
64
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.2",
65
+ "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.2",
66
+ "@deepseek-ai/dsh-settings": "^0.1.5-alpha.2",
67
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.2",
68
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.2",
69
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.2",
70
+ "@deepseek-ai/cordis": "^4.0.2"
71
71
  },
72
72
  "dependencies": {
73
73
  "js-yaml": "^4.1.0",
@@ -75,23 +75,23 @@
75
75
  "@deepseek-ai/schemastery": "^3.18.2"
76
76
  },
77
77
  "devDependencies": {
78
+ "@deepseek-ai/cordis-plugin-group": "^1.0.2",
78
79
  "@deepseek-ai/cordis-plugin-include": "^1.0.7",
79
80
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
80
- "@deepseek-ai/dsh-agent": "^0.1.5-alpha.1",
81
- "@deepseek-ai/dsh-agent-loop": "^0.1.5-alpha.1",
82
- "@deepseek-ai/cordis-plugin-group": "^1.0.2",
83
- "@deepseek-ai/dsh-atomic-write": "^0.1.5-alpha.1",
84
- "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.1",
85
- "@deepseek-ai/dsh-scope": "^0.1.5-alpha.1",
86
- "@deepseek-ai/dsh-session": "^0.1.5-alpha.1",
87
- "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.1",
88
- "@deepseek-ai/dsh-settings": "^0.1.5-alpha.1",
89
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.1",
90
- "@deepseek-ai/dsh-settings-file": "^0.1.5-alpha.1",
91
- "@deepseek-ai/dsh-tools": "^0.1.5-alpha.1",
81
+ "@deepseek-ai/dsh-agent": "^0.1.5-alpha.2",
82
+ "@deepseek-ai/dsh-agent-loop": "^0.1.5-alpha.2",
83
+ "@deepseek-ai/dsh-llm": "^0.1.5-alpha.2",
84
+ "@deepseek-ai/dsh-home-paths": "^0.1.5-alpha.2",
85
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.2",
86
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.2",
87
+ "@deepseek-ai/dsh-session-projection": "^0.1.5-alpha.2",
88
+ "@deepseek-ai/dsh-invariants": "^0.1.5-alpha.2",
89
+ "@deepseek-ai/dsh-settings": "^0.1.5-alpha.2",
90
+ "@deepseek-ai/dsh-settings-file": "^0.1.5-alpha.2",
91
+ "@deepseek-ai/dsh-tools": "^0.1.5-alpha.2",
92
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.2",
93
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.2",
92
94
  "@deepseek-ai/cordis": "^4.0.2",
93
- "@deepseek-ai/dsh-llm": "^0.1.5-alpha.1",
94
- "@deepseek-ai/dsh-home-paths": "^0.1.5-alpha.1",
95
- "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1"
95
+ "@deepseek-ai/dsh-atomic-write": "^0.1.5-alpha.2"
96
96
  }
97
97
  }
@@ -261,3 +261,6 @@
261
261
 
262
262
  - id: tool-skill
263
263
  name: '@deepseek-ai/dsh-tool-skill'
264
+
265
+ - id: present
266
+ name: '@deepseek-ai/dsh-tool-present'
@@ -1,10 +1,10 @@
1
- # The `minimal` agent preset: a fixed-prompt, two-tool coding-agent composition.
1
+ # The `minimal` agent preset: a fixed-prompt, single-tool coding-agent composition.
2
2
  #
3
3
  # The persona is the complete system prompt, so global identity, Web orientation,
4
4
  # tool guidance, and later assembly listeners cannot add prompt text. Runtime
5
- # context snapshots are suppressed for this preset, and the model composes only
6
- # the persistent shell (`bash` on POSIX, `pwsh` on win32) and
7
- # `str_replace_editor`. Context compaction is absent.
5
+ # context snapshots are suppressed for this preset, and the model receives only
6
+ # the persistent shell (`bash` on POSIX, `pwsh` on win32). Context compaction is
7
+ # absent.
8
8
 
9
9
  - id: persona
10
10
  name: '@deepseek-ai/dsh-persona'
@@ -41,8 +41,7 @@
41
41
  description: |-
42
42
  Run commands in a bash shell
43
43
  * When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
44
- * You don't have access to the internet via this tool.
45
- * You do have access to a mirror of common linux and python packages via apt and pip.
44
+ * Network access depends on the task environment. Prefer configured mirrors/proxies when they are available.
46
45
  * State is persistent across command calls and discussions with the user.
47
46
  * To inspect a particular line range of a file, e.g. lines 10-25, try 'sed -n 10,25p /path/to/the/file'.
48
47
  * Please avoid commands that may produce a very large amount of output.
@@ -68,21 +67,3 @@
68
67
  * Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
69
68
  * Please avoid commands that may produce a very large amount of output.
70
69
  * Please run long lived commands in the background, e.g. 'Start-Job' or start a server with Start-Process.
71
-
72
- # The bare local filesystem shadows the host's sandboxed provider only for this
73
- # preset. The editor shares that realm and requires absolute paths.
74
- - id: filesystem
75
- name: cordis:group
76
- group: true
77
- isolate:
78
- fs: true
79
- config:
80
- - id: fs-local
81
- name: '@deepseek-ai/dsh-fs-local'
82
- config:
83
- cwd: !!js process.env.DSH_CWD ?? process.cwd()
84
-
85
- - id: str-replace-editor
86
- name: '@deepseek-ai/dsh-tool-str-replace-editor'
87
- config:
88
- maxOutputChars: 16000
@@ -1,3 +1,3 @@
1
1
  name: 极简模式
2
- description: 仅提供持久 bash 与 str_replace_editor 的双工具编码 Agent。
2
+ description: 仅提供持久 shell 的单工具编码 Agent。
3
3
  order: 3
@@ -270,3 +270,6 @@
270
270
  name: '@deepseek-ai/dsh-agent-tool-presentation'
271
271
  config:
272
272
  mode: ptc
273
+
274
+ - id: present
275
+ name: '@deepseek-ai/dsh-tool-present'
@@ -250,3 +250,6 @@
250
250
  config:
251
251
  fetch: true
252
252
  searchTimeoutMs: 60000
253
+
254
+ - id: present
255
+ name: '@deepseek-ai/dsh-tool-present'