dsh-aris-panel 0.1.0 → 0.1.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/dsh/client.js CHANGED
@@ -10,7 +10,7 @@
10
10
  // normal source-and-build setup instead of growing here.
11
11
 
12
12
  window.__ModuleLoader__.load({
13
- id: 'dsh-aris',
13
+ id: 'dsh-aris-panel',
14
14
  factory(require) {
15
15
  const React = require('react')
16
16
  const h = React.createElement
@@ -221,6 +221,53 @@ function inferStage(ov) {
221
221
  return 1
222
222
  }
223
223
 
224
+ const WORKFLOW_CHIPS = [
225
+ { num: 'W1', label: 'Idea Discovery 想法发现', entry: 'idea-discovery', desc: '文献→头脑风暴→新颖性→GPU试跑→排名' },
226
+ { num: 'W1.5', label: 'Experiment Bridge 实验桥接', entry: 'experiment-bridge', desc: '计划→实现→审代码→部署→收集' },
227
+ { num: 'W2', label: 'Auto Review Loop 自动审稿', entry: 'auto-review-loop', desc: '审→修→再审直到≥6分或4轮' },
228
+ { num: 'W3', label: 'Paper Writing 论文写作', entry: 'paper-writing', desc: '叙事→大纲→图表→LaTeX→PDF→外部审' },
229
+ { num: 'W4', label: 'Rebuttal 回复审稿', entry: 'rebuttal', desc: '解析意见→策略→起草→压力测试' },
230
+ { num: 'W5', label: 'Resubmit 换会重投', entry: 'resubmit-pipeline', desc: '硬约束重投,不加实验不改bib' },
231
+ { num: 'W6', label: 'Conference Talk 会议演讲', entry: 'paper-talk', desc: '论文→Beamer+PPTX+讲稿' },
232
+ ]
233
+ const AUDIT_CHIPS = [
234
+ { label: '实验诚实度审计', skill: 'experiment-audit', desc: 'eval代码是否诚实(假GT/自归一化/幻影结果)' },
235
+ { label: '结果→声明判定', skill: 'result-to-claim', desc: '结果是否科学地支持声明' },
236
+ { label: '论文数字核对', skill: 'paper-claim-audit', desc: '论文报告的数字是否与原始结果一致' },
237
+ { label: '引用真实性审计', skill: 'citation-audit', desc: '每个引用是否存在且上下文正确' },
238
+ { label: '最强拒稿模拟', skill: 'kill-argument', desc: '200词最强拒稿+独立裁决' },
239
+ ]
240
+ const MEMORY_CHIPS = [
241
+ { label: 'research-wiki 知识库', skill: 'research-wiki', desc: '论文/想法/实验/声明跨会话沉淀' },
242
+ { label: 'wiki 补全', skill: 'wiki-enrich', desc: '填充paper页面的TODO区' },
243
+ { label: 'meta-optimize 自我优化', skill: 'meta-optimize', desc: '分析使用日志改进ARIS自身' },
244
+ ]
245
+
246
+ function WbChipRow(props) {
247
+ return h('div', { className: 'wb-chip-row' },
248
+ props.items.map(function (it) {
249
+ return h('button', {
250
+ key: it.skill || it.entry,
251
+ className: 'wb-pano-chip',
252
+ onClick: function () { props.onPick(it.skill || it.entry) },
253
+ title: it.desc || '',
254
+ },
255
+ it.num ? h('span', { className: 'wb-pano-num' }, it.num) : null,
256
+ h('span', null, it.label))
257
+ }))
258
+ }
259
+
260
+ function WbPanorama(props) {
261
+ return h('div', { className: 'wb-panorama' },
262
+ h('div', { className: 'wb-guide-title' }, '功能全景:7 个工作流 + 审计链 + 记忆(点击选项卡填充到下方技能触发)'),
263
+ h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '工作流'),
264
+ h(WbChipRow, { items: WORKFLOW_CHIPS, onPick: props.onPick })),
265
+ h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '审计链'),
266
+ h(WbChipRow, { items: AUDIT_CHIPS, onPick: props.onPick })),
267
+ h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '记忆'),
268
+ h(WbChipRow, { items: MEMORY_CHIPS, onPick: props.onPick })))
269
+ }
270
+
224
271
  function WbGuide(props) {
225
272
  const stage = props.stage
226
273
  const onPick = props.onPick
@@ -483,6 +530,7 @@ function ArisWorkbenchView(props) {
483
530
  if (error) children.push(h('div', { className: 'wb-error', key: 'err' }, error))
484
531
  if (sessionId === undefined && workspaces === undefined) children.push(wbNote('正在连接工作区…'))
485
532
  if (sessionId !== undefined) {
533
+ children.push(h(WbPanorama, { key: 'pano', onPick: function (name) { setSkill(name) } }))
486
534
  children.push(h(WbGuide, { key: 'guide', stage: stage, onPick: function (name) { setSkill(name) } }))
487
535
  children.push(h(WbTrigger, { key: 'trigger', connection: connection, sessionId: sessionId, skills: skills, skill: skill, args: args, skillError: skillError, onSkill: setSkill, onArgs: setArgs }))
488
536
  }
@@ -518,57 +566,13 @@ function ArisWorkbenchButton(props) {
518
566
  open ? h(ArisWorkbenchView, { connection: props.connection, sessions: props.sessions, sessionId: props.sessionId, onClose: function () { setOpen(false) } }) : null)
519
567
  }
520
568
 
521
- const WB_CSS = `.wb-overlay { position: fixed; inset: 0; z-index: 9999; background: #ffffff; color: #1f1f1f; padding: 20px 28px; overflow-y: auto; font-size: 13px; line-height: 1.6; font-family: ui-sans-serif, system-ui, sans-serif; }
522
- .wb-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #e0e0e0; padding-bottom: 10px; margin-bottom: 14px; }
523
- .wb-title { font-size: 17px; font-weight: 700; letter-spacing: .02em; color: #1f1f1f; }
524
- .wb-actions { display: flex; gap: 8px; }
525
- .wb-btn { background: #007acc; color: #fff; border: 0; border-radius: 4px; padding: 5px 14px; font-size: 12px; cursor: pointer; }
526
- .wb-btn:disabled { opacity: .55; cursor: default; }
527
- .wb-btn-close { background: #e8e8e8; color: #333333; }
528
- .wb-btn-copy { background: #e8e8e8; color: #333333; }
529
- .wb-picker { margin-bottom: 12px; }
530
- .wb-picker label { color: #333333; }
531
- .wb-picker select { background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 4px 8px; font-size: 12px; max-width: 70%; }
532
- .wb-section { margin-bottom: 20px; border: 1px solid #e4e4e4; border-radius: 6px; padding: 12px 16px; background: #fafafa; }
533
- .wb-section h3 { margin: 0 0 10px; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; opacity: .6; font-weight: 700; color: #1f1f1f; }
534
- .wb-row { display: flex; gap: 12px; padding: 2px 0; }
535
- .wb-key { flex: 0 0 150px; opacity: .7; }
536
- .wb-val { flex: 1; word-break: break-word; }
537
- .wb-note { opacity: .55; font-size: 12px; margin: 6px 0; }
538
- .wb-list { margin: 6px 0; padding-left: 18px; }
539
- .wb-list li { padding: 1px 0; font-size: 12px; }
540
- .wb-dot-ok { color: #107c10; }
541
- .wb-dot-missing { opacity: .35; }
542
- .wb-error { color: #c42b1c; background: #fdeeee; border: 1px solid #e5b9b5; border-radius: 6px; padding: 8px 12px; margin: 10px 0; font-size: 12px; }
543
- .wb-pre { background: #f5f5f5; border-radius: 4px; padding: 8px 10px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; white-space: pre-wrap; word-break: break-word; max-height: 180px; overflow-y: auto; margin: 6px 0; color: #24292e; }
544
- .wb-file { margin: 6px 0; }
545
- .wb-file-name { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: #0066b8; }
546
- .wb-meta { opacity: .55; font-size: 11px; margin-left: 8px; }
547
- .wb-sidebar-entry { padding: 4px 6px; }
548
- .wb-sidebar-toggle { width: 100%; background: transparent; color: inherit; border: 1px solid transparent; border-radius: 4px; padding: 5px 8px; font-size: 12px; cursor: pointer; text-align: left; }
549
- .wb-sidebar-toggle:hover { background: rgba(0,0,0,.06); border-color: rgba(0,0,0,.12); }
550
- .wb-badge { display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 10px; margin-left: 6px; background: #e8e8e8; border: 1px solid #d0d0d0; color: #1f1f1f; }
551
- .wb-guide { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
552
- .wb-guide-title { font-size: 13px; font-weight: 700; margin-bottom: 10px; color: #1f1f1f; }
553
- .wb-stages { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
554
- .wb-stage { border: 1px solid #e6e6e6; border-radius: 6px; padding: 8px 10px; opacity: .55; background: #ffffff; }
555
- .wb-stage-done { opacity: .8; }
556
- .wb-stage-cur { opacity: 1; border-color: #007acc; background: #e8f4ff; }
557
- .wb-stage-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
558
- .wb-stage-mark { flex: 0 0 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 50%; background: #e8e8e8; font-size: 11px; color: #1f1f1f; }
559
- .wb-stage-done .wb-stage-mark { background: #107c10; color: #ffffff; }
560
- .wb-stage-cur .wb-stage-mark { background: #007acc; color: #ffffff; }
561
- .wb-stage-title { font-size: 13px; font-weight: 600; }
562
- .wb-stage-desc { font-size: 11px; opacity: .7; margin-bottom: 6px; }
563
- .wb-stage-skills { display: flex; flex-wrap: wrap; gap: 6px; }
564
- .wb-skill-chip { background: #eef4fb; color: #0066b8; border: 1px solid #99c9f0; border-radius: 12px; padding: 2px 10px; font-size: 11px; cursor: pointer; }
565
- .wb-skill-chip:hover { background: #007acc; color: #ffffff; }
566
- .wb-guide-next { margin-top: 10px; font-size: 12px; opacity: .85; }
567
- .wb-trigger { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
568
- .wb-trigger-row { display: flex; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
569
- .wb-skill-select { flex: 1 1 420px; background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 6px 10px; font-size: 12px; min-width: 260px; }
570
- .wb-args { flex: 1 1 280px; background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 6px 10px; font-size: 12px; min-width: 200px; }
571
- .wb-status { font-size: 12px; color: #107c10; margin-top: 4px; }`
569
+ const WB_CSS = `.wb-panorama { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
570
+ .wb-pano-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
571
+ .wb-pano-group-label { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; opacity: .55; font-weight: 700; flex: 0 0 44px; }
572
+ .wb-chip-row { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
573
+ .wb-pano-chip { background: #ffffff; color: #1f1f1f; border: 1px solid #d0d0d0; border-radius: 14px; padding: 3px 12px; font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
574
+ .wb-pano-chip:hover { border-color: #007acc; color: #007acc; background: #eef4fb; }
575
+ .wb-pano-num { font-weight: 800; color: #007acc; font-size: 11px; }`
572
576
 
573
577
  const CSS = `
574
578
  .aris-view { padding: 16px 20px; overflow-y: auto; font-size: 13px; line-height: 1.6; }
@@ -1,44 +1,44 @@
1
- # ARIS bundle layer for DeepSeek Harness.
2
- #
3
- # Applied after the profile's surface bundle. Patch config replacement is
4
- # whole-value, so rows that adjust shipped configuration restate every field
5
- # they need.
6
-
7
- # ARIS review runs on the stronger executor.
8
- - id: agent-default-model
9
- config:
10
- provider: deepseek-official
11
- model: deepseek-v4-pro
12
-
13
- - insert:
14
- # Skill corpus, ARIS_REPO, and the Codex threadId projection.
15
- - id: aris-skills
16
- name: 'dsh-aris'
17
-
18
- # Optional: apply ARIS's scope limits to the executor as well as the
19
- # reviewer. Off by default — it spends tokens on every request, and the
20
- # reviewer side is already covered by the skills. Flip to enable.
21
- - id: aris-scope-limits
22
- name: 'dsh-aris/scope-limits'
23
- disabled: true
24
-
25
- # The independent reviewer. Model and reasoning effort come from the host
26
- # Codex installation (~/.codex/config.toml) — that file is the reviewer
27
- # posture contract, and dsh deliberately does not override it.
28
- - id: aris-codex
29
- name: '@deepseek-ai/dsh-mcp-client'
30
- config:
31
- transport: stdio
32
- serverName: codex
33
- command: codex
34
- args: [mcp-server]
35
- # Pinned to a directory that outlives the run. Inheriting the Harness's
36
- # launch directory makes every review depend on it still existing:
37
- # remove or rename it and Codex fails to load its own configuration,
38
- # which ARIS survives by degrading to a transport that cannot attest
39
- # reviewer identity. Review prompts address artifacts absolutely.
40
- cwd: !!js process.env.HOME
41
- # dsh defaults to 60s and Codex's progress notifications do not extend it.
42
- # 20 minutes is ARIS's own threshold for calling a review hung.
43
- toolCallTimeoutMs: 1200000
44
- failOnStartupError: true
1
+ # ARIS bundle layer for DeepSeek Harness.
2
+ #
3
+ # Applied after the profile's surface bundle. Patch config replacement is
4
+ # whole-value, so rows that adjust shipped configuration restate every field
5
+ # they need.
6
+
7
+ # ARIS review runs on the stronger executor.
8
+ - id: agent-default-model
9
+ config:
10
+ provider: deepseek-official
11
+ model: deepseek-v4-pro
12
+
13
+ - insert:
14
+ # Skill corpus, ARIS_REPO, and the Codex threadId projection.
15
+ - id: aris-skills
16
+ name: 'dsh-aris-panel'
17
+
18
+ # Optional: apply ARIS's scope limits to the executor as well as the
19
+ # reviewer. Off by default — it spends tokens on every request, and the
20
+ # reviewer side is already covered by the skills. Flip to enable.
21
+ - id: aris-scope-limits
22
+ name: 'dsh-aris-panel/scope-limits'
23
+ disabled: true
24
+
25
+ # The independent reviewer. Model and reasoning effort come from the host
26
+ # Codex installation (~/.codex/config.toml) — that file is the reviewer
27
+ # posture contract, and dsh deliberately does not override it.
28
+ - id: aris-codex
29
+ name: '@deepseek-ai/dsh-mcp-client'
30
+ config:
31
+ transport: stdio
32
+ serverName: codex
33
+ command: codex
34
+ args: [mcp-server]
35
+ # Pinned to a directory that outlives the run. Inheriting the Harness's
36
+ # launch directory makes every review depend on it still existing:
37
+ # remove or rename it and Codex fails to load its own configuration,
38
+ # which ARIS survives by degrading to a transport that cannot attest
39
+ # reviewer identity. Review prompts address artifacts absolutely.
40
+ cwd: !!js process.env.HOME
41
+ # dsh defaults to 60s and Codex's progress notifications do not extend it.
42
+ # 20 minutes is ARIS's own threshold for calling a review hung.
43
+ toolCallTimeoutMs: 1200000
44
+ failOnStartupError: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-aris-panel",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "ARIS research-workflow skills + interactive workbench panel for DeepSeek Harness (user fork of dsh-aris: 82 skills, cross-model Codex review, idea/workflow launcher, research status board).",
5
5
  "license": "MIT",
6
6
  "type": "module",