dsh-agent-plugins-market 0.9.2 → 0.10.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.
Files changed (53) hide show
  1. package/README.md +6 -6
  2. package/README.zh.md +6 -6
  3. package/client/client.js +116 -92
  4. package/client/client.js.map +1 -1
  5. package/lib/packages/market-catalog/src/scanning/archive.js +31 -0
  6. package/lib/packages/market-catalog/src/scanning/validate.js +18 -1
  7. package/lib/packages/market-mcp/src/runtime/mcp/bridge/connection.js +42 -23
  8. package/lib/packages/market-mcp/src/runtime/mcp/bridge/oauth.js +29 -2
  9. package/lib/packages/market-mcp/src/runtime/mcp/bridge/transport.js +8 -5
  10. package/lib/packages/market-runtime/src/runtime/agents/agent-role-router.js +2 -1
  11. package/lib/packages/market-runtime/src/runtime/agents/subagent-seam.js +29 -0
  12. package/lib/packages/market-runtime/src/runtime/agents/teammate-role-runtime.js +8 -2
  13. package/lib/packages/market-runtime/src/runtime/host/scoped-contributors.js +4 -0
  14. package/lib/packages/market-runtime/src/runtime/surfaces/project-runtime.js +4 -1
  15. package/lib/types/packages/market-mcp/src/runtime/mcp/bridge/connection.d.ts +4 -1
  16. package/lib/types/packages/market-mcp/src/runtime/mcp/bridge/oauth.d.ts +14 -0
  17. package/lib/types/packages/market-mcp/src/runtime/mcp/bridge/transport.d.ts +5 -1
  18. package/lib/types/packages/market-runtime/src/runtime/agents/agent-role-router.d.ts +2 -10
  19. package/lib/types/packages/market-runtime/src/runtime/agents/subagent-seam.d.ts +63 -0
  20. package/package.json +67 -62
  21. package/schemas/1.0.0/mcp.schema.json +0 -120
  22. package/schemas/1.0.0/plugin.schema.json +0 -65
  23. package/schemas/1.1.0/mcp.schema.json +0 -120
  24. package/schemas/1.1.0/plugin.schema.json +0 -65
  25. package/schemas/README.md +0 -79
  26. package/schemas/agent-plugins/spec.md +0 -62
  27. package/schemas/claude-code/marketplace.schema.json +0 -143
  28. package/schemas/claude-code/plugin.schema.json +0 -105
  29. package/schemas/claude-code/spec.md +0 -108
  30. package/schemas/codex/marketplace.schema.json +0 -78
  31. package/schemas/codex/plugin.schema.json +0 -77
  32. package/schemas/codex/spec.md +0 -91
  33. package/schemas/com.deepseek.harness/namespace.schema.json +0 -42
  34. package/schemas/com.deepseek.harness/spec.md +0 -52
  35. package/schemas/cursor/marketplace.schema.json +0 -82
  36. package/schemas/cursor/plugin.schema.json +0 -58
  37. package/schemas/cursor/spec.md +0 -92
  38. package/schemas/github-copilot/marketplace.schema.json +0 -107
  39. package/schemas/github-copilot/plugin.schema.json +0 -89
  40. package/schemas/github-copilot/spec.md +0 -105
  41. package/schemas/kimi/marketplace.schema.json +0 -38
  42. package/schemas/kimi/plugin.schema.json +0 -84
  43. package/schemas/kimi/spec.md +0 -94
  44. package/schemas/qoder/marketplace.schema.json +0 -115
  45. package/schemas/qoder/plugin.schema.json +0 -127
  46. package/schemas/qoder/spec.md +0 -111
  47. package/schemas/skill-collection/spec.md +0 -37
  48. package/schemas/universal/marketplace.schema.json +0 -98
  49. package/schemas/universal/plugin.schema.json +0 -49
  50. package/schemas/universal/spec.md +0 -53
  51. package/schemas/zcode/marketplace.schema.json +0 -161
  52. package/schemas/zcode/plugin.schema.json +0 -89
  53. package/schemas/zcode/spec.md +0 -102
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dsh-agent-plugins-market",
3
3
  "icon": "./assets/dsh-agent-plugins.png",
4
4
  "description": "One-stop skills, subagent, MCP and LSP manager inside DeepSeek Harness (DSH), compatible with Claude Code, Codex, Cursor, Kimi and other agent plugin layouts.",
5
- "version": "0.9.2",
5
+ "version": "0.10.0",
6
6
  "type": "module",
7
7
  "main": "lib/index.js",
8
8
  "types": "lib/types/index.d.ts",
@@ -79,27 +79,31 @@
79
79
  ],
