@deepseek-ai/dsh-client-ui-skill 0.1.7-rc.1 → 0.2.0-rc.1

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
@@ -1,6 +1,58 @@
1
- # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
2
- # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
- # after editing either side, bring the other along and re-record with:
1
+ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
3
+ # After editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/client/ui-skill/README.md
5
- README.md: 0234ce8fb6c2737ea242ac5590e471c3e4c91834
6
- README.zh.md: 5b039ec1c5bea818e6396f4896c05b8175beb08a
5
+ /:
6
+ en: 490d60d7bec05d21
7
+ zh: 72a1300893d68f31
8
+ /deepseek-ai-dsh-client-ui-skill:
9
+ en: 17b91cfc2300ea2b
10
+ zh: 1fcd42e48e14c5ec
11
+ /deepseek-ai-dsh-client-ui-skill/summary:
12
+ en: fad7bff8d3371dfc
13
+ zh: c546189c87d6fbf2
14
+ /deepseek-ai-dsh-client-ui-skill/table-of-contents:
15
+ en: d152484eb41ac6b4
16
+ zh: 09388d293f9be9cb
17
+ /deepseek-ai-dsh-client-ui-skill/use-this-package:
18
+ en: 2f17d0875048ef3c
19
+ zh: 6878ee4c75f2b2cf
20
+ /deepseek-ai-dsh-client-ui-skill/use-this-package/what-the-source-offers:
21
+ en: 2ba1a6158c85b46e
22
+ zh: 9ab58ceef8743849
23
+ /deepseek-ai-dsh-client-ui-skill/use-this-package/the-skill-tool-row:
24
+ en: 452686249f73702d
25
+ zh: 47b0a191dfacba30
26
+ /deepseek-ai-dsh-client-ui-skill/understand-the-implementation:
27
+ en: df2a0ee9d2638f41
28
+ zh: 3b4af7e505e990ca
29
+ /deepseek-ai-dsh-client-ui-skill/understand-the-implementation/candidate-flow:
30
+ en: 1a02a85859f851c7
31
+ zh: 03bd48b83c4a287c
32
+ /deepseek-ai-dsh-client-ui-skill/understand-the-implementation/registration:
33
+ en: 1965ad3169b7fd97
34
+ zh: efc23c44ad1d2765
35
+ /deepseek-ai-dsh-client-ui-skill/further-exploration:
36
+ en: 54198f095d0cc569
37
+ zh: 4eba4413e159967b
38
+ /deepseek-ai-dsh-client-ui-skill/model-experience:
39
+ en: 215e7ba838619b7b
40
+ zh: a311da3843709f90
41
+ /deepseek-ai-dsh-client-ui-skill/model-experience/user-explicit-skill-invocation:
42
+ en: ae1928252b0ea55c
43
+ zh: 6c78cb51c6805a2d
44
+ /deepseek-ai-dsh-client-ui-skill/model-experience/user-explicit-skill-invocation/what-the-model-sees:
45
+ en: 02313760445799a2
46
+ zh: 46007ed9e9f35b44
47
+ /deepseek-ai-dsh-client-ui-skill/model-experience/user-explicit-skill-invocation/token-effect:
48
+ en: cb759321f8c62a96
49
+ zh: 6d479501856d9cd6
50
+ /deepseek-ai-dsh-client-ui-skill/model-experience/user-explicit-skill-invocation/kv-cache-effect:
51
+ en: da53c649077dad7e
52
+ zh: 845f77793f8e10a2
53
+ /deepseek-ai-dsh-client-ui-skill/known-limitations-and-deferred-work:
54
+ en: aed53b17a91d4b02
55
+ zh: fac571e9228e69c5
56
+ /deepseek-ai-dsh-client-ui-skill/known-limitations-and-deferred-work/dev-note:
57
+ en: f3cb9f98b665c2f9
58
+ zh: 2275c60173ce961b
package/README.md CHANGED
@@ -35,7 +35,7 @@ Ordinary-session candidates come from the `skills/list` Remote; the host serves
35
35
 
36
36
  The `preparing` stage shows only the skill icon and title, with no requested skill name or expansion. The `start` and `result` stages use the recorded arguments and output described below; preparation does not consult the installed catalog.
37
37
 
