@taloswork/ose-shared 0.0.3 → 0.0.5

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 (64) hide show
  1. package/mcp/.gitkeep +1 -1
  2. package/mcp/gen/mcp.json +2 -2
  3. package/package.json +3 -3
  4. package/skills/.gitkeep +1 -1
  5. package/skills/document/SKILL.md +7 -1
  6. package/skills/document/bin/deck-build.cjs +257 -23
  7. package/skills/document/bin/deck-qa.cjs +0 -0
  8. package/skills/document/bin/doc-convert.cjs +0 -0
  9. package/skills/document/bin/doc-fill.cjs +0 -0
  10. package/skills/document/bin/doc-gen.cjs +17 -1
  11. package/skills/document/bin/doc-run.cjs +0 -0
  12. package/skills/document/bin/doc-scan.cjs +131 -18
  13. package/skills/document/bin/doc-text.cjs +146 -10
  14. package/skills/document/bin/doc-validate.cjs +0 -0
  15. package/skills/document/bin/doc-xml.cjs +0 -0
  16. package/skills/document/bin/docx-annotate.cjs +0 -0
  17. package/skills/document/bin/html2pptx.cjs +17 -1
  18. package/skills/document/bin/ocr-worker.cjs +0 -0
  19. package/skills/document/bin/ocr.cjs +0 -0
  20. package/skills/document/bin/pdf-form.cjs +0 -0
  21. package/skills/document/bin/pdf-images.cjs +0 -0
  22. package/skills/document/bin/pdf-ops.cjs +0 -0
  23. package/skills/document/bin/pdf-render.cjs +0 -0
  24. package/skills/document/bin/pdf-tables.cjs +0 -0
  25. package/skills/document/bin/pptx-clone.cjs +0 -0
  26. package/skills/document/bin/pptx-embed-fonts.cjs +0 -0
  27. package/skills/document/bin/pptx-set-image.cjs +0 -0
  28. package/skills/document/bin/pptx-slide.cjs +0 -0
  29. package/skills/document/bin/pptx-theme.cjs +0 -0
  30. package/skills/document/bin/pptx-tokenize.cjs +0 -0
  31. package/skills/document/bin/xlsx-query.cjs +0 -0
  32. package/skills/document/bin/xlsx-recalc.cjs +0 -0
  33. package/skills/document/deck-design.md +5 -1
  34. package/skills/document/layouts/README.md +43 -10
  35. package/skills/document/layouts/brand-values.tpl +6 -8
  36. package/skills/document/layouts/color-palette.tpl +6 -10
  37. package/skills/document/layouts/gantt.tpl +4 -4
  38. package/skills/document/layouts/logo-guidelines.tpl +8 -8
  39. package/skills/document/layouts/map-distribution.tpl +5 -5
  40. package/skills/document/layouts/map-quad.tpl +7 -7
  41. package/skills/document/layouts/radar.tpl +4 -4
  42. package/skills/document/layouts/ring-progress.tpl +4 -4
  43. package/skills/document/layouts/slots.json +1 -763
  44. package/skills/document/layouts/steps-vertical.tpl +4 -4
  45. package/skills/document/layouts/team-row.tpl +5 -11
  46. package/skills/document/layouts/toc-panel.tpl +4 -7
  47. package/skills/document/layouts/type-specimen.tpl +9 -9
  48. package/skills/document/styles/anthropic/skin.css +1 -4
  49. package/skills/document/styles/apple/skin.css +1 -4
  50. package/skills/document/styles/black-gold/skin.css +1 -4
  51. package/skills/document/styles/branding/skin.css +1 -4
  52. package/skills/document/styles/cinereel/skin.css +1 -4
  53. package/skills/document/styles/cool/skin.css +1 -4
  54. package/skills/document/styles/hand-drawn/skin.css +1 -4
  55. package/skills/document/styles/ivory-gold/skin.css +1 -4
  56. package/skills/document/styles/magazine-ink/skin.css +0 -3
  57. package/skills/document/styles/mckinsey/skin.css +1 -4
  58. package/skills/document/styles/mono/skin.css +1 -4
  59. package/skills/document/styles/olive-gold/skin.css +1 -4
  60. package/skills/document/styles/swiss-grid/skin.css +0 -3
  61. package/mcp/gen-google/mcp.json +0 -30
  62. package/mcp/gen-seedance/mcp.json +0 -30
  63. package/mcp/gen-seedream/mcp.json +0 -30
  64. package/mcp/gen-veo/mcp.json +0 -30