80
80
  "peerDependencies": {
81
81
  "@deepseek-ai/cordis": "~4.0.4",
82
- "@deepseek-ai/dsh-agent": "^0.2.0-rc.2",
83
- "@deepseek-ai/dsh-attachment": "^0.2.0-rc.2",
84
- "@deepseek-ai/dsh-credentials": "^0.2.0-rc.2",
85
- "@deepseek-ai/dsh-experimental-agent-team": "^0.2.0-rc.2",
86
- "@deepseek-ai/dsh-hook-protocol": "^0.2.0-rc.2",
87
- "@deepseek-ai/dsh-hooks-claude-code": "^0.2.0-rc.2",
88
- "@deepseek-ai/dsh-llm": "^0.2.0-rc.2",
89
- "@deepseek-ai/dsh-mcp-client": "^0.2.0-rc.2",
90
- "@deepseek-ai/dsh-scope": "^0.2.0-rc.2",
91
- "@deepseek-ai/dsh-session": "^0.2.0-rc.2",
92
- "@deepseek-ai/dsh-session-projection": "^0.2.0-rc.2",
93
- "@deepseek-ai/dsh-session-query": "^0.2.0-rc.2",
94
- "@deepseek-ai/dsh-shell": "^0.2.0-rc.2",
95
- "@deepseek-ai/dsh-skill": "^0.2.0-rc.2",
96
- "@deepseek-ai/dsh-subagent": "^0.2.0-rc.2",
97
- "@deepseek-ai/dsh-subprocess": "^0.2.0-rc.2",
98
- "@deepseek-ai/dsh-system-prompt": "^0.2.0-rc.2",
99
- "@deepseek-ai/dsh-timeout": "^0.2.0-rc.2",
100
- "@deepseek-ai/dsh-tools": "^0.2.0-rc.2",
101
- "@deepseek-ai/dsh-util-code-language": "^0.2.0-rc.2",
102
- "@deepseek-ai/dsh-util-workspace-path": "^0.2.0-rc.2"
82
+ "@deepseek-ai/dsh-agent": ">=0.2.0-rc.2 <0.3.0-0",
83
+ "@deepseek-ai/dsh-agent-loop": ">=0.2.0-rc.2 <0.3.0-0",
84
+ "@deepseek-ai/dsh-agent-loop-testkit": ">=0.2.0-rc.2 <0.3.0-0",
85
+ "@deepseek-ai/dsh-attachment": ">=0.2.0-rc.2 <0.3.0-0",
86
+ "@deepseek-ai/dsh-credentials": ">=0.2.0-rc.2 <0.3.0-0",
87
+ "@deepseek-ai/dsh-experimental-agent-team": ">=0.2.0-rc.2 <0.3.0-0",
88
+ "@deepseek-ai/dsh-experimental-tool-agent-team": ">=0.2.0-rc.2 <0.3.0-0",
89
+ "@deepseek-ai/dsh-hook-protocol": ">=0.2.0-rc.2 <0.3.0-0",
90
+ "@deepseek-ai/dsh-hooks-claude-code": ">=0.2.0-rc.2 <0.3.0-0",
91
+ "@deepseek-ai/dsh-llm": ">=0.2.0-rc.2 <0.3.0-0",
92
+ "@deepseek-ai/dsh-mcp-client": ">=0.2.0-rc.2 <0.3.0-0",
93
+ "@deepseek-ai/dsh-scope": ">=0.2.0-rc.2 <0.3.0-0",
94
+ "@deepseek-ai/dsh-session": ">=0.2.0-rc.2 <0.3.0-0",
95
+ "@deepseek-ai/dsh-session-persistence-jsonl": ">=0.2.0-rc.2 <0.3.0-0",
96
+ "@deepseek-ai/dsh-session-projection": ">=0.2.0-rc.2 <0.3.0-0",
97
+ "@deepseek-ai/dsh-session-query": ">=0.2.0-rc.2 <0.3.0-0",
98
+ "@deepseek-ai/dsh-shell": ">=0.2.0-rc.2 <0.3.0-0",
99
+ "@deepseek-ai/dsh-skill": ">=0.2.0-rc.2 <0.3.0-0",
100
+ "@deepseek-ai/dsh-subagent": ">=0.2.0-rc.2 <0.3.0-0",
101
+ "@deepseek-ai/dsh-subagent-spawn-in-process": ">=0.2.0-rc.2 <0.3.0-0",
102
+ "@deepseek-ai/dsh-subprocess": ">=0.2.0-rc.2 <0.3.0-0",
103
+ "@deepseek-ai/dsh-system-prompt": ">=0.2.0-rc.2 <0.3.0-0",
104
+ "@deepseek-ai/dsh-timeout": ">=0.2.0-rc.2 <0.3.0-0",
105
+ "@deepseek-ai/dsh-tools": ">=0.2.0-rc.2 <0.3.0-0",
106
+ "@deepseek-ai/dsh-util-workspace-path": ">=0.2.0-rc.2 <0.3.0-0"
103
107
  },