38
- A collapsed row renders the skill glyph, `Skill` title, and requested skill name on the same secondary font-size axis, line height, row height, and glyph scaling as ordinary Tool rows. Every lifecycle state retains the ordinary skill glyph; running calls carry the transcript shimmer, while failures replace the name with the first error line and interruptions retain their explicit status text. A settled row expands into a bounded `Instructions` card containing the exact durable tool output, with the standard trajectory `Inspect` affordance when available; this expanded card keeps its own typography. The row derives its name, lifecycle, and body only from the frozen call/result slice supplied by ui-tool, never from the current catalog, so replay stays stable when installed skills or their descriptions change.
38
+ A collapsed row renders the skill glyph, `Skill` title, and requested skill name on the same secondary font-size axis, line height, row height, and glyph scaling as ordinary Tool rows. Every lifecycle state retains the ordinary skill glyph; running calls carry one left-to-right highlight across the title, separator, and skill name, while failures replace the name with the first error line and interruptions retain their explicit status text. A settled row expands into a bounded `Instructions` card containing the exact durable tool output, with the standard trajectory `Inspect` affordance when available; this expanded card keeps its own typography. The row derives its name, lifecycle, and body only from the frozen call/result slice supplied by ui-tool, never from the current catalog, so replay stays stable when installed skills or their descriptions change.
39
39
 
40
40
  Hovering over `/name` highlights the entire reference. Clicking a known skill opens its provider-supplied `SKILL.md` path in the right Sidebar while keeping the token editable. An uncached click shares the per-Session catalog fetch and opens when it completes, retaining the clicked Session address. Preset changes, connection resets, and plugin disposal cancel pending previews; a later click fetches the current catalog again. Skills without a file path remain invocable but have no file preview.
41
41
 
package/README.zh.md CHANGED
@@ -35,7 +35,7 @@ kind: "package-reference"
35
35
 
36
36
  `preparing` 阶段只显示技能图标与标题,不显示请求加载的技能名称,也不能展开。`start` 和 `result` 阶段使用下述记录参数与输出;准备阶段不查询已安装目录。
37
37
 
38
- 收起的行显示 skill 图标、`Skill` 标题与请求加载的 skill 名称,并与普通工具行使用相同的 secondary 字号轴、行高、行高度和图标缩放。所有生命周期状态都保留普通 skill 图标;运行中的调用带有 transcript(文本记录)的扫光效果,失败时以错误首行替换名称,中断则保留明确状态文本。已结算的行展开为一个尺寸受限的 `Instructions` 卡片,其中原样呈现持久化的工具输出;可用时还会提供标准轨迹的 `Inspect` 入口,展开卡片保留自身排版。该行的名称、生命周期与正文只派生自 ui-tool 提供的冻结调用/结果切片,绝不读取当前目录,因此即使已安装的 skill 或其描述发生变化,回放仍保持稳定。
38
+ 收起的行显示 skill 图标、`Skill` 标题与请求加载的 skill 名称,并与普通工具行使用相同的 secondary 字号轴、行高、行高度和图标缩放。所有生命周期状态都保留普通 skill 图标;运行中的调用以同一道高光从左到右扫过标题、分隔符与 skill 名称,失败时以错误首行替换名称,中断则保留明确状态文本。已结算的行展开为一个尺寸受限的 `Instructions` 卡片,其中原样呈现持久化的工具输出;可用时还会提供标准轨迹的 `Inspect` 入口,展开卡片保留自身排版。该行的名称、生命周期与正文只派生自 ui-tool 提供的冻结调用/结果切片,绝不读取当前目录,因此即使已安装的 skill 或其描述发生变化,回放仍保持稳定。
39
39
 
40
40
  鼠标移入 `/name` 时,背景覆盖整个引用。点击已知 skill 会在右侧栏打开提供方给出的 `SKILL.md` 路径,同时保留文本的可编辑性。缓存未就绪时,点击复用该 Session 的目录请求,在完成后按点击时的 Session 地址打开预览。切换预设、重置连接和插件释放会取消待处理的预览;后续点击重新获取当前目录。没有文件路径的 skill 仍可调用,但没有文件预览。
41
41
 