@@ -1,4 +1,4 @@
1
- <!-- layouts/steps-vertical — structure-only variant (paint via skin). -->
2
- <section class="slide" data-layout="steps-vertical" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">PROCESS</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">实施步骤</h2>
3
- <div class="step-line" style="position:absolute;left:158px;top:300px;bottom:96px;width:2px"></div><div style="position:absolute;left:96px;right:96px;top:290px;display:flex;flex-direction:column;gap:20px"><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">1</div><div><div class="step-title" style="font-size:21px;font-weight:700">调研立项</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">明确目标与范围,组建团队。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">2</div><div><div class="step-title" style="font-size:21px;font-weight:700">方案设计</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">拆解关键路径,评审技术选型。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">3</div><div><div class="step-title" style="font-size:21px;font-weight:700">试点落地</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">小范围验证,收集反馈迭代。</p></div></div><div style="display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">4</div><div><div class="step-title" style="font-size:21px;font-weight:700">全面推广</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">复制成功经验,规模化落地。</p></div></div></div>
4
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div></section>
1
+ <!-- layouts/steps-vertical — structure-only variant (paint via skin). rows.steps{name,body} — the numbered circle uses the row index ({{_n}}); the connector line spans the list, so 3–5 steps all sit right. -->
2
+ <section class="slide" data-layout="steps-vertical" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div><div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|PROCESS}}</span></div><h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|实施步骤}}</h2>
3
+ <div style="position:absolute;left:96px;right:96px;top:290px;display:flex;flex-direction:column;gap:20px"><div class="step-line" style="position:absolute;left:62px;top:41px;bottom:41px;width:2px"></div>{{#steps}}<div style="position:relative;display:flex;align-items:center;gap:28px;height:82px"><div class="step-circle" style="width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;font-size:26px;font-weight:700">{{_n|1}}</div><div><div class="step-title" style="font-size:21px;font-weight:700">{{name|占位步骤}}</div><p class="step-body" style="font-size:15px;line-height:1.5;margin-top:4px">{{body|一句说明,替换为真实内容。}}</p></div></div>{{/steps}}</div>
4
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div></section>
@@ -1,13 +1,7 @@
1
- <!-- layouts/team-row — structure-only (paint via skin). "团队成员":一排 5 张竖版人像槽 + 姓名(accent)+ 职位. 图片槽 = .surface 占位(后填真图,同 image-grid 约定);姓名走 .team-name/职位 .team-role. data-layout drives P1/P2/P3 + dedup. -->
1
+ <!-- layouts/team-row — structure-only (paint via skin). "团队成员":一排竖版人像槽 + 姓名(accent)+ 职位. rows.members{name,role} — 3–5 members share the row evenly. 图片槽 = .surface 占位(后填真图,同 image-grid 约定);姓名走 .team-name/职位 .team-role. data-layout drives P1/P2/P3 + dedup. -->
2
2
  <section class="slide" data-layout="team-row" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">MEET OUR TEAM</span></div>
4
- <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">团队成员</h2>
5
- <div style="position:absolute;left:96px;right:96px;top:262px;display:grid;grid-template-columns:repeat(5,1fr);gap:20px">
6
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 01</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
7
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 02</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
8
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 03</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
9
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 04</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
10
- <div><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 05</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">姓名 · NAME</div><div class="team-role" style="font-size:13px;margin-top:3px">职位 Job Position</div></div>
11
- </div>
12
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div>
3
+ <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|MEET OUR TEAM}}</span></div>
4
+ <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|团队成员}}</h2>
5
+ <div style="position:absolute;left:96px;right:96px;top:262px;display:flex;gap:20px">{{#members}}<div style="flex:1"><div class="surface" style="height:300px;border-radius:var(--card-radius);display:flex;align-items:center;justify-content:center"><span class="surface-label" style="font-size:13px">人像 {{_nn|01}}</span></div><div class="team-name" style="font-size:18px;font-weight:800;margin-top:16px;letter-spacing:.02em">{{name|占位姓名 · NAME}}</div><div class="team-role" style="font-size:13px;margin-top:3px">{{role|职位 Job Position}}</div></div>{{/members}}</div>
6
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div>
13
7
  </section>
@@ -1,12 +1,9 @@
1
- <!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. -->
1
+ <!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. rows.entries{name,desc} — 3–5 chapters spread down the panel. -->
2
2
  <section class="slide" data-layout="toc-panel" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">公司名称</span><span class="toc-brand">战略评审</span><span class="toc-brand">2026-03-15</span></div>
3
+ <div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700"><span class="toc-brand">{{brand1|公司名称}}</span><span class="toc-brand">{{brand2|战略评审}}</span><span class="toc-brand">{{brand3|2026-03-15}}</span></div>
4
4
  <div class="surface" style="position:absolute;left:96px;top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:var(--card-radius)"><span class="surface-label" style="font-size:14px">插图占位</span></div>
5
- <h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;line-height:1.02;letter-spacing:-1px">目录</h1>
5
+ <h1 class="cover-title" style="position:absolute;left:92px;top:456px;font-size:76px;line-height:1.02;letter-spacing:-1px">{{title|目录}}</h1>
6
6
  <div class="panel" style="position:absolute;left:700px;right:80px;top:96px;bottom:56px;border-radius:var(--card-radius);padding:56px 60px;display:flex;flex-direction:column;justify-content:space-between">
7
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">引言</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
8
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">我们的项目</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
9
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">关于我们</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
10
- <div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">章节标题</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">简述本节要讨论的内容。</p></div>
7
+ {{#entries}}<div class="panel-item"><div class="panel-item-title" style="font-size:30px;font-weight:800;letter-spacing:.5px">{{name|占位章节}}</div><p class="panel-item-desc" style="font-size:19px;margin-top:8px">{{desc|简述本节要讨论的内容。}}</p></div>{{/entries}}
11
8
  </div>
12
9
  </section>
@@ -1,18 +1,18 @@
1
1
  <!-- layouts/type-specimen — structure-only (paint via skin). 品牌手册"字体规范":左 大 Aa 范样 + 字体名 + 字重梯度;右 标题/正文范样 + 字符集. 全部复用既有 class(.deck-title 衬线大字 / .card-body / .surface / .rule). data-layout drives P1/P2/P3 + dedup. -->
2
2
  <section class="slide" data-layout="type-specimen" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
3
- <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">TYPOGRAPHY</span></div>
4
- <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">字体规范</h2>
3
+ <div class="eyebrow-row" style="position:absolute;left:96px;top:132px;display:flex;align-items:center;gap:14px"><span class="accent-bar" style="width:30px;height:1px;display:inline-block"></span><span class="eyebrow" style="font-size:13px;letter-spacing:.28em">{{eyebrow|TYPOGRAPHY}}</span></div>
4
+ <h2 class="deck-title" style="position:absolute;left:92px;top:158px;font-size:48px;letter-spacing:-.4px">{{title|字体规范}}</h2>
5
5
  <!-- left: Aa specimen -->
6
- <div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;">Aa</div><div class="deck-title" style="font-size:24px;margin-top:22px">Georgia · 衬线标题</div><div class="surface-label" style="font-size:14px;margin-top:8px;letter-spacing:.08em">Regular · Medium · Bold</div></div>
6
+ <div class="surface" style="position:absolute;left:96px;top:264px;width:520px;bottom:92px;padding:36px 40px;display:flex;flex-direction:column;justify-content:center"><div class="deck-title" style="font-size:168px;line-height:.9;">{{specimen|Aa}}</div><div class="deck-title" style="font-size:24px;margin-top:22px">{{font_name|占位字体 · 衬线标题}}</div><div class="surface-label" style="font-size:14px;margin-top:8px;letter-spacing:.08em">{{weights|Regular · Medium · Bold}}</div></div>
7
7
  <!-- right: samples -->
8
8
  <div style="position:absolute;left:660px;right:96px;top:274px">
9
- <div class="surface-label" style="font-size:12px;letter-spacing:.2em">HEADING · 标题</div>
10
- <div class="deck-title" style="font-size:40px;margin-top:6px">优雅、克制、有呼吸感</div>
9
+ <div class="surface-label" style="font-size:12px;letter-spacing:.2em">{{heading_label|HEADING · 标题}}</div>
10
+ <div class="deck-title" style="font-size:40px;margin-top:6px">{{heading_sample|优雅、克制、有呼吸感}}</div>
11
11
  <div class="rule" style="height:1px;margin:22px 0"></div>
12
- <div class="surface-label" style="font-size:12px;letter-spacing:.2em">BODY · 正文</div>
13
- <p class="card-body" style="font-size:16px;line-height:1.8;margin-top:8px">正文使用无衬线体,行距宽松、字重规整,保证长段落的可读性。标题用衬线、正文用无衬线,层级清晰,替换为真实内容。</p>
12
+ <div class="surface-label" style="font-size:12px;letter-spacing:.2em">{{body_label|BODY · 正文}}</div>
13
+ <p class="card-body" style="font-size:16px;line-height:1.8;margin-top:8px">{{body_sample|正文使用无衬线体,行距宽松、字重规整,保证长段落的可读性。标题用衬线、正文用无衬线,层级清晰,替换为真实内容。}}</p>
14
14
  <div class="rule" style="height:1px;margin:22px 0"></div>
15
- <div class="card-body" style="font-size:22px;letter-spacing:.04em">A B C D E F G a b c d e f g 0 1 2 3 4 5 6 7 8 9</div>
15
+ <div class="card-body" style="font-size:22px;letter-spacing:.04em">{{charset|A B C D E F G a b c d e f g 0 1 2 3 4 5 6 7 8 9}}</div>
16
16
  </div>
17
- <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">报告标题 / 章节</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">01</div>
17
+ <div class="rule rule-foot" style="position:absolute;left:96px;right:96px;bottom:40px;height:1px"></div><div class="deck-footer" style="position:absolute;left:96px;bottom:17px;font-size:12px;letter-spacing:.1em">{{footer|报告标题 / 章节}}</div><div class="deck-pageno" style="position:absolute;right:96px;bottom:17px;font-size:12px">{{pageno|01}}</div>
18
18
  </section>
@@ -73,10 +73,7 @@
73
73
  .gantt-bar{background:var(--accent);opacity:.92}
74
74
  .gantt-grid{color:var(--muted)}
75
75
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(204,120,92,.14)}
76
- /* batch-8: radar + ring-progress */
77
- .radar-grid{stroke:var(--hair)}
78
- .radar-shape{fill:var(--accent);fill-opacity:.20;stroke:var(--accent);stroke-width:2}
79
- .radar-axis{fill:var(--muted)}
76
+ /* ring-progress */
80
77
  .ring-track{stroke:var(--hair)}
81
78
  .ring-fill{stroke:var(--accent)}
82
79
  .ring-num{color:var(--title)}
@@ -73,10 +73,7 @@
73
73
  .gantt-bar{background:var(--title);opacity:.85}
74
74
  .gantt-grid{color:var(--muted)}
75
75
  .map-pin{background:var(--title);box-shadow:0 0 0 4px rgba(255,255,255,.12)}
76
- /* batch-8: radar + ring-progress */
77
- .radar-grid{stroke:var(--hair)}
78
- .radar-shape{fill:rgba(245,245,247,.2);fill-opacity:.9;stroke:var(--title);stroke-width:2}
79
- .radar-axis{fill:var(--muted)}
76
+ /* ring-progress */
80
77
  .ring-track{stroke:var(--hair)}
81
78
  .ring-fill{stroke:var(--title)}
82
79
  .ring-num{color:var(--title)}
@@ -67,10 +67,7 @@
67
67
  .gantt-bar{background:var(--accent);opacity:.9}
68
68
  .gantt-grid{color:var(--muted)}
69
69
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
70
- /* batch-8: radar + ring-progress */
71
- .radar-grid{stroke:var(--hair)}
72
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
73
- .radar-axis{fill:var(--muted)}
70
+ /* ring-progress */
74
71
  .ring-track{stroke:var(--hair)}
75
72
  .ring-fill{stroke:var(--accent)}
76
73
  .ring-num{color:var(--title)}
@@ -63,10 +63,7 @@
63
63
  /* gantt + map */
64
64
  .gantt-track{background:var(--hair)} .gantt-bar{background:var(--accent);opacity:.9} .gantt-grid{color:var(--muted)}
65
65
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(122,154,114,.16)}
66
- /* radar + ring-progress */
67
- .radar-grid{stroke:var(--hair)}
68
- .radar-shape{fill:var(--accent);fill-opacity:.24;stroke:var(--accent);stroke-width:2}
69
- .radar-axis{fill:var(--muted)}
66
+ /* ring-progress */
70
67
  .ring-track{stroke:var(--hair)} .ring-fill{stroke:var(--accent)} .ring-num{color:var(--title)}
71
68
 
72
69
  /* toc-panel: 浅色 skin → 深色对比面板 */
@@ -87,10 +87,7 @@
87
87
  .gantt-bar{background:var(--accent);opacity:.9}
88
88
  .gantt-grid{color:var(--muted)}
89
89
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(245,244,240,.12)}
90
- /* batch-8: radar + ring-progress */
91
- .radar-grid{stroke:var(--hair)}
92
- .radar-shape{fill:var(--accent);fill-opacity:.14;stroke:var(--accent);stroke-width:2}
93
- .radar-axis{fill:var(--muted)}
90
+ /* ring-progress */
94
91
  .ring-track{stroke:var(--hair)}
95
92
  .ring-fill{stroke:var(--accent)}
96
93
  .ring-num{color:var(--title)}
@@ -76,10 +76,7 @@
76
76
  .gantt-bar{background:var(--accent);opacity:.9}
77
77
  .gantt-grid{color:var(--muted)}
78
78
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
79
- /* batch-8: radar + ring-progress */
80
- .radar-grid{stroke:var(--hair)}
81
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
82
- .radar-axis{fill:var(--muted)}
79
+ /* ring-progress */
83
80
  .ring-track{stroke:var(--hair)}
84
81
  .ring-fill{stroke:var(--accent)}
85
82
  .ring-num{color:var(--title)}
@@ -71,10 +71,7 @@
71
71
  .gantt-bar{background:var(--accent);opacity:.92}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(230,57,70,.16)}