104
108
  "peerDependenciesMeta": {
105
109
  "@deepseek-ai/dsh-experimental-agent-team": {
@@ -119,11 +123,11 @@
119
123
  }
120
124
  },
121
125
  "dependencies": {
122
- "@deepseek-ai/dsh-atomic-write": "^0.2.0-rc.2",
123
- "@deepseek-ai/dsh-home-paths": "^0.2.0-rc.2",
124
- "@deepseek-ai/dsh-lsp": "^0.2.0-rc.2",
125
- "@deepseek-ai/dsh-lsp-stdio": "^0.2.0-rc.2",
126
- "@deepseek-ai/dsh-tool-lsp": "^0.2.0-rc.2",
126
+ "@deepseek-ai/dsh-atomic-write": ">=0.2.0-rc.2 <0.3.0-0",
127
+ "@deepseek-ai/dsh-home-paths": ">=0.2.0-rc.2 <0.3.0-0",
128
+ "@deepseek-ai/dsh-lsp": ">=0.2.0-rc.2 <0.3.0-0",
129
+ "@deepseek-ai/dsh-lsp-stdio": ">=0.2.0-rc.2 <0.3.0-0",
130
+ "@deepseek-ai/dsh-tool-lsp": ">=0.2.0-rc.2 <0.3.0-0",
127
131
  "@deepseek-ai/schemastery": "^3.18.4",
128
132
  "@modelcontextprotocol/sdk": "^1.30.0",
129
133
  "ajv": "^8.17.1",
@@ -136,7 +140,7 @@
136
140
  "micromark-extension-math": "^3.1.0",
137
141
  "smol-toml": "^1.9.0",
138
142
  "yaml": "^2.7.0",
139
- "zod": "^4.6.5"
143
+ "zod": "^4.4.3"
140
144
  },