package/lib/client.js CHANGED
@@ -66,7 +66,7 @@ window.__ModuleLoader__.load({
66
66
  }
67
67
  //#endregion
68
68
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-skill/src/client/SkillRow.module.css.mjs
69
- const css = ".iWrAna_card{flex-direction:column;display:flex}.iWrAna_row{height:calc(24px + var(--dsh-content-font-delta,0px));align-items:center;min-width:0;display:flex;position:relative;overflow:hidden}.iWrAna_row[data-expandable]{cursor:pointer}.iWrAna_card[data-state=running] .iWrAna_row:after,.iWrAna_card[data-state=preparing] .iWrAna_row:after{content:\"\";background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--dsw-alias-bg-base) 60%, transparent) 55%, transparent 100%);pointer-events:none;width:300px;animation:2.6s ease-out infinite iWrAna_dsh-skill-row-sweep;position:absolute;inset:0 auto 0 0}@keyframes iWrAna_dsh-skill-row-sweep{0%{left:-300px}90%,to{left:100%}}.iWrAna_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex;position:relative}.iWrAna_leading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.iWrAna_chevron{color:var(--dsw-alias-label-secondary)}.iWrAna_iconIdle{opacity:1;transition:opacity .1s;display:inline-flex}.iWrAna_chevronHover{opacity:0;margin:auto;transition:opacity .1s;position:absolute;inset:0}.iWrAna_row:hover .iWrAna_iconIdle{opacity:0}.iWrAna_row:hover .iWrAna_chevronHover{opacity:1}.iWrAna_title{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none}.iWrAna_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.iWrAna_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:auto;overflow:hidden}.iWrAna_errorSummary{color:var(--dsw-alias-state-error-primary)}.iWrAna_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.iWrAna_bodyWrap{flex-direction:column;display:flex}.iWrAna_instructionsCard{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);border-radius:12px;flex-direction:column;max-height:260px;margin:4px 0 4px 4px;display:flex;overflow:hidden}.iWrAna_instructionsHeader{border-bottom:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block-banner);color:var(--dsw-alias-label-caption);text-transform:uppercase;letter-spacing:.04em;flex:none;padding:8px 12px;font-size:11px;font-weight:500;line-height:16px}.iWrAna_instructions{white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-secondary);margin:0;padding:10px 12px 12px;overflow:auto}.iWrAna_instructions[data-error]{color:var(--dsw-alias-state-error-primary)}.iWrAna_instructions::-webkit-scrollbar-thumb{background-clip:padding-box;border:2px solid #0000;border-radius:6px}.iWrAna_instructions::-webkit-scrollbar-track{margin:6px 0}.iWrAna_inspectButton{border:.5px solid var(--dsw-alias-border-l4);corner-shape:round;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:4px 0 2px 4px;padding:2px 8px;font-size:11px;line-height:16px;transition:opacity .1s;display:inline-flex}.iWrAna_card:hover .iWrAna_inspectButton,.iWrAna_inspectButton:focus-visible{opacity:1}.iWrAna_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.iWrAna_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.iWrAna_card[data-state=running] .iWrAna_row:after{animation:none;display:none}.iWrAna_iconIdle,.iWrAna_chevronHover,.iWrAna_inspectButton{transition:none}}";
69
+ const css = ".iWrAna_card{flex-direction:column;display:flex}.iWrAna_row{height:calc(24px + var(--dsh-content-font-delta,0px));align-items:center;min-width:0;display:flex;position:relative;overflow:hidden}.iWrAna_row[data-expandable]{cursor:pointer}.iWrAna_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex;position:relative}.iWrAna_leading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.iWrAna_chevron{color:var(--dsw-alias-label-secondary)}.iWrAna_iconIdle{opacity:1;transition:opacity .1s;display:inline-flex}.iWrAna_chevronHover{opacity:0;margin:auto;transition:opacity .1s;position:absolute;inset:0}.iWrAna_row:hover .iWrAna_iconIdle{opacity:0}.iWrAna_row:hover .iWrAna_chevronHover{opacity:1}.iWrAna_title{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none}.iWrAna_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.iWrAna_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:auto;overflow:hidden}.iWrAna_errorSummary{color:var(--dsw-alias-state-error-primary)}.iWrAna_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.iWrAna_bodyWrap{flex-direction:column;display:flex}.iWrAna_instructionsCard{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);flex-direction:column;max-height:260px;margin:4px 0 4px 4px;display:flex;overflow:hidden}.iWrAna_instructionsHeader{border-bottom:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block-banner);color:var(--dsw-alias-label-caption);text-transform:uppercase;letter-spacing:.04em;flex:none;padding:8px 12px;font-size:11px;font-weight:500;line-height:16px}.iWrAna_instructions{white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-secondary);margin:0;padding:10px 12px 12px;overflow:auto}.iWrAna_instructions[data-error]{color:var(--dsw-alias-state-error-primary)}.iWrAna_instructions::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.iWrAna_instructions::-webkit-scrollbar-track{margin:6px 0}.iWrAna_inspectButton{border:.5px solid var(--dsw-alias-border-l4);corner-shape:round;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:4px 0 2px 4px;padding:2px 8px;font-size:11px;line-height:16px;transition:opacity .1s;display:inline-flex}.iWrAna_card:hover .iWrAna_inspectButton,.iWrAna_inspectButton:focus-visible{opacity:1}.iWrAna_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.iWrAna_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.iWrAna_iconIdle,.iWrAna_chevronHover,.iWrAna_inspectButton{transition:none}}";
70
70
  const tagId = "@deepseek-ai/dsh-client-ui-skill/SkillRow.module.css";
71
71
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
72
72
  const tag = document.createElement("style");
@@ -80,7 +80,6 @@ window.__ModuleLoader__.load({
80
80
  "card": "iWrAna_card",
81
81
  "chevron": "iWrAna_chevron",
82
82
  "chevronHover": "iWrAna_chevronHover",
83
- "dsh-skill-row-sweep": "iWrAna_dsh-skill-row-sweep",
84
83
  "errorSummary": "iWrAna_errorSummary",
85
84
  "iconIdle": "iWrAna_iconIdle",
86
85
  "inspectButton": "iWrAna_inspectButton",
@@ -174,7 +173,8 @@ window.__ModuleLoader__.load({
174
173
  className: SkillRow_module_css_default.visuallyHidden,
175
174
  children: props.t("row.preparing")
176
175
  }),
177
- (0, react_jsx_runtime.jsx)("span", {
176
+ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
177
+ active: true,
178
178
  className: SkillRow_module_css_default.title,
179
179
  children: props.t("row.title")
180
180
  })
@@ -189,6 +189,7 @@ window.__ModuleLoader__.load({
189
189
  const expandable = model.output !== null;
190
190
  const open = expanded && expandable;
191
191
  const status = stateStatus(model.state, t);
192
+ const running = model.state === "running";
192
193
  const summary = model.state === "stopped" ? t("row.stopped") : model.errorSummary ?? model.name;
193
194
  const toggleExpand = () => {
194
195
  setExpanded((value) => !value);
@@ -223,17 +224,23 @@ window.__ModuleLoader__.load({
223
224
  className: SkillRow_module_css_default.visuallyHidden,
224
225
  children: status
225
226
  }) : null,
226
- (0, react_jsx_runtime.jsx)("span", {
227
- className: SkillRow_module_css_default.title,
228
- children: t("row.title")
229
- }),
230
- (0, react_jsx_runtime.jsx)("span", {
231
- className: SkillRow_module_css_default.separator,
232
- "aria-hidden": true
233
- }),
234
- (0, react_jsx_runtime.jsx)("span", {
235
- className: `${SkillRow_module_css_default.summary}${model.state === "error" ? ` ${SkillRow_module_css_default.errorSummary}` : model.state === "stopped" ? ` ${SkillRow_module_css_default.stoppedSummary}` : ""}`,
236
- children: summary
227
+ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
228
+ active: running,
229
+ children: [
230
+ (0, react_jsx_runtime.jsx)("span", {
231
+ className: SkillRow_module_css_default.title,
232
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { children: t("row.title") })
233
+ }),
234
+ (0, react_jsx_runtime.jsx)("span", {
235
+ className: SkillRow_module_css_default.separator,
236
+ "data-shimmer-decoration": true,
237
+ "aria-hidden": true
238
+ }),
239
+ (0, react_jsx_runtime.jsx)("span", {
240
+ className: `${SkillRow_module_css_default.summary}${model.state === "error" ? ` ${SkillRow_module_css_default.errorSummary}` : model.state === "stopped" ? ` ${SkillRow_module_css_default.stoppedSummary}` : ""}`,
241
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { children: summary })
242
+ })
243
+ ]
237
244
  })
238
245
  ]
239
246
  }), open ? (0, react_jsx_runtime.jsxs)("div", {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-client-ui-skill",
3
3
  "description": "Web skill references and the dedicated skill tool row",
4
- "version": "0.1.7-rc.1",
4
+ "version": "0.2.0-rc.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -48,20 +48,20 @@
48
48
  "@types/react": "~18.3.1",
49
49
  "react": "^18.2.0",
50
50
  "react-dom": "^18.2.0",
51
- "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.1",
52
- "@deepseek-ai/dsh-client-connection": "0.1.7-rc.1",
53
- "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.1",
54
- "@deepseek-ai/dsh-client-locale": "0.1.7-rc.1",
55
- "@deepseek-ai/dsh-client-test-runtime": "0.1.7-rc.1",
56
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.1",
57
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.7-rc.1",
58
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.1",
59
- "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.1",
60
- "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.1",
61
- "@deepseek-ai/dsh-session": "0.1.7-rc.1",
51
+ "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.1",
52
+ "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.1",
53
+ "@deepseek-ai/dsh-client-connection": "0.2.0-rc.1",
54
+ "@deepseek-ai/dsh-client-locale": "0.2.0-rc.1",
55
+ "@deepseek-ai/dsh-client-test-runtime": "0.2.0-rc.1",
56
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.1",
57
+ "@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.1",
58
+ "@deepseek-ai/dsh-session": "0.2.0-rc.1",
62
59
  "@deepseek-ai/cordis": "~4.0.4",
63
- "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.1",
64
- "@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.1"
60
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.1",
61
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.1",
62
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.1",
63
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.1",
64
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.1"
65
65
  },
66
66
  "files": [
67
67
  "lib/index.js",