74
- /* batch-8: radar + ring-progress */
75
- .radar-grid{stroke:var(--hair)}
76
- .radar-shape{fill:var(--accent);fill-opacity:.20;stroke:var(--accent);stroke-width:2}
77
- .radar-axis{fill:var(--muted)}
74
+ /* ring-progress */
78
75
  .ring-track{stroke:var(--hair)}
79
76
  .ring-fill{stroke:var(--accent)}
80
77
  .ring-num{color:var(--title)}
@@ -85,10 +85,7 @@
85
85
  .gantt-bar{background:var(--accent);opacity:.9}
86
86
  .gantt-grid{color:var(--muted)}
87
87
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(169,124,63,.12)}
88
- /* batch-8: radar + ring-progress */
89
- .radar-grid{stroke:var(--hair)}
90
- .radar-shape{fill:var(--accent);fill-opacity:.18;stroke:var(--accent);stroke-width:2}
91
- .radar-axis{fill:var(--muted)}
88
+ /* ring-progress */
92
89
  .ring-track{stroke:var(--hair)}
93
90
  .ring-fill{stroke:var(--accent)}
94
91
  .ring-num{color:var(--title)}
@@ -71,9 +71,6 @@
71
71
  .gantt-bar{background:var(--accent);opacity:.85}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--accent);box-shadow:none}