141
145
  "devDependencies": {
142
146
  "@codemirror/commands": "^6.11.1",
@@ -147,37 +151,37 @@
147
151
  "@codemirror/view": "^6.43.12",
148
152
  "@deepseek-ai/cordis": "~4.0.4",
149
153
  "@deepseek-ai/cosmokit": "^1.8.5",
150
- "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
151
- "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
152
- "@deepseek-ai/dsh-agent-loop-testkit": "0.2.0-rc.2",
153
- "@deepseek-ai/dsh-attachment": "0.2.0-rc.2",
154
- "@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
155
- "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.0-rc.2",
156
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
157
- "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
158
- "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
159
- "@deepseek-ai/dsh-credentials": "0.2.0-rc.2",
160
- "@deepseek-ai/dsh-experimental-agent-team": "0.2.0-rc.2",
161
- "@deepseek-ai/dsh-experimental-tool-agent-team": "0.2.0-rc.2",
162
- "@deepseek-ai/dsh-hook-protocol": "0.2.0-rc.2",
163
- "@deepseek-ai/dsh-hooks-claude-code": "0.2.0-rc.2",
164
- "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
165
- "@deepseek-ai/dsh-mcp-client": "0.2.0-rc.2",
166
- "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
167
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
168
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2",
169
- "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
170
- "@deepseek-ai/dsh-session-query": "0.2.0-rc.2",
171
- "@deepseek-ai/dsh-shell": "0.2.0-rc.2",
172
- "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
173
- "@deepseek-ai/dsh-subagent": "0.2.0-rc.2",
174
- "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.0-rc.2",
175
- "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2",
176
- "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
177
- "@deepseek-ai/dsh-timeout": "0.2.0-rc.2",
178
- "@deepseek-ai/dsh-tools": "0.2.0-rc.2",
179
- "@deepseek-ai/dsh-util-code-language": "0.2.0-rc.2",
180
- "@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.2",
154
+ "@deepseek-ai/dsh-agent": "0.2.1-rc.2",
155
+ "@deepseek-ai/dsh-agent-loop": "0.2.1-rc.2",
156
+ "@deepseek-ai/dsh-agent-loop-testkit": "0.2.1-rc.2",
157
+ "@deepseek-ai/dsh-attachment": "0.2.1-rc.2",
158
+ "@deepseek-ai/dsh-client-store": "0.2.1-rc.2",
159
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.2",
160
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.2",
161
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.2",
162
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.2",
163
+ "@deepseek-ai/dsh-credentials": "0.2.1-rc.2",
164
+ "@deepseek-ai/dsh-experimental-agent-team": "0.2.1-rc.2",
165
+ "@deepseek-ai/dsh-experimental-tool-agent-team": "0.2.1-rc.2",
166
+ "@deepseek-ai/dsh-hook-protocol": "0.2.1-rc.2",
167
+ "@deepseek-ai/dsh-hooks-claude-code": "0.2.1-rc.2",
168
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.2",
169
+ "@deepseek-ai/dsh-mcp-client": "0.2.1-rc.2",
170
+ "@deepseek-ai/dsh-scope": "0.2.1-rc.2",
171
+ "@deepseek-ai/dsh-session": "0.2.1-rc.2",
172
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.2",
173
+ "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2",
174
+ "@deepseek-ai/dsh-session-query": "0.2.1-rc.2",
175
+ "@deepseek-ai/dsh-shell": "0.2.1-rc.2",
176
+ "@deepseek-ai/dsh-skill": "0.2.1-rc.2",
177
+ "@deepseek-ai/dsh-subagent": "0.2.1-rc.2",
178
+ "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-rc.2",
179
+ "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2",
180
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2",
181
+ "@deepseek-ai/dsh-timeout": "0.2.1-rc.2",
182
+ "@deepseek-ai/dsh-tools": "0.2.1-rc.2",
183
+ "@deepseek-ai/dsh-util-code-language": "0.2.1-rc.2",
184
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.2",
181
185
  "@eslint/js": "^10.0.1",
182
186
  "@shikijs/langs": "^4.4.3",
183
187
  "@tsdown/css": "^0.22.14",
@@ -223,16 +227,17 @@
223
227
  "build:client": "tsdown && node scripts/normalize-client-banner.mjs",
224
228
  "pretest": "pnpm run check:quick",
225
229
  "test": "vitest run",
226
- "test:contract": "vitest run tests/market-contracts.test.ts tests/routes.test.ts",
230
+ "test:contract": "vitest run packages/market-contracts/test/market-contracts.test.ts packages/market-bundle/test/integration/routes.test.ts",
227
231
  "test:coverage": "vitest run --coverage",
228
- "lint": "eslint index.ts packages tests",
232
+ "lint": "eslint index.ts packages",
229
233
  "format": "prettier --write .",
230
234
  "format:check": "prettier --check .",
231
235
  "check:architecture": "depcruise --validate .dependency-cruiser.cjs index.ts packages",
236
+ "check:doc-links": "node scripts/check-doc-links.mjs",
232
237
  "check:host-alignment": "node scripts/check-host-alignment.mjs",
233
238
  "fix:host-alignment": "node scripts/check-host-alignment.mjs --fix",
234
239
  "check:quick": "pnpm run typecheck && pnpm run lint",
235
240
  "check:reuse": "node scripts/check-reuse.mjs",
236
- "check:refactor": "pnpm run check:quick && pnpm run format:check && pnpm run test:contract && pnpm run check:architecture && pnpm run check:reuse"
241
+ "check:refactor": "pnpm run check:quick && pnpm run format:check && pnpm run test:contract && pnpm run check:architecture && pnpm run check:reuse && pnpm run check:doc-links"
237
242
  }
238
243
  }