74
- .radar-grid{stroke:var(--hair)}
75
- .radar-shape{fill:var(--accent);fill-opacity:.1;stroke:var(--accent);stroke-width:1.5}
76
- .radar-axis{fill:var(--muted)}
77
74
  .ring-track{stroke:var(--hair)}
78
75
  .ring-fill{stroke:var(--accent)}
79
76
  .ring-num{color:var(--title);font-family:var(--font-head);font-weight:800}
@@ -61,10 +61,7 @@
61
61
  .gantt-bar{background:var(--accent);opacity:.9}
62
62
  .gantt-grid{color:var(--muted)}
63
63
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(127,127,127,.12)}
64
- /* batch-8: radar + ring-progress */
65
- .radar-grid{stroke:var(--hair)}
66
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
67
- .radar-axis{fill:var(--muted)}
64
+ /* ring-progress */
68
65
  .ring-track{stroke:var(--hair)}
69
66
  .ring-fill{stroke:var(--accent)}
70
67
  .ring-num{color:var(--title)}
@@ -71,10 +71,7 @@
71
71
  .gantt-bar{background:var(--title);opacity:.85}
72
72
  .gantt-grid{color:var(--muted)}
73
73
  .map-pin{background:var(--title);box-shadow:0 0 0 4px rgba(0,0,0,.08)}
74
- /* batch-8: radar + ring-progress */
75
- .radar-grid{stroke:var(--hair)}
76
- .radar-shape{fill:rgba(10,10,10,.12);fill-opacity:.9;stroke:var(--title);stroke-width:2}
77
- .radar-axis{fill:var(--muted)}
74
+ /* ring-progress */
78
75
  .ring-track{stroke:var(--hair)}
79
76
  .ring-fill{stroke:var(--title)}
80
77
  .ring-num{color:var(--title)}
@@ -59,10 +59,7 @@
59
59
  /* gantt + map */
60
60
  .gantt-track{background:var(--hair)} .gantt-bar{background:var(--accent);opacity:.9} .gantt-grid{color:var(--muted)}
61
61
  .map-pin{background:var(--accent);box-shadow:0 0 0 4px rgba(205,184,92,.14)}
62
- /* radar + ring-progress */
63
- .radar-grid{stroke:var(--hair)}
64
- .radar-shape{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:2}
65
- .radar-axis{fill:var(--muted)}
62
+ /* ring-progress */
66
63
  .ring-track{stroke:var(--hair)} .ring-fill{stroke:var(--accent)} .ring-num{color:var(--title)}
67
64
 
68
65
  /* toc-panel: 深色 skin → 浅色对比面板 */