@@ -1,120 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
4
- "title": "Agent Plugins MCP Configuration",
5
- "description": "Machine-readable schema for mcp.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
6
- "type": "object",
7
- "properties": {
8
- "$schema": {
9
- "const": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
10
- "description": "Canonical identifier of the MCP configuration schema for the Agent Plugins version targeted by this document."
11
- },
12
- "mcpServers": {
13
- "type": "object",
14
- "additionalProperties": {
15
- "$ref": "#/$defs/server"
16
- }
17
- }
18
- },
19
- "required": ["$schema", "mcpServers"],
20
- "additionalProperties": false,
21
- "$defs": {
22
- "server": {
23
- "title": "MCP server",
24
- "oneOf": [
25
- {
26
- "$ref": "#/$defs/stdioServer"
27
- },
28
- {
29
- "$ref": "#/$defs/streamableHttpServer"
30
- },
31
- {
32
- "$ref": "#/$defs/sseServer"
33
- }
34
- ]
35
- },
36
- "stdioServer": {
37
- "title": "stdio MCP server",
38
- "type": "object",
39
- "properties": {
40
- "type": {
41
- "const": "stdio"
42
- },
43
- "command": {
44
- "type": "string",
45
- "minLength": 1,
46
- "description": "Executable token. Resolution rules are defined by the Agent Plugins specification."
47
- },
48
- "args": {
49
- "type": "array",
50
- "items": {
51
- "type": "string"
52
- }
53
- },
54
- "env": {
55
- "type": "object",
56
- "propertyNames": {
57
- "not": {
58
- "enum": ["PLUGIN_ROOT", "PLUGIN_DATA"]
59
- }
60
- },
61
- "additionalProperties": {
62
- "type": "string"
63
- }
64
- },
65
- "cwd": {
66
- "type": "string",
67
- "pattern": "^(?:\\./|\\$\\{PLUGIN_ROOT\\}(?:/|$)|\\$\\{PLUGIN_DATA\\}(?:/|$))",
68
- "description": "Plugin-relative, PLUGIN_ROOT-rooted, or PLUGIN_DATA-rooted working directory. Filesystem containment is validated separately."
69
- }
70
- },
71
- "required": ["type", "command"],
72
- "additionalProperties": false
73
- },
74
- "streamableHttpServer": {
75
- "title": "Streamable HTTP MCP server",
76
- "type": "object",
77
- "properties": {
78
- "type": {
79
- "const": "streamable-http"
80
- },
81
- "url": {
82
- "type": "string",
83
- "minLength": 1,
84
- "description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
85
- },
86
- "headers": {
87
- "$ref": "#/$defs/headers"
88
- }
89
- },
90
- "required": ["type", "url"],
91
- "additionalProperties": false
92
- },
93
- "sseServer": {
94
- "title": "Legacy HTTP+SSE MCP server",
95
- "type": "object",
96
- "properties": {
97
- "type": {
98
- "const": "sse"
99
- },
100
- "url": {
101
- "type": "string",
102
- "minLength": 1,
103
- "description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
104
- },
105
- "headers": {
106
- "$ref": "#/$defs/headers"
107
- }
108
- },
109
- "required": ["type", "url"],
110
- "additionalProperties": false
111
- },
112
- "headers": {
113
- "title": "HTTP headers",
114
- "type": "object",
115
- "additionalProperties": {
116
- "type": "string"
117
- }
118
- }
119
- }
120
- }
@@ -1,65 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
4
- "title": "Agent Plugins Manifest",
5
- "description": "Machine-readable schema for plugin.json in Agent Plugins 1.0.0. The Agent Plugins specification defines additional semantic and operational requirements.",
6
- "type": "object",
7
- "properties": {
8
- "$schema": {
9
- "const": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
10
- "description": "Canonical identifier of the plugin manifest schema for the Agent Plugins version targeted by this document."
11
- },
12
- "name": {
13
- "type": "string",
14
- "minLength": 1,
15
- "maxLength": 64,
16
- "pattern": "^(?!.*(?:--|\\.\\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$",
17
- "description": "Human-readable plugin name."
18
- },
19
- "version": {
20
- "type": "string"
21
- },
22
- "description": {
23
- "type": "string"
24
- },
25
- "author": {
26
- "type": "object",
27
- "properties": {
28
- "name": {
29
- "type": "string"
30
- },
31
- "email": {
32
- "type": "string"
33
- },
34
- "url": {
35
- "type": "string"
36
- }
37
- },
38
- "additionalProperties": false
39
- },
40
- "homepage": {
41
- "type": "string"
42
- },
43
- "repository": {
44
- "type": "string"
45
- },
46
- "license": {
47
- "type": "string"
48
- },
49
- "keywords": {
50
- "type": "array",
51
- "items": {
52
- "type": "string"
53
- }
54
- },
55
- "extensions": {
56
- "type": "object",
57
- "description": "Client-specific manifest data keyed by reverse-domain extension namespace. Agent Plugins assigns no semantics to namespace object contents.",
58
- "additionalProperties": {
59
- "type": "object"
60
- }
61
- }
62
- },
63
- "required": ["$schema", "name"],
64
- "additionalProperties": false
65
- }
@@ -1,120 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
4
- "title": "Agent Plugins MCP Configuration",
5
- "description": "Machine-readable schema for mcp.json in Agent Plugins 1.1.0. The Agent Plugins specification defines additional semantic and operational requirements.",
6
- "type": "object",
7
- "properties": {
8
- "$schema": {
9
- "const": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
10
- "description": "Canonical identifier of the MCP configuration schema for the Agent Plugins version targeted by this document."
11
- },
12
- "mcpServers": {
13
- "type": "object",
14
- "additionalProperties": {
15
- "$ref": "#/$defs/server"
16
- }
17
- }
18
- },
19
- "required": ["$schema", "mcpServers"],
20
- "additionalProperties": false,
21
- "$defs": {
22
- "server": {
23
- "title": "MCP server",
24
- "oneOf": [
25
- {
26
- "$ref": "#/$defs/stdioServer"
27
- },
28
- {
29
- "$ref": "#/$defs/streamableHttpServer"
30
- },
31
- {
32
- "$ref": "#/$defs/sseServer"
33
- }
34
- ]
35
- },
36
- "stdioServer": {
37
- "title": "stdio MCP server",
38
- "type": "object",
39
- "properties": {
40
- "type": {
41
- "const": "stdio"
42
- },
43
- "command": {
44
- "type": "string",
45
- "minLength": 1,
46
- "description": "Executable token. Resolution rules are defined by the Agent Plugins specification."
47
- },
48
- "args": {
49
- "type": "array",
50
- "items": {
51
- "type": "string"
52
- }
53
- },
54
- "env": {
55
- "type": "object",
56
- "propertyNames": {
57
- "not": {
58
- "enum": ["PLUGIN_ROOT", "PLUGIN_DATA"]
59
- }
60
- },
61
- "additionalProperties": {
62
- "type": "string"
63
- }
64
- },
65
- "cwd": {
66
- "type": "string",
67
- "pattern": "^(?:\\./|\\$\\{PLUGIN_ROOT\\}(?:/|$)|\\$\\{PLUGIN_DATA\\}(?:/|$))",
68
- "description": "Plugin-relative, PLUGIN_ROOT-rooted, or PLUGIN_DATA-rooted working directory. Filesystem containment is validated separately."
69
- }
70
- },
71
- "required": ["type", "command"],
72
- "additionalProperties": false
73
- },
74
- "streamableHttpServer": {
75
- "title": "Streamable HTTP MCP server",
76
- "type": "object",
77
- "properties": {
78
- "type": {
79
- "const": "streamable-http"
80
- },
81
- "url": {
82
- "type": "string",
83
- "minLength": 1,
84
- "description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
85
- },
86
- "headers": {
87
- "$ref": "#/$defs/headers"
88
- }
89
- },
90
- "required": ["type", "url"],
91
- "additionalProperties": false
92
- },
93
- "sseServer": {
94
- "title": "Legacy HTTP+SSE MCP server",
95
- "type": "object",
96
- "properties": {
97
- "type": {
98
- "const": "sse"
99
- },
100
- "url": {
101
- "type": "string",
102
- "minLength": 1,
103
- "description": "MCP endpoint URL. URL semantics are defined by the Agent Plugins specification."
104
- },
105
- "headers": {
106
- "$ref": "#/$defs/headers"
107
- }
108
- },
109
- "required": ["type", "url"],
110
- "additionalProperties": false
111
- },
112
- "headers": {
113
- "title": "HTTP headers",
114
- "type": "object",
115
- "additionalProperties": {
116
- "type": "string"
117
- }
118
- }
119
- }
120
- }
@@ -1,65 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
4
- "title": "Agent Plugins Manifest",
5
- "description": "Machine-readable schema for plugin.json in Agent Plugins 1.1.0. The Agent Plugins specification defines additional semantic and operational requirements.",
6
- "type": "object",
7
- "properties": {
8
- "$schema": {
9
- "const": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
10
- "description": "Canonical identifier of the plugin manifest schema for the Agent Plugins version targeted by this document."
11
- },
12
- "name": {
13
- "type": "string",
14
- "minLength": 1,
15
- "maxLength": 64,
16
- "pattern": "^(?!.*(?:--|\\.\\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$",
17
- "description": "Human-readable plugin name."
18
- },
19
- "version": {
20
- "type": "string"
21
- },
22
- "description": {
23
- "type": "string"
24
- },
25
- "author": {
26
- "type": "object",
27
- "properties": {
28
- "name": {
29
- "type": "string"
30
- },
31
- "email": {
32
- "type": "string"
33
- },
34
- "url": {
35
- "type": "string"
36
- }
37
- },
38
- "additionalProperties": false
39
- },
40
- "homepage": {
41
- "type": "string"
42
- },
43
- "repository": {
44
- "type": "string"
45
- },
46
- "license": {
47
- "type": "string"
48
- },
49
- "keywords": {
50
- "type": "array",
51
- "items": {
52
- "type": "string"
53
- }
54
- },
55
- "extensions": {
56
- "type": "object",
57
- "description": "Client-specific manifest data keyed by reverse-domain extension namespace. Agent Plugins assigns no semantics to namespace object contents.",
58
- "additionalProperties": {
59
- "type": "object"
60
- }
61
- }
62
- },
63
- "required": ["$schema", "name"],
64
- "additionalProperties": false
65
- }
package/schemas/README.md DELETED
@@ -1,79 +0,0 @@
1
- # Plugin manifest and marketplace specifications
2
-
3
- This directory is the specification library for the plugin layouts this manager reads. It holds three kinds of files:
4
-
5
- 1. **Vendored upstream schemas** in [`1.0.0/`](1.0.0/) and [`1.1.0/`](1.1.0/) — pinned copies of the official agent-plugins.org schemas (1.0.0 published, 1.1.0 the working draft this manager explicitly recognizes as compatible; the two releases' schemas differ only in the version string). These are bundled into the published package and loaded at runtime by [`packages/market-catalog/src/scanning/validate.ts`](../packages/market-catalog/src/scanning/validate.ts), because the specification requires clients to validate plugin packages without retrieving schemas at load time (§7.2.1: "Clients MUST NOT retrieve a schema while loading a plugin").
6
- 2. **Reference contracts** in `<dialect>/` — an authored JSON Schema pair plus a `spec.md` for each layout the manager recognizes. **These are documentation, not runtime validators**: the scanner still applies the strategy-chain rules in `src/catalog/`. They exist so a dialect's field set, file locations, and evidence are pinned in one place.
7
- 3. **The client extension namespace contract** in [`com.deepseek.harness/`](com.deepseek.harness/) — the authored schema and rules for this manager's own §8 namespace: manifest data under `extensions["com.deepseek.harness"]` and the top-level `com.deepseek.harness/` extension directory.
8
-
9
- Every authored schema records its provenance in a `$comment`, and every dialect's `spec.md` records the sources, the verification date, and the unresolved gaps.
10
-
11
- ## Layout
12
-
13
- ```text
14
- schemas/
15
- ├── 1.0.0/ # vendored agent-plugins.org v1.0.0 (runtime-loaded)
16
- │ ├── plugin.schema.json
17
- │ └── mcp.schema.json
18
- ├── 1.1.0/ # vendored agent-plugins.org v1.1.0 working draft (runtime-loaded)
19
- ├── agent-plugins/spec.md # the published cross-vendor standard (schemas live in 1.0.0/ and 1.1.0/)
20
- ├── com.deepseek.harness/ # this manager's §8 client extension namespace
21
- │ ├── namespace.schema.json
22
- │ └── spec.md
23
- ├── skill-collection/spec.md # manifest-less layout; nothing to validate
24
- └── <dialect>/
25
- ├── plugin.schema.json
26
- ├── marketplace.schema.json
27
- └── spec.md
28
- ```
29
-
30
- ## Dialect index
31
-
32
- This table records **upstream client conventions**, including their own fallback orders; it does not define this plugin's discovery priority. DSH uses one shared layout order for suite manifests and Marketplace catalogs, shown on the [compatible plugins page](https://sivan757.github.io/dsh-agent-plugins-market/compatible-plugins/#shared-layout-precedence). Catalogs without a dedicated layout use root `marketplace.json` as the final fallback.
33
-
34
- | Dialect | Upstream plugin manifest conventions | Upstream marketplace conventions | Upstream schema |
35
- | --- | --- | --- | --- |
36
- | [Claude Code](claude-code/spec.md) | `.claude-plugin/plugin.json` (optional) | `.claude-plugin/marketplace.json`, or any `marketplace.json` added by path/URL | None; the URL the official catalog declares returns 404 |
37
- | [Codex](codex/spec.md) | `plugin.json` (agent-plugins `$schema`) → `.codex-plugin/` → `.claude-plugin/` → `.cursor-plugin/` | `.agents/plugins/marketplace.json` → `.agents/plugins/api_marketplace.json` → `.claude-plugin/` → `.cursor-plugin/` | agent-plugins v1.0.0 for root `plugin.json`; none otherwise |
38
- | [Cursor](cursor/spec.md) | `.cursor-plugin/plugin.json`, or root `plugin.json` (agent-plugins) | `.cursor-plugin/marketplace.json` | None for `.cursor-plugin/`; agent-plugins v1.0.0 for root |
39
- | [Kimi (kimi-code)](kimi/spec.md) | `kimi.plugin.json` → `.kimi-plugin/plugin.json` | `KIMI_CODE_PLUGIN_MARKETPLACE_URL`, default `https://code.kimi.com/kimi-code/plugins/marketplace.json` | None reachable; the declared URI serves HTML |
40
- | [Kimi (kimi-cli, legacy)](kimi/spec.md#kimi-cli-legacy-a-different-format) | `plugin.json` with a `tools` array | None | None |
41
- | [Universal `.plugin/`](universal/spec.md) | `.plugin/plugin.json` | `.plugin/marketplace.json` | None — an observed convention, not a specification |
42
- | [agent-plugins.org v1](agent-plugins/spec.md) | `plugin.json` (required) | Vendor-specific; not part of the standard. This manager reads `.claude-plugin/marketplace.json`, root `marketplace.json`, or rooted discovery with no catalog | **Vendored 1.0.0 and 1.1.0** |
43
- | [Skill collection](skill-collection/spec.md) | None | None | n/a |
44
- | [ZCode](zcode/spec.md) | `.zcode-plugin/plugin.json` → `.claude-plugin/` → `.codex-plugin/` | `.claude-plugin/marketplace.json` → `marketplace.json` | None |
45
- | [Qoder CLI](qoder/spec.md) | `.qoder-plugin/plugin.json` → `.claude-plugin/plugin.json` | `.qoder-plugin/marketplace.json` → `.claude-plugin/` → `marketplace.json` | None |
46
- | [GitHub Copilot CLI](github-copilot/spec.md) | `.plugin/plugin.json` → `plugin.json` → `.github/plugin/plugin.json` → `.claude-plugin/` | `marketplace.json` → `.plugin/` → `.github/plugin/` → `.claude-plugin/` | None; agent-plugins optional via `$schema` |
47
-
48
- ## Cross-dialect conventions
49
-
50
- These are the points where the layouts actually differ; they cause the most silent failures.
51
-
52
- | Dialect | MCP configuration | Hooks |
53
- | -------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
54
- | Claude Code | `.mcp.json`; inline `mcpServers` is additive | `hooks/hooks.json` or inline |
55
- | Codex | legacy: `.mcp.json` (validator rejects `mcp.json`); agent-plugins dialect: `mcp.json` | manifest `hooks` or `hooks/` |
56
- | Cursor | `mcp.json` (dot-file only via an explicit `mcpServers` field) | `hooks/hooks.json` or inline |
57
- | Kimi (kimi-code) | inline `mcpServers` only | inline `hooks` array |
58
- | Universal `.plugin/` | `.mcp.json`, `.github/mcp.json` | `hooks.json` or `hooks/hooks.json` |
59
- | agent-plugins.org v1 | `mcp.json` (optional — a skills-only suite is conformant), closed; inline is forbidden | `com.deepseek.harness/hooks/hooks.json` (namespace contract) |
60
- | ZCode | `.mcp.json` only | `hooks/hooks.json` |
61
- | Qoder CLI | `.mcp.json` → `mcp.json` (never merged) | `hooks/hooks.json` |
62
- | GitHub Copilot CLI | `.mcp.json`, `.github/mcp.json` | `hooks.json` or `hooks/hooks.json` |
63
-
64
- Claude Code and Copilot (including the Universal convention) define usable LSP declarations. Qoder/ZCode record the field without native execution. Cursor, Codex, Kimi and agent-plugins do not define a native LSP surface; this manager reads agent-plugins LSP declarations from the [`com.deepseek.harness` namespace](com.deepseek.harness/spec.md), its own §8 extension rather than an upstream feature.
65
-
66
- ## Executable coverage
67
-
68
- All ten active layouts are covered by [offline README repository tests](../tests/real-layouts.test.ts). Fixtures retain original Git blobs, commit IDs, hashes and licenses. Competing manifests are removed at every suite root in isolated cases, and the scanner reports the productive marketplace rather than inferring it from file presence. [Component contract tests](../tests/component-declarations.test.ts) cover path/array/inline forms and validation failures. See the [coverage audit](../docs/user/layout-coverage.md) for the exact boundary between layout compatibility and vendor-native runtime behavior.
69
-
70
- ## Provenance and update policy
71
-
72
- - `1.0.0/*.schema.json` and `1.1.0/*.schema.json` are vendored. Replace the files from [`agentplugins/agent-plugins-spec`](https://github.com/agentplugins/agent-plugins-spec) at the pinned spec versions and bump the spec-version references in `packages/market-catalog/src/scanning/validate.ts`. Never edit them by hand.
73
- - `<dialect>/*.schema.json` and `spec.md` are authored here. They are **not** upstream copies and carry no upstream compatibility guarantee. When a cited source changes, re-verify and update the schema, the `spec.md`, and the `$comment` provenance line together.
74
- - `agent-plugins/spec.md` documents the published standard but deliberately keeps its schemas in `1.0.0/` and `1.1.0/` so there is exactly one copy of each release in the tree.
75
- - `com.deepseek.harness/` is authored here and owned here: it defines this manager's own §8 namespace, so its evolution is governed by the namespace `schemaVersion`, not by upstream releases.
76
-
77
- ## Validation
78
-
79
- `tests/schemas.test.ts` compiles every schema with Ajv 2020-12, asserts `$id` uniqueness, pins the vendored ids to the runtime constants in `packages/market-catalog/src/scanning/validate.ts`, and requires each dialect to keep a `spec.md` and a paired marketplace schema (the vendored release directories and the namespace contract keep their own documented shape instead). Run `pnpm run test` after touching this directory; run `pnpm run format:check` for formatting.