@@ -71,9 +71,6 @@
71
71
  .gantt-bar{background:var(--accent);opacity:1;border-radius:0}
72
72
  .gantt-grid{color:var(--muted);font-family:var(--font-mono)}
73
73
  .map-pin{background:var(--accent);box-shadow:none;border-radius:0}
74
- .radar-grid{stroke:var(--hair)}
75
- .radar-shape{fill:var(--accent);fill-opacity:.12;stroke:var(--accent);stroke-width:2}
76
- .radar-axis{fill:var(--muted);font-family:var(--font-mono)}
77
74
  .ring-track{stroke:var(--hair)}
78
75
  .ring-fill{stroke:var(--accent)}
79
76
  .ring-num{color:var(--title);font-family:var(--font-head);font-weight:800}
@@ -1,30 +0,0 @@
1
- {
2
- "version": 1,
3
- "servers": {
4
- "gen-google": {
5
- "transport": "stdio",
6
- "command": "${TALOS_MCP_GENERATION_NODE}",
7
- "args": [
8
- "${TALOS_MCP_GENERATION_SCRIPT}"
9
- ],
10
- "env": {
11
- "ELECTRON_RUN_AS_NODE": "1",
12
- "GENERATION_VENDOR": "google"
13
- },
14
- "auth": {
15
- "type": "bearer",
16
- "token": "generation-google",
17
- "tokenSource": "keychain",
18
- "varName": "GEMINI_API_KEY"
19
- },
20
- "timeoutMs": 600000,
21
- "connectTimeoutMs": 30000,
22
- "supportsParallelToolCalls": false,
23
- "metadata": {
24
- "title": "文生图 · Google Nano Banana",
25
- "source": "talos",
26
- "note": "填 GEMINI_API_KEY(与 Veo 同 key)。"
27
- }
28
- }
29
- }
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "version": 1,
3
- "servers": {
4
- "gen-seedance": {
5
- "transport": "stdio",
6
- "command": "${TALOS_MCP_GENERATION_NODE}",
7
- "args": [
8
- "${TALOS_MCP_GENERATION_SCRIPT}"
9
- ],
10
- "env": {
11
- "ELECTRON_RUN_AS_NODE": "1",
12
- "GENERATION_VENDOR": "seedance"
13
- },
14
- "auth": {
15
- "type": "bearer",
16
- "token": "generation-seedance",
17
- "tokenSource": "keychain",
18
- "varName": "ARK_API_KEY"
19
- },
20
- "timeoutMs": 600000,
21
- "connectTimeoutMs": 30000,
22
- "supportsParallelToolCalls": false,
23
- "metadata": {
24
- "title": "文生视频 · Seedance (火山方舟)",
25
- "source": "talos",
26
- "note": "填 ARK_API_KEY(与 Seedream 同 key)。"
27
- }
28
- }
29
- }
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "version": 1,
3
- "servers": {
4
- "gen-seedream": {
5
- "transport": "stdio",
6
- "command": "${TALOS_MCP_GENERATION_NODE}",
7
- "args": [
8
- "${TALOS_MCP_GENERATION_SCRIPT}"
9
- ],
10
- "env": {
11
- "ELECTRON_RUN_AS_NODE": "1",
12
- "GENERATION_VENDOR": "seedream"
13
- },
14
- "auth": {
15
- "type": "bearer",
16
- "token": "generation-seedream",
17
- "tokenSource": "keychain",
18
- "varName": "ARK_API_KEY"
19
- },
20
- "timeoutMs": 600000,
21
- "connectTimeoutMs": 30000,
22
- "supportsParallelToolCalls": false,
23
- "metadata": {
24
- "title": "文生图 · Seedream (火山方舟)",
25
- "source": "talos",
26
- "note": "填 ARK_API_KEY(与 Seedance 同 key)。"
27
- }
28
- }
29
- }
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "version": 1,
3
- "servers": {
4
- "gen-veo": {
5
- "transport": "stdio",
6
- "command": "${TALOS_MCP_GENERATION_NODE}",
7
- "args": [
8
- "${TALOS_MCP_GENERATION_SCRIPT}"
9
- ],
10
- "env": {
11
- "ELECTRON_RUN_AS_NODE": "1",
12
- "GENERATION_VENDOR": "veo"
13
- },
14
- "auth": {
15
- "type": "bearer",
16
- "token": "generation-veo",
17
- "tokenSource": "keychain",
18
- "varName": "GEMINI_API_KEY"
19
- },
20
- "timeoutMs": 600000,
21
- "connectTimeoutMs": 30000,
22
- "supportsParallelToolCalls": false,
23
- "metadata": {
24
- "title": "文生视频 · Google Veo",
25
- "source": "talos",
26
- "note": "填 GEMINI_API_KEY(与 Google 同 key)。"
27
- }
28
- }
29
- }
30
